Як працює рушій із чотирьох чинників — складено, згенеровано, оброблено, показано.

Кожен артефакт у Cosmic Story v2 проходить однаковий шлях. Ось цей шлях, описаний простими словами.

  • Кожен запит складається з чотирьох чинників: людина, астрологія, сигнал, ритм.
  • Генерування відбувається асинхронно через чергу BullMQ із тайм-аутом у 28 секунд.
  • Постобробка охоплює виявлення кризових станів, виокремлення чипів аспектів, фільтрацію хибних тверджень і шифрування AES-256.

Чотири чинники

Кожен — це рядок контексту, що потрапляє в запит.

01

Контекст людини та зв'язку

Для кого цей артефакт — ім'я, тип стосунків і те, що ми знаємо про те, яким був цей зв'язок останнім часом. Якщо цього тижня ти тричі писала в щоденнику про свою сестру, ця фактура проявиться саме тут.

02

Астрологічна поверхня

Натальна карта, синастрика між тобою та людиною, а також поточні транзити. Усе обчислено через Swiss Ephemeris (sweph). Астрологія — це модифікатор запиту, а не сам запит.

03

Сигнал користувача

Нещодавні чек-іни, оцінки резонансу, записи в щоденнику та повідомлення від коуча, що стосуються цього звʼязку. Зберігаються в зашифрованому вигляді й читаються лише тоді, коли ми створюємо щось саме для цих стосунків.

04

Форма ритму

Який саме формат потрібен зараз: щоденний розділ, тижневий лист-підсумок, відповідь коуча, нагадування про ритуал. Ритм підбирає правильний шаблон.

Повний процес, крок за кроком

Сім кроків від тригера до результату, і кожен названо за тим, що він насправді робить.

  1. Тригер

    Дія користувача — «створи сьогоднішній розділ для Сестри» — або запланований cron, як-от недільний підсумок о 9 ранку чи оновлення погоди кожні 6 годин.

  2. Черга

    Завдання потрапляє в чергу BullMQ під назвою soulwise-chapter-generation з жорстким тайм-аутом у 28 секунд. Завдання, що тривають надто довго, припиняються, а користувач отримує повідомлення «спробуй ще раз».

  3. Компонування

    ChapterGenerationService збирає чотирифакторний запит — контекст людини, астрологію, сигнал, ритм — в один вхід. Жодні «сирі» персональні дані користувача не потрапляють у запит дослівно; усе спершу очищується.

  4. Генерація

    Виклик AI-провайдера відбувається через символьний токен AI_GENERATION_ADAPTER — провайдер можна замінити. Відповідь перевіряється на довжину, форму й безпеку, перш ніж рухатися далі.

  5. Постобробка

    Відбувається чотири речі: класифікатор кризи перевіряє текст на тривожні формулювання; екстрактор аспект-чипів витягує від одного до трьох астрологічних чипів; антипретензійний фільтр прибирає заборонені формулювання; тіло шифрується AES-256 ключем, яким керує платформа.

  6. Збереження

    Артефакт записується у відповідну колекцію MongoDB — розділи, записи щоденника, резонанси — з індексами userId і personId для швидкого пошуку. Спершу м’яке видалення; остаточне видалення персональних даних через 30 днів.

  7. Сповіщення

    Подія EventEmitter2 — CHAPTER_COMPLETED, JOURNAL_CREATED — спрацьовує після фіксації змін у базі даних. Модуль сповіщень її підхоплює, створює елемент у вхідних і за потреби надсилає пуш (не більше одного на день, з повагою до тихих годин).

  8. Відображення

    Фронтенд отримує артефакт через автентифікований виклик API. Hub перемальовується з новим вмістом. Якщо ти був офлайн, кеш показує вчорашній вигляд, а новий артефакт з’являється після відновлення зв’язку.

Сім кроків від тригера до результату, і кожен названо за тим, що він насправді робить.

Куди все потрапляє

Чотири колекції MongoDB, кожна проіндексована під запити, на які відповідає.

  • soulwise_persons — soulwise_persons — записи твого альбому. Індексується за userId, status, deletedAt.
  • soulwise_chapters — soulwise_chapters — кожен написаний ШІ розділ, зашифроване тіло. Індексується за personId, userId, generatedAt.
  • soulwise_journal_entries — soulwise_journal_entries — твої роздуми, зашифроване тіло. Індексується за userId, personId, createdAt; текстовий індекс для пошуку.
  • soulwise_resonances — soulwise_resonances — оцінки за чотирма вимірами для кожного зв’язку. Унікальний індекс за personId.
Чому генерація асинхронна?

Виклики до ШІ тривають від трьох до двадцяти п’яти секунд. Тримати запит відкритим так довго — погано масштабується й виглядає так, ніби застосунок завис. Асинхронний підхід одразу повертає ID завдання, розділ завершується у фоні, а вхідні показують його тієї ж миті, щойно він готовий. Користувач може спокійно користуватися застосунком, поки завдання виконується.

Що, якщо генерація зірветься або вичерпає час?

Таймаут BullMQ у 28 секунд завершує будь-яке завдання, яке не встигло закінчитися. Користувач бачить стан «спробувати ще раз» — і ніколи частковий розділ. Невдалі завдання логуються й повторюються в межах бюджету повторних спроб для кожної функції.

Навіщо постобробка для мови кризи?

Бо ШІ-коуч (Luminara) потребує способу й далі слухати навіть тоді, коли безкоштовний денний ліміт вичерпано. Класифікатор кризи позначає повідомлення, що заслуговують на виняток. Це механічна страхувальна сітка, а не клінічна гарантія — щодо кризових ресурсів ми скеровуємо до наявних служб підтримки.

Спробуй My Zodiac AI вже сьогодні

Поки Soulwise розгортає свої хвилі, наш флагманський астрологічний застосунок уже в твоїх руках.

Астрологічний контент створено для роздумів і розваги. Функції Cosmic Story v2, описані тут, перебувають у розробці; їхня доступність може змінитися без попередження.