Ìṣètò Cosmic Story v2 — ìwádìí jíjinlẹ̀.

Fún àwọn ẹlẹ́rọ, àwọn PM, àwọn akọ̀ròyìn, àti àwọn aṣàwárí àjọṣepọ̀. Gbogbo ọ̀nà-iṣẹ́ náà, àkójọpọ̀ MongoDB mẹ́rin, àwọn iṣẹ̀lẹ̀ EDA, ìṣòro V-Model, àwọn àfojúsùn ìṣesí, ààbò, àti ìrọrùn-wíwọlé — gbogbo rẹ̀ lórí ojú-ìwé kan.

  • Soulwise-story jẹ́ módúù NestJS tuntun lẹ́gbẹ̀ẹ́ módúù cosmic-story tí ó ti wà. Kò sí ìkó-wọlé tààrà láàárín àwọn módúù ẹ̀yà.
  • Àkójọpọ̀ MongoDB mẹ́rin: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. Àwọn ara tí a fi AES-256 pa mọ́, tí a ṣàmì sí fún àwọn ìbéèrè tí ọ̀kọ̀ọ̀kan ń sìn.
  • Ìpilẹ̀ṣẹ̀ Async nípasẹ̀ ọ̀wọ́ BullMQ pẹ̀lú àkókò tó pẹ́ 28 s. A ń tú àwọn ìṣẹ̀lẹ̀ jáde nípasẹ̀ EventEmitter2 kìkì lẹ́yìn ìfìdímúlẹ̀ database — kò sí àwọn nǹkan inbox tí kò sí nígbà gidi.
  • Ìlànà V-Model: 119 àwọn ohun tí a nílò, kò sí àlàfo. Èròngbà ìbòmọ́lẹ̀ backend jẹ́ 85% statement lórí services; frontend 90% lórí àwọn ibi-ìpamọ́ Pinia.

Ìlà-iṣẹ́ náà, lẹ́ẹ̀kan sí i, pẹ̀lú àwọn àlàyé iṣẹ́-ẹ̀rọ

