Architektúra
Rendszeráttekintés
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>
Alapelvek
- Külön nyilvános domain az
app, azapiés azauthszámára - A Postgres az egyetlen hiteles adatforrás
- Az iOS-kliens offline-first: helyi SQLite-ot és szinkronizálást használ
- A webalkalmazás, az iOS-alkalmazás és a külső ügynöki felület ugyanazt a munkaterület-modellt használja
- A külső ügynökök a
GET https://api.nibomo.com/v1/címről indulnak
Támogatott kliensek
- Webalkalmazás az
app.nibomo.comcímen - iOS-alkalmazás a fő tárolóban, helyi SQLite-tárolással
- Android-alkalmazás a Google Playen
- Külső ügynökkliensek felderítéssel, OTP-alapú előkészítéssel és
Authorization: ApiKeyfejléccel
Adatmodell
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Adatfolyam
Web
- A böngésző az
auth.<domain>címen keresztül jelentkezik be. - A webalkalmazás az
api.<domain>címről tölti be a munkaterület adatait. - Az AI-csevegés kérései a
/chat/local-turnútvonalon mennek át. - A beküldött ismétlések íráskor frissítik az ütemező állapotát.
iOS
- Az iOS-alkalmazás először helyben, SQLite-ba ír.
- A helyi változások egy kimenő sorba (outbox) kerülnek.
- A szinkronizálás a
/v1/workspaces/{workspaceId}/sync/pushútvonalon tölti fel a változásokat. - A szinkronizálás a
/v1/workspaces/{workspaceId}/sync/pullútvonalon tölti le a távoli frissítéseket. - A helyi adatbázis alkalmazza a változásokat, és továbblépteti a szinkronizálási kurzort.
Külső ügynökök
- Az ügynökök a
GET /v1/hívással indulnak. - Az OTP-alapú előkészítés az
auth.<domain>címen fut. - Az ügynök hosszú élettartamú API-kulcsot kap.
- Az ügynök betölti a
/v1/agent/mevégpontot, kilistázza a munkaterületeket, szükség esetén kiválaszt egyet, majd a/v1/agent/sql/queryés a/v1/agent/sql/executevégpontot használja.
Ütemezés
A Nibomo az FSRS-t használja ismétlésütemezőként.
Megvalósítási megjegyzések:
- a backend és az iOS egymást tükröző FSRS-implementációt tart fenn
- a webalkalmazás tükrözi az ütemezési adatszerződést, de nem tartalmaz harmadik ütemezőpéldányt
- a munkaterület szintű ütemezőbeállítások közé tartozik a kívánt felidézési arány, a tanulási lépések, az újratanulási lépések, a maximális időköz és a véletlenszerű szórás (fuzz)
- az ismétlés valódi időpontja a
reviewedAtClientmezőből származik
A részletes szerződést lásd: FSRS-ütemezési logika a fő tárolóban.
Hitelesítés
- E-mailes OTP a Cognitón keresztül
- Közös domainen érvényes böngészős munkamenet-sütik a felhős webalkalmazáshoz
- Ügynöki OTP-előkészítés az
auth.<domain>címen, hosszú élettartamú ApiKey-kimenettel AUTH_MODE=nonehelyi fejlesztéshezAUTH_MODE=cognitoéleshez hasonló hitelesítéshez
Telepítési felépítés
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda backendauth.<domain>-> API Gateway + Lambda hitelesítési szolgáltatás- Postgres az AWS RDS-ben
A gyökérdomainen maradhat egy külön marketingoldal. Ha a kezdeti telepítéskor még szabad, az infrastruktúra ideiglenesen átirányíthatja az app.<domain> címre.