Arkkitehtuuri
Järjestelmän yleiskuva
iOS app / agent client -> api.<domain> -> API Gateway -> Lambda backend -> Postgres
Web app -> app.<domain> -> CloudFront -> SPA
Browser and agent auth -> auth.<domain> -> API Gateway -> Auth Lambda -> Cognito
Apex fallback -> <domain> -> CloudFront redirect -> app.<domain>
Periaatteet
- Erilliset julkiset verkkotunnukset kohteille
app,apijaauth - Postgres on ensisijainen tietolähde
- iOS-asiakassovellus on offline-first: paikallinen SQLite ja synkronointi
- Verkkosovellus, iOS-sovellus ja ulkoisten agenttien rajapinta käyttävät samaa työtilamallia
- Ulkoiset agentit aloittavat osoitteesta
GET https://api.nibomo.com/v1/
Tuetut asiakassovellukset
- Verkkosovellus osoitteessa
app.nibomo.com - iOS-sovellus päärepositoriossa, tallennuksena paikallinen SQLite
- Android-sovellus Google Playssa
- Ulkoiset agenttiasiakkaat discoveryn, OTP-alustuksen ja
Authorization: ApiKey-otsakkeen kautta
Tietomalli
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Tietovirta
Verkko
- Selain kirjautuu sisään osoitteen
auth.<domain>kautta. - Verkkosovellus lataa työtilan datan osoitteesta
api.<domain>. - Tekoälychatin pyynnöt kulkevat reitin
/chat/local-turnkautta. - Lähetetyt kertaukset päivittävät ajoittimen tilan kirjoituksen yhteydessä.
iOS
- iOS-sovellus kirjoittaa ensin paikallisesti SQLiteen.
- Paikalliset muutokset tallennetaan lähtevien muutosten jonoon (outbox).
- Synkronointi lähettää muutokset reitin
/v1/workspaces/{workspaceId}/sync/pushkautta. - Synkronointi lataa etämuutokset reitin
/v1/workspaces/{workspaceId}/sync/pullkautta. - Paikallinen tietokanta ottaa muutokset käyttöön ja siirtää synkronoinnin kursoria eteenpäin.
Ulkoiset agentit
- Agentit aloittavat kutsulla
GET /v1/. - OTP-alustus tapahtuu osoitteessa
auth.<domain>. - Agentti saa pitkäikäisen API-avaimen.
- Agentti lataa reitin
/v1/agent/me, listaa työtilat, valitsee tarvittaessa yhden ja käyttää sitten reittejä/v1/agent/sql/queryja/v1/agent/sql/execute.
Ajoitus
Nibomo käyttää kertausten ajoittimena FSRS:ää.
Toteutushuomioita:
- taustapalvelussa ja iOS:ssä on keskenään vastaavat FSRS-toteutukset
- verkkosovellus noudattaa samaa ajoitustietojen tietosopimusta, mutta siihen ei sisälly kolmatta kopiota ajoittimesta
- työtilakohtaisiin ajoitusasetuksiin kuuluvat tavoiteltu muistamisaste, oppimisvaiheet, uudelleenoppimisvaiheet, enimmäisväli ja satunnaishajonta (fuzz)
- todellinen kertauksen aikaleima tulee kentästä
reviewedAtClient
Ajoituksen yksityiskohtainen tietosopimus on kuvattu päärepositorion FSRS-ajoituslogiikan dokumentissa.
Tunnistautuminen
- Sähköpostin OTP Cognito-palvelun avulla
- Yhteisen verkkotunnuksen selainistuntoevästeet isännöidylle verkkosovellukselle
- Agentin OTP-alustus osoitteessa
auth.<domain>, tuloksena pitkäikäinen ApiKey AUTH_MODE=nonepaikalliseen kehitykseenAUTH_MODE=cognitotuotannonkaltaiseen tunnistautumiseen
Käyttöönoton rakenne
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda-taustapalveluauth.<domain>-> API Gateway + Lambda-tunnistautumispalvelu- Postgres AWS RDS:ssä
Juuriverkkotunnus voi jäädä erilliselle markkinointisivustolle. Jos se on alustuksen aikana vapaana, infrastruktuuri voi ohjata sen väliaikaisesti osoitteeseen app.<domain>.