Cosmic Story v2 arhitektūra — dziļa ienira.

Inženieriem, produktu vadītājiem, žurnālistiem un partnerību meklētājiem. Pilns process, četras MongoDB kolekcijas, EDA notikumi, V-Model stingrība, veiktspējas mērķi, drošība un piekļūstamība — viss vienā lapā.

  • Soulwise-story ir jauns NestJS modulis līdzās esošajam cosmic-story modulim. Nulle tiešu importu starp funkciju moduļiem.
  • Četras MongoDB kolekcijas: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. Ar AES-256 šifrēti saturi, indeksēti vaicājumiem, kuriem katrs kalpo.
  • Asinhrona ģenerēšana caur BullMQ rindu ar 28 s noildzi. Notikumi tiek izstaroti caur EventEmitter2 tikai pēc datubāzes apstiprināšanas — nekādu fantoma iesūtnes vienumu.
  • V-Model specifikācija: 119 prasības, nulle robu. Aizmugursistēmas pārklājuma mērķis 85% pakalpojumu izteikumiem; priekšgals 90% Pinia krātuvēm.

Konveijers vēlreiz, ar inženiertehniskām detaļām

Katram solim ir pakalpojums, līgums un notikums.

  1. Iedarbinātājs

    Lietotāja darbība — “izveidot šīsdienas nodaļu māsai” — vai ieplānots cron uzdevums, piemēram, svētdienas 9 rīta kopsavilkums vai ik pēc 6 stundām veiktais laikapstākļu atjauninājums.

  2. Rinda

    Uzdevums nonāk BullMQ rindā ar nosaukumu soulwise-chapter-generation un stingru 28 sekunžu noildzi. Ilgi izpildāmie uzdevumi tiek pārtraukti un lietotājam parādīti kā “mēģini vēlreiz”.

  3. Sastādīšana

    ChapterGenerationService apvieno četru faktoru uzvedni — personas kontekstu, astroloģiju, signālu, ritmu — vienā ievaddatā. Uzvednē nenonāk neapstrādāti lietotāja personas dati to sākotnējā veidā; viss vispirms tiek attīrīts.

  4. Ģenerēt

    AI nodrošinātājs tiek izsaukts ar AI_GENERATION_ADAPTER simbola marķieri — nodrošinātāju var nomainīt. Atbilde tiek pārbaudīta pēc garuma, formas un drošības, pirms turpināt.

  5. Pēcapstrāde

    Notiek četras lietas: krīzes klasifikators pārbauda, vai nav krīzes valodas; aspektu žetonu izvilcējs izvelk vienu līdz trīs astroloģijas žetonus; pretpaziņojumu filtrs noņem aizliegtos formulējumus; pamatteksts tiek šifrēts ar AES-256, izmantojot platformas pārvaldītu atslēgu.

  6. Saglabāt

    Artefakts tiek ierakstīts atbilstošajā MongoDB kolekcijā — nodaļas, dienasgrāmatas ieraksti, rezonanses — ar userId un personId indeksiem ātrai meklēšanai. Vispirms mīkstā dzēšana; PII cietā dzēšana pēc 30 dienām.

  7. Paziņot

    EventEmitter2 notikums — CHAPTER_COMPLETED, JOURNAL_CREATED — tiek aktivizēts pēc datubāzes apstiprināšanas. Paziņojumu modulis to uztver, izveido iesūtnes vienumu un pēc izvēles nosūta tūlītēju paziņojumu (ne vairāk kā vienu dienā, ievērojot klusuma stundas).

  8. Parādīt

    Priekšpuse izgūst artefaktu ar autentificētu API izsaukumu. Centrs tiek atkārtoti atveidots ar jauno saturu. Ja lietotājs bija bezsaistē, kešatmiņa parāda vakardienas skatu, un jaunais artefakts parādās, atjaunojot savienojumu.

Septiņi soļi no iedarbinātāja līdz redzamajam rezultātam, katrs nosaukts pēc tā, ko tas patiešām dara.

Četras kolekcijas

Indeksēti vaicājumiem, uz kuriem katrs atbild.

soulwise_persons

Albuma ieraksti. Indeksi uz userId, status, deletedAt. Vispirms mīkstā dzēšana; PII cietā dzēšana pēc 30 dienām.

soulwise_chapters

AI rakstītas nodaļas, šifrēts saturs. Indeksi uz personId, userId, generatedAt. Aspektu žetoni tiek glabāti kā atsevišķs masīvs ātrai filtrēšanai.

soulwise_journal_entries

Lietotāja rakstītas pārdomas, šifrēts saturs. Indeksi uz userId, personId, createdAt. Teksta indeksēts saturs meklēšanai. Katram ierakstam karodziņš “privāts — nedot Luminara”.

soulwise_resonances