Ìgbésẹ̀ kọ̀ọ̀kan ní service kan, àdéhùn kan, àti ìṣẹ̀lẹ̀ kan.

  1. Ohun ìdánilójú

    Ìṣe olùmúlò kan — 'pèsè orí ìwé òní fún Arábìnrin' — tàbí cron tí a ti ṣètò, bíi àkótán Ọjọ́ Àìkú ní 9 a.m., tàbí ìtúnṣe ojú-ọjọ́ ní gbogbo wákàtí 6.

  2. Ìlà-ìdúró

    Iṣẹ́ náà ń bọ̀ sí ìlà-ìdúró BullMQ tí orúkọ rẹ̀ jẹ́ soulwise-chapter-generation, pẹ̀lú àkókò ìparí líle ti 28 ìṣẹ́jú-aaya. A ó pa àwọn iṣẹ́ tó ń pẹ́ jù, a ó sì ròyìn rẹ̀ sí olùmúlò gẹ́gẹ́ bí 'gbìyànjú lẹ́ẹ̀kan sí i'.

  3. Ìṣàkójọ

    ChapterGenerationService ń kó àwọn àfojúsùn ìṣírò mẹ́rin jọ — ọ̀rọ̀ ẹni, ìmọ̀ ìràwọ̀, àmì, àti ìlù — sí ìbẹ̀rẹ̀ kan ṣoṣo. Kò sí ìsọfúnni aládàáni olùmúlò tó ń wọ inú ìbẹ̀rẹ̀ náà bí ó ti rí; a ti fọ ohun gbogbo mọ́ tẹ́lẹ̀.

  4. Ṣẹ̀dá

    A máa pe olùpèsè AI nípasẹ̀ àmì-àkọ́sílẹ̀ AI_GENERATION_ADAPTER — olùpèsè náà ṣeé yí padà. A máa ṣàyẹ̀wò ìdáhùn náà fún gígùn, ìrísí, àti àìléwu kí á tó tẹ̀síwájú.

  5. Ìfàkún-ẹ̀yìn

    Nǹkan mẹ́rin ló máa ṣẹlẹ̀: olùpín-ìpọ́njú kan máa ṣàyẹ̀wò fún èdè ìpọ́njú; olùyọ-àmì-ìbáṣepọ̀ máa fa àmì ìràwọ̀ kan dé mẹ́ta jáde; àlẹ̀mọ́-àtakò-ẹ̀dùn máa mú àwọn ọ̀rọ̀ tí a kọ̀sílẹ̀ kúrò; a ó sì fi kọ́kọ́rọ́ tí pẹpẹ náà ń ṣàkóso fi AES-256 pa ara àkọsílẹ̀ náà mọ́ ní àṣírí.

  6. Pamọ́

    A máa kọ àkójọ náà sí àkójọpọ̀ MongoDB tí ó yẹ — orí-ọ̀rọ̀, àkọsílẹ̀ ìwé-ìrántí, ìbáramu — pẹ̀lú àwọn àtọ́ka userId àti personId fún wíwá kíákíá. Ìparẹ́-rírọ̀ ní àkọ́kọ́; ìparẹ́-líle ti PII ní ọjọ́ 30.

  7. Ìfìtọ́nilétí

    Ìṣẹ̀lẹ̀ EventEmitter2 kan — CHAPTER_COMPLETED, JOURNAL_CREATED — máa tanná lẹ́yìn tí a bá ti fọwọ́sí ìpamọ́ ibùdó-ìsọfunni. Mọ́dúlù ìfìtọ́nilétí máa gbé e, máa ṣẹ̀dá ohun kan sí àpótí-ìfìwéránṣẹ́, ó sì lè rán ìtì-ìfìtọ́nilétí (tí a ká mọ́ ẹ̀ẹ̀kan lóòjọ́, tí a sì bọ̀wọ̀ fún àwọn wákàtí ìdákẹ́jẹ́ẹ́).

  8. Ìfihàn

    Ojú-iwájú máa fa àkójọ náà nípasẹ̀ ìpè API tí a fọwọ́sí. Hub máa tún kọ àkóónú tuntun náà jáde. Tí olùmúlò bá wà lẹ́yìn-àyélujára, kàṣì máa fún ọ ní ìwò àná, àkójọ tuntun náà yóò sì fara hàn nígbà tí ó bá tún darapọ̀.

Ìṣísẹ̀ méje láti orí ohun tó dá a sílẹ̀ títí dé ojú ojú-ìwé, ọ̀kọ̀ọ̀kan ní orúkọ tó dálẹ̀ ohun tó ń ṣe gan-an.

Àwọn àkójọpọ̀ mẹ́rin náà

Tí a ṣàmì sí fún àwọn ìbéèrè tí ọ̀kọ̀ọ̀kan ń dáhùn.

soulwise_persons

Àwọn ìbáwọlé album. Àwọn àmì lórí userId, status, deletedAt. Ìparẹ́ rírọ̀ ní àkọ́kọ́; ìparẹ́ líle ti PII ní ọjọ́ 30.

soulwise_chapters

Àwọn orí tí AI kọ, ara tí a fi pa mọ́. Àwọn àmì lórí personId, userId, generatedAt. A pa àwọn èérún aspect mọ́ gẹ́gẹ́ bí ọ̀wọ́ ọ̀tọ̀ fún àyẹ̀wò kíákíá.

soulwise_journal_entries

Àwọn àfàṣàrò tí olùmúlò kọ, ara tí a fi pa mọ́. Àwọn àmì lórí userId, personId, createdAt. Ara tí a fi text ṣàmì sí fún ìwákiri. Àmì 'aṣírí — má fi fún Luminara' fún ìbáwọlé kọ̀ọ̀kan.

soulwise_resonances

