Cosmic Story v2 arhitektuur — põhjalik sukeldumine.

Inseneridele, tootejuhtidele, ajakirjanikele ja partnerlusskautidele. Kogu töövoog, neli MongoDB kollektsiooni, EDA sündmused, V-mudeli rangus, jõudluseesmärgid, turvalisus ja ligipääsetavus — kõik ühel lehel.

  • Soulwise-story on uus NestJS moodul olemasoleva cosmic-story mooduli kõrval. Funktsioonimoodulite vahel pole ühtegi otseimporti.
  • Neli MongoDB kollektsiooni: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. AES-256-ga krüpteeritud sisud, indekseeritud vastavalt päringutele, mida iga kollektsioon teenindab.
  • Asünkroonne genereerimine BullMQ järjekorra kaudu 28 s aegumisega. Sündmused saadetakse EventEmitter2 kaudu alles pärast andmebaasi kinnitamist — ühtegi fantoomkirjet postkastis ei teki.
  • V-mudeli spetsifikatsioon: 119 nõuet, lünki pole. Backend'i katvuse eesmärk 85% lausetest teenustes; frontend 90% Pinia salvestites.

Töövoog, taas, koos inseneritehniliste üksikasjadega

Igal sammul on oma teenus, leping ja sündmus.

  1. Päästik

    Kasutaja tegevus — „loo Õe jaoks tänane peatükk“ — või ajastatud cron, näiteks pühapäevane 9 hommikune kokkuvõte või iga 6 tunni tagant tehtav ilmavärskendus.

  2. Järjekord

    Töö satub BullMQ järjekorda nimega soulwise-chapter-generation, mille range ajalimiit on 28 sekundit. Liiga kaua kestvad tööd lõpetatakse ja kasutajale teatatakse „proovi uuesti“.

  3. Koosta

    ChapterGenerationService koondab nelja teguri viiba — isiku konteksti, astroloogia, signaali ja rütmi — üheks sisendiks. Ükski kasutaja toores isikuandmete kild ei jõua viibasse sõnasõnaliselt; kõik puhastatakse esmalt.

  4. Genereeri

    AI-pakkujat kutsutakse välja AI_GENERATION_ADAPTER sümboltunnuse kaudu — pakkuja on vahetatav. Vastust kontrollitakse pikkuse, kuju ja turvalisuse osas, enne kui edasi minnakse.

  5. Järeltöötle

    Toimub neli asja: kriisiklassifikaator otsib kriisile viitavat keelekasutust; aspektikiipide eraldaja võtab välja üks kuni kolm astroloogiakiipi; väidetevastane filter eemaldab keelatud sõnastused; sisu krüpteeritakse AES-256 abil platvormi hallatava võtmega.

  6. Säilita

    Artefakt kirjutatakse vastavasse MongoDB kollektsiooni — peatükid, päevikukanded, resonantsid — koos userId ja personId indeksitega kiireks otsinguks. Esmalt pehme kustutus; isikuandmete lõplik kustutus 30 päeva pärast.

  7. Teavita

    EventEmitter2 sündmus — CHAPTER_COMPLETED, JOURNAL_CREATED — käivitub pärast andmebaasi kinnitamist. Teavituste moodul võtab selle vastu, loob postkasti kirje ja saadab valikuliselt tõuketeate (piiratud ühele päevas, vaikuse tunde austades).

  8. Kuva

    Esikülg tõmbab artefakti autenditud API-päringu kaudu. Hub renderdab uue sisuga uuesti. Kui kasutaja oli võrguühenduseta, serveerib vahemälu eilset vaadet ja uus artefakt ilmub taasühendumisel.

Seitse sammu päästikust pinnani, igaüks nimetatud selle järgi, mida ta tegelikult teeb.

Need neli kollektsiooni

Indekseeritud vastavalt päringutele, millele igaüks vastab.

soulwise_persons

Albumi kirjed. Indeksid väljadel userId, status, deletedAt. Esmalt pehme kustutamine; PII püsiv kustutamine 30 päeva järel.

soulwise_chapters

Tehisaru kirjutatud peatükid, krüpteeritud sisu. Indeksid väljadel personId, userId, generatedAt. Aspektimärgid salvestatakse eraldi massiivina kiireks filtreerimiseks.

soulwise_journal_entries

Kasutaja kirjutatud mõtisklused, krüpteeritud sisu. Indeksid väljadel userId, personId, createdAt. Tekstiindeksiga sisu otsingu jaoks. Kirjepõhine lipp „privaatne — ära jaga Luminarale".

soulwise_resonances

