Cosmic Story v2 ವಾಸ್ತುಶಿಲ್ಪ — ಒಂದು ಆಳವಾದ ವಿವರಣೆ.

ಎಂಜಿನಿಯರ್‌ಗಳು, PM ಗಳು, ಪತ್ರಕರ್ತರು ಮತ್ತು partnership scout ಗಳಿಗಾಗಿ. ಸಂಪೂರ್ಣ pipeline, ನಾಲ್ಕು MongoDB collections, EDA events, V-Model ಶಿಸ್ತು, performance targets, security ಮತ್ತು accessibility — ಎಲ್ಲವೂ ಒಂದೇ ಪುಟದಲ್ಲಿ.

  • Soulwise-story ಎಂಬುದು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ cosmic-story module ಜೊತೆಗಿನ ಹೊಸ NestJS module. feature module ಗಳ ನಡುವೆ ಶೂನ್ಯ ನೇರ imports.
  • ನಾಲ್ಕು MongoDB collections: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. AES-256 encrypted bodies, ಪ್ರತಿಯೊಂದು ನಿರ್ವಹಿಸುವ queries ಗಾಗಿ indexed ಮಾಡಲಾಗಿದೆ.
  • 28 s timeout ಇರುವ BullMQ queue ಮೂಲಕ Async generation. Database commit ಆದ ನಂತರವೇ EventEmitter2 ಮೂಲಕ events ಹೊರಡಿಸಲಾಗುತ್ತದೆ — ಯಾವುದೇ 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 ಗಾಗಿ ಇಂದಿನ ಅಧ್ಯಾಯ ರಚಿಸಿ' — ಅಥವಾ ನಿಗದಿತ ಕ್ರಾನ್, ಭಾನುವಾರ 9 a.m. ಸಾರಾಂಶದಂತೆ, ಅಥವಾ ಪ್ರತಿ 6 ಗಂಟೆಗಳ ಹವಾಮಾನ ರಿಫ್ರೆಶ್‌ನಂತೆ.

  2. ಕ್ಯೂ

    ಈ ಕೆಲಸವು soulwise-chapter-generation ಎಂಬ BullMQ ಕ್ಯೂನಲ್ಲಿ ಬಂದು ಸೇರುತ್ತದೆ, ಗಟ್ಟಿ 28-ಸೆಕೆಂಡ್ ಟೈಮ್‌ಔಟ್‌ನೊಂದಿಗೆ. ದೀರ್ಘಕಾಲ ಚಲಿಸುವ ಕೆಲಸಗಳನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಿ, ಬಳಕೆದಾರರಿಗೆ 'ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ' ಎಂದು ವರದಿ ಮಾಡಲಾಗುತ್ತದೆ.

  3. ಜೋಡಣೆ

    ChapterGenerationService ನಾಲ್ಕು-ಅಂಶದ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು — ವ್ಯಕ್ತಿಯ ಸಂದರ್ಭ, ಜ್ಯೋತಿಷ್ಯ, ಸಂಕೇತ, ಲಯ — ಒಂದೇ ಇನ್‌ಪುಟ್‌ಗೆ ಜೋಡಿಸುತ್ತದೆ. ಯಾವುದೇ ಕಚ್ಚಾ ಬಳಕೆದಾರ PII ಅನ್ನು ಯಥಾವತ್ತಾಗಿ ಪ್ರಾಂಪ್ಟ್‌ಗೆ ಸೇರಿಸಲಾಗುವುದಿಲ್ಲ; ಎಲ್ಲವನ್ನೂ ಮೊದಲು ಸ್ವಚ್ಛಗೊಳಿಸಲಾಗುತ್ತದೆ.

  4. ರಚಿಸಿ

    AI_GENERATION_ADAPTER ಸಿಂಬಲ್ ಟೋಕನ್ ಮೂಲಕ AI ಪ್ರೊವೈಡರ್ ಕರೆಯಲ್ಪಡುತ್ತದೆ — ಪ್ರೊವೈಡರ್ ಬದಲಾಯಿಸಬಹುದು. ಮುಂದುವರಿಯುವ ಮೊದಲು ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಉದ್ದ, ಆಕಾರ ಮತ್ತು ಸುರಕ್ಷತೆಗಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ.

  5. ಪೋಸ್ಟ್-ಪ್ರೊಸೆಸ್

    ನಾಲ್ಕು ವಿಷಯಗಳು ನಡೆಯುತ್ತವೆ: ಕ್ರೈಸಿಸ್ ಕ್ಲಾಸಿಫೈಯರ್ ಬಿಕ್ಕಟ್ಟಿನ ಭಾಷೆಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ; ಆಸ್ಪೆಕ್ಟ್-ಚಿಪ್ ಎಕ್ಸ್‌ಟ್ರಾಕ್ಟರ್ ಒಂದರಿಂದ ಮೂರು ಜ್ಯೋತಿಷ್ಯ ಚಿಪ್‌ಗಳನ್ನು ಪಡೆಯುತ್ತದೆ; ಆಂಟಿ-ಕ್ಲೈಮ್ ಫಿಲ್ಟರ್ ನಿಷೇಧಿತ ನುಡಿಗಟ್ಟುಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ; ಪ್ಲಾಟ್‌ಫಾರ್ಮ್-ನಿರ್ವಹಿಸಿದ ಕೀ ಬಳಸಿ ಬಾಡಿಯನ್ನು AES-256 ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗುತ್ತದೆ.

  6. ಉಳಿಸಿ

    ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಅನ್ನು ಸೂಕ್ತ MongoDB ಕಲೆಕ್ಷನ್‌ಗೆ ಬರೆಯಲಾಗುತ್ತದೆ — chapters, journal entries, resonances — ವೇಗದ ಹುಡುಕಾಟಕ್ಕಾಗಿ userId ಮತ್ತು personId ಇಂಡೆಕ್ಸ್‌ಗಳೊಂದಿಗೆ. ಮೊದಲು ಸಾಫ್ಟ್-ಡಿಲೀಟ್; PII ಯ ಹಾರ್ಡ್-ಡಿಲೀಟ್ 30 ದಿನಗಳಲ್ಲಿ.

  7. ತಿಳಿಸಿ

    ಡೇಟಾಬೇಸ್ ಕಮಿಟ್ ಆದ ನಂತರ EventEmitter2 ಈವೆಂಟ್ — CHAPTER_COMPLETED, JOURNAL_CREATED — ಟ್ರಿಗರ್ ಆಗುತ್ತದೆ. ನೋಟಿಫಿಕೇಶನ್ಸ್ ಮಾಡ್ಯೂಲ್ ಅದನ್ನು ಪಡೆದು, ಇನ್‌ಬಾಕ್ಸ್ ಐಟಂ ರಚಿಸುತ್ತದೆ, ಮತ್ತು ಐಚ್ಛಿಕವಾಗಿ ಪುಶ್ ಕಳುಹಿಸುತ್ತದೆ (ದಿನಕ್ಕೆ ಒಂದಕ್ಕೆ ಸೀಮಿತ, ಕ್ವೈಟ್ ಅವರ್ಸ್ ಗೌರವಿಸಲಾಗುತ್ತದೆ).

  8. ತೋರಿಸಿ

    ಫ್ರಂಟ್‌ಎಂಡ್ ದೃಢೀಕೃತ API ಕರೆಯ ಮೂಲಕ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಅನ್ನು ಪಡೆಯುತ್ತದೆ. ಹೊಸ ವಿಷಯದೊಂದಿಗೆ Hub ಮರು-ರೆಂಡರ್ ಆಗುತ್ತದೆ. ಬಳಕೆದಾರರು ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿದ್ದರೆ, ಕ್ಯಾಶ್ ನಿನ್ನೆಯ ವ್ಯೂ ಅನ್ನು ತೋರಿಸುತ್ತದೆ ಮತ್ತು ಮರುಸಂಪರ್ಕದ ಮೇಲೆ ಹೊಸ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಕಾಣಿಸುತ್ತದೆ.

