Arhitektuur
Süsteemi ülevaade
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>
Põhimõtted
- Eraldi avalikud domeenid:
app,apijaauth - Postgres on põhiandmeallikas
- iOS-i klient töötab eelkõige võrguühenduseta: kohalik SQLite pluss sünkroonimine
- Veebirakendus, iOS-i rakendus ja väliste agentide liides kasutavad sama tööruumimudelit
- Välised agendid alustavad päringust
GET https://api.nibomo.com/v1/
Toetatud kliendid
- Veebirakendus aadressil
app.nibomo.com - iOS-i rakendus peamises koodihoidlas, andmed salvestatakse kohalikku SQLite'i
- Androidi rakendus Google Plays
- Välised agendikliendid avastuse, ühekordse koodiga algseadistuse ja
Authorization: ApiKeykaudu
Andmemudel
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Andmevoog
Veeb
- Brauser logib sisse aadressi
auth.<domain>kaudu. - Veebirakendus laadib tööruumi andmed aadressilt
api.<domain>. - AI-vestluse päringud käivad läbi lõpp-punkti
/chat/local-turn. - Kordamise tulemuse saatmisel uuendatakse ajastaja olekut kohe kirjutamise käigus.
iOS
- iOS-i rakendus kirjutab andmed kõigepealt kohalikku SQLite'i.
- Kohalikud muudatused pannakse väljaminevate muudatuste järjekorda.
- Sünkroonimine laadib muudatused üles lõpp-punkti
/v1/workspaces/{workspaceId}/sync/pushkaudu. - Sünkroonimine laadib serveri uuendused alla lõpp-punkti
/v1/workspaces/{workspaceId}/sync/pullkaudu. - Kohalik andmebaas rakendab muudatused ja nihutab sünkroonimiskursorit edasi.
Välised agendid
- Agendid alustavad päringust
GET /v1/. - Ühekordse koodiga algseadistus toimub aadressil
auth.<domain>. - Agent saab pikaajalise API-võtme.
- Agent laadib
/v1/agent/me, küsib tööruumide loendi, valib vajaduse korral ühe neist ja kasutab seejärel/v1/agent/sql/queryja/v1/agent/sql/execute.
Ajastamine
Nibomo kasutab kordamiste ajastajana FSRS-i.
Teostuse märkused:
- taustsüsteemil ja iOS-il on teineteist peegeldavad FSRS-i teostused
- veebirakendus järgib sama ajastamisandmete lepingut, kuid ei sisalda ajastajast kolmandat koopiat
- tööruumi tasemel ajastaja sätted hõlmavad soovitud meeldejäävust, õppesamme, ümberõppesamme, maksimaalset intervalli ja intervallide juhuslikku hajutamist
- tegelik kordamise ajatempel tuleb väljalt
reviewedAtClient
Lepingu üksikasjaliku kirjelduse leiad peamise koodihoidla FSRS-i ajastamisloogika dokumendist.
Autentimine
- E-posti ühekordne kood Cognito kaudu
- Ühise domeeni brauseri seansiküpsised majutatud veebirakenduse jaoks
- Agendi ühekordse koodiga algseadistus aadressil
auth.<domain>, mille tulemusena väljastatakse pikaajaline ApiKey AUTH_MODE=nonekohalikuks arenduseksAUTH_MODE=cognitotootmiskeskkonnale sarnaseks autentimiseks
Juurutuse ülesehitus
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda taustsüsteemauth.<domain>-> API Gateway + Lambda autentimisteenus- Postgres teenuses AWS RDS
Juurdomeen võib jääda eraldi turundussaidile. Kui see on algseadistuse ajal vaba, saab taristu selle ajutiselt suunata aadressile app.<domain>.