Cosmic Story v2 ሥነ ሕንፃ — ጥልቅ ዳሰሳ።

ለኢንጂነሮች፣ ለPMs፣ ለጋዜጠኞች እና ለሽርክና ስካውቶች። ሙሉ ቧንቧ መስመሩ፣ አራት የMongoDB ስብስቦች፣ የEDA ክንውኖች፣ የV-Model ጥብቅነት፣ የአፈጻጸም ግቦች፣ ደህንነት እና ተደራሽነት — ሁሉም በአንድ ገጽ ላይ።

  • Soulwise-story ከነባሩ cosmic-story ሞዱል ጎን ለጎን አዲስ NestJS ሞዱል ነው። በባህሪ ሞዱሎች መካከል ምንም ቀጥተኛ ኢምፖርቶች የሉም።
  • አራት የMongoDB ስብስቦች፦ soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances። AES-256 የተመሰጠሩ ይዘቶች፣ ለሚያገለግሉት መጠይቆች የተደረደሩ።
  • በBullMQ queue በኩል 28 ሰከንድ ጊዜ ገደብ ያለው Async ማመንጨት። ክስተቶች በEventEmitter2 በኩል የሚለቀቁት ከዳታቤዝ commit በኋላ ብቻ ነው — ምንም የውሸት inbox ንጥሎች የሉም።
  • የV-Model መግለጫ፦ 119 መስፈርቶች፣ ምንም ክፍተት የለም። የBackend የሽፋን ግብ በአገልግሎቶች ላይ 85% statement፤ frontend በPinia stores ላይ 90%።

ፓይፕላይኑ፣ እንደገና፣ ከኤንጂነሪንግ ዝርዝር ጋር

እያንዳንዱ ደረጃ አገልግሎት፣ ውል እና ክስተት አለው።

  1. ቀስቃሽ

    የተጠቃሚ እርምጃ — 'ለእህት የዛሬውን ምዕራፍ ፍጠር' — ወይም እንደ እሁድ 9 a.m. ማጠቃለያ ያለ የታቀደ cron፣ ወይም በየ-6-ሰዓቱ የአየር ሁኔታ ማደስ።

  2. ወረፋ

    ሥራው soulwise-chapter-generation በሚባል የBullMQ ወረፋ ላይ ያርፋል፣ ጠንካራ የ28-ሰከንድ ጊዜ ገደብ ይዞ። ረጅም ጊዜ የሚወስዱ ሥራዎች ይቋረጡና ለተጠቃሚው 'እንደገና ይሞክሩ' ተብለው ይዘገባሉ።

  3. ማቀናበር

    ChapterGenerationService አራቱን ምክንያቶች — የሰው አውድ፣ ኮከብ ቆጠራ፣ ምልክት፣ ቅኝት — ወደ አንድ ግብዓት ያሰባስባል። ምንም ጥሬ የተጠቃሚ PII ቃል በቃል ወደ ጥያቄው አይገባም፤ ሁሉም ነገር አስቀድሞ ይጸዳል።

  4. ይፍጠሩ

    የAI አቅራቢ በAI_GENERATION_ADAPTER symbol token በኩል ይጠራል — አቅራቢው ሊቀየር የሚችል ነው። ምላሹ ከመቀጠሉ በፊት ለርዝመት፣ ለቅርጽ እና ለደህንነት ይመረመራል።

  5. ድህረ-ሂደት

    አራት ነገሮች ይከሰታሉ፦ የችግር መለያ የችግር ቋንቋን ይፈትሻል፤ የaspect-chip አውጭ ከአንድ እስከ ሦስት የኮከብ ቆጠራ chips ይወስዳል፤ የጸረ-ይገባኛል ማጣሪያ የተከለከሉ አገላለጾችን ያስወግዳል፤ ይዘቱ በመድረኩ በሚተዳደር ቁልፍ AES-256 ይመሰጠራል።

  6. ያቆዩ

    አርቴፋክቱ ወደ ተገቢው MongoDB collection ይጻፋል — chapters፣ journal entries፣ resonances — ለፈጣን ፍለጋ ከuserId እና personId መረጃ ጠቋሚዎች ጋር። መጀመሪያ soft-delete፤ የPII hard-delete በ30 ቀናት ውስጥ።

  7. ያሳውቁ

    የEventEmitter2 event — CHAPTER_COMPLETED፣ JOURNAL_CREATED — ከውሂብ ጎታ commit በኋላ ይቀጣጠላል። የማሳወቂያ ሞዱል ይወስደዋል፣ የinbox ንጥል ይፈጥራል፣ እና በአማራጭ push ይልካል (በቀን አንድ ጊዜ ብቻ የተወሰነ፣ የጸጥታ ሰዓቶች ይከበራሉ)።

  8. ያቅርቡ

    frontend አርቴፋክቱን በተረጋገጠ API call በኩል ይወስዳል። Hub በአዲሱ ይዘት እንደገና ይታያል። ተጠቃሚው offline ከነበረ፣ cache የትናንቱን እይታ ያቀርባል እና አዲሱ አርቴፋክት እንደገና ሲገናኝ ይታያል።

