Cosmic Story v2 ఆర్కిటెక్చర్ — ఒక లోతైన విశ్లేషణ.

ఇంజినీర్‌లు, PM‌లు, జర్నలిస్ట్‌లు, పార్ట్‌నర్‌షిప్ స్కౌట్‌ల కోసం. పూర్తి pipeline, నాలుగు MongoDB collections, EDA events, V-Model కఠినత్వం, పనితీరు లక్ష్యాలు, భద్రత, యాక్సెసిబిలిటీ — అన్నీ ఒకే పేజీలో.

  • Soulwise-story అనేది ఇప్పటికే ఉన్న cosmic-story మాడ్యూల్‌తో పాటు ఒక కొత్త NestJS మాడ్యూల్. ఫీచర్ మాడ్యూల్‌ల మధ్య నేరుగా ఎటువంటి imports లేవు.
  • నాలుగు MongoDB collections: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. AES-256 తో encrypt చేయబడిన bodies, ప్రతి ఒక్కటి చేసే queries కోసం index చేయబడ్డాయి.
  • 28 s timeout తో BullMQ queue ద్వారా async generation. Database commit తర్వాత మాత్రమే EventEmitter2 ద్వారా events emit అవుతాయి — phantom inbox items ఉండవు.
  • V-Model spec: 119 requirements, ఎలాంటి gaps లేవు. Backend coverage target services పై 85% statement; frontend లో Pinia stores పై 90%.

మళ్ళీ, engineering వివరాలతో pipeline

ప్రతి step కి ఒక service, ఒక contract, మరియు ఒక event ఉంటాయి.

  1. ట్రిగ్గర్

    ఒక యూజర్ చర్య — 'Sister కోసం ఈరోజు అధ్యాయాన్ని generate చేయి' — లేదా ఒక షెడ్యూల్డ్ క్రాన్, ఆదివారం 9 a.m. రీక్యాప్ లాగా, లేదా ప్రతి-6-గంటల వాతావరణ రిఫ్రెష్ లాగా.

  2. క్యూ

    ఈ జాబ్ soulwise-chapter-generation అనే BullMQ క్యూపై చేరుతుంది, ఖచ్చితమైన 28-సెకన్ల టైమ్‌అవుట్‌తో. ఎక్కువ సేపు నడిచే జాబ్‌లు ఆపివేయబడతాయి, యూజర్‌కి 'మళ్ళీ ప్రయత్నించండి' అని తెలియజేయబడతాయి.

  3. కంపోజ్

    ChapterGenerationService నాలుగు-అంశాల ప్రాంప్ట్‌ను — వ్యక్తి సందర్భం, జ్యోతిషం, సిగ్నల్, కేడెన్స్ — ఒకే ఇన్‌పుట్‌గా సమకూరుస్తుంది. యూజర్ యొక్క ముడి PII ఏదీ ప్రాంప్ట్‌లోకి యథాతథంగా వెళ్ళదు; ప్రతిదీ ముందుగా శుభ్రపరచబడుతుంది.

  4. జనరేట్ చేయండి

    AI_GENERATION_ADAPTER సింబల్ టోకెన్ ద్వారా ఒక AI ప్రొవైడర్‌ను కాల్ చేస్తారు — ప్రొవైడర్‌ను మార్చుకోవచ్చు. కొనసాగడానికి ముందు రెస్పాన్స్‌ను పొడవు, ఆకారం, భద్రత కోసం తనిఖీ చేస్తారు.

  5. పోస్ట్-ప్రాసెస్

    నాలుగు విషయాలు జరుగుతాయి: ఒక crisis classifier సంక్షోభ భాష కోసం తనిఖీ చేస్తుంది; ఒక aspect-chip extractor ఒకటి నుండి మూడు జ్యోతిష చిప్‌లను తీస్తుంది; ఒక anti-claim filter నిషేధిత పదజాలాన్ని తొలగిస్తుంది; బాడీని ప్లాట్‌ఫామ్-నిర్వహిత కీతో AES-256 ఎన్‌క్రిప్ట్ చేస్తారు.

  6. పెర్సిస్ట్ చేయండి

    ఆర్టిఫ్యాక్ట్‌ను తగిన MongoDB కలెక్షన్‌లో రాస్తారు — చాప్టర్‌లు, జర్నల్ ఎంట్రీలు, రెసొనెన్స్‌లు — వేగవంతమైన లుకప్ కోసం userId మరియు personId ఇండెక్స్‌లతో. ముందుగా soft-delete; PII యొక్క hard-delete 30 రోజులకు.

  7. నోటిఫై చేయండి

    డేటాబేస్ కమిట్ తర్వాత ఒక EventEmitter2 ఈవెంట్ — CHAPTER_COMPLETED, JOURNAL_CREATED — ఫైర్ అవుతుంది. నోటిఫికేషన్స్ మాడ్యూల్ దాన్ని తీసుకుంటుంది, ఒక ఇన్‌బాక్స్ ఐటెమ్‌ను సృష్టిస్తుంది, మరియు ఐచ్ఛికంగా ఒక పుష్‌ను పంపుతుంది (రోజుకు ఒకటికి పరిమితం, నిశ్శబ్ద గంటలను గౌరవిస్తూ).

  8. సర్ఫేస్ చేయండి

    ఫ్రంటెండ్ ఒక ప్రామాణీకృత API కాల్ ద్వారా ఆర్టిఫ్యాక్ట్‌ను తీసుకుంటుంది. కొత్త కంటెంట్‌తో Hub మళ్లీ రెండర్ అవుతుంది. యూజర్ ఆఫ్‌లైన్‌లో ఉంటే, కాష్ నిన్నటి వ్యూను అందిస్తుంది, మరియు తిరిగి కనెక్ట్ అయినప్పుడు కొత్త ఆర్టిఫ్యాక్ట్ కనిపిస్తుంది.

