Архитектура Cosmic Story в2 — детаљан увид.

За инжењере, продукт-менаџере, новинаре и извиђаче партнерстава. Цео процес, четири MongoDB колекције, EDA догађаји, ригорозност V-модела, циљеви перформанси, безбедност и приступачност — све на једној страници.

  • Soulwise-story је нови NestJS модул напоредо са постојећим cosmic-story модулом. Нула директних увоза између функционалних модула.
  • Четири MongoDB колекције: soulwise_persons, soulwise_chapters, soulwise_journal_entries, soulwise_resonances. Тела шифрована AES-256 методом, индексирана за упите које свака опслужује.
  • Асинхроно генерисање преко BullMQ реда са истеком од 28 с. Догађаји се емитују преко EventEmitter2 тек након уписа у базу — без фантомских ставки у пријемном сандучету.
  • V-Model спецификација: 119 захтева, без празнина. Циљ покривености за бекенд је 85% на нивоу наредби у сервисима; за фронтенд 90% на Pinia стоговима.

Ток процеса, поново, са инжењерским детаљима

Сваки корак има сервис, уговор и догађај.

  1. Окидач

    Радња корисника — „створи данашње поглавље за Сестру“ — или заказани крон задатак, попут недељног прегледа у 9 ујутру, или освежавања временске прилике на сваких 6 сати.

  2. Ред

    Задатак стиже на BullMQ ред под називом soulwise-chapter-generation, са чврстим временским ограничењем од 28 секунде. Задаци који предуго трају се прекидају и кориснику се пријављују као „покушај поново“.

  3. Састављање

    ChapterGenerationService спаја упит са четири фактора — контекст особе, астрологију, сигнал, ритам — у један улаз. Ниједан изворни лични податак корисника не улази дословно у упит; све се претходно очисти.

  4. Генериши

    АИ провајдер се позива преко токена симбола AI_GENERATION_ADAPTER — провајдер је заменљив. Пре наставка, одговор се проверава у погледу дужине, облика и безбедности.

  5. Накнадна обрада

    Догађају се четири ствари: класификатор криза проверава да ли постоји кризни језик; екстрактор аспект-чипова издваја од једног до три астролошка чипа; анти-тврдња филтер уклања забрањене формулације; тело се AES-256 шифрује кључем којим управља платформа.

  6. Сачувај

    Артефакт се уписује у одговарајућу MongoDB колекцију — поглавља, уноси у дневник, резонанце — са userId и personId индексима ради брзог проналажења. Прво меко брисање; трајно брисање PII података након 30 дана.

  7. Обавести

    EventEmitter2 догађај — CHAPTER_COMPLETED, JOURNAL_CREATED — окида се након уписа у базу. Модул за обавештења га преузима, креира ставку у пријемном сандучету и опционо шаље пуш (ограничено на једно дневно, уз поштовање тихих сати).

  8. Прикажи

    Фронтенд преузима артефакт путем аутентификованог API позива. Хаб се поново исцртава са новим садржајем. Ако је корисник био ван мреже, кеш приказује јучерашњи преглед, а нови артефакт се појављује при поновном повезивању.

Седам корака од окидача до приказа, сваки назван по ономе што заиста ради.

Четири колекције

Индексиране за упите на које свака одговара.

soulwise_persons

Ставке албума. Индекси на userId, status, deletedAt. Прво меко брисање; трајно брисање личних података након 30 дана.

soulwise_chapters

Поглавља која пише вештачка интелигенција, шифровано тело. Индекси на personId, userId, generatedAt. Чипови аспеката чувају се као засебан низ ради бржег филтрирања.

soulwise_journal_entries

Размишљања која пише корисник, шифровано тело. Индекси на userId, personId, createdAt. Текстуално индексирано тело за претрагу. Ознака по уносу „приватно — не прослеђивати Luminara“.

soulwise_resonances

Оцене по четири димензије за сваку везу. Јединствени индекс на personId. Поново се израчунавају позивом сервиса након уписа поглавља или дневника.

EDA догађаји

Строго правило: догађаји се покрећу тек након уписа у базу (commit). Зависности између модула остварују се преко Symbol injection токена, никада преко 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 — покреће се након промене података о рођењу особе. Кеш за sinerstvo се поништава.
  • SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — по уговору notifications-v2; поштује push буџет и тихе сате.

Прецизност спецификације по V-моделу

119 следивих захтева, без иједне празнине. Сваки захтев се унапред пресликава на тест случај (UTP, ITP, STP, E2E), а уназад на корисничку причу. 20 корисничке приче. 15 функционална захтева. 12 нефункционалне категорије. 8 глобалних капија прихватања.

Уговор о перформансама

Генерисање поглавља за 30 секунди или брже за 95% захтева, мерено према расподели трајања BullMQ послова. API p99 GET кашњење 500 ms или боље при 1,000 истовремених корисника, мерено k6 тестом оптерећења. Frontend TTI 3 секунди или боље на симулираном 4G, мерено Lighthouse CI-јем.

Уговор о безбедности

AES-256 шифровање у мировању са кључевима којима управља платформа, за тела дневника и поглавља. TLS 1.2+ у преносу; HTTP→HTTPS преусмеравање. JWT приступни токени са трајањем од 1 сата, refresh токени са трајањем од 30 дана, ротација при освежавању. Меко брисање са прозором од 30 дана пре трајног брисања личних података.

Уговор о приступачности

prefers-reduced-motion се поштује глобално — GSAP анимације постају искључиво прелази прозирности. VoiceOver и TalkBack ознаке на сваком интерактивном елементу. Ручно проверено на iOS-у и Android-у пре сваког издања.

Зашто засебан soulwise-story модул уместо проширивања cosmic-story?

Зато што upstream спецификација изнова гради функцију, а градња унутар постојећег модула или би нарушила v1 искуство или захтевала гранање па накнадно спајање. Нов модул оставља v1 нетакнутим, омогућава да се v2 докаже и чисто се мигрира када буде спреман.

Зашто MongoDB, а не Postgres?

Постојећи My Zodiac AI бекенд је на MongoDB-у; прелазак би значио инфраструктурну одлуку неповезану са овом функцијом. Документ-модел уз то добро одговара поглављима и дневничким записима — угнежђено, променљиве дужине, шифровано као blob.

Зашто је баш BullMQ изабран за ред?

BullMQ ради на Redis-у, који је већ у стеку за сесије и ограничавање брзине. Без нове инфраструктуре. Уграђени поновни покушаји, тајмаут и осматрање покривају потребе генерисања поглавља без додатне инсталације.

Где је upstream спецификација заправо записана?

У интерном репозиторијуму. Бројеви и уговори на овој страници парафразирају upstream V-Model артефакте. Јавне инжењерске блог објаве на блог кластеру My Zodiac AI (означене са 'cosmic-story-v2') детаљније улазе у одређене делове изградње.

Испробај My Zodiac AI данас

Док Soulwise отвара своје таласе, наша водећа астролошка апликација већ је у твојим рукама.

Астролошки садржај служи за размишљање и забаву. Могућности Cosmic Story v2 описане овде су у изради; доступност се може променити без претходне најаве.