Nelja mõõtme skoorid iga sideme kohta. Unikaalne indeks väljal personId. Arvutatakse uuesti teenusekutsega pärast peatüki või päeviku kirjutamist.

EDA sündmused

Range reegel: sündmused käivituvad alles pärast andmebaasi commit'i. Moodulitevahelised sõltuvused toimuvad Symbol-injektsioonitokenite kaudu, mitte kunagi forwardRef-i kaudu. Funktsioonimoodulite vahel pole otseseid teenuselt-teenusele importe.

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — käivitub pärast peatüki krüpteerimist ja salvestamist. Notifications-v2 kuulab seda; loob postkasti kirje; saadab vajadusel push-teate.
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — käivitub pärast päevikukande krüpteerimist ja salvestamist. Resonantsiteenus kuulab seda; käivitab ümberarvutuse.
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — käivitub pärast inimese sünniandmete muutumist. Sünastria vahemälu tühistatakse.
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — vastavalt notifications-v2 lepingule; arvestab push-eelarve ja vaikuse tundidega.

V-mudeli spetsifikatsiooni rangus

119 jälgitavat nõuet, null lünka. Iga nõue on seotud edasi testjuhtumiga (UTP, ITP, STP, E2E) ja tagasi kasutajalooga. 20 kasutajalugu. 15 funktsionaalset nõuet. 12 mittefunktsionaalset kategooriat. 8 üldist vastuvõtuväravat.

Jõudluse leping

Peatüki genereerimine 30 sekundit või kiiremini 95% päringute puhul, mõõdetuna BullMQ töö kestuse jaotuse alusel. API p99 GET-latentsus 500 ms või parem 1,000 samaaegse kasutaja juures, mõõdetuna k6 koormustestiga. Frontendi TTI 3 sekundit või parem simuleeritud 4G-võrgus, mõõdetuna Lighthouse CI abil.

Turvalisuse leping

AES-256 krüpteering puhkeolekus platvormi hallatavate võtmetega päeviku- ja peatükisisule. TLS 1.2+ andmeedastusel; HTTP→HTTPS ümbersuunamine. JWT juurdepääsutokenid 1-tunnise elueaga, värskendustokenid 30-päevase elueaga, rotatsioon värskendamisel. Pehme kustutamine 30-päevase aknaga enne isikuandmete lõplikku kustutamist.

Ligipääsetavuse leping

prefers-reduced-motion on globaalselt arvestatud — GSAP-animatsioonidest saavad ainult läbipaistvuse hajumised. VoiceOveri ja TalkBacki sildid on igal interaktiivsel elemendil. Enne iga väljalaset käsitsi kontrollitud nii iOS-is kui ka Androidis.

Miks eraldi soulwise-story moodul, mitte cosmic-story laiendamine?

Sest lähtespetsifikatsioon ehitab funktsiooni ümber ja olemasoleva mooduli sees ümberehitamine kas rikuks v1 kogemuse või tähendaks hilisemat hargnemist ja taasühendamist. Uus moodul jätab v1 puutumata, laseb v2 end tõestada ja võimaldab valmides puhta ülemineku.

Miks MongoDB, mitte Postgres?

Olemasolev My Zodiac AI backend töötab MongoDB peal; vahetamine tähendaks selle funktsiooniga mitteseotud taristuotsust. Dokumendimudel sobib ka peatükkide ja päevikukirjete jaoks hästi — pesastatud, varieeruva pikkusega, krüpteeritud blobina.

Miks on järjekorraks valitud BullMQ?

BullMQ töötab Redise peal, mis on stäkis juba olemas sessiooni ja kiiruspiirangu jaoks. Uut taristut pole vaja. Sisseehitatud kordus, ajalõpp ja jälgitavus katavad peatükkide genereerimise vajadused ilma eritorustikuta.

Kus on lähtespetsifikatsioon tegelikult kirja pandud?

Sisemises repos. Selle lehe numbrid ja kokkulepped sõnastavad ümber lähtespetsifikatsiooni V-mudeli artefaktid. My Zodiac AI ajaveebiklastri avalikud inseneriblogi postitused (sildiga 'cosmic-story-v2') süüvivad ehituse konkreetsetesse osadesse põhjalikumalt.

Proovi My Zodiac AI juba täna

Kui Soulwise oma laineid avab, on meie lipulaev-astroloogiarakendus juba sinu käeulatuses.

Astroloogiasisu on mõeldud eneserefleksiooniks ja meelelahutuseks. Siin kirjeldatud Cosmic Story v2 funktsioonid on alles arendamisel; nende kättesaadavus võib etteteatamata muutuda.