soulwise_persons
Записи в албума. Индекси по userId, status, deletedAt. Първо меко изтриване; окончателно изтриване на личните данни след 30 дни.
За инженери, продуктови мениджъри, журналисти и партньорски скаути. Целият процес, 4 MongoDB колекции, EDA събития, строгостта на V-Model, целеви показатели за производителност, сигурност и достъпност — всичко на една страница.
Всяка стъпка има услуга, договор и събитие.
Действие на потребителя — „генерирай днешната глава за Сестрата“ — или планиран крон, като неделния обзор в 9 ч. сутринта или обновяването на времето на всеки 6 часа.
Задачата попада в опашка на BullMQ с име soulwise-chapter-generation, с твърд таймаут от 28 секунди. Дълго изпълняващите се задачи се прекратяват и се докладват на потребителя като „опитай отново“.
ChapterGenerationService сглобява промпта от 4 фактора — личен контекст, астрология, сигнал, ритъм — в 1 вход. Никакви необработени лични данни не попадат в промпта дословно; всичко първо се изчиства.
Доставчик на изкуствен интелект се извиква чрез символния токен AI_GENERATION_ADAPTER — доставчикът е сменяем. Отговорът се проверява за дължина, форма и безопасност, преди да се продължи.
Случват се четири неща: класификатор за кризи проверява за тревожен език; екстрактор изважда от един до три астрологични чипа; анти-клейм филтър премахва забранените формулировки; съдържанието се криптира с AES-256 с ключ, управляван от платформата.
Артефактът се записва в подходящата MongoDB колекция — глави, дневникови записи, резонанси — с индекси по userId и personId за бързо търсене. Първо меко изтриване; окончателно изтриване на личните данни след 30 дни.
Събитие на EventEmitter2 — CHAPTER_COMPLETED, JOURNAL_CREATED — се задейства след записа в базата данни. Модулът за известия го прихваща, създава елемент във входящата кутия и по желание изпраща push (ограничено до едно на ден, с уважение към тихите часове).
Фронтендът изтегля артефакта чрез автентикирано API повикване. Хъбът се пресъздава с новото съдържание. Ако потребителят е бил офлайн, кешът показва вчерашния изглед, а новият артефакт се появява при повторно свързване.
Индексирани според въпросите, на които всеки отговаря.
Записи в албума. Индекси по userId, status, deletedAt. Първо меко изтриване; окончателно изтриване на личните данни след 30 дни.
Глави, написани от изкуствен интелект, с криптирано съдържание. Индекси по personId, userId, generatedAt. Чиповете на аспектите се съхраняват в отделен масив за бързо филтриране.
Потребителски размисли, шифровано тяло. Индекси по userId, personId, createdAt. Текстово индексирано тяло за търсене. Флаг за всеки запис „поверително — да не се подава на Luminara“.
Оценки по четири измерения за всяка връзка. Уникален индекс по personId. Преизчисляват се чрез сервизно повикване след запис на глава или дневник.
Строго правило: събитията се задействат само след commit в базата данни. Зависимостите между модулите се решават чрез токени за инжектиране от тип Symbol, никога чрез forwardRef. Без директни import-и от услуга към услуга между отделните функционални модули.
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; спазва бюджета за известия и тихите часове.119 проследими изисквания, 0 пропуски. Всяко изискване се свързва напред с тестов случай (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 часа, токени за обновяване с валидност 30 дни, ротация при обновяване. Меко изтриване с прозорец от 30 дни преди окончателното изтриване на личните данни.
prefers-reduced-motion се спазва навсякъде — GSAP анимациите се превръщат в плавни преходи само на прозрачността. VoiceOver и TalkBack етикети на всеки интерактивен елемент. Ръчно проверено на iOS и Android преди всяко издание.
Защото upstream спецификацията преизгражда функцията, а преизграждането вътре в съществуващ модул би счупило либо v1 изживяването, либо би наложило по-късно разклоняване и сливане. Нов модул запазва v1 непокътната, позволява на v2 да се докаже и мигрира чисто, щом е готова.
Съществуващият бекенд на My Zodiac AI работи с MongoDB; смяната би означавала инфраструктурно решение, несвързано с тази функция. Документният модел освен това пасва добре на главите и записите в дневника — вложени, с променлива дължина, криптирани като blob.
BullMQ работи върху Redis, който вече е част от стека за сесии и rate-limit. Без нова инфраструктура. Вградените повторни опити, таймаут и наблюдаемост покриват нуждите за генериране на глави без допълнителна обвръзка.
Вътрешно хранилище. Числата и договорите на тази страница преразказват изходните артефакти от V-модела. Публичните инженерни публикации в блог клъстера на My Zodiac AI (с етикет „cosmic-story-v2“) навлизат по-задълбочено в конкретни части от изграждането.
Докато Soulwise разгръща своите вълни, нашето водещо астрологично приложение вече е в ръцете ти.
Астрологичното съдържание е за размисъл и забавление. Описаните тук функции на Cosmic Story v2 са в процес на разработка; наличността им подлежи на промяна без предупреждение.