Cosmic Story v2 ගෘහ නිර්මාණය — ගැඹුරු විමර්ශනයක්.

ඉංජිනේරුවන්, PM, මාධ්‍යවේදීන් සහ partnership scout සඳහා. සම්පූර්ණ pipeline, MongoDB collection හතරක්, EDA event, V-Model නිරවද්‍යතාව, කාර්ය සාධන ඉලක්ක, ආරක්ෂාව සහ ප්‍රවේශ්‍යතාව — සියල්ල එක් පිටුවක.

  • Soulwise-story යනු දැනට පවතින cosmic-story module සමඟ එක් වන නව NestJS module එකකි. feature module අතර සෘජු import ශුන්‍යයි.
  • MongoDB එකතු හතරක්: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. AES-256 මගින් සංකේතනය කළ body, එක් එක් ඉල්ලීමට අවශ්‍ය ලෙස indexed කර ඇත.
  • 28 s timeout සහිත BullMQ queue හරහා Async generation. Database commit කිරීමෙන් පසුව පමණක් EventEmitter2 හරහා events විමෝචනය වේ — phantom inbox items නැත.
  • V-Model spec: අවශ්‍යතා 119ක්, හිඩැස් බිංදුවයි. Backend coverage ඉලක්කය services මත 85% statement; frontend Pinia stores මත 90%.

නැවතත් pipeline එක, engineering විස්තර සමඟ

සෑම පියවරකටම service එකක්, contract එකක් සහ event එකක් ඇත.

  1. ඇවිස්සීම

    පරිශීලක ක්‍රියාවක් — 'Sister සඳහා අද පරිච්ඡේදය සකස් කරන්න' — හෝ Sunday 9 a.m. සාරාංශය වැනි නියමිත cron එකක්, නැතහොත් සෑම 6-පැයකට වරක් සිදුවන කාලගුණ refresh එක.

  2. පෝලිම

    මෙම කාර්යය soulwise-chapter-generation නම් BullMQ පෝලිමකට පැමිණෙයි, දැඩි 28-තත්පර කල්ඉකුත්වීමක් සහිතව. දිගුකාලීනව ක්‍රියාත්මක වන කාර්ය නවතා දමා පරිශීලකයාට 'නැවත උත්සාහ කරන්න' ලෙස වාර්තා කරයි.

  3. සැකසීම

    ChapterGenerationService එක සාධක හතරේ prompt එක — පුද්ගල සන්දර්භය, ජ්‍යොතිෂය, සංඥාව, රිද්මය — එක් input එකකට එකලස් කරයි. raw පරිශීලක PII කිසිවක් prompt එකට කෙළින්ම ඇතුළු නොවේ; සියල්ල පළමුව පිරිසිදු කරනු ලැබේ.

  4. ජනනය කරන්න

    AI සැපයුම්කරුවෙකු AI_GENERATION_ADAPTER symbol token හරහා කැඳවනු ලැබේ — සැපයුම්කරු මාරු කළ හැකියි. ඉදිරියට යාමට පෙර ප්‍රතිචාරය දිග, හැඩය සහ ආරක්ෂාව සඳහා පරීක්ෂා කරනු ලැබේ.

  5. පසු-සැකසුම

    දේවල් හතරක් සිදු වෙයි: crisis classifier එකක් අර්බුද භාෂාව සඳහා පරීක්ෂා කරයි; aspect-chip extractor එකක් ජ්‍යොතිෂ chips එකක සිට තුනක් දක්වා ඇද ගනී; anti-claim filter එකක් තහනම් වාක්‍ය ඉවත් කරයි; platform විසින් කළමනාකරණය කරන යතුරකින් body එක AES-256 encrypt කරනු ලැබේ.

  6. ස්ථීර කරන්න

    artifact එක සුදුසු MongoDB collection එකට — chapters, journal entries, resonances — ලියනු ලැබේ, වේගවත් සෙවීම සඳහා userId සහ personId indexes සමඟ. පළමුව soft-delete; PII හි hard-delete දින 30 දී.

  7. දැනුම් දෙන්න

    EventEmitter2 event එකක් — CHAPTER_COMPLETED, JOURNAL_CREATED — database commit එකෙන් පසු fire වෙයි. notifications module එක එය ගෙන, inbox item එකක් සාදා, විකල්පමය වශයෙන් push එකක් යවයි (දිනකට එකකට සීමා, quiet hours ගරු කරයි).

  8. ඉදිරිපත් කරන්න

    frontend එක authenticated API call එකක් හරහා artifact එක ඇද ගනී. Hub එක නව අන්තර්ගතය සමඟ නැවත render වෙයි. user offline නම්, cache එක ඊයේ දර්ශනය ඉදිරිපත් කරන අතර, නැවත සම්බන්ධ වූ විට නව artifact එක දිස් වෙයි.

