Cosmic Story v2 ဗိသုကာဖွဲ့စည်းပုံ — အနက်ရှိုင်းစွာ လေ့လာချက်တစ်ခု။

Engineer များ၊ PM များ၊ သတင်းထောက်များနှင့် partnership scout များအတွက်။ Pipeline အပြည့်အစုံ၊ MongoDB collection လေးခု၊ EDA event များ၊ V-Model တိကျမှု၊ performance ပန်းတိုင်များ၊ လုံခြုံရေးနှင့် အသုံးပြုနိုင်စွမ်း — အားလုံးကို စာမျက်နှာတစ်ခုတည်းတွင်။

  • Soulwise-story သည် ရှိပြီးသား cosmic-story module နှင့်အတူ ထားရှိသော NestJS module အသစ်တစ်ခု ဖြစ်သည်။ Feature module များအကြား တိုက်ရိုက် import လုံးဝမရှိပါ။
  • MongoDB collection လေးခု — soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances။ AES-256 ဖြင့် encrypt လုပ်ထားသော body များ၊ ၎င်းတို့ဆောင်ရွက်သည့် query တစ်ခုစီအတွက် index ထားသည်။
  • BullMQ queue ဖြင့် Async ထုတ်လုပ်မှု — timeout 28 စက္ကန့်။ Event များကို EventEmitter2 ဖြင့် database commit ပြီးမှသာ ထုတ်ပေးသည် — phantom inbox item မရှိပါ။
  • V-Model spec — လိုအပ်ချက် 119 ခု၊ ကွက်လပ်လုံးဝမရှိ။ Backend coverage ပစ်မှတ်မှာ service များတွင် statement 85%; frontend ဖက်တွင် Pinia store များအတွက် 90%။

Pipeline ကို engineering အသေးစိတ်နှင့်အတူ ထပ်မံ