ಟ್ರಿಗ್ಗರ್‌ನಿಂದ ಪ್ರದರ್ಶನದವರೆಗೆ ಏಳು ಹಂತಗಳು, ಪ್ರತಿಯೊಂದೂ ಅದು ನಿಜವಾಗಿ ಏನು ಮಾಡುತ್ತದೆ ಎಂಬುದರ ಮೇಲೆ ಹೆಸರಿಸಲಾಗಿದೆ.

ನಾಲ್ಕು collections

ಪ್ರತಿಯೊಂದು ಉತ್ತರಿಸುವ queries ಗಾಗಿ indexed ಮಾಡಲಾಗಿದೆ.

soulwise_persons

Album entries. userId, status, deletedAt ಮೇಲೆ indexes. ಮೊದಲು soft-delete; PII ನ hard-delete 30 ದಿನಗಳಲ್ಲಿ.

soulwise_chapters

AI ಬರೆದ chapters, encrypted body. personId, userId, generatedAt ಮೇಲೆ indexes. ವೇಗದ filtering ಗಾಗಿ Aspect chips ಪ್ರತ್ಯೇಕ array ಆಗಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ.

soulwise_journal_entries

ಬಳಕೆದಾರ ಬರೆದ reflections, encrypted body. userId, personId, createdAt ಮೇಲೆ indexes. Search ಗಾಗಿ text-indexed body. ಪ್ರತಿ entry ಗೆ 'private — Luminara ಗೆ feed ಮಾಡಬೇಡಿ' flag.

