Cosmic Story v2 архитектурасы — терең талдау.

Инженерлерге, PM-дерге, журналистерге және серіктестік іздеушілерге. Толық pipeline, төрт MongoDB коллекциясы, EDA оқиғалары, V-Model қатаңдығы, өнімділік мақсаттары, қауіпсіздік және қолжетімділік — бәрі бір бетте.

  • Soulwise-story — қолданыстағы cosmic-story модулінің қасындағы жаңа NestJS модулі. Функционалдық модульдер арасында тікелей импорттар жоқ.
  • Төрт MongoDB коллекциясы: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. Денелері AES-256 арқылы шифрланған, әрқайсысы қызмет ететін сұраныстарға қарай индекстелген.
  • Асинхронды генерация BullMQ кезегі арқылы, 28 с тайм-аутымен. Оқиғалар EventEmitter2 арқылы тек дерекқорға коммит жасалғаннан кейін шығарылады — елес inbox элементтері жоқ.
  • V-Model спецификациясы: 119 талап, олқылықтары жоқ. Backend қамту мақсаты — қызметтерде 85% statement; frontend — Pinia store-дарында 90%.

Pipeline-ды тағы да, инженерлік егжей-тегжейімен

Әр қадамның өз қызметі, келісімшарты және оқиғасы бар.

  1. Іске қосу

    Қолданушы әрекеті — «Қарындас үшін бүгінгі тарауды жаса» — немесе жоспарланған cron, мысалы, жексенбілік 9 таңғы қорытынды немесе әр 6 сағат сайынғы ауа райын жаңарту.

  2. Кезек

    Тапсырма soulwise-chapter-generation деп аталатын BullMQ кезегіне түседі, қатаң 28 секундтық уақыт шегімен. Ұзақ орындалатын тапсырмалар тоқтатылып, қолданушыға «қайта көріңіз» деп хабарланады.

  3. Құрастыру

    ChapterGenerationService төрт факторлы промптты — адам контексті, астрология, сигнал, ырғақ — бір кіріске жинайды. Промптқа шикі қолданушы дербес деректері сөзбе-сөз түспейді; барлығы алдымен тазартылады.

  4. Генерациялау

    AI провайдері AI_GENERATION_ADAPTER символ токені арқылы шақырылады — провайдерді ауыстыруға болады. Жалғастырмас бұрын жауап ұзындығы, пішіні және қауіпсіздігі тұрғысынан тексеріледі.

  5. Кейінгі өңдеу

    Төрт нәрсе орын алады: дағдарыс классификаторы дағдарыс тілін тексереді; аспект-чип экстракторы бір-үш астрологиялық чипті алады; қарсы-мәлімдеме сүзгісі тыйым салынған тұжырымдарды алып тастайды; мәтін платформа басқаратын кілтпен AES-256 арқылы шифрленеді.

  6. Сақтау

    Артефакт тиісті MongoDB коллекциясына жазылады — тараулар, күнделік жазбалары, резонанстар — жылдам іздеу үшін userId және personId индекстерімен. Алдымен жұмсақ жою; PII деректерін қатаң жою 30 күннен кейін.

  7. Хабарлау

    EventEmitter2 оқиғасы — CHAPTER_COMPLETED, JOURNAL_CREATED — дерекқорға фиксация жасалғаннан кейін іске қосылады. Хабарландырулар модулі оны қабылдап, кіріс жәшігіне элемент жасайды және қалауыңызша push жібереді (күніне бір реттен аспайды, тыныштық сағаттары сақталады).

  8. Көрсету

    Фронтенд артефактіні аутентификацияланған API шақыруы арқылы алады. Хаб жаңа мазмұнмен қайта көрсетіледі. Егер пайдаланушы желіден тыс болса, кэш кешегі көріністі ұсынады, ал жаңа артефакт қайта қосылғанда пайда болады.

Іске қосудан көрсетуге дейінгі жеті қадам, әрқайсысы өзі шынымен не істейтініне қарай аталған.

Төрт коллекция

Әрқайсысы жауап беретін сұраныстарға қарай индекстелген.

soulwise_persons

Альбом жазбалары. Индекстер: userId, status, deletedAt. Алдымен жұмсақ жою; PII-дің қатаң жойылуы 30 күнде.

soulwise_chapters

ЖИ жазған тараулар, шифрланған дене. Индекстер: personId, userId, generatedAt. Аспект чиптері жылдам сүзу үшін бөлек массив ретінде сақталады.

soulwise_journal_entries

Қолданушы жазған ой толғаныстар, шифрланған дене. Индекстер: userId, personId, createdAt. Іздеу үшін мәтіндік индекстелген дене. Әр жазбаға арналған 'жеке — Luminara-ға берілмесін' белгісі.

soulwise_resonances

Әр байланыс бойынша төрт өлшемді ұпайлар. personId бойынша бірегей индекс. Тарау немесе журнал жазылғаннан кейін қызмет шақыруы арқылы қайта есептеледі.