ట్రిగ్గర్ నుండి సర్ఫేస్ వరకు ఏడు దశలు, ప్రతి ఒక్కటి అది నిజంగా చేసే పనిని బట్టి పేరు పెట్టబడింది.

ఆ నాలుగు collections

ప్రతి ఒక్కటి సమాధానమిచ్చే queries కోసం index చేయబడింది.

soulwise_persons

Album entries. userId, status, deletedAt పై indexes. ముందుగా soft-delete; PII యొక్క hard-delete 30 రోజులకు.

soulwise_chapters

AI రాసిన chapters, encrypt చేయబడిన body. personId, userId, generatedAt పై indexes. వేగవంతమైన filtering కోసం aspect chips ప్రత్యేక array గా నిల్వ చేయబడ్డాయి.

soulwise_journal_entries

User రాసిన reflections, encrypt చేయబడిన body. userId, personId, createdAt పై indexes. Search కోసం text-indexed body. ప్రతి entry కి 'private — Luminara కి feed చేయవద్దు' flag.

soulwise_resonances

ప్రతి bond కి four-dimension scores. personId పై unique index. Chapter లేదా journal write తర్వాత service call ద్వారా తిరిగి లెక్కించబడుతుంది.

EDA ఈవెంట్‌లు

కఠిన నియమం: ఈవెంట్‌లు డేటాబేస్ commit అయిన తర్వాతే fire అవుతాయి. మాడ్యూల్‌ల మధ్య డిపెండెన్సీలు Symbol injection టోకెన్‌ల ద్వారానే, ఎప్పుడూ forwardRef ద్వారా కాదు. ఫీచర్ మాడ్యూల్‌ల మధ్య నేరుగా service-to-service imports ఉండకూడదు.

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — ఒక chapter encrypt అయి, persist అయిన తర్వాత fire అవుతుంది. Notifications-v2 వింటుంది; inbox item సృష్టిస్తుంది; ఐచ్ఛికంగా push పంపుతుంది.
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — ఒక journal entry encrypt అయి, persist అయిన తర్వాత fire అవుతుంది. Resonance service వింటుంది; recompute ట్రిగ్గర్ చేస్తుంది.
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — ఒక వ్యక్తి యొక్క birth-data మారిన తర్వాత fire అవుతుంది. సినాస్ట్రీ cache invalidate అవుతుంది.
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — notifications-v2 contract ప్రకారం; push budget మరియు quiet hours పాటిస్తుంది.

V-Model spec కచ్చితత్వం

