Cosmic Story v2 arxitekturasi — chuqur tahlil.

Muhandislar, PM'lar, jurnalistlar va hamkorlik izlovchilari uchun. To'liq pipeline, to'rtta MongoDB kolleksiyasi, EDA hodisalari, V-Model qat'iyligi, samaradorlik maqsadlari, xavfsizlik va imkoniyatlar — barchasi bitta sahifada.

  • Soulwise-story — bu mavjud cosmic-story moduli yonidagi yangi NestJS moduli. Funksional modullar o'rtasida hech qanday to'g'ridan-to'g'ri import yo'q.
  • To'rtta MongoDB to'plami: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. AES-256 bilan shifrlangan tanalar, har biri xizmat qiladigan so'rovlar uchun indekslangan.
  • BullMQ navbati orqali 28 s taymaut bilan asinxron generatsiya. Hodisalar EventEmitter2 orqali faqat ma'lumotlar bazasiga commit qilingandan keyin chiqariladi — hech qanday soxta inbox elementlari yo'q.
  • V-Model spetsifikatsiyasi: 119 talab, nol bo'shliq. Backend qamrovi maqsadi xizmatlarda 85% statement; frontend Pinia store'larida 90%.

Pipeline, yana bir bor, muhandislik tafsilotlari bilan

Har bir bosqichda xizmat, shartnoma va hodisa mavjud.

  1. Turtki

    Foydalanuvchi harakati — 'Singil uchun bugungi bobni yaratish' — yoki rejalashtirilgan cron, masalan yakshanba 9 ertalabki xulosa yoki har 6 soatda ob-havo yangilanishi.

  2. Navbat

    Vazifa soulwise-chapter-generation nomli BullMQ navbatiga tushadi, qat'iy 28 soniyalik vaqt chegarasi bilan. Uzoq davom etadigan vazifalar to'xtatiladi va foydalanuvchiga 'qaytadan urinib ko'ring' deb xabar qilinadi.

  3. Tuzish

    ChapterGenerationService to'rt omilli so'rovni — shaxs konteksti, astrologiya, signal, marom — bitta kiritmaga jamlaydi. So'rovga foydalanuvchining hech qanday xom shaxsiy ma'lumotlari aynan o'sha holicha kirmaydi; hammasi avval tozalanadi.

  4. Generatsiya

    AI provayderi AI_GENERATION_ADAPTER ramziy tokeni orqali chaqiriladi — provayderni almashtirish mumkin. Davom etishdan oldin javob uzunligi, tuzilishi va xavfsizligi tekshiriladi.

  5. Keyingi qayta ishlash

    To'rt narsa sodir bo'ladi: inqiroz klassifikatori inqirozga oid tilni tekshiradi; aspekt-chip ekstraktori bir-uchta astrologik chipni ajratib oladi; anti-da'vo filtri taqiqlangan iboralarni olib tashlaydi; matn platforma tomonidan boshqariladigan kalit bilan AES-256 shifrlanadi.

  6. Saqlash

    Artefakt tegishli MongoDB to'plamiga yoziladi — boblar, kundalik yozuvlari, rezonanslar — tez qidirish uchun userId va personId indekslari bilan. Avval yumshoq o'chirish; PII'ning qattiq o'chirilishi 30 kundan keyin.

  7. Xabardor qilish

    EventEmitter2 hodisasi — CHAPTER_COMPLETED, JOURNAL_CREATED — ma'lumotlar bazasiga commitdan keyin ishga tushadi. Bildirishnomalar moduli uni qabul qiladi, kiruvchi xabar yaratadi va ixtiyoriy ravishda push yuboradi (kuniga bittagacha cheklangan, sukunat soatlari hisobga olinadi).

  8. Ko'rsatish

    Frontend artefaktni autentifikatsiyalangan API chaqiruvi orqali tortib oladi. Hub yangi kontent bilan qayta render qilinadi. Agar foydalanuvchi oflayn bo'lgan bo'lsa, kesh kechagi ko'rinishni xizmat qiladi va qayta ulanishda yangi artefakt paydo bo'ladi.

Turtkidan ko'rsatishgacha yetti bosqich, har biri aslida nima qilishiga ko'ra nomlangan.

To'rtta to'plam

Har biri javob beradigan so'rovlar uchun indekslangan.

soulwise_persons

Albom yozuvlari. userId, status, deletedAt bo'yicha indekslar. Avval yumshoq o'chirish; PII'ning qattiq o'chirilishi 30 kundan keyin.

soulwise_chapters

AI tomonidan yozilgan boblar, shifrlangan tana. personId, userId, generatedAt bo'yicha indekslar. Aspekt chiplari tez filtrlash uchun alohida massiv sifatida saqlanadi.

soulwise_journal_entries

Foydalanuvchi yozgan mulohazalar, shifrlangan tana. userId, personId, createdAt bo'yicha indekslar. Qidiruv uchun matn-indeksli tana. Har bir yozuv uchun 'shaxsiy — Luminara'ga berilmasin' bayrog'i.

soulwise_resonances

Har bir bog' uchun to'rt o'lchovli ballar. personId bo'yicha noyob indeks. Bob yoki kundalik yozuvidan keyin xizmat chaqiruvi orqali qayta hisoblanadi.