ඇවිස්සීමේ සිට මතුවීම දක්වා පියවර හතක්, එක් එක්ක ඇත්තෙන්ම කරන දේ අනුව නම් කර ඇත.

එකතු හතර

එක් එක් එක පිළිතුරු දෙන ඉල්ලීම් සඳහා 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. සෙවීම සඳහා Text-indexed body. එක් entry එකකට 'private — Luminara වෙත ලබා නොදෙන්න' flag එකක්.

soulwise_resonances

එක් bond එකකට dimension හතරක scores. personId මත unique index. Chapter හෝ journal write කිරීමෙන් පසුව service call එකක් හරහා නැවත ගණනය කෙරේ.

EDA සිදුවීම්

දැඩි නියමය: events ක්‍රියාත්මක වන්නේ database commit එකෙන් පසුව පමණි. Cross-module යැපීම් සඳහා Symbol injection tokens භාවිතා කරන්න, කිසිවිටෙක forwardRef හරහා නොවේ. Feature modules අතර කෙලින්ම service-to-service imports නැත.

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — පරිච්ඡේදයක් encrypt කර persist කළ පසු ක්‍රියාත්මක වේ. Notifications-v2 එයට සවන් දෙයි; inbox item එකක් සාදයි; අවශ්‍ය නම් push යවයි.
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — journal entry එකක් encrypt කර persist කළ පසු ක්‍රියාත්මක වේ. Resonance service එයට සවන් දෙයි; recompute එක ආරම්භ කරයි.
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — පුද්ගලයෙකුගේ උපන් දත්ත වෙනස් වූ පසු ක්‍රියාත්මක වේ. සිනස්ට්‍රි cache එක අවලංගු වේ.
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — notifications-v2 contract එකට අනුව; push budget සහ quiet hours ගරු කරයි.

V-Model spec නිරවද්‍යතාව

119 trace කළ හැකි අවශ්‍යතා, හිඩැස් බිංදුවක්. සෑම අවශ්‍යතාවක්ම ඉදිරියට test case එකකට (UTP, ITP, STP, E2E) සහ පසුපසට user story එකකට සිතියම්ගත වේ. 20 user stories. 15 functional අවශ්‍යතා. 12 non-functional කාණ්ඩ. 8 global acceptance gates.

කාර්ය සාධන contract එක

පරිච්ඡේද generation, requests වලින් 95%ක් සඳහා 30 තත්පර හෝ ඊට වඩා හොඳින්, BullMQ job duration distribution එකට අනුව මනිනු ලැබේ. API p99 GET latency එක concurrent users 1,000 දෙනෙකු සිටින විට 500 ms හෝ ඊට වඩා හොඳින්, k6 load test හරහා මනිනු ලැබේ. Frontend TTI එක simulated 4G මත 3 තත්පර හෝ ඊට වඩා හොඳින්, Lighthouse CI හරහා මනිනු ලැබේ.

ආරක්ෂණ contract එක