Àwọn ìdíwọ̀n ojú-mẹ́rin fún ìdè kọ̀ọ̀kan. Àmì aláìlẹ́gbẹ́ lórí personId. A tún ṣírò rẹ̀ nípasẹ̀ ìpè service lẹ́yìn kíkọ orí tàbí journal.

Àwọn ìṣẹ̀lẹ̀ EDA

Òfin tó le: àwọn ìṣẹ̀lẹ̀ máa ń jáde lẹ́yìn ìfìdíkalẹ̀ (commit) sí ibi ìpamọ́ data nìkan. Àwọn ìgbáralé tó kọjá module nípasẹ̀ àmì àfilọ́nà Symbol, kì í ṣe nípasẹ̀ forwardRef. Kò sí àgbéwọlé tààrà láàrin iṣẹ́ kan sí òmíràn láàrin àwọn module ẹ̀ya-ọ̀rọ̀.

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — máa ń jáde lẹ́yìn tí a bá ti fi orí-ọ̀rọ̀ pamọ́ sínú àmì-ìkọ̀kọ̀ tí a sì fìdí rẹ̀ múlẹ̀. Notifications-v2 ń tẹ́tí sílẹ̀; ó ń ṣẹ̀dá ohun ìnbox; ó lè rán push pẹ̀lú.
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — máa ń jáde lẹ́yìn tí a bá ti fi àkọsílẹ̀ ìwé-ìrántí pamọ́ sínú àmì-ìkọ̀kọ̀ tí a sì fìdí rẹ̀ múlẹ̀. Iṣẹ́ Resonance ń tẹ́tí sílẹ̀; ó ń mú ìṣirò-tuntun ṣiṣẹ́.
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — máa ń jáde lẹ́yìn tí dátà-ìbí ènìyàn kan bá yí padà. Àpótí-ìpamọ́ ìbáàdandun di àìwúlò.
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — gẹ́gẹ́ bí àdéhùn notifications-v2; ó ń bọ̀wọ̀ fún ìpín owó push àti àwọn wákàtí ìdákẹ́jẹ́ẹ́.

Ìṣòro pàtó ti V-Model

119 àwọn ohun-ìbéèrè tó ṣe é tọpa, láìsí àlàfo kankan. Ohun-ìbéèrè kọ̀ọ̀kan ń lọ síwájú sí ọ̀ràn ìdánwò kan (UTP, ITP, STP, E2E) ó sì ń padà sẹ́yìn sí ìtàn olùmúlò. 20 àwọn ìtàn olùmúlò. 15 àwọn ohun-ìbéèrè iṣẹ́-ṣíṣe. 12 àwọn ẹ̀ka àìṣe-iṣẹ́-ṣíṣe. 8 àwọn ẹnu-ọ̀nà ìfọwọ́sí àgbáyé.

Àdéhùn iṣẹ́-ṣíṣe

Ìṣẹ̀dá orí-ọ̀rọ̀ ní ìṣẹ́jú-aaya 30 tàbí dáradára fún 95% àwọn ìbéèrè, tí a wọn lòdì sí pínpín àkókò iṣẹ́ BullMQ. Ìdádúró API p99 GET ní ms 500 tàbí dáradára pẹ̀lú àwọn olùmúlò 1,000 tó wà lẹ́ẹ̀kan náà, tí a wọn nípasẹ̀ ìdánwò ẹrù k6. Frontend TTI ní ìṣẹ́jú-aaya 3 tàbí dáradára lórí 4G àfarawé, tí a wọn nípasẹ̀ Lighthouse CI.

Àdéhùn ààbò

Àmì-ìkọ̀kọ̀ AES-256 nígbà ìsinmi pẹ̀lú àwọn kọ́kọ́rọ́ tí pẹpẹ ń ṣàkóso fún ara ìwé-ìrántí àti orí-ọ̀rọ̀. TLS 1.2+ nígbà gbígbé; ìdarí HTTP→HTTPS. Àwọn àmì-ìwọlé JWT pẹ̀lú ìwàláàyè wákàtí 1, àwọn àmì ìsọdọtun pẹ̀lú ìwàláàyè ọjọ́ 30, ìyípadà nígbà ìsọdọtun. Ìparẹ́ rírọ̀ pẹ̀lú àkókò ọjọ́ 30 kí ìparẹ́ líle ti PII tó wáyé.