soulwise_resonances

ಪ್ರತಿ bond ಗೆ ನಾಲ್ಕು-dimension scores. personId ಮೇಲೆ unique index. Chapter ಅಥವಾ journal write ಆದ ನಂತರ service call ಮೂಲಕ ಮರು-ಲೆಕ್ಕಾಚಾರ ಮಾಡಲಾಗುತ್ತದೆ.

EDA events

ಕಟ್ಟುನಿಟ್ಟಿನ ನಿಯಮ: events ಡೇಟಾಬೇಸ್ commit ಆದ ನಂತರ ಮಾತ್ರ fire ಆಗುತ್ತವೆ. Cross-module ಅವಲಂಬನೆಗಳು Symbol injection tokens ಮೂಲಕ, ಎಂದಿಗೂ forwardRef ಮೂಲಕ ಅಲ್ಲ. Feature modules ನಡುವೆ ನೇರ 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 ಅನ್ನು trigger ಮಾಡುತ್ತದೆ.
  • 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 traceable requirements, ಯಾವುದೇ gaps ಇಲ್ಲ. ಪ್ರತಿ requirement ಮುಂದೆ ಒಂದು test case ಗೆ (UTP, ITP, STP, E2E) ಮತ್ತು ಹಿಂದೆ ಒಂದು user story ಗೆ map ಆಗುತ್ತದೆ. 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 simulated 4G ನಲ್ಲಿ 3 ಸೆಕೆಂಡುಗಳು ಅಥವಾ ಅದಕ್ಕಿಂತ ಉತ್ತಮ, Lighthouse CI ಮೂಲಕ ಅಳೆಯಲಾಗಿದೆ.

ಭದ್ರತಾ ಒಪ್ಪಂದ

Journal ಮತ್ತು chapter bodies ಗಾಗಿ platform-managed keys ನೊಂದಿಗೆ AES-256 encryption at rest. ಸಾಗಣೆಯಲ್ಲಿ 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-ಮಾತ್ರ ಫೇಡ್‌ಗಳಾಗುತ್ತವೆ. ಪ್ರತಿ ಸಂವಾದಾತ್ಮಕ ಅಂಶದ ಮೇಲೆ VoiceOver ಮತ್ತು TalkBack ಲೇಬಲ್‌ಗಳು. ಪ್ರತಿ ರಿಲೀಸ್‌ಗೆ ಮೊದಲು iOS ಮತ್ತು Android ನಲ್ಲಿ ಕೈಯಾರೆ ಪರಿಶೀಲಿಸಲಾಗಿದೆ.

cosmic-story ಅನ್ನು ವಿಸ್ತರಿಸುವ ಬದಲು ಪ್ರತ್ಯೇಕ soulwise-story ಮಾಡ್ಯೂಲ್ ಏಕೆ?

ಏಕೆಂದರೆ ಅಪ್‌ಸ್ಟ್ರೀಮ್ ಸ್ಪೆಕ್ ಈ ಫೀಚರ್ ಅನ್ನು ಮರುನಿರ್ಮಿಸುತ್ತದೆ, ಮತ್ತು ಈಗಿರುವ ಮಾಡ್ಯೂಲ್‌ನ ಒಳಗೆ ಮರುನಿರ್ಮಾಣ ಮಾಡಿದರೆ v1 ಅನುಭವ ಮುರಿದುಹೋಗುತ್ತದೆ ಅಥವಾ ನಂತರ fork-then-merge ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಹೊಸ ಮಾಡ್ಯೂಲ್ v1 ಅನ್ನು ಮುಟ್ಟದೆ ಇಡುತ್ತದೆ, v2 ತನ್ನನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಅನುವು ಮಾಡುತ್ತದೆ, ಮತ್ತು ಸಿದ್ಧವಾದಾಗ ಶುದ್ಧವಾಗಿ ಮೈಗ್ರೇಟ್ ಆಗುತ್ತದೆ.