EDA hodisalari

Qat'iy qoida: hodisalar faqat ma'lumotlar bazasiga commit qilingandan keyin ishga tushadi. Modullararo bog'liqliklar Symbol injection tokenlari orqali amalga oshiriladi, hech qachon forwardRef orqali emas. Funksional modullar o'rtasida xizmatdan xizmatga to'g'ridan-to'g'ri importlar mavjud emas.

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — bob shifrlangani va saqlangandan keyin ishga tushadi. Notifications-v2 uni tinglaydi; inbox elementi yaratadi; ixtiyoriy ravishda push yuboradi.
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — kundalik yozuvi shifrlangani va saqlangandan keyin ishga tushadi. Resonance xizmati uni tinglaydi; qayta hisoblashni ishga tushiradi.
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — shaxsning tug'ilish ma'lumotlari o'zgargandan keyin ishga tushadi. Sinastri keshi bekor qilinadi.
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — notifications-v2 shartnomasiga muvofiq; push byudjeti va sokin soatlarga rioya qiladi.

V-Model spetsifikatsiya qat'iyligi

119 ta kuzatib boriladigan talab, hech qanday bo'shliqsiz. Har bir talab oldinga test holatiga (UTP, ITP, STP, E2E) va orqaga foydalanuvchi tarixiga bog'lanadi. 20 ta foydalanuvchi tarixi. 15 ta funksional talab. 12 ta nofunksional toifa. 8 ta global qabul darvozasi.

Unumdorlik shartnomasi

Bob generatsiyasi so'rovlarning 95% uchun 30 soniya yoki undan tezroq, BullMQ ish davomiyligi taqsimotiga nisbatan o'lchanadi. API p99 GET kechikishi 1,000 ta bir vaqtdagi foydalanuvchida 500 ms yoki undan yaxshiroq, k6 yuk testi orqali o'lchanadi. Frontend TTI simulyatsiya qilingan 4G'da 3 soniya yoki undan yaxshiroq, Lighthouse CI orqali o'lchanadi.

Xavfsizlik shartnomasi

Kundalik va bob matnlari uchun platforma boshqaradigan kalitlar bilan saqlashda AES-256 shifrlash. Uzatishda TLS 1.2+; HTTP→HTTPS yo'naltirish. JWT kirish tokenlari 1 soatlik amal qilish muddati bilan, yangilash tokenlari 30 kunlik amal qilish muddati bilan, yangilashda rotatsiya. PII'ni butunlay o'chirishdan oldin 30 kunlik oyna bilan yumshoq o'chirish.

Foydalanuvchanlik shartnomasi

prefers-reduced-motion butun saytda hisobga olinadi — GSAP animatsiyalari faqat shaffoflik orqali silliq o'tishlarga aylanadi. Har bir interaktiv elementda VoiceOver va TalkBack yorliqlari mavjud. Har bir reliz oldidan iOS va Android'da qo'lda tekshirib chiqiladi.

Nega cosmic-story'ni kengaytirish o'rniga alohida soulwise-story moduli ishlatilgan?

Chunki yuqori oqim spetsifikatsiyasi funksiyani qaytadan quradi, mavjud modul ichida qaytadan qurish esa yoki v1 tajribasini buzgan bo'lardi, yoki keyinroq ajratib-keyin-birlashtirishga olib kelardi. Yangi modul v1 ni tegmasdan saqlaydi, v2 ga o'zini isbotlash imkonini beradi va tayyor bo'lganda toza migratsiya qiladi.

Nega Postgres emas, MongoDB?

My Zodiac AI'ning mavjud backend'i MongoDB'da ishlaydi; uni almashtirish bu funksiyaga aloqasi bo'lmagan infratuzilma qaroriga aylanardi. Hujjat modeli ham boblar va kundalik yozuvlariga juda mos keladi — ichma-ich joylashgan, har xil uzunlikdagi, blob sifatida shifrlangan.

Nega navbat sifatida BullMQ tanlangan?

BullMQ Redis ustida ishlaydi, u esa sessiya va rate-limit uchun allaqachon stekda mavjud. Hech qanday yangi infratuzilma kerak emas. O'rnatilgan qayta urinish, vaqt tugashi va kuzatuvchanlik bob yaratish ehtiyojlarini maxsus quvurlarsiz qoplaydi.

Yuqori oqim spetsifikatsiyasi aslida qayerda yozilgan?

Ichki repozitoriyda. Bu sahifadagi raqamlar va shartnomalar yuqori oqim V-Model artefaktlarini boshqacha so'zlar bilan ifodalaydi. My Zodiac AI blog klasteridagi ommaviy muhandislik blog postlari ('cosmic-story-v2' tegi bilan) qurilishning aniq qismlariga chuqurroq kiradi.

My Zodiac AI'ni bugun sinab ko'ring

Soulwise o'z to'lqinlarini ochayotgan bir paytda, bizning yetakchi astrologiya ilovamiz allaqachon sizning qo'lingizda.

Astrologiya kontenti mushohada va o'yin-kulgi uchun. Bu yerda tavsiflangan Cosmic Story v2 imkoniyatlari ishlab chiqilmoqda; ularning mavjudligi oldindan ogohlantirmasdan o'zgarishi mumkin.