119 ట్రేస్ చేయదగిన requirements, ఏ గ్యాప్‌లు లేకుండా. ప్రతి requirement ముందుకు ఒక test case (UTP, ITP, STP, E2E)కు, వెనుకకు ఒక user storyకు మ్యాప్ అవుతుంది. 20 user stories. 15 functional requirements. 12 non-functional categories. 8 global acceptance gates.

పనితీరు ఒప్పందం

95% requests కోసం chapter generation 30 సెకన్లు లేదా అంతకన్నా మెరుగ్గా, BullMQ job duration distribution ఆధారంగా కొలవబడుతుంది. 1,000 concurrent users వద్ద API p99 GET latency 500 ms లేదా అంతకన్నా మెరుగ్గా, k6 load test ద్వారా కొలవబడుతుంది. సిమ్యులేటెడ్ 4Gలో Frontend TTI 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-only ఫేడ్‌లుగా మారతాయి. ప్రతి interactive ఎలిమెంట్‌పై VoiceOver, TalkBack లేబుల్‌లు ఉంటాయి. ప్రతి release ముందు iOS, Android లో మాన్యువల్‌గా ధృవీకరించబడింది.

cosmic-story ను విస్తరించడానికి బదులు ప్రత్యేక soulwise-story మాడ్యూల్ ఎందుకు?

ఎందుకంటే upstream స్పెక్ ఈ ఫీచర్‌ను తిరిగి నిర్మిస్తుంది, ఇప్పటికే ఉన్న మాడ్యూల్ లోపల తిరిగి నిర్మించడం వల్ల v1 అనుభవం పాడవుతుంది, లేదా తర్వాత fork-then-merge చేయాల్సి వస్తుంది. కొత్త మాడ్యూల్ v1 ను తాకకుండా ఉంచుతుంది, v2 ను నిరూపించుకోనిస్తుంది, సిద్ధమైనప్పుడు శుభ్రంగా migrate చేస్తుంది.

Postgres కాకుండా MongoDB ఎందుకు?

ప్రస్తుత My Zodiac AI బ్యాకెండ్ MongoDB పై ఉంది; మారడం అంటే ఈ ఫీచర్‌తో సంబంధం లేని ఇన్‌ఫ్రాస్ట్రక్చర్ నిర్ణయం అవుతుంది. డాక్యుమెంట్ మోడల్ chapters, journal entries కు కూడా బాగా సరిపోతుంది — nested, varying-length, encrypted-as-blob.

queue ఎంపికగా BullMQ ఎందుకు?

BullMQ Redis పై నడుస్తుంది, ఇది session, rate-limit కోసం ఇప్పటికే స్టాక్‌లో ఉంది. కొత్త ఇన్‌ఫ్రాస్ట్రక్చర్ అవసరం లేదు. ఇన్‌బిల్ట్ retry, timeout, observability చాప్టర్-జనరేషన్ అవసరాలను కస్టమ్ ప్లంబింగ్ లేకుండా కవర్ చేస్తాయి.

upstream స్పెక్ నిజంగా ఎక్కడ రాయబడింది?

ఇంటర్నల్ రిపో. ఈ పేజీలోని సంఖ్యలు, contracts లు upstream V-Model ఆర్టిఫాక్ట్‌లను సంక్షిప్తంగా చెబుతాయి. My Zodiac AI బ్లాగ్ క్లస్టర్‌లో పబ్లిక్-ఫేసింగ్ ఇంజినీరింగ్ బ్లాగ్ పోస్ట్‌లు ('cosmic-story-v2' అని ట్యాగ్ చేయబడినవి) బిల్డ్ లోని నిర్దిష్ట భాగాలను మరింత లోతుగా వివరిస్తాయి.

ఈ రోజే My Zodiac AI ను ప్రయత్నించండి

Soulwise తన దశలను ప్రారంభిస్తుండగా, మా ప్రధాన astrology app ఇప్పటికే మీ చేతుల్లో ఉంది.

జ్యోతిష కంటెంట్ ఆలోచన, వినోదం కోసం మాత్రమే. ఇక్కడ వివరించిన Cosmic Story v2 ఫీచర్లు అభివృద్ధిలో ఉన్నాయి; లభ్యత ముందస్తు సూచన లేకుండా మారవచ్చు.