ከቀስቃሽ እስከ ማቅረቢያ ሰባት ደረጃዎች፣ እያንዳንዱ በሚሰራው ስራ መሰረት የተሰየመ።

አራቱ ስብስቦች

እያንዳንዱ ለሚመልሰው መጠይቅ የተደረደረ።

soulwise_persons

የአልበም ንጥሎች። በuserId, status, deletedAt ላይ ኢንዴክሶች። መጀመሪያ soft-delete፤ የPII hard-delete በ30 ቀናት።

soulwise_chapters

በAI የተጻፉ ምዕራፎች፣ የተመሰጠረ ይዘት። በpersonId, userId, generatedAt ላይ ኢንዴክሶች። ለፈጣን ማጣራት Aspect chips እንደ የተለየ array ተከማችተዋል።

soulwise_journal_entries

በተጠቃሚ የተጻፉ ነጸብራቆች፣ የተመሰጠረ ይዘት። በuserId, personId, createdAt ላይ ኢንዴክሶች። ለፍለጋ Text-indexed ይዘት። በእያንዳንዱ ንጥል 'private — ለLuminara አታቅርብ' ምልክት።

soulwise_resonances

በእያንዳንዱ ትስስር አራት-ልኬት ነጥቦች። በpersonId ላይ ልዩ ኢንዴክስ። ከምዕራፍ ወይም journal መጻፍ በኋላ በአገልግሎት ጥሪ እንደገና ይሰላል።

የEDA ክስተቶች

ጥብቅ ደንብ፦ ክስተቶች የሚቀሰቀሱት ከዳታቤዝ commit በኋላ ብቻ ነው። በሞጁሎች መካከል ያሉ ጥገኞች በSymbol injection tokens በኩል ይካሄዳሉ፣ በፍጹም በforwardRef በኩል አይደለም። በfeature ሞጁሎች መካከል ቀጥተኛ service-to-service import የለም።

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — አንድ ምዕራፍ ከተመሰጠረ እና ከተቀመጠ በኋላ ይቀሰቀሳል። Notifications-v2 ይከታተላል፤ የinbox ንጥል ይፈጥራል፤ በአማራጭም push ይልካል።
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — የጆርናል ግቤት ከተመሰጠረ እና ከተቀመጠ በኋላ ይቀሰቀሳል። Resonance service ይከታተላል፤ ዳግም-ስሌትን ያስነሳል።
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — የአንድ ሰው የልደት-ውሂብ ከተቀየረ በኋላ ይቀሰቀሳል። የሲናስትሪ cache ይሰረዛል።
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — በnotifications-v2 ውል መሰረት፤ የpush በጀትን እና ጸጥታ ሰዓቶችን ያከብራል።

የV-Model ዝርዝር ጥብቅነት

119 ሊከታተሉ የሚችሉ መስፈርቶች፣ ምንም ክፍተት የለም። እያንዳንዱ መስፈርት ወደ ፊት ከአንድ የፈተና ጉዳይ (UTP, ITP, STP, E2E) ጋር፣ ወደ ኋላም ከአንድ የተጠቃሚ ታሪክ ጋር ይዛመዳል። 20 የተጠቃሚ ታሪኮች። 15 ተግባራዊ መስፈርቶች። 12 ተግባር-ያልሆኑ ምድቦች። 8 አጠቃላይ የመቀበያ በሮች።

የአፈጻጸም ውል