အဆင့်တစ်ခုစီတွင် service တစ်ခု၊ contract တစ်ခုနှင့် event တစ်ခု ရှိသည်။

  1. အစပျိုးချက်

    အသုံးပြုသူ၏ လုပ်ဆောင်ချက် — 'Sister အတွက် ယနေ့အခန်းကို ဖန်တီးပါ' — သို့မဟုတ် အချိန်ဇယားသတ်မှတ်ထားသော cron တစ်ခု၊ ဥပမာ တနင်္ဂနွေ 9 a.m. အကျဉ်းချုပ်၊ သို့မဟုတ် နာရီ 6 တိုင်း weather refresh။

  2. Queue

    ဤ job သည် soulwise-chapter-generation အမည်ရှိ BullMQ queue ပေါ်တွင် 28 စက္ကန့် ကြာချိန်ကန့်သတ်ချက်ဖြင့် ရောက်ရှိလာပါသည်။ ကြာရှည်လုပ်ဆောင်နေသော job များကို ရပ်တန့်စေပြီး အသုံးပြုသူထံ 'ထပ်မံကြိုးစားပါ' အဖြစ် အစီရင်ခံပါသည်။

  3. ရေးသားဖွဲ့စည်းခြင်း

    ChapterGenerationService သည် အချက်လေးချက် prompt — ပုဂ္ဂိုလ်ဆိုင်ရာ အကြောင်းအရာ၊ ဗေဒင်၊ signal၊ cadence — ကို input တစ်ခုတည်းအဖြစ် စုစည်းပေးပါသည်။ အသုံးပြုသူ၏ raw PII မည်သည့်အရာမျှ prompt ထဲသို့ တိုက်ရိုက်မဝင်ပါ။ အရာအားလုံးကို ဦးစွာ သုတ်သင်ရှင်းလင်းထားပါသည်။

  4. ထုတ်လုပ်ပါ

    AI ဝန်ဆောင်မှုပေးသူကို AI_GENERATION_ADAPTER symbol token မှတစ်ဆင့် ခေါ်ဆိုပါသည် — ဝန်ဆောင်မှုပေးသူကို လဲလှယ်နိုင်ပါသည်။ ဆက်လက်မလုပ်ဆောင်မီ တုံ့ပြန်ချက်ကို အရှည်၊ ပုံသဏ္ဌာန်နှင့် ဘေးကင်းမှုအတွက် စစ်ဆေးပါသည်။

  5. နောက်ဆက်တွဲ ပြုပြင်ခြင်း

    လေးခု ဖြစ်ပေါ်ပါသည်: crisis classifier သည် အရေးပေါ်ဆိုင်ရာ စကားလုံးများကို စစ်ဆေးသည်; aspect-chip extractor သည် ဗေဒင် chip တစ်ခုမှ သုံးခုအထိ ဆွဲထုတ်သည်; anti-claim filter သည် တားမြစ်ထားသော အသုံးအနှုန်းများကို ဖယ်ရှားသည်; စာကိုယ်ကို platform မှ စီမံသော key ဖြင့် AES-256 စနစ်ဖြင့် ကုဒ်ဝှက်ထားသည်။

  6. သိမ်းဆည်းပါ

    artifact ကို သင့်လျော်သော MongoDB collection — chapters, journal entries, resonances — တွင် ရေးသွင်းပါသည်၊ မြန်ဆန်စွာ ရှာဖွေနိုင်ရန် userId နှင့် personId index များဖြင့်။ ဦးစွာ soft-delete; PII ၏ hard-delete ကို 30 ရက်တွင် ပြုလုပ်သည်။

  7. အကြောင်းကြားပါ

    EventEmitter2 event — CHAPTER_COMPLETED, JOURNAL_CREATED — သည် database commit ပြီးနောက် ဖြစ်ပေါ်ပါသည်။ notifications module က ၎င်းကို ကောက်ယူပြီး inbox item တစ်ခု ဖန်တီးကာ၊ push တစ်ခု (တစ်နေ့လျှင် တစ်ကြိမ်သာ ကန့်သတ်၊ ငြိမ်သက်ချိန်များကို လေးစား) ကို ရွေးချယ်၍ ပို့ပေးနိုင်ပါသည်။

  8. ဖော်ပြပါ

    frontend သည် authenticated API call မှတစ်ဆင့် artifact ကို ဆွဲယူပါသည်။ Hub သည် အကြောင်းအရာအသစ်ဖြင့် ပြန်လည် render လုပ်ပါသည်။ အသုံးပြုသူသည် offline ဖြစ်နေပါက cache က မနေ့က မြင်ကွင်းကို ပေးပြီး၊ ပြန်ချိတ်ဆက်သည့်အခါ artifact အသစ် ပေါ်လာပါသည်။

trigger မှ surface သို့ အဆင့်ခုနစ်ဆင့်၊ တစ်ခုစီကို ၎င်းအမှန်တကယ်လုပ်ဆောင်သည့်အရာအတိုင်း အမည်ပေးထားပါသည်။

Collection လေးခု

တစ်ခုစီ ဖြေဆိုသည့် query များအတွက် index ထားသည်။

soulwise_persons

Album entry များ။ userId, status, deletedAt တို့တွင် index ထားသည်။ Soft-delete ကိုဦးစွာ; PII ကို 30 ရက်တွင် hard-delete လုပ်သည်။

soulwise_chapters

AI ရေးသားသော chapter များ၊ body ကို encrypt လုပ်ထားသည်။ personId, userId, generatedAt တို့တွင် index ထားသည်။ Aspect chip များကို မြန်ဆန်စွာ စစ်ထုတ်နိုင်ရန် သီးခြား array အဖြစ် သိမ်းဆည်းထားသည်။

soulwise_journal_entries

User ရေးသားသော reflection များ၊ body ကို encrypt လုပ်ထားသည်။ userId, personId, createdAt တို့တွင် index ထားသည်။ ရှာဖွေမှုအတွက် Text-index ထားသော body။ Entry တစ်ခုစီအလိုက် 'private — Luminara သို့ မပေးပို့ရ' flag။

soulwise_resonances

ချည်နှောင်မှုတစ်ခုစီအတွက် ဒိုင်မန်းရှင်းလေးခု score။ personId တွင် unique index။ Chapter သို့မဟုတ် journal ရေးပြီးနောက် service call ဖြင့် ပြန်လည်တွက်ချက်သည်။

