soulwise_persons
Unosi albuma. Indeksi na userId, status, deletedAt. Najprije meko brisanje; tvrdo brisanje PII-ja nakon 30 dana.
Za inženjere, voditelje proizvoda, novinare i istraživače partnerstava. Cijeli pipeline, četiri MongoDB kolekcije, EDA događaji, rigoroznost V-Modela, ciljevi performansi, sigurnost i pristupačnost — sve na jednoj stranici.
Svaki korak ima servis, ugovor i događaj.
Korisnička radnja — 'generiraj današnje poglavlje za Sister' — ili zakazani cron, poput nedjeljnog sažetka u 9 ujutro, ili osvježavanja vremenske prognoze svakih 6 sati.
Zadatak se stavlja u BullMQ red pod nazivom soulwise-chapter-generation, s tvrdim vremenskim ograničenjem od 28 sekundi. Dugotrajni zadaci se ubijaju i korisniku se prikazuje poruka 'pokušajte ponovno'.
ChapterGenerationService sastavlja četverofaktorski upit — kontekst osobe, astrologija, signal, ritam — u jedan unos. Nijedan sirovi korisnički PII ne ulazi u upit doslovno; sve se najprije očisti.
AI pružatelj se poziva putem simbolnog tokena AI_GENERATION_ADAPTER — pružatelj je zamjenjiv. Odgovor se provjerava glede duljine, oblika i sigurnosti prije nastavka.
Događaju se četiri stvari: klasifikator krize provjerava jezik krize; ekstraktor aspekt‑čipova izvlači jedan do tri astrološka čipa; filter protiv tvrdnji uklanja zabranjene izraze; tijelo je AES-256 šifrirano ključem kojim upravlja platforma.
Artefakt se zapisuje u odgovarajuću MongoDB kolekciju — chapters, journal entries, resonances — s indeksima userId i personId za brzo pretraživanje. Prvo se vrši soft‑delete; hard‑delete osobnih podataka nakon 30 dana.
Događaj EventEmitter2 — CHAPTER_COMPLETED, JOURNAL_CREATED — aktivira se nakon commita u bazi podataka. Modul obavijesti ga prihvaća, stvara stavku u poštanskom sandučiću i opcionalno šalje push obavijest (ograničeno na jednu dnevno, uz poštivanje tiših sati).
Frontend preuzima artefakt putem autentificiranog API poziva. Hub ponovno renderira s novim sadržajem. Ako je korisnik bio izvan mreže, predmemorija prikazuje jučerišnji prikaz, a novi artefakt pojavljuje se pri ponovnom povezivanju.
Indeksirano za upite na koje svaka odgovara.
Unosi albuma. Indeksi na userId, status, deletedAt. Najprije meko brisanje; tvrdo brisanje PII-ja nakon 30 dana.
Poglavlja koja je napisao AI, šifrirano tijelo. Indeksi na personId, userId, generatedAt. Čipovi aspekata pohranjeni kao zaseban niz za brzo filtriranje.
Korisnički napisane refleksije, šifrirano tijelo. Indeksi na userId, personId, createdAt. Tekstualno indeksirano tijelo za pretragu. Zastavica 'privatno — nemoj ga davati Luminari' po unosu.
4-dimenzionalni rezultati po vezi. Jedinstveni indeks na personId. Ponovno se izračunava putem servisnog poziva nakon zapisa poglavlja ili dnevnika.
Strogo pravilo: događaji se aktiviraju tek nakon commita baze podataka. Međumodulske ovisnosti putem Symbol injection tokena, nikada putem forwardRef. Nema izravnih uvoza servisa u servis između funkcionalnih modula.
SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — pokrenuto nakon što je poglavlje šifrirano i pohranjeno. Notifications-v2 sluša; stvara stavku u pristigloj pošti; opcionalno šalje push obavijest.SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — pokrenuto nakon što je unos dnevnika šifriran i pohranjen. Servis rezonancije sluša; pokreće ponovno izračunavanje.SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — pokrenuto nakon promjene podataka o rođenju osobe. Sinastrijski cache postaje nevažeći.SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — prema ugovoru notifications-v2; poštuje push budžet i tihe sate.119 prepoznatljivi zahtjevi, nula praznina. Svaki zahtjev se može povezati s testnim slučajem (UTP, ITP, STP, E2E) i nazad s korisničkom pričom. Imamo 20 korisničke priče. Također postoje 15 funkcionalni zahtjevi, 12 nefunkcionalne kategorije i 8 globalna vrata prihvaćanja.
Stvaranje poglavlja u 30 sekundi ili brže za 95 % zahtjeva, mjereno prema distribuciji trajanja posla BullMQ. API p99 GET kašnjenje 500 ms ili bolje pri 1.000 istovremenih korisnika, mjereno putem k6 testa opterećenja. Frontend TTI 3 sekunde ili brže na simuliranoj 4G mreži, mjereno putem Lighthouse CI.
AES-256 šifriranje u mirovanju s ključevima kojima upravlja platforma za tijela dnevnika i poglavlja. TLS 1.2+ u prijenosu; preusmjeravanje HTTP→HTTPS. JWT pristupni tokeni s trajanjem od 1 sata, tokeni za osvježavanje s trajanjem od 30 dana, rotacija prilikom osvježavanja. Meko brisanje s prozorom od 30 dana prije trajnog brisanja PII-a.
prefers-reduced-motion globalno se poštuje — GSAP animacije postaju samo prijelazi neprozirnosti. VoiceOver i TalkBack oznake na svakom interaktivnom elementu. Ručno provjereno na iOS-u i Androidu prije svakog izdanja.
Zato što upstream specifikacija ponovno gradi funkciju, a ponovna izgradnja unutar postojećeg modula bi ili narušila iskustvo v1 ili bi zahtijevala fork-then-merge kasnije. Novi modul čuva v1 netaknutim, omogućuje v2 da se dokaže i čisto migrira kada bude spreman.
Postojeći My Zodiac AI pozadinski sustav koristi MongoDB; promjena bi značila odluku o infrastrukturi koja nije povezana s ovom funkcijom. Model dokumenta također dobro odgovara poglavljima i dnevničkim unosima — ugniježđen, varijabilne duljine, šifriran kao blob.
BullMQ radi na Redisu, koji je već u stacku za sesiju i ograničavanje stope. Nije potrebna nova infrastruktura. Ugrađeno ponovno pokretanje, vremensko ograničenje i promatračnost pokrivaju potrebe generiranja poglavlja bez prilagođene instalacije.
Interni repozitorij. Brojke i ugovori na ovoj stranici parafraziraju upstream V-Model artefakte. Javno dostupni inženjerski blog postovi na blog klasteru My Zodiac AI (označeni 'cosmic-story-v2') dublje ulaze u specifične dijelove izgradnje.
Dok Soulwise otvara svoje valove, naša vodeća astrološka aplikacija već je u tvojim rukama.
Astrološki sadržaj namijenjen je razmišljanju i zabavi. Značajke Cosmic Story v2 opisane ovdje su u razvoju; dostupnost se može promijeniti bez prethodne najave.