Cosmic Story v2 architektúra – hĺbkový prehľad.

Pre inžinierov, produktových manažérov, novinárov a partnerských scoutov. Celý pipeline, štyri kolekcie MongoDB, EDA udalosti, dôslednosť V‑modelu, výkonnostné ciele, bezpečnosť a prístupnosť — všetko na jednej stránke.

  • Soulwise-story je nový modul NestJS spolu s už existujúcim modulom cosmic-story. Žiadne priame importy medzi funkčnými modulmi.
  • Štyri MongoDB kolekcie: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. Telá šifrované pomocou AES‑256, indexované pre dotazy, ktorým každá z nich slúži.
  • Asynchrónna generácia pomocou fronty BullMQ s časovým limitom 28 s. Udalosti sa emitujú pomocou EventEmitter2 až po commite do databázy — žiadne fantómové položky v schránke.
  • Špecifikácia V‑Modelu: 119 požiadaviek, žiadne medzery. Cieľ pokrytia backendu 85 % výrokov v službách; frontend 90 % v Pinia stores.

Pipeline, opäť, s inžinierskymi detailami

Každý krok má službu, zmluvu a udalosť.

  1. Spúšťač

    Akcia používateľa — „vygenerovať dnešnú kapitolu pre Sister“ — alebo naplánovaný cron, napríklad nedeľný prehľad o 9:00 ráno, alebo aktualizácia počasia každých 6 hodín.

  2. Fronta

    Úloha sa umiestni do fronty BullMQ s názvom soulwise-chapter-generation, s pevne stanoveným 28‑sekundovým časovým limitom. Dlho bežiace úlohy sú ukončené a používateľovi sa zobrazí správa „skúste to znova“.

  3. Napísať

    Služba ChapterGenerationService skladá 4‑faktorový prompt — kontext osoby, astrológiu, signál a kadenciu — do 1 vstupu. Do promptu sa nedostávajú žiadne nespracované osobné údaje používateľa doslovne; všetko sa najprv vyčistí.

  4. Generovať

    Poskytovateľ AI je volaný pomocou symbolu AI_GENERATION_ADAPTER — poskytovateľ je vymeniteľný. Odpoveď sa pred pokračovaním kontroluje z hľadiska dĺžky, štruktúry a bezpečnosti.

  5. Postproces

    Dejú sa štyri veci: klasifikátor kríz kontroluje krízový jazyk; extraktor aspektových čipov vyberie jeden až tri astrologické čipy; filter proti tvrdeniam odstráni zakázané formulácie; telo sa zašifruje algoritmom AES-256 pomocou kľúča spravovaného platformou.

  6. Uložiť

    Artefakt sa zapíše do príslušnej kolekcie v MongoDB — kapitoly, denníkové záznamy, rezonancie — s indexmi userId a personId pre rýchle vyhľadávanie. Najprv mäkké vymazanie; tvrdé vymazanie osobných údajov po 30 dňoch.

  7. Upozorniť

    Udalosť EventEmitter2 — CHAPTER_COMPLETED, JOURNAL_CREATED — sa spustí po potvrdení v databáze. Modul upozornení ju zachytí, vytvorí položku v doručenej pošte a voliteľne odošle push (obmedzené na jeden za deň, rešpektuje tiché hodiny).

  8. Zobraziť

    Frontend načíta artefakt prostredníctvom autentifikovaného API volania. Hub sa prerenderuje s novým obsahom. Ak bol používateľ offline, cache zobrazí včerajší pohľad a nový artefakt sa objaví po opätovnom pripojení.

Sedem krokov od spúšťača až na povrch, každý pomenovaný podľa toho, čo naozaj robí.

Štyri kolekcie

Indexované pre dotazy, na ktoré každá z nich odpovedá.

soulwise_persons

Záznamy v albume. Indexy na userId, status, deletedAt. Najprv mäkké vymazanie; tvrdé vymazanie osobných údajov po 30 dňoch.

soulwise_chapters

AI‑písané kapitoly, zašifrované telo. Indexy na personId, userId, generatedAt. Aspektové čipy uložené ako samostatné pole pre rýchle filtrovanie.

soulwise_journal_entries

Používateľom napísané reflexie, zašifrované telo. Indexy na userId, personId, createdAt. Textovo indexované telo pre vyhľadávanie. Príznak „súkromné — nezobraziť v Luminare“ pre každú položku.

soulwise_resonances

