Cosmic Story v2 આર્કિટેક્ચર — એક ઊંડું વિશ્લેષણ.

એન્જિનિયરો, PM, પત્રકારો અને પાર્ટનરશિપ સ્કાઉટ્સ માટે. સંપૂર્ણ પાઇપલાઇન, ચાર MongoDB કલેક્શન, EDA ઇવેન્ટ્સ, V-Model ની કડકતા, પરફોર્મન્સ ટાર્ગેટ્સ, સુરક્ષા અને એક્સેસિબિલિટી — બધું એક જ પેજ પર.

  • Soulwise-story એ હાલના cosmic-story મોડ્યુલની સાથે એક નવું NestJS મોડ્યુલ છે. ફીચર મોડ્યુલો વચ્ચે કોઈ સીધી ઇમ્પોર્ટ નથી.
  • ચાર MongoDB collections: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. AES-256 થી encrypt કરેલા bodies, જે દરેક query માટે વપરાય તે મુજબ indexed.
  • BullMQ queue દ્વારા async generation, 28 s timeout સાથે. Events ફક્ત database commit પછી જ EventEmitter2 દ્વારા emit થાય — કોઈ phantom inbox items નહીં.
  • V-Model spec: 119 requirements, એકપણ gap નહીં. Backend coverage target services પર 85% statement; frontend Pinia stores પર 90%.

આ pipeline, ફરી એકવાર, engineering વિગત સાથે

દરેક step પાસે એક service, એક contract અને એક event છે.

  1. ટ્રિગર

    વપરાશકર્તાની ક્રિયા — 'Sister માટે આજનું પ્રકરણ બનાવો' — અથવા સુનિશ્ચિત cron, જેમ કે રવિવારે 9 a.m. નો રિકૅપ, કે દર-6-કલાકે થતું વેધર રિફ્રેશ.

  2. ક્યૂ

    આ જોબ soulwise-chapter-generation નામની BullMQ ક્યૂ પર પહોંચે છે, જેમાં 28-સેકન્ડનો કડક ટાઇમઆઉટ હોય છે. લાંબો સમય ચાલતા જોબ બંધ કરી દેવાય છે અને વપરાશકર્તાને 'ફરી પ્રયાસ કરો' તરીકે જણાવાય છે.

  3. કમ્પોઝ

    ChapterGenerationService ચાર-પરિબળ વાળું પ્રોમ્પ્ટ — વ્યક્તિનો સંદર્ભ, જ્યોતિષ, સંકેત, કેડેન્સ — એક જ ઇનપુટમાં ભેગું કરે છે. કોઈ કાચી વપરાશકર્તા PII પ્રોમ્પ્ટમાં હૂબહૂ જતી નથી; બધું પહેલાં સાફ કરવામાં આવે છે.

  4. જનરેટ કરો

    AI_GENERATION_ADAPTER સિમ્બોલ ટોકન દ્વારા એક AI પ્રોવાઈડરને કૉલ કરવામાં આવે છે — પ્રોવાઈડર બદલી શકાય તેવો છે. આગળ વધતા પહેલાં રિસ્પોન્સની લંબાઈ, સ્વરૂપ અને સલામતી ચકાસવામાં આવે છે.

  5. પોસ્ટ-પ્રોસેસ કરો

    ચાર બાબતો બને છે: એક ક્રાઈસિસ ક્લાસિફાયર કટોકટીની ભાષા ચકાસે છે; એક એસ્પેક્ટ-ચિપ એક્સ્ટ્રેક્ટર એકથી ત્રણ જ્યોતિષ ચિપ્સ ખેંચે છે; એક એન્ટિ-ક્લેઈમ ફિલ્ટર પ્રતિબંધિત શબ્દપ્રયોગો કાઢી નાખે છે; બોડી પ્લેટફોર્મ-મેનેજ્ડ કી સાથે AES-256 એન્ક્રિપ્ટ થાય છે.

  6. સાચવો

    આર્ટિફેક્ટ યોગ્ય MongoDB કલેક્શનમાં લખાય છે — chapters, journal entries, resonances — ઝડપી લુકઅપ માટે userId અને personId ઈન્ડેક્સ સાથે. પહેલાં સોફ્ટ-ડિલીટ; PIIનું હાર્ડ-ડિલીટ 30 દિવસે.

  7. સૂચિત કરો

    ડેટાબેઝ કમિટ પછી એક EventEmitter2 ઇવેન્ટ — CHAPTER_COMPLETED, JOURNAL_CREATED — ફાયર થાય છે. નોટિફિકેશન્સ મોડ્યુલ તેને ઉપાડે છે, એક ઇનબોક્સ આઈટમ બનાવે છે, અને વૈકલ્પિક રીતે પુશ મોકલે છે (દિવસમાં એક સુધી મર્યાદિત, શાંત કલાકોનું ધ્યાન રાખીને).

  8. દર્શાવો

    ફ્રન્ટએન્ડ એક ઓથેન્ટિકેટેડ API કૉલ દ્વારા આર્ટિફેક્ટ ખેંચે છે. Hub નવા કન્ટેન્ટ સાથે ફરી રેન્ડર થાય છે. જો યુઝર ઓફલાઈન હોય, તો કેશ ગઈકાલનું વ્યૂ આપે છે અને ફરી કનેક્ટ થતાં જ નવો આર્ટિફેક્ટ દેખાય છે.

