soulwise_persons
Album entries. userId, status, deletedAt પર indexes. પહેલા soft-delete; 30 દિવસે PII નું hard-delete.
એન્જિનિયરો, PM, પત્રકારો અને પાર્ટનરશિપ સ્કાઉટ્સ માટે. સંપૂર્ણ પાઇપલાઇન, ચાર MongoDB કલેક્શન, EDA ઇવેન્ટ્સ, V-Model ની કડકતા, પરફોર્મન્સ ટાર્ગેટ્સ, સુરક્ષા અને એક્સેસિબિલિટી — બધું એક જ પેજ પર.
દરેક step પાસે એક service, એક contract અને એક event છે.
વપરાશકર્તાની ક્રિયા — 'Sister માટે આજનું પ્રકરણ બનાવો' — અથવા સુનિશ્ચિત cron, જેમ કે રવિવારે 9 a.m. નો રિકૅપ, કે દર-6-કલાકે થતું વેધર રિફ્રેશ.
આ જોબ soulwise-chapter-generation નામની BullMQ ક્યૂ પર પહોંચે છે, જેમાં 28-સેકન્ડનો કડક ટાઇમઆઉટ હોય છે. લાંબો સમય ચાલતા જોબ બંધ કરી દેવાય છે અને વપરાશકર્તાને 'ફરી પ્રયાસ કરો' તરીકે જણાવાય છે.
ChapterGenerationService ચાર-પરિબળ વાળું પ્રોમ્પ્ટ — વ્યક્તિનો સંદર્ભ, જ્યોતિષ, સંકેત, કેડેન્સ — એક જ ઇનપુટમાં ભેગું કરે છે. કોઈ કાચી વપરાશકર્તા PII પ્રોમ્પ્ટમાં હૂબહૂ જતી નથી; બધું પહેલાં સાફ કરવામાં આવે છે.
AI_GENERATION_ADAPTER સિમ્બોલ ટોકન દ્વારા એક AI પ્રોવાઈડરને કૉલ કરવામાં આવે છે — પ્રોવાઈડર બદલી શકાય તેવો છે. આગળ વધતા પહેલાં રિસ્પોન્સની લંબાઈ, સ્વરૂપ અને સલામતી ચકાસવામાં આવે છે.
ચાર બાબતો બને છે: એક ક્રાઈસિસ ક્લાસિફાયર કટોકટીની ભાષા ચકાસે છે; એક એસ્પેક્ટ-ચિપ એક્સ્ટ્રેક્ટર એકથી ત્રણ જ્યોતિષ ચિપ્સ ખેંચે છે; એક એન્ટિ-ક્લેઈમ ફિલ્ટર પ્રતિબંધિત શબ્દપ્રયોગો કાઢી નાખે છે; બોડી પ્લેટફોર્મ-મેનેજ્ડ કી સાથે AES-256 એન્ક્રિપ્ટ થાય છે.
આર્ટિફેક્ટ યોગ્ય MongoDB કલેક્શનમાં લખાય છે — chapters, journal entries, resonances — ઝડપી લુકઅપ માટે userId અને personId ઈન્ડેક્સ સાથે. પહેલાં સોફ્ટ-ડિલીટ; PIIનું હાર્ડ-ડિલીટ 30 દિવસે.
ડેટાબેઝ કમિટ પછી એક EventEmitter2 ઇવેન્ટ — CHAPTER_COMPLETED, JOURNAL_CREATED — ફાયર થાય છે. નોટિફિકેશન્સ મોડ્યુલ તેને ઉપાડે છે, એક ઇનબોક્સ આઈટમ બનાવે છે, અને વૈકલ્પિક રીતે પુશ મોકલે છે (દિવસમાં એક સુધી મર્યાદિત, શાંત કલાકોનું ધ્યાન રાખીને).
ફ્રન્ટએન્ડ એક ઓથેન્ટિકેટેડ API કૉલ દ્વારા આર્ટિફેક્ટ ખેંચે છે. Hub નવા કન્ટેન્ટ સાથે ફરી રેન્ડર થાય છે. જો યુઝર ઓફલાઈન હોય, તો કેશ ગઈકાલનું વ્યૂ આપે છે અને ફરી કનેક્ટ થતાં જ નવો આર્ટિફેક્ટ દેખાય છે.
દરેક જે query નો જવાબ આપે તે મુજબ indexed.
Album entries. userId, status, deletedAt પર indexes. પહેલા soft-delete; 30 દિવસે PII નું hard-delete.
AI દ્વારા લખાયેલા chapters, encrypted body. personId, userId, generatedAt પર indexes. ઝડપી filtering માટે aspect chips અલગ array તરીકે સંગ્રહિત.
વપરાશકર્તાએ લખેલા reflections, encrypted body. userId, personId, createdAt પર indexes. Search માટે text-indexed body. દરેક entry માટે 'private — Luminara ને ન આપો' flag.
દરેક bond માટે ચાર-પરિમાણના scores. personId પર unique index. Chapter કે journal write પછી service call દ્વારા ફરી ગણતરી થાય.
કડક નિયમ: ઇવેન્ટ્સ ડેટાબેઝ 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 નું પાલન કરે છે.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.
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 દ્વારા માપવામાં આવ્યું.
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.
prefers-reduced-motion ને દરેક જગ્યાએ માન આપવામાં આવે છે — GSAP એનિમેશન માત્ર opacity-fade બની જાય છે. દરેક ઇન્ટરેક્ટિવ એલિમેન્ટ પર VoiceOver અને TalkBack લેબલ. દરેક રિલીઝ પહેલાં iOS અને Android પર જાતે ચકાસવામાં આવે છે.
કારણ કે upstream spec આ ફીચરને નવેસરથી બનાવે છે, અને હાલના મોડ્યુલની અંદર નવેસરથી બનાવવાથી કાં તો v1 અનુભવ તૂટી જાય અથવા પછી fork-then-merge કરવું પડે. નવું મોડ્યુલ v1 ને અકબંધ રાખે છે, v2 ને સાબિત થવા દે છે, અને તૈયાર થયે સ્વચ્છ રીતે migrate કરે છે.
હાલનું My Zodiac AI બેકએન્ડ MongoDB પર છે; બદલવાનો અર્થ આ ફીચર સાથે સંબંધ ન ધરાવતો ઇન્ફ્રાસ્ટ્રક્ચર નિર્ણય થાય. document મોડેલ chapters અને journal entries ને પણ સારી રીતે બંધબેસે છે — nested, અલગ-અલગ લંબાઈના, encrypted-as-blob.
BullMQ Redis પર ચાલે છે, જે session અને rate-limit માટે પહેલેથી stack માં છે. કોઈ નવું ઇન્ફ્રાસ્ટ્રક્ચર નહીં. અંતર્ગત retry, timeout અને observability કોઈ custom plumbing વગર chapter-generation ની જરૂરિયાતો સંભાળે છે.
આંતરિક repo માં. આ પેજ પરના આંકડા અને contracts upstream V-Model artifacts ને સંક્ષેપમાં રજૂ કરે છે. My Zodiac AI ના blog cluster પરની જાહેર engineering blog post ('cosmic-story-v2' ટેગ સાથે) બિલ્ડના ચોક્કસ ભાગોમાં વધુ ઊંડે જાય છે.
Soulwise તેની તરંગો ખોલી રહ્યું છે ત્યારે, અમારી મુખ્ય જ્યોતિષ app પહેલેથી જ તમારા હાથમાં છે.
જ્યોતિષ સામગ્રી મનન અને મનોરંજન માટે છે. અહીં વર્ણવેલ Cosmic Story v2 ફીચર્સ વિકાસ હેઠળ છે; ઉપલબ્ધતા સૂચના વિના બદલાઈ શકે છે.