Četru dimensiju vērtējumi katrai saiknei. Unikāls indekss uz personId. Pārrēķināts ar pakalpojuma izsaukumu pēc nodaļas vai dienasgrāmatas ieraksta.

EDA notikumi

Stingrs noteikums: notikumi tiek aktivizēti tikai pēc datubāzes apstiprināšanas. Starpmoduļu atkarības — caur Symbol injekcijas marķieriem, nekad caur forwardRef. Nekādu tiešu pakalpojumu savstarpēju importu starp funkciju moduļiem.

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — aktivizējas pēc tam, kad nodaļa ir šifrēta un saglabāta. Notifications-v2 klausās; izveido iesūtnes vienumu; pēc izvēles nosūta push paziņojumu.
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — aktivizējas pēc tam, kad dienasgrāmatas ieraksts ir šifrēts un saglabāts. Rezonanses pakalpojums klausās; izraisa pārrēķinu.
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — aktivizējas pēc tam, kad mainās personas dzimšanas dati. Sināstrijas kešatmiņa tiek atzīta par nederīgu.
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — saskaņā ar notifications-v2 līgumu; ievēro push budžetu un klusos laikus.

V-modeļa specifikācijas stingrība

119 izsekojamas prasības, nulle robu. Katra prasība uz priekšu sasaistās ar testa gadījumu (UTP, ITP, STP, E2E) un atpakaļ ar lietotāja stāstu. 20 lietotāja stāsti. 15 funkcionālās prasības. 12 nefunkcionālās kategorijas. 8 globālie pieņemšanas vārti.

Veiktspējas līgums

Nodaļas ģenerēšana 30 sekundes vai ātrāk 95% pieprasījumu, mērot pret BullMQ darbu ilguma sadalījumu. API p99 GET latentums 500 ms vai labāk pie 1,000 vienlaicīgiem lietotājiem, mērot ar k6 slodzes testu. Priekšgala TTI 3 sekundes vai ātrāk simulētā 4G tīklā, mērot ar Lighthouse CI.

Drošības līgums

AES-256 šifrēšana miera stāvoklī ar platformas pārvaldītām atslēgām dienasgrāmatu un nodaļu saturam. TLS 1.2+ pārsūtīšanas laikā; HTTP→HTTPS pāradresācija. JWT piekļuves marķieri ar 1 stundu darbības laiku, atjaunošanas marķieri ar 30 dienu darbības laiku, rotācija atjaunošanas brīdī. Maigā dzēšana ar 30 dienu logu pirms personas datu galīgās dzēšanas.

Pieejamības līgums

prefers-reduced-motion tiek ievērots globāli — GSAP animācijas pārvēršas tikai par caurspīdīguma pārejām. VoiceOver un TalkBack iezīmes ir uz katra interaktīvā elementa. Pirms katra laidiena manuāli pārbaudīts iOS un Android ierīcēs.

Kāpēc atsevišķs soulwise-story modulis, nevis cosmic-story paplašināšana?

Tāpēc, ka augšupējā specifikācija šo funkciju veido no jauna, un pārbūve esoša moduļa ietvaros vai nu sabojātu v1 pieredzi, vai arī novestu pie sazarošanas un vēlākas apvienošanas. Jauns modulis atstāj v1 neskartu, ļauj v2 sevi apliecināt un migrē tīri, kad viss ir gatavs.

Kāpēc MongoDB, nevis Postgres?

Esošais My Zodiac AI aizmugursistēmas serveris darbojas ar MongoDB; pāreja nozīmētu infrastruktūras lēmumu, kas ar šo funkciju nav saistīts. Dokumentu modelis labi der arī nodaļām un dienasgrāmatas ierakstiem — ligzdoti, mainīga garuma, šifrēti kā bloks.

Kāpēc rindas risinājumam izvēlēts BullMQ?

BullMQ darbojas ar Redis, kas jau ir tehnoloģiju kopumā sesiju un pieprasījumu ierobežošanai. Nekādas jaunas infrastruktūras. Iebūvētie atkārtošanas, noildzes un novērojamības mehānismi sedz nodaļu ģenerēšanas vajadzības bez papildu pielāgojumiem.

Kur augšupējā specifikācija patiesībā ir pierakstīta?

Iekšējā repozitorijā. Skaitļi un līgumi šajā lapā pārstāsta augšupējos V-modeļa artefaktus. Publiskie inženierijas emuāra ieraksti My Zodiac AI emuāra klasterī (ar birku 'cosmic-story-v2') iedziļinās konkrētās izstrādes daļās.

Izmēģini My Zodiac AI jau šodien

Kamēr Soulwise sper savus pirmos viļņus, mūsu vadošā astroloģijas lietotne jau ir tavās rokās.

Astroloģiskais saturs ir domāts pārdomām un izklaidei. Šeit aprakstītās Cosmic Story v2 funkcijas ir izstrādes procesā; to pieejamība var mainīties bez iepriekšēja brīdinājuma.