ટ્રિગરથી સરફેસ સુધીનાં સાત પગલાં, દરેકનું નામ એ ખરેખર જે કરે છે તેના પરથી.

ચાર collections

દરેક જે query નો જવાબ આપે તે મુજબ indexed.

soulwise_persons

Album entries. userId, status, deletedAt પર indexes. પહેલા soft-delete; 30 દિવસે PII નું hard-delete.

soulwise_chapters

AI દ્વારા લખાયેલા chapters, encrypted body. personId, userId, generatedAt પર indexes. ઝડપી filtering માટે aspect chips અલગ array તરીકે સંગ્રહિત.

soulwise_journal_entries

વપરાશકર્તાએ લખેલા reflections, encrypted body. userId, personId, createdAt પર indexes. Search માટે text-indexed body. દરેક entry માટે 'private — Luminara ને ન આપો' flag.

soulwise_resonances

દરેક bond માટે ચાર-પરિમાણના scores. personId પર unique index. Chapter કે journal write પછી service call દ્વારા ફરી ગણતરી થાય.

EDA ઇવેન્ટ્સ

કડક નિયમ: ઇવેન્ટ્સ ડેટાબેઝ commit પછી જ ફાયર થાય છે. ક્રોસ-મોડ્યુલ ડિપેન્ડન્સી Symbol injection tokens દ્વારા, ક્યારેય forwardRef દ્વારા નહીં. ફીચર મોડ્યુલ્સ વચ્ચે સીધી service-to-service imports નહીં.

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — chapter એન્ક્રિપ્ટ થઈને persist થયા પછી ફાયર થાય છે. Notifications-v2 સાંભળે છે; inbox item બનાવે છે; વૈકલ્પિક રીતે push મોકલે છે.
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — journal entry એન્ક્રિપ્ટ થઈને persist થયા પછી ફાયર થાય છે. Resonance service સાંભળે છે; recompute ટ્રિગર કરે છે.
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — વ્યક્તિના birth-data બદલાયા પછી ફાયર થાય છે. સિનાસ્ટ્રી cache invalidate થાય છે.
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — notifications-v2 કોન્ટ્રાક્ટ મુજબ; push budget અને quiet hours નું પાલન કરે છે.

V-Model સ્પેક ચોકસાઈ

119 ટ્રેસેબલ requirements, શૂન્ય gaps. દરેક requirement આગળ એક test case (UTP, ITP, STP, E2E) સાથે અને પાછળ એક user story સાથે જોડાય છે. 20 user stories. 15 functional requirements. 12 non-functional categories. 8 global acceptance gates.