EDA оқиғалары

Қатаң ереже: оқиғалар тек дерекқорға commit жасалғаннан кейін ғана іске қосылады. Модуль аралық тәуелділіктер Symbol инъекция токендері арқылы жасалады, ешқашан forwardRef арқылы емес. Функционалдық модульдер арасында сервистен сервиске тікелей импорт жоқ.

  • SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — тарау шифрланып, сақталғаннан кейін іске қосылады. Notifications-v2 оны тыңдайды; кіріс жәшігіне элемент жасайды; қалауыңызша push жібереді.
  • SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — күнделік жазбасы шифрланып, сақталғаннан кейін іске қосылады. Resonance сервисі оны тыңдайды; қайта есептеуді іске қосады.
  • SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — адамның туу деректері өзгергеннен кейін іске қосылады. Синастрия кэші жарамсыз болады.
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — notifications-v2 келісіміне сай; push бюджеті мен тыныштық сағаттарын құрметтейді.

V-Model спецификациясының қатаңдығы

119 бақыланатын талап, олқылықсыз. Әрбір талап алға қарай тест кейсіне (UTP, ITP, STP, E2E) және артқа қарай пайдаланушы тарихына байланады. 20 пайдаланушы тарихы. 15 функционалдық талап. 12 функционалдық емес санат. 8 жаһандық қабылдау қақпасы.

Өнімділік келісімі

Тарау генерациясы сұраулардың 95% үшін 30 секунд немесе одан жылдам, BullMQ тапсырма ұзақтығының таралуымен өлшенеді. API p99 GET кідірісі 1,000 бір мезгілдегі пайдаланушыда 500 мс немесе одан жақсы, k6 жүктеме сынағымен өлшенеді. Frontend TTI симуляцияланған 4G желісінде 3 секунд немесе одан жылдам, Lighthouse CI арқылы өлшенеді.

Қауіпсіздік келісімі

Күнделік пен тарау мәтіндері үшін платформа басқаратын кілттермен AES-256 тыныштықтағы шифрлау. Тасымалдау кезінде TLS 1.2+; HTTP→HTTPS қайта бағыттау. JWT қол жеткізу токендері 1 сағаттық қызмет мерзімімен, жаңарту токендері 30 күндік қызмет мерзімімен, жаңарту кезінде ротациямен. PII қатаң жойылғанға дейін 30 күндік терезесі бар жұмсақ жою.

Қолжетімділік келісімі

prefers-reduced-motion параметрі бүкіл жүйеде ескеріледі — GSAP анимациялары тек мөлдірлік арқылы солғындауға айналады. Әрбір интерактивті элементте VoiceOver және TalkBack белгілері бар. Әр шығарылым алдында iOS пен Android-та қолмен тексеріледі.

Неліктен cosmic-story-ды кеңейтудің орнына бөлек soulwise-story модулі жасалды?

Себебі алдыңғы спецификация бұл функцияны қайта құрады, ал бар модульдің ішінде қайта құру не v1 тәжірибесін бұзар еді, не кейіннен бұтақтап барып біріктіруге мәжбүр етер еді. Жаңа модуль v1-ді тиіспеген күйде сақтайды, v2-ге өзін дәлелдеуге мүмкіндік береді және дайын болғанда таза түрде көшіріледі.

Неліктен Postgres емес, MongoDB?

Қолданыстағы My Zodiac AI бэкенді MongoDB-да жұмыс істейді; ауыстыру осы функцияға қатысы жоқ инфрақұрылымдық шешім болар еді. Құжаттық модель тарауларға және күнделік жазбаларына да жақсы келеді — қабаттасқан, әртүрлі ұзындықтағы, blob ретінде шифрланған.

Неліктен кезек ретінде BullMQ таңдалды?

BullMQ Redis негізінде жұмыс істейді, ал ол сессия мен жылдамдық шектеуі үшін стекте бұрыннан бар. Жаңа инфрақұрылым қажет емес. Кірістірілген қайта әрекет ету, тайм-аут және бақылау мүмкіндіктері тарау генерациясының қажеттіліктерін қосымша жалғаусыз-ақ қамтиды.

Алдыңғы спецификация шын мәнінде қайда жазылған?

Ішкі репозиторийде. Осы беттегі сандар мен келісімдер алдыңғы V-Model артефактілерін қысқаша баяндайды. My Zodiac AI блог кластеріндегі көпшілікке арналған инженерлік жазбалар ('cosmic-story-v2' тегімен белгіленген) құрылымның нақты бөліктерін тереңірек ашады.

My Zodiac AI қолданбасын бүгін байқап көріңіз

Soulwise өз толқындарын ашып жатқанда, біздің флагман астрология қолданбамыз қазірдің өзінде сіздің қолыңызда.

Астрология мазмұны — ой түю мен көңіл көтеру үшін. Мұнда сипатталған Cosmic Story v2 мүмкіндіктері әзірленуде; қолжетімділік ескертусіз өзгеруі мүмкін.