Štvorrozmerné skóre pre každé puto. Jedinečný index na personId. Prepočítané cez volanie služby po zápise kapitoly alebo denníka.

--- EDA udalosti ---

Prísne pravidlo: udalosti sa spúšťajú len po commite do databázy. Medzimodulové závislosti prostredníctvom tokenov Symbol injection, nikdy prostredníctvom forwardRef. Žiadne priame importy služba‑na‑službu medzi feature modulmi.

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — spustená po zašifrovaní a uložení kapitoly. Notifications-v2 počúva; vytvára položku v schránke; voliteľne posiela push notifikáciu.
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — spustený po zašifrovaní a uložení denníkového záznamu. Služba rezonancie načúva; spúšťa prepočet.
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — spustený po zmene dát o narodení osoby. Vyprší platnosť cache synastrie.
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — podľa zmluvy notifications-v2; rešpektuje rozpočet push oznámení a tiché hodiny.

Prísnosť špecifikácie V‑modelu

119 sledovateľných požiadaviek, nula medzier. Každá požiadavka sa dopredu mapuje na testovací prípad (UTP, ITP, STP, E2E) a spätne na používateľský príbeh. 20 používateľských príbehov. 15 funkčných požiadaviek. 12 nefunkčných kategórií. 8 globálnych akceptačných brán.

Zmluva o výkone

Generovanie kapitoly 30 sekúnd alebo lepšie pre 95 % požiadaviek, merané podľa distribúcie trvania úloh v BullMQ. API p99 latencia GET 500 ms alebo lepšie pri 1 000 súbežných používateľoch, merané záťažovým testom k6. Frontend TTI 3 sekundy alebo lepšie na simulovanej 4G sieti, merané cez Lighthouse CI.

Zmluva o bezpečnosti

Šifrovanie AES‑256 pri uchovávaní s kľúčmi spravovanými platformou pre telá denníka a kapitoly. TLS 1.2+ počas prenosu; presmerovanie HTTP→HTTPS. JWT prístupové tokeny so životnosťou 1 hodina, obnovovacie tokeny so životnosťou 30 dní, rotácia pri obnove. Mäkké odstránenie s 30‑denným oknom pred tvrdým odstránením PII.

Zmluva o prístupnosti

prefers-reduced-motion je globálne rešpektovaný — animácie GSAP sa zmenia len na prechody založené na priehľadnosti (opacity‑only). Popisky VoiceOver a TalkBack na každom interaktívnom prvku. Manuálne overené na iOS a Androide pred každým vydaním.

Prečo samostatný modul soulwise-story namiesto rozšírenia Cosmic Story v2?

Pretože upstream špecifikácia funkciu prestavuje a jej prestavba vnútri existujúceho modulu by buď narušila zážitok z v1, alebo by si neskôr vyžiadala vetvenie a následné zlúčenie. Nový modul ponecháva v1 nedotknutý, umožňuje overiť v2 a po pripravenosti migruje čisto.

Prečo MongoDB a nie Postgres?

Existujúci backend My Zodiac AI beží na MongoDB; prepnutie by znamenalo rozhodnutie o infraštruktúre, ktoré s touto funkciou nesúvisí. Dokumentový model sa tiež dobre hodí pre kapitoly a denníkové záznamy — vnorené, s premenlivou dĺžkou, šifrované ako blob.

Prečo je voľbou fronty práve BullMQ?

BullMQ beží na Redise, ktorý je už v stacku pre session a rate-limit. Žiadna nová infraštruktúra. Vstavané opakované pokusy, časový limit a pozorovateľnosť pokrývajú potreby generovania kapitol bez vlastnej inštalatérskej práce.

Kde je vlastne napísaná upstream špecifikácia?

Interný repozitár. Čísla a zmluvy na tejto stránke parafrázujú artefakty upstream V‑Modelu. Verejne prístupné inžinierske blogové príspevky na blogu My Zodiac AI (označené 'cosmic-story-v2') sa podrobnejšie venujú konkrétnym častiam zostavy.

Vyskúšaj My Zodiac AI ešte dnes

Kým Soulwise otvára svoje vlny, naša vlajková astrologická aplikácia je už v tvojich rukách.

Astrologický obsah je určený na reflexiu a zábavu. Funkcie Cosmic Story v2 popísané tu sú vo vývoji; dostupnosť sa môže zmeniť bez predchádzajúceho upozornenia.