Performance કોન્ટ્રાક્ટ

Chapter generation 95% requests માટે 30 સેકન્ડ કે તેથી સારું, BullMQ job duration distribution સામે માપવામાં આવ્યું. API p99 GET latency 1,000 concurrent users પર 500 ms કે તેથી સારું, k6 load test દ્વારા માપવામાં આવ્યું. Frontend TTI સિમ્યુલેટેડ 4G પર 3 સેકન્ડ કે તેથી સારું, Lighthouse CI દ્વારા માપવામાં આવ્યું.

Security કોન્ટ્રાક્ટ

journal અને chapter bodies માટે platform-managed keys સાથે at rest પર AES-256 encryption. transit માં TLS 1.2+; HTTP→HTTPS redirect. 1-કલાક lifetime સાથે JWT access tokens, 30-દિવસ lifetime સાથે refresh tokens, refresh પર rotation. PII ના hard-delete પહેલાં 30-દિવસ window સાથે soft-delete.

Accessibility કોન્ટ્રાક્ટ

prefers-reduced-motion ને દરેક જગ્યાએ માન આપવામાં આવે છે — GSAP એનિમેશન માત્ર opacity-fade બની જાય છે. દરેક ઇન્ટરેક્ટિવ એલિમેન્ટ પર VoiceOver અને TalkBack લેબલ. દરેક રિલીઝ પહેલાં iOS અને Android પર જાતે ચકાસવામાં આવે છે.

cosmic-story ને વિસ્તારવાને બદલે અલગ soulwise-story મોડ્યુલ કેમ?

કારણ કે upstream spec આ ફીચરને નવેસરથી બનાવે છે, અને હાલના મોડ્યુલની અંદર નવેસરથી બનાવવાથી કાં તો v1 અનુભવ તૂટી જાય અથવા પછી fork-then-merge કરવું પડે. નવું મોડ્યુલ v1 ને અકબંધ રાખે છે, v2 ને સાબિત થવા દે છે, અને તૈયાર થયે સ્વચ્છ રીતે migrate કરે છે.

Postgres નહીં અને MongoDB કેમ?

હાલનું My Zodiac AI બેકએન્ડ MongoDB પર છે; બદલવાનો અર્થ આ ફીચર સાથે સંબંધ ન ધરાવતો ઇન્ફ્રાસ્ટ્રક્ચર નિર્ણય થાય. document મોડેલ chapters અને journal entries ને પણ સારી રીતે બંધબેસે છે — nested, અલગ-અલગ લંબાઈના, encrypted-as-blob.

queue તરીકે BullMQ ની પસંદગી કેમ?

BullMQ Redis પર ચાલે છે, જે session અને rate-limit માટે પહેલેથી stack માં છે. કોઈ નવું ઇન્ફ્રાસ્ટ્રક્ચર નહીં. અંતર્ગત retry, timeout અને observability કોઈ custom plumbing વગર chapter-generation ની જરૂરિયાતો સંભાળે છે.

upstream spec ખરેખર ક્યાં લખાયેલું છે?

આંતરિક repo માં. આ પેજ પરના આંકડા અને contracts upstream V-Model artifacts ને સંક્ષેપમાં રજૂ કરે છે. My Zodiac AI ના blog cluster પરની જાહેર engineering blog post ('cosmic-story-v2' ટેગ સાથે) બિલ્ડના ચોક્કસ ભાગોમાં વધુ ઊંડે જાય છે.

આજે જ My Zodiac AI અજમાવો

Soulwise તેની તરંગો ખોલી રહ્યું છે ત્યારે, અમારી મુખ્ય જ્યોતિષ app પહેલેથી જ તમારા હાથમાં છે.

જ્યોતિષ સામગ્રી મનન અને મનોરંજન માટે છે. અહીં વર્ણવેલ Cosmic Story v2 ફીચર્સ વિકાસ હેઠળ છે; ઉપલબ્ધતા સૂચના વિના બદલાઈ શકે છે.