Arhitektūra
Sistēmas pārskats
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>
Principi
- Atsevišķi publiskie domēni
app,apiunauth - Postgres ir autoritatīvais datu avots
- iOS klients ir orientēts uz darbu bezsaistē, izmantojot lokālu SQLite un sinhronizāciju
- Tīmekļa lietotne, iOS lietotne un ārējo aģentu saskarne izmanto vienu un to pašu darbvietas modeli
- Ārējie aģenti sāk ar
GET https://api.nibomo.com/v1/
Atbalstītie klienti
- Tīmekļa lietotne domēnā
app.nibomo.com - iOS lietotne galvenajā repozitorijā ar lokālu SQLite krātuvi
- Android lietotne Google Play
- Ārējo aģentu klienti caur atklāšanu, OTP sākotnējo iestatīšanu un
Authorization: ApiKey
Datu modelis
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Datu plūsma
Tīmeklis
- Pārlūks piesakās caur
auth.<domain>. - Tīmekļa lietotne ielādē darbvietas datus no
api.<domain>. - MI sarunas pieprasījumi iet caur
/chat/local-turn. - Atkārtojumu iesniegšana rakstīšanas brīdī atjaunina plānotāja stāvokli.
iOS
- iOS lietotne vispirms raksta lokāli SQLite datubāzē.
- Lokālās izmaiņas tiek ievietotas izejošo izmaiņu rindā.
- Sinhronizācija augšupielādē izmaiņas caur
/v1/workspaces/{workspaceId}/sync/push. - Sinhronizācija lejupielādē attālās izmaiņas caur
/v1/workspaces/{workspaceId}/sync/pull. - Lokālā datubāze piemēro izmaiņas un pārvieto sinhronizācijas kursoru uz priekšu.
Ārējie aģenti
- Aģenti sāk ar
GET /v1/. - OTP sākotnējā iestatīšana notiek domēnā
auth.<domain>. - Aģents saņem ilgtermiņa API atslēgu.
- Aģents ielādē
/v1/agent/me, iegūst darbvietu sarakstu, vajadzības gadījumā izvēlas vienu no tām un pēc tam izmanto/v1/agent/sql/queryun/v1/agent/sql/execute.
Plānošana
Nibomo kā atkārtojumu plānotāju izmanto FSRS.
Implementācijas piezīmes:
- aizmugursistēmā un iOS ir savstarpēji atbilstošas FSRS implementācijas
- tīmekļa lietotne izmanto to pašu plānošanas datu formātu, taču trešo plānotāja kopiju tajā neiekļauj
- darbvietas līmeņa plānotāja iestatījumi ietver vēlamo atcerēšanās līmeni, apguves soļus, atkārtotas apguves soļus, maksimālo intervālu un intervālu nejaušu variēšanu
- faktiskais atkārtojuma laikspiedols tiek ņemts no
reviewedAtClient
Detalizētu specifikāciju skati dokumentā FSRS plānošanas loģika galvenajā repozitorijā.
Autentifikācija
- E-pasta OTP caur Cognito
- Kopīgā domēna pārlūka sesijas sīkdatnes mitinātajai tīmekļa lietotnei
- Aģenta OTP sākotnējā iestatīšana domēnā
auth.<domain>, kuras rezultātā tiek izsniegta ilgtermiņa ApiKey atslēga AUTH_MODE=nonelokālai izstrādeiAUTH_MODE=cognitoprodukcijai līdzīgai autentifikācijai
Izvietojuma struktūra
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda aizmugursistēmaauth.<domain>-> API Gateway + Lambda autentifikācijas pakalpojums- Postgres pakalpojumā AWS RDS
Galveno domēnu var turpināt izmantot atsevišķai mārketinga vietnei. Ja sākotnējās iestatīšanas laikā tas ir brīvs, infrastruktūra var to īslaicīgi pāradresēt uz app.<domain>.