Postgres ಅಲ್ಲ, MongoDB ಏಕೆ?

ಈಗಿರುವ My Zodiac AI ಬ್ಯಾಕೆಂಡ್ MongoDB ಮೇಲಿದೆ; ಬದಲಾಯಿಸುವುದು ಎಂದರೆ ಈ ಫೀಚರ್‌ಗೆ ಸಂಬಂಧವಿಲ್ಲದ ಇನ್‌ಫ್ರಾಸ್ಟ್ರಕ್ಚರ್ ನಿರ್ಧಾರವಾಗುತ್ತದೆ. ಡಾಕ್ಯುಮೆಂಟ್ ಮಾಡೆಲ್ ಕೂಡ ಅಧ್ಯಾಯಗಳು ಮತ್ತು ಜರ್ನಲ್ ನಮೂದುಗಳಿಗೆ ಚೆನ್ನಾಗಿ ಹೊಂದುತ್ತದೆ — ನೆಸ್ಟೆಡ್, ವಿವಿಧ-ಉದ್ದದ, blob-ಆಗಿ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ.

ಕ್ಯೂ ಆಯ್ಕೆಯಾಗಿ BullMQ ಏಕೆ?

BullMQ Redis ಮೇಲೆ ಚಲಿಸುತ್ತದೆ, ಅದು ಈಗಾಗಲೇ session ಮತ್ತು rate-limit ಗಾಗಿ ಸ್ಟ್ಯಾಕ್‌ನಲ್ಲಿದೆ. ಹೊಸ ಇನ್‌ಫ್ರಾಸ್ಟ್ರಕ್ಚರ್ ಬೇಕಿಲ್ಲ. ಒಳಗೇ ಇರುವ retry, timeout, ಮತ್ತು observability ಯಾವುದೇ ಕಸ್ಟಮ್ ಪ್ಲಂಬಿಂಗ್ ಇಲ್ಲದೆ ಅಧ್ಯಾಯ-ರಚನೆಯ ಅಗತ್ಯಗಳನ್ನು ಪೂರೈಸುತ್ತದೆ.

ಅಪ್‌ಸ್ಟ್ರೀಮ್ ಸ್ಪೆಕ್ ನಿಜವಾಗಿ ಎಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ?

ಆಂತರಿಕ ರೆಪೋ. ಈ ಪುಟದಲ್ಲಿನ ಸಂಖ್ಯೆಗಳು ಮತ್ತು ಒಪ್ಪಂದಗಳು ಅಪ್‌ಸ್ಟ್ರೀಮ್ V-Model ಆರ್ಟಿಫ್ಯಾಕ್ಟ್‌ಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಹೇಳುತ್ತವೆ. My Zodiac AI ನ ಬ್ಲಾಗ್ ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ('cosmic-story-v2' ಎಂದು ಟ್ಯಾಗ್ ಮಾಡಲಾದ) ಸಾರ್ವಜನಿಕ ಎಂಜಿನಿಯರಿಂಗ್ ಬ್ಲಾಗ್ ಪೋಸ್ಟ್‌ಗಳು ಬಿಲ್ಡ್‌ನ ನಿರ್ದಿಷ್ಟ ಭಾಗಗಳ ಬಗ್ಗೆ ಆಳವಾಗಿ ಹೋಗುತ್ತವೆ.

ಇಂದೇ My Zodiac AI ಬಳಸಿ ನೋಡಿ

Soulwise ತನ್ನ ಅಲೆಗಳನ್ನು ತೆರೆಯುತ್ತಿರುವಾಗ, ನಮ್ಮ ಪ್ರಮುಖ ಜ್ಯೋತಿಷ್ಯ app ಈಗಾಗಲೇ ನಿಮ್ಮ ಕೈಯಲ್ಲಿದೆ.

ಜ್ಯೋತಿಷ್ಯ ವಿಷಯ ಆತ್ಮಾವಲೋಕನ ಮತ್ತು ಮನರಂಜನೆಗಾಗಿ. ಇಲ್ಲಿ ವಿವರಿಸಿರುವ Cosmic Story v2 ವೈಶಿಷ್ಟ್ಯಗಳು ಅಭಿವೃದ್ಧಿಯಲ್ಲಿವೆ; ಲಭ್ಯತೆ ಯಾವುದೇ ಸೂಚನೆ ಇಲ್ಲದೆ ಬದಲಾಗಬಹುದು.