EDA event များ

တင်းကျပ်သော စည်းမျဉ်း — events များကို database commit ပြီးမှသာ ဖြစ်ပေါ်စေသည်။ module များအချင်းချင်း မှီခိုမှုကို Symbol injection token များဖြင့်သာ ပြုလုပ်ပါ; forwardRef ဖြင့် ဘယ်တော့မှ မလုပ်ပါနှင့်။ feature module များအကြား service-to-service တိုက်ရိုက် import လုပ်ခြင်း မရှိစေရ။

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — အခန်းတစ်ခုကို encrypt လုပ်ပြီး သိမ်းဆည်းပြီးနောက် ဖြစ်ပေါ်သည်။ Notifications-v2 က နားထောင်သည်; inbox item ဖန်တီးသည်; လိုအပ်ပါက push ပို့သည်။
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — journal entry တစ်ခုကို encrypt လုပ်ပြီး သိမ်းဆည်းပြီးနောက် ဖြစ်ပေါ်သည်။ Resonance service က နားထောင်သည်; ပြန်တွက်ချက်မှုကို ဖြစ်ပေါ်စေသည်။
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — လူတစ်ဦး၏ မွေးဖွားချိန်အချက်အလက် ပြောင်းလဲပြီးနောက် ဖြစ်ပေါ်သည်။ sinastri cache ပျက်ပြယ်သွားသည်။
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — notifications-v2 စာချုပ်အရ; push budget နှင့် တိတ်ဆိတ်ချိန်များကို လိုက်နာသည်။

V-Model သတ်မှတ်ချက် တိကျမှု

119 ခု ခြေရာခံနိုင်သော လိုအပ်ချက်များ၊ ကွက်လပ် လုံးဝမရှိ။ လိုအပ်ချက်တိုင်းသည် test case (UTP, ITP, STP, E2E) သို့ ရှေ့သို့ ချိတ်ဆက်ပြီး user story သို့ နောက်ပြန် ချိတ်ဆက်သည်။ user story 20 ခု။ functional လိုအပ်ချက် 15 ခု။ non-functional အမျိုးအစား 12 ခု။ global acceptance gate 8 ခု။

စွမ်းဆောင်ရည် စာချုပ်

အခန်းဖန်တီးခြင်းသည် တောင်းဆိုမှုများ၏ 95% အတွက် 30 စက္ကန့် သို့မဟုတ် ပိုကောင်းသည်၊ BullMQ job duration distribution ဖြင့် တိုင်းတာသည်။ API p99 GET latency သည် တစ်ပြိုင်နက် အသုံးပြုသူ 1,000 ဦးတွင် 500 ms သို့မဟုတ် ပိုကောင်းသည်၊ k6 load test ဖြင့် တိုင်းတာသည်။ Frontend TTI သည် simulated 4G ပေါ်တွင် 3 စက္ကန့် သို့မဟုတ် ပိုကောင်းသည်၊ Lighthouse CI ဖြင့် တိုင်းတာသည်။

လုံခြုံရေး စာချုပ်

journal နှင့် အခန်း body များအတွက် platform-managed key များဖြင့် AES-256 encryption at rest။ ပို့ဆောင်နေစဉ် TLS 1.2+; HTTP→HTTPS redirect။ JWT access token များသည် 1 နာရီ သက်တမ်း၊ refresh token များသည် 30 ရက် သက်တမ်း၊ refresh လုပ်တိုင်း rotation လုပ်သည်။ PII ကို hard-delete မလုပ်မီ 30 ရက် ကာလအတွင်း soft-delete လုပ်သည်။

အသုံးပြုနိုင်စွမ်း စာချုပ်

prefers-reduced-motion ကို စနစ်တစ်ခုလုံးအတွက် လေးစားလိုက်နာထားသည် — GSAP animation များသည် opacity-only fade များ ဖြစ်လာသည်။ အပြန်အလှန်တုံ့ပြန်နိုင်သော element တိုင်းတွင် VoiceOver နှင့် TalkBack label များ ပါဝင်သည်။ release တိုင်းမတိုင်မီ iOS နှင့် Android တွင် ကိုယ်တိုင်စစ်ဆေးအတည်ပြုထားသည်။

