soulwise_persons
Ставке албума. Индекси на userId, status, deletedAt. Прво меко брисање; трајно брисање личних података након 30 дана.
За инжењере, продукт-менаџере, новинаре и извиђаче партнерстава. Цео процес, четири MongoDB колекције, EDA догађаји, ригорозност V-модела, циљеви перформанси, безбедност и приступачност — све на једној страници.
Сваки корак има сервис, уговор и догађај.
Радња корисника — „створи данашње поглавље за Сестру“ — или заказани крон задатак, попут недељног прегледа у 9 ујутру, или освежавања временске прилике на сваких 6 сати.
Задатак стиже на BullMQ ред под називом soulwise-chapter-generation, са чврстим временским ограничењем од 28 секунде. Задаци који предуго трају се прекидају и кориснику се пријављују као „покушај поново“.
ChapterGenerationService спаја упит са четири фактора — контекст особе, астрологију, сигнал, ритам — у један улаз. Ниједан изворни лични податак корисника не улази дословно у упит; све се претходно очисти.
АИ провајдер се позива преко токена симбола AI_GENERATION_ADAPTER — провајдер је заменљив. Пре наставка, одговор се проверава у погледу дужине, облика и безбедности.
Догађају се четири ствари: класификатор криза проверава да ли постоји кризни језик; екстрактор аспект-чипова издваја од једног до три астролошка чипа; анти-тврдња филтер уклања забрањене формулације; тело се AES-256 шифрује кључем којим управља платформа.
Артефакт се уписује у одговарајућу MongoDB колекцију — поглавља, уноси у дневник, резонанце — са userId и personId индексима ради брзог проналажења. Прво меко брисање; трајно брисање PII података након 30 дана.
EventEmitter2 догађај — CHAPTER_COMPLETED, JOURNAL_CREATED — окида се након уписа у базу. Модул за обавештења га преузима, креира ставку у пријемном сандучету и опционо шаље пуш (ограничено на једно дневно, уз поштовање тихих сати).
Фронтенд преузима артефакт путем аутентификованог API позива. Хаб се поново исцртава са новим садржајем. Ако је корисник био ван мреже, кеш приказује јучерашњи преглед, а нови артефакт се појављује при поновном повезивању.
Индексиране за упите на које свака одговара.
Ставке албума. Индекси на userId, status, deletedAt. Прво меко брисање; трајно брисање личних података након 30 дана.
Поглавља која пише вештачка интелигенција, шифровано тело. Индекси на personId, userId, generatedAt. Чипови аспеката чувају се као засебан низ ради бржег филтрирања.
Размишљања која пише корисник, шифровано тело. Индекси на userId, personId, createdAt. Текстуално индексирано тело за претрагу. Ознака по уносу „приватно — не прослеђивати Luminara“.
Оцене по четири димензије за сваку везу. Јединствени индекс на personId. Поново се израчунавају позивом сервиса након уписа поглавља или дневника.
Строго правило: догађаји се покрећу тек након уписа у базу (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 буџет и тихе сате.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-у пре сваког издања.
Зато што upstream спецификација изнова гради функцију, а градња унутар постојећег модула или би нарушила v1 искуство или захтевала гранање па накнадно спајање. Нов модул оставља v1 нетакнутим, омогућава да се v2 докаже и чисто се мигрира када буде спреман.
Постојећи My Zodiac AI бекенд је на MongoDB-у; прелазак би значио инфраструктурну одлуку неповезану са овом функцијом. Документ-модел уз то добро одговара поглављима и дневничким записима — угнежђено, променљиве дужине, шифровано као blob.
BullMQ ради на Redis-у, који је већ у стеку за сесије и ограничавање брзине. Без нове инфраструктуре. Уграђени поновни покушаји, тајмаут и осматрање покривају потребе генерисања поглавља без додатне инсталације.
У интерном репозиторијуму. Бројеви и уговори на овој страници парафразирају upstream V-Model артефакте. Јавне инжењерске блог објаве на блог кластеру My Zodiac AI (означене са 'cosmic-story-v2') детаљније улазе у одређене делове изградње.
Док Soulwise отвара своје таласе, наша водећа астролошка апликација већ је у твојим рукама.
Астролошки садржај служи за размишљање и забаву. Могућности Cosmic Story v2 описане овде су у изради; доступност се може променити без претходне најаве.