Àdéhùn ìríráyè

prefers-reduced-motion ni a ń bọ̀wọ̀ fún kárí ayé — àwọn eré ìdàgẹrẹ GSAP a di ìfọ́nrọ́n opacity-nìkan. Àwọn àmì VoiceOver àti TalkBack wà lórí gbogbo èròjà tí a lè bá ṣiṣẹ́. A fọwọ́ ṣàyẹ̀wò rẹ̀ lórí iOS àti Android ṣáájú gbogbo ìtújáde.

Èéṣe tí a fi ní module soulwise-story ọ̀tọ̀ dípò kí a fẹ̀ cosmic-story?

Nítorí pé àpèjúwe upstream tún ẹ̀ya náà kọ́, kíkọ́ ọ̀ tún inú module tó wà tẹ́lẹ̀ á bàjẹ́ ìrírí v1 tàbí kí ó pín-kí-ó-rọ̀-papọ̀ lẹ́yìn náà. Module tuntun ń jẹ́ kí v1 wà láìfọwọ́kàn, ó ń jẹ́ kí v2 fi ara rẹ̀ hàn, ó sì ń ṣí lọ ní mímọ́ nígbà tí ó bá ti ṣetán.

Èéṣe tí ó fi jẹ́ MongoDB kì í sì í ṣe Postgres?

Backend My Zodiac AI tó wà tẹ́lẹ̀ wà lórí MongoDB; yíyípadà yóò túmọ̀ sí ìpinnu nípa amáyédẹrùn tí kò ní nǹkan ṣe pẹ̀lú ẹ̀ya yìí. Àwòṣe document náà tún bá àwọn orí àti àkọsílẹ̀ ìwé-àkọọlẹ̀ mu dáadáa — tí a tò sínú ara wọn, tí gígùn wọn yàtọ̀, tí a sì kọ́ pa mọ́ gẹ́gẹ́ bí blob.

Èéṣe tí BullMQ fi jẹ́ àyànfẹ́ queue?

BullMQ ń ṣiṣẹ́ lórí Redis, tí ó ti wà nínú stack náà fún session àti rate-limit. Kò sí amáyédẹrùn tuntun. Retry, timeout, àti observability tí ó wà nínú rẹ̀ ń bo àwọn àìní ìṣẹ̀dá-orí láìsí àfikún plumbing aṣàkànṣe.

Níbo gan-an ni a ti kọ àpèjúwe upstream náà sílẹ̀?

Repo inú. Àwọn nọ́mbà àti àdéhùn tó wà lórí ojú-ìwé yìí ń ṣàtúntúmọ̀ àwọn ohun-èlò V-Model upstream. Àwọn ìfìwéránṣẹ́ blog imọ̀-ẹ̀rọ tí ó dojú kọ àwùjọ lórí ìṣùpọ̀ blog My Zodiac AI (tí a fi àmì 'cosmic-story-v2' sí) ń lọ jìnnà síi sínú àwọn apá pàtó nínú ìkọ́ náà.

Gbìyànjú My Zodiac AI lónìí

Bí Soulwise ti ń ṣí ìṣàn omi rẹ̀ sílẹ̀, app awòràwọ̀ àkọ́kọ́ wa ti wà ní ọwọ́ rẹ tẹ́lẹ̀.

Àkóónú ìmọ̀ ìràwọ̀ wà fún àṣàrò àti eré ìdárayá. Àwọn ẹ̀ya Cosmic Story v2 tí a ṣàpèjúwe níbí wà nínú ìdàgbàsókè; wíwà rẹ̀ lè yí padà láìsí ìkìlọ̀.