cosmic-story ကို ချဲ့ထွင်မည့်အစား သီးခြား soulwise-story module တစ်ခု ဘာကြောင့်ထားရသနည်း။

အကြောင်းမှာ upstream spec က feature ကို ပြန်လည်တည်ဆောက်ပြီး၊ ရှိပြီးသား module အတွင်း ပြန်တည်ဆောက်ခြင်းသည် v1 အတွေ့အကြုံကို ပျက်ပြားစေမည် သို့မဟုတ် နောက်ပိုင်းတွင် fork-then-merge လုပ်ရမည် ဖြစ်သောကြောင့်ဖြစ်သည်။ module အသစ်တစ်ခုသည် v1 ကို မထိမိစေဘဲ ထားရှိကာ၊ v2 ကို သက်သေပြခွင့်ပေးပြီး၊ အသင့်ဖြစ်သည့်အခါ သပ်သပ်ရပ်ရပ် migrate လုပ်နိုင်စေသည်။

ဘာကြောင့် Postgres မဟုတ်ဘဲ MongoDB ကို ရွေးသနည်း။

ရှိပြီးသား My Zodiac AI backend သည် MongoDB ပေါ်တွင်ရှိသည်; ပြောင်းလဲခြင်းသည် ဤfeature နှင့်မသက်ဆိုင်သော infrastructure ဆုံးဖြတ်ချက်တစ်ခု ဖြစ်လာမည်ဖြစ်သည်။ document model သည်လည်း chapter များနှင့် journal entry များနှင့် ကောင်းစွာကိုက်ညီသည် — nested၊ အရှည်အတိုကွဲပြားပြီး blob အဖြစ် encrypt လုပ်ထားသည်။

BullMQ ကို ဘာကြောင့် queue အဖြစ်ရွေးချယ်သနည်း။

BullMQ သည် Redis ပေါ်တွင် run သည်၊ ၎င်းသည် session နှင့် rate-limit အတွက် stack ထဲတွင် ရှိပြီးသားဖြစ်သည်။ infrastructure အသစ်မလို။ Built-in retry၊ timeout နှင့် observability တို့သည် custom plumbing မလိုဘဲ chapter-generation လိုအပ်ချက်များကို ဖြည့်ဆည်းပေးသည်။

upstream spec ကို တကယ်ဘယ်နေရာတွင် ရေးမှတ်ထားသနည်း။

Internal repo တွင်ဖြစ်သည်။ ဤစာမျက်နှာရှိ နံပါတ်များနှင့် contract များသည် upstream V-Model artifact များကို စကားလုံးပြန်ဆိုထားခြင်းဖြစ်သည်။ My Zodiac AI ၏ blog cluster ('cosmic-story-v2' ဟု tag တပ်ထားသော) ရှိ အများသူငှာဖတ်နိုင်သော engineering blog post များသည် build ၏ သီးခြားအစိတ်အပိုင်းများကို ပိုမိုနက်နဲစွာ ဖော်ပြထားသည်။

My Zodiac AI ကို ယနေ့ စမ်းသုံးကြည့်ပါ

Soulwise က မိမိ၏ လှိုင်းများကို ဖွင့်လှစ်နေချိန်တွင် ကျွန်ုပ်တို့၏ အဓိက ဗေဒင် app သည် သင့်လက်ထဲတွင် ရှိနေပြီ ဖြစ်ပါသည်။

ဗေဒင်ဆိုင်ရာ အကြောင်းအရာများသည် စဉ်းစားဆင်ခြင်ရန်နှင့် ဖျော်ဖြေမှုအတွက်သာ ဖြစ်ပါသည်။ ဤနေရာတွင် ဖော်ပြထားသော Cosmic Story v2 ၏ လုပ်ဆောင်ချက်များသည် တီထွင်ဆဲ ဖြစ်ပြီး၊ ရရှိနိုင်မှုကို ကြိုတင်အသိပေးခြင်းမရှိဘဲ ပြောင်းလဲနိုင်ပါသည်။