soulwise_persons
Albumimerkinnät. Indeksit kentissä userId, status, deletedAt. Pehmeä poisto ensin; PII:n pysyvä poisto 30 päivän kuluttua.
Insinööreille, tuotepäälliköille, toimittajille ja kumppanuusetsijöille. Koko putki, neljä MongoDB‑kokoelmaa, EDA‑tapahtumat, V‑mallin tiukkuus, suorituskykytavoitteet, turvallisuus ja saavutettavuus — kaikki yhdellä sivulla.
Jokaisella vaiheella on palvelu, sopimus ja tapahtuma.
Käyttäjän toiminto — 'luo tämän päivän luku Sisarille' — tai aikataulutettu cron, kuten sunnuntain 9 a.m. yhteenveto, tai jokaisen 6‑tunnin sääpäivitys.
Työ sijoittuu BullMQ‑jonoon nimeltä soulwise-chapter-generation, jossa on tiukka 28‑sekunnin aikaraja. Pitkäkestoiset työt tapetaan ja käyttäjälle raportoidaan viestinä 'yritä uudelleen'.
ChapterGenerationService kokoaa neljän tekijän kehotteen — henkilön kontekstin, astrologian, signaalin, rytmin — yhdeksi syötteeksi. Mitään raakaa käyttäjän henkilötietoa ei lisätä kehotteeseen sellaisenaan; kaikki puhdistetaan ensin.
AI‑palveluntarjoajaa kutsutaan AI_GENERATION_ADAPTER‑symbolitunnuksella — palveluntarjoaja on vaihdettavissa. Vastaus tarkistetaan pituuden, rakenteen ja turvallisuuden osalta ennen jatkamista.
Neljä asiaa tapahtuu: kriisiluokitin tarkistaa kriisikielen; aspektipiirileipäpoimija hakee yhden–kolme astrologialeiä; anti‑väitteiden suodatin poistaa kielletyt ilmaukset; runko salataan AES-256-avaimella, jonka hallinnoi alusta.
Artefakti kirjoitetaan oikeaan MongoDB-kokoelmaan — luvut, päiväkirjamerkinnät, resonanssit — käyttäjä- ja henkilö-tunnusindekseillä nopeaa hakua varten. Ensin pehmeä poisto; henkilötietojen lopullinen poisto 30 päivän kuluttua.
EventEmitter2-tapahtuma — CHAPTER_COMPLETED, JOURNAL_CREATED — laukeaa tietokannan commitin jälkeen. Ilmoitusten moduuli sieppaa sen, luo saapuneet-kohdan ja voi lähettää push-ilmoituksen (enintään yksi päivässä, hiljaiset ajat otetaan huomioon).
Käyttöliittymä hakee artefaktin autentikoidulla API-kutsulla. Hubi renderöi uudelleen uuden sisällön kanssa. Jos käyttäjä oli offline-tilassa, välimuisti näyttää eilisen näkymän ja uusi artefakti ilmestyy yhteyden palautuessa.
Indeksoitu kunkin vastaamien kyselyiden mukaan.
Albumimerkinnät. Indeksit kentissä userId, status, deletedAt. Pehmeä poisto ensin; PII:n pysyvä poisto 30 päivän kuluttua.
Tekoälyn kirjoittamat luvut, salattu sisältö. Indeksit kentissä personId, userId, generatedAt. Aspect‑sirut tallennetaan erilliseen taulukkoon nopeaa suodatusta varten.
Käyttäjän kirjoittamat pohdinnat, salattu sisältö. Indeksit kentissä userId, personId, createdAt. Teksti‑indeksoitu sisältö hakua varten. Jokaisessa merkinnässä 'yksityinen — älä syötä Luminaraan' -lippu.
Neljän ulottuvuuden pisteet per side. Uniikki indeksi personId:lle. Lasketaan uudelleen palvelukutsulla luvun tai päiväkirjan tallennuksen jälkeen.
Tiukka sääntö: tapahtumat käynnistyvät vain tietokannan commitin jälkeen. Ristimoduuliriippuvuudet Symbol‑injektiotokeneilla, ei koskaan forwardRef‑menetelmällä. Ei suoria palvelu‑palvelu‑tuontia ominaismoduulien välillä.
SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — käynnistyy, kun luku on salattu ja tallennettu. Notifications-v2 kuuntelee; luo saapuneet‑kohdan; voi lähettää push‑ilmoituksen.SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — käynnistyy, kun päiväkirjamerkintä on salattu ja tallennettu. Resonance‑palvelu kuuntelee; käynnistää uudelleenlaskennan.SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — käynnistyy, kun henkilön syntymätiedot muuttuvat. Synastria‑välimuisti poistetaan käytöstä.SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — notifications-v2‑sopimuksen mukaisesti; noudattaa push‑budjettia ja hiljaisia tunteja.119 jäljitettävät vaatimukset, nollatyhjiä. Jokainen vaatimus linkittyy eteenpäin testitapaukseen (UTP, ITP, STP, E2E) ja taaksepäin käyttäjätarinaan. 20 käyttäjätarinaa. 15 toiminnallista vaatimus. 12 ei‑toiminnallisia kategorioita. 8 globaalit hyväksymiskynnykset.
Luvun luonti 30 sekuntia tai nopeammin 95% pyynnöistä, mitattuna BullMQ‑työaikajakauman perusteella. API‑p99 GET‑viive 500 ms tai nopeampi 1,000 samanaikaisella käyttäjällä, mitattu k6‑kuormitustestillä. Frontend‑TTI 3 sekuntia tai nopeampi simuloidussa 4 G:ssä, mitattu Lighthouse CI:llä.
AES-256 -salaus levossa, alusta‑hallinnoiduilla avaimilla päiväkirja‑ ja luku‑sisällöille. TLS 1.2+ siirrossa; HTTP→HTTPS‑uudelleenohjaus. JWT‑pääsytokenit, joiden voimassaoloaika on 1 tuntia, ja virkistystokenit, joiden voimassaoloaika on 30 päivää, kierto virkistyksessä. Pehmeä poisto 30 päivän ikkunalla ennen pysyvää PII‑poistoa.
prefers-reduced-motion on globaalisti huomioitu — GSAP-animaatiot muuttuvat pelkiksi läpinäkyvyysfadeiksi. VoiceOver- ja TalkBack-etiketit jokaisessa interaktiivisessa elementissä. Manuaalisesti tarkistettu iOS:lla ja Androidilla ennen jokaista julkaisua.
Koska ylävirran määrittely rakentaa ominaisuuden uudelleen, ja uudelleenrakentaminen olemassa olevaan moduuliin rikkoisi joko v1‑kokemuksen tai vaatisi fork‑ja‑merge‑toimenpiteen myöhemmin. Uusi moduuli pitää v1 koskemattomana, antaa v2 todistaa toimivuutensa ja siirtyy puhtaasti, kun se on valmis.
Nykyinen My Zodiac AI -taustajärjestelmä käyttää MongoDB:tä; vaihtaminen tarkoittaisi infrastruktuuripäätöstä, joka ei liity tähän ominaisuuteen. Dokumenttimalli sopii myös luku- ja päiväkirjamerkintöihin hyvin — sisäkkäisiä, eripituisia, salattuja blobina.
BullMQ toimii Redisissä, joka on jo pinossa istuntojen ja nopeusrajoituksen vuoksi. Uutta infrastruktuuria ei tarvita. Sisäänrakennettu uudelleenyrittäminen, aikaraja ja havaittavuus kattavat luku‑generoinnin tarpeet ilman räätälöityä putkistoa.
Sisäinen repo. Tämän sivun numerot ja sopimukset tiivistävät ylävirran V‑mallin artefakteja. Julkiset insinööri‑blogikirjoitukset My Zodiac AI:n blogiklustereissa (tagattu 'cosmic-story-v2') syventyvät rakennuksen erityisiin osiin.
Soulwisen aallot avautuvat parhaillaan, mutta lippulaivamme astrologiasovellus on jo käsissäsi.
Astrologinen sisältö on tarkoitettu pohdintaan ja viihteeseen. Cosmic Story v2 -ominaisuudet, joita tässä kuvataan, ovat kehitteillä; saatavuus voi muuttua ilman erillistä ilmoitusta.