የምዕራፍ ማመንጨት ለ95% የጥያቄዎች 30 ሰከንዶች ወይም የተሻለ፣ በBullMQ job ቆይታ ስርጭት የሚለካ። የAPI p99 GET ዘገምታ በ1,000 ተባባሪ ተጠቃሚዎች 500 ms ወይም የተሻለ፣ በk6 load test የሚለካ። የFrontend TTI በተመሳሰለ 4G ላይ 3 ሰከንዶች ወይም የተሻለ፣ በLighthouse CI የሚለካ።

የደህንነት ውል

ለጆርናል እና ምዕራፍ ይዘቶች በመድረክ-የሚተዳደሩ ቁልፎች ያሉት AES-256 የተቀመጠ ምስጠራ። በመጓጓዣ ላይ TLS 1.2+፤ HTTP→HTTPS ማዘዋወር። JWT access tokens የ1-ሰዓት ዕድሜ ያላቸው፣ refresh tokens የ30-ቀን ዕድሜ ያላቸው፣ በrefresh ጊዜ ዙረት። PII ጠንካራ-ስረዛ ከመደረጉ በፊት 30-ቀን መስኮት ያለው ለስላሳ-ስረዛ።

የተደራሽነት ውል

prefers-reduced-motion በዓለም አቀፍ ደረጃ ይከበራል — የGSAP እነማዎች ወደ opacity-ብቻ መደብዘዝ ይቀየራሉ። በእያንዳንዱ መስተጋብራዊ አካል ላይ የVoiceOver እና TalkBack መለያዎች። ከእያንዳንዱ ልቀት በፊት በiOS እና Android ላይ በእጅ ተረጋግጧል።

cosmic-story ን ከማስፋት ይልቅ ለምን የተለየ soulwise-story ሞጁል?

ምክንያቱም የላይኛው ስፔክ ባህሪውን እንደገና ስለሚገነባ ነው፣ እና በነባር ሞጁል ውስጥ እንደገና መገንባት የv1 ተሞክሮን ይሰብራል ወይም ቆይቶ fork-then-merge ያስከትላል። አዲስ ሞጁል v1 ን ሳይነካ ይጠብቃል፣ v2 ራሱን እንዲያረጋግጥ ይፈቅዳል፣ እና ዝግጁ ሲሆን በንጹህ ሁኔታ ይሰደዳል።

ለምን MongoDB እንጂ Postgres አይደለም?

ነባሩ የMy Zodiac AI ጀርባ በMongoDB ላይ ነው፤ መቀየር ከዚህ ባህሪ ጋር ያልተገናኘ የመሠረተ ልማት ውሳኔ ይሆናል። የሰነድ ሞዴሉም ለምዕራፎች እና ለማስታወሻ ግቤቶች በደንብ ይስማማል — የተደራረበ፣ የሚለያይ ርዝመት ያለው፣ እንደ blob የተመሰጠረ።

ለምን BullMQ የወረፋ ምርጫ ሆነ?

BullMQ በRedis ላይ ይሠራል፣ እሱም ለክፍለ ጊዜ እና ለፍጥነት ገደብ አስቀድሞ በስታክ ውስጥ አለ። አዲስ መሠረተ ልማት የለም። የተሰናዳ ድጋሚ ሙከራ፣ የጊዜ ማብቂያ እና ተመልካችነት ብጁ ቧንቧ ሳያስፈልጋቸው የምዕራፍ-ማመንጨት ፍላጎቶችን ይሸፍናሉ።

የላይኛው ስፔክ በትክክል የት ተጽፏል?

ውስጣዊ repo። በዚህ ገጽ ላይ ያሉት ቁጥሮች እና ኮንትራቶች የላይኛውን V-Model አርቲፋክቶች ያብራራሉ። በMy Zodiac AI ብሎግ ስብስብ ላይ ያሉ ለሕዝብ የቀረቡ የምህንድስና ብሎግ ጽሑፎች ('cosmic-story-v2' የተሰየሙ) የግንባታውን የተወሰኑ ክፍሎች ጠለቅ ብለው ያስቃኛሉ።

ዛሬ My Zodiac AI ን ይሞክሩ

Soulwise ሞገዶቹን ሲከፍት፣ ዋናው የኮከብ ቆጠራ app አስቀድሞ በእጅዎ ላይ ነው።

የኮከብ ቆጠራ ይዘት ለማሰላሰል እና ለመዝናኛ ነው። እዚህ የተገለጹት የCosmic Story v2 ባህሪያት በመገንባት ላይ ናቸው፤ መገኘታቸው ያለማስታወቂያ ሊለወጥ ይችላል።