soulwise_persons
Mga entry ng album. Mga index sa userId, status, deletedAt. Soft-delete muna; hard-delete ng PII pagkatapos ng 30 araw.
Para sa mga engineer, PM, mamamahayag, at partnership scout. Ang buong pipeline, apat na koleksyon ng MongoDB, mga EDA event, V-Model rigor, mga target sa performance, seguridad, at accessibility — lahat nasa isang pahina.
Bawat hakbang ay may service, kontrata, at event.
Isang aksyon ng user — 'generate today's chapter for Sister' — o isang naka-iskedyul na cron, tulad ng recap tuwing Linggo 9 a.m., o ang weather refresh bawat 6 oras.
Ang trabaho ay napupunta sa BullMQ queue na tinatawag na soulwise-chapter-generation, na may matigas na timeout na 28 segundo. Ang mga matagal na trabaho ay pinapatay at iniulat bilang 'subukan muli' sa user.
Ang ChapterGenerationService ay nagbubuo ng apat na factor na prompt — person context, astrology, signal, cadence — sa iisang input. Walang raw na user PII na isinasama nang buo sa prompt; lahat ay nililinis muna.
Ang isang AI provider ay tinatawag gamit ang simbolong token na AI_GENERATION_ADAPTER — mapapalitan ang provider. Sinusuri ang tugon para sa haba, anyo, at kaligtasan bago magpatuloy.
Apat na bagay ang nangyayari: sinusuri ng crisis classifier ang crisis language; kumukuha ang aspect-chip extractor ng isa hanggang tatlong astrology chips; tinatanggal ng anti-claim filter ang mga ipinagbabawal na parirala; ang katawan ay AES-256 encrypted gamit ang susi na pinamamahalaan ng platform.
Isinusulat ang artifact sa tamang koleksyon ng MongoDB — chapters, journal entries, resonances — kasama ang userId at personId na index para sa mabilis na paghahanap. Una itong soft-delete; hard-delete ng PII pagkatapos ng 30 araw.
Isang EventEmitter2 na pangyayari — CHAPTER_COMPLETED, JOURNAL_CREATED — ay pinapagana pagkatapos ng commit sa database. Kinukuha ito ng notifications module, lumilikha ng inbox item, at opsyonal na nagpapadala ng push (limitado sa isang beses araw-araw, isinasalang-alang ang quiet hours).
Kinukuha ng frontend ang artifact sa pamamagitan ng authenticated API call. Muling nirere-render ng Hub ang bagong nilalaman. Kung offline ang user, ang cache ay magbibigay ng view mula kahapon at lalabas ang bagong artifact kapag nag-reconnect.
Naka-index para sa mga query na sinasagot ng bawat isa.
Mga entry ng album. Mga index sa userId, status, deletedAt. Soft-delete muna; hard-delete ng PII pagkatapos ng 30 araw.
Mga chapter na sinulat ng AI, naka-encrypt na katawan. Mga index sa personId, userId, generatedAt. Ang aspect chips ay naka-imbak bilang hiwalay na array para sa mabilis na pag-filter.
Mga reflection na sinulat ng user, naka-encrypt na katawan. Mga index sa userId, personId, createdAt. Text-indexed na katawan para sa paghahanap. May flag bawat entry na 'private — huwag ipasok sa Luminara'.
Four-dimension scores bawat bond. Natatanging index sa personId. Muling kinukuwenta sa pamamagitan ng tawag sa service pagkatapos magsulat ng chapter o journal.
Mahigpit na patakaran: ang mga pangyayari ay magaganap lamang pagkatapos ng pag‑commit ng database. Ang mga cross‑module dependency ay sa pamamagitan ng Symbol injection tokens, hindi kailanman gamit ang forwardRef. Walang direktang import mula service papuntang service sa pagitan ng mga feature module.
SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — pinapagana pagkatapos ma‑encrypt at ma‑persist ang isang kabanata. Nakikinig ang Notifications-v2; lumilikha ng item sa inbox; opsyonal na nagpapadala ng push.SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — pinapagana pagkatapos ma‑encrypt at ma‑persist ang isang journal entry. Nakikinig ang Resonance service; nagti‑trigger ng recompute.SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — pinapagana pagkatapos magbago ang birth-data ng isang tao. Iniinvalidate ang cache ng pagsusuri ng ugnayan.SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — alinsunod sa kontrata ng notifications-v2; iginagalang ang push budget at quiet hours.119 traceable requirements, zero gaps. Ang bawat requirement ay nagma‑map pasulong sa isang test case (UTP, ITP, STP, E2E) at pabalik sa isang user story. 20 user stories. 15 functional requirements. 12 non‑functional categories. 8 global acceptance gates.
Pagbuo ng kabanata 30 segundo o mas mabilis para 95% ng mga kahilingan, sinusukat laban sa distribusyon ng tagal ng BullMQ job. API p99 GET latency 500 ms o mas mababa sa 1,000 sabay na gumagamit, sinusukat sa pamamagitan ng k6 load test. Frontend TTI 3 segundo o mas mabilis sa simulated 4G, sinusukat gamit ang Lighthouse CI.
AES-256 encryption habang naka‑imbak gamit ang platform‑managed keys para sa mga journal at chapter bodies. TLS 1.2+ habang nagta‑transit; HTTP→HTTPS redirect. JWT access tokens na may 1‑hour na buhay, refresh tokens na may 30‑day na buhay, rotation sa refresh. Soft‑delete na may 30‑day na window bago hard‑delete ng PII.
pinapahalagahan ang prefers-reduced-motion globally — ang GSAP animations ay nagiging opacity-only fades. May mga label na VoiceOver at TalkBack sa bawat interactive element. Manwal na sinuri sa iOS at Android bago bawat release.
Dahil nire-rebuild ng upstream spec ang feature, at ang pag-rebuild sa loob ng existing module ay maaaring masira ang v1 experience o mag-fork-then-merge mamaya. Ang bagong module ay hindi naaapektuhan ang v1, pinapayagan ang v2 na mag-prove out, at malinis na nagma-migrate kapag handa na.
Ang kasalukuyang backend ng My Zodiac AI ay nasa MongoDB; ang paglipat ay magiging desisyon sa imprastruktura na walang kinalaman sa feature na ito. Ang document model ay akma rin para sa mga kabanata at journal entries — nested, varying-length, encrypted-as-blob.
Ang BullMQ ay tumatakbo sa Redis, na bahagi na ng stack para sa session at rate-limit. Walang bagong imprastruktura. May built-in retry, timeout, at observability na sumasaklaw sa pangangailangan ng chapter-generation nang hindi kailangan ng custom plumbing.
Internal repo. Ang mga numero at kontrata sa pahinang ito ay nagbubuod ng upstream V-Model artifacts. Ang mga pampublikong engineering blog post sa My Zodiac AI blog cluster (tagged 'cosmic-story-v2') ay mas malalim sa mga partikular na bahagi ng build.
Habang binubuksan ng Soulwise ang mga alon nito, nasa iyong kamay na ang aming pangunahing app sa zodyak.
Ang nilalaman ng astrolohiya ay para sa pagninilay at libangan. Ang mga tampok ng Cosmic Story v2 na inilarawan dito ay nasa pag-unlad; ang availability ay maaaring magbago nang walang abiso.