Journal සහ පරිච්ඡේද bodies සඳහා platform-managed keys සමඟ AES-256 encryption විවේකයේදී. ගමන් කරන විට TLS 1.2+; HTTP→HTTPS redirect. JWT access tokens පැය 1ක ආයු කාලයකින්, refresh tokens දින 30ක ආයු කාලයකින්, refresh වන විට rotation. PII hard-delete කිරීමට පෙර දින 30ක කවුළුවක් සහිත soft-delete.

ප්‍රවේශ්‍යතා contract එක

prefers-reduced-motion ගෝලීය වශයෙන් ගරු කරනු ලැබේ — GSAP සජීවීකරණ opacity-only fades බවට පත් වේ. සෑම අන්තර්ක්‍රියාකාරී මූලද්‍රව්‍යයකම VoiceOver සහ TalkBack ලේබල. සෑම නිකුතුවකට පෙර iOS සහ Android මත අතින් සත්‍යාපනය කරනු ලැබේ.

cosmic-story දිගු කරනවා වෙනුවට වෙනම soulwise-story මොඩියුලයක් ඇයි?

මොකද upstream spec එක මෙම විශේෂාංගය නැවත ගොඩනඟන නිසා, සහ පවතින මොඩියුලයක් ඇතුළත නැවත ගොඩනැගීම නිසා v1 අත්දැකීම බිඳ වැටීම හෝ පසුව fork-then-merge කිරීම සිදු වේ. නව මොඩියුලයක් v1 නොවෙනස්ව තබයි, v2 ට ඔප්පු වීමට ඉඩ දෙයි, සහ සූදානම් වූ විට පිරිසිදුව සංක්‍රමණය වේ.

Postgres නොව MongoDB ඇයි?

පවතින My Zodiac AI බැක්එන්ඩ් එක MongoDB මත ය; මාරු කිරීම යනු මෙම විශේෂාංගයට අදාළ නොවන යටිතල පහසුකම් තීරණයක් වනු ඇත. document ආකෘතිය ද පරිච්ඡේද සහ සඟරා සටහන් වලට හොඳින් ගැලපේ — කැදැලි, විවිධ දිගකින් යුත්, blob ලෙස encrypted.

queue තේරීම BullMQ ඇයි?

BullMQ ක්‍රියාත්මක වන්නේ Redis මත ය, එය දැනටමත් session සහ rate-limit සඳහා stack එකේ තිබේ. නව යටිතල පහසුකම් නැත. built-in retry, timeout, සහ observability මඟින් custom plumbing නොමැතිව පරිච්ඡේද-උත්පාදන අවශ්‍යතා ආවරණය කරයි.

upstream spec එක ඇත්තටම ලියා ඇත්තේ කොහේද?

අභ්‍යන්තර repo එකේ. මෙම පිටුවේ ඇති සංඛ්‍යා සහ contracts upstream V-Model artifacts සංක්ෂිප්තව ඉදිරිපත් කරයි. My Zodiac AI හි blog cluster එකේ ('cosmic-story-v2' ලෙස tag කළ) පොදු ඉංජිනේරු බ්ලොග් සටහන් මඟින් ගොඩනැගීමේ නිශ්චිත කොටස් වලට ගැඹුරින් යයි.

My Zodiac AI අදම අත්හදා බලන්න

Soulwise තම රැල්ල විවර කරද්දී, අපගේ ප්‍රමුඛ ජ්‍යොතිෂ app එක දැනටමත් ඔබේ අතේ ඇත.

ජ්‍යොතිෂ අන්තර්ගතය වන්නේ සිතා බැලීම සහ විනෝදය සඳහාය. මෙහි විස්තර කර ඇති Cosmic Story v2 විශේෂාංග සංවර්ධනය වෙමින් පවතී; ලබා ගත හැකි බව කලින් දැනුම් දීමකින් තොරව වෙනස් විය හැක.