Представляем наш движок гороскопов¶
Наш движок гороскопов – это детерминированный астрологический runtime, разработанный для реальных продуктов, а не для генерации шуточного текста. Он объединяет вычисления Swiss Ephemeris, строгую активацию факторов и редакционное форматирование, чтобы ваше приложение получало стабильный, объяснимый и премиальный вывод отчетов.
На чем вы работаете¶
Во время выполнения движок рассчитывает реальное положение небесных тел и извлекает смысл из активированных астрологических факторов. Для идентичных запросов выходные данные остаются абсолютно стабильными. При предоставлении входных данных для персонализации, векторы уровня дома и контекста рождения активируются для создания пользовательских различий.
Это дает вашей команде:
- Предсказуемые результаты для тестирования, контроля качества и кэширования: идентичные запросы всегда возвращают одинаковый JSON.
- Объяснимое составление отчетов благодаря отслеживанию
factor_detailsво всех разделах. - Чистый путь от простых отчетов о сигналах до премиальных персонализированных отчетов.
- Учет периода глубины: ежедневные (5-6 факторов), еженедельные (10), ежемесячные (11) и годовые (13) наборы факторов с явными весами.
Обзор архитектуры¶
Полная архитектура движка¶

Архитектура запроса-ответа¶

Детерминированная пайплайн¶
- Шлюз проверяет аутентификацию, лимиты и политику запросов.
- Валидация контракта запроса обеспечивает соответствие принятому схеме и опциям.
- Движок определяет источник данных, временной интервал и конфигурацию эфемериды.
- Swiss Ephemeris вычисляет положения, аспекты и дома (при наличии).
- Слой агрегации извлекает данные за период, выделяет события (аспекты, вхождения, станции, лунации, затмения) и ранжирует драйверы.
- Движок интерпретации сопоставляет спецификации факторов с контентом на основе фиксированного порядка, явных весов и выбора стабильной версии хэширования.
- Движок контента генерирует описания разделов из пакетов контента V2 с учетом периода (открытие → смещение → результат).
- Шлюз возвращает payload движка плюс обертки для интеграции (
_enterprise,_api_metadata_) для метаданных.
Гарантии детерминированности¶
Детерминированность — это не случайность, она обеспечивается на каждом уровне:
| Гарантия | Механизм обеспечения |
|---|---|
| Один и тот же payload → одни и те же факторы | Явное определение порядка факторов по периоду + фиксированные веса |
| Одинаковые факторы → одинаковые варианты контента | Выбор стабильного хеша SHA-256 |
| Одинаковые варианты → одинаковое выражение | Детерминированное циклирование фраз из наборов контента V2 |
| Одинаковое выражение → идентичный JSON | Обеспечение согласованности при редактировании + удаление дубликатов разделительных линий между разделами |
Это означает, что вы можете хешировать два независимых запроса с одинаковым телом и получить одинаковый результат, что позволяет реализовать надежное кэширование, тестирование регрессии QA и воспроизводимую отладку.
Публичные vs Персонализированные отчеты¶
Оба режима являются валидными для производства. Разница не в качестве; это уровень активации.
Публичный режим (на основе знака зодиака)¶
Предоставьте только знак зодиака и дату. Движок генерирует стабильное, общее чтение для всех пользователей с этим знаком в этот период.
- Отлично подходит для широкой аудитории и экономичного кэширования (12 знаков × 4 периода × 365 дней = ~17 520 уникальных ежедневных кэшей)
- Без расчетов по домам —
rising_sign,house_cuspsи назначение телаhouseявляютсяnull - Хорошо подходит для быстрого развертывания, гороскопов в стиле журнала и платных тарифов
Режим персонализации (с учетом даты рождения)¶
Предоставьте контекст даты рождения (birth_time, координаты, часовой пояс), чтобы активировать более глубокие векторы. Два пользователя с одним и тем же знаком зодиака могут получать разные редакционные материалы из-за изменения расположения домов и знака восхода, что влияет на оценку факторов.
- Обязательные поля:
birth_time(Ч:М) +birth_latitude+birth_longitude - Разблокирует: знак восхода, концы домов, назначение планет в дома, и факторы фокусировки на доме (
daily_house_focus,weekly_house_focus,monthly_house_focus,yearly_house_focus) - Лучше всего подходит для премиум-подписок и высокоэффективных пользовательских интерфейсов.
- Поддерживает более сложные модули приложения и каналы персонализации
Модель редакционных материалов на основе факторов¶
Движок работает на основе явных наборов факторов — детерминированных интерпретационных драйверов, вычисляемых на основе астрономических снимков и агрегирования периодов. Каждый период имеет определенный порядок факторов и явные веса.
Наборы факторов по периодам¶
| Период | Количество факторов | Ключевые факторы |
|---|---|---|
| Ежедневный | 5-6 | sun_in_sign, moon_in_sign, transits_archetypes, aspects, daily_house_focus |
| Еженедельный | 10 | weekly_moon_phase, planetary_focus, retrograde_archetypes, weekly_theme_archetypes, weekly_house_focus |
| Ежемесячный | 11 | monthly_lunation_archetypes, eclipse_archetypes, outer_planet_focus, monthly_theme_archetypes, monthly_house_focus |
| Годовой | 13 | jupiter_in_sign, saturn_in_sign, nodal_axis, yearly_house_focus, yearly_theme_archetypes |
Дополнительные наборы факторов для отчетов: - Планета: planet_core_archetypes, planet_condition_archetypes, planet_house_focus, planet_sign_archetypes - День рождения: solar_return_tone, birthday_year_reset, natal_sun_house_year_theme - Аспект: Наборы факторов, основанные на аспектах, с вычисленными или переопределёнными доминирующими аспектами. - Транзит: Наборы факторов, основанные на транзитах, с вычисленным или переопределённым основным архетипом транзита.
Каждый фактор имеет явный вес (например, moon_in_sign: 1.15 (ежедневно), yearly_theme_archetypes: 1.30 (годовой)), который влияет на оценку раздела и определение интенсивности.
Эта модель позволяет избежать случайных отклонений в тексте и поддерживает редакционный тон, связанный с вычисленными факторами, с полной отслеживаемостью в factor_details.
Ежедневные персонализированные статистические данные приложения (Основной гороскоп)¶
Для режима ежедневной персонализации движок возвращает готовые для использования в приложении статистические блоки в data.daily_personalized_stats. Они идеально подходят для карточек и виджетов сводки.
Условие активации: period=daily и персонализированный запрос на активацию включает в себя как birth_time, так и coordinates.
Основные блоки:
overall_pulse— комплексная оценка ежедневной жизненной силыarchetype_scores— восьмимерный анализ (wisdom,creativity,confidence,intuition,allure,romance,career,emotions)harmony_discord— топ 4 гармоничных и топ 4 диссонирующих знаковelemental_balance— распределение огня/земли/воздуха/водыmomentum_channels— сигналы планетарного импульса
Контроль плотности данных:
daily_stats_detail: "full"для полного набора данных с уровнями уверенности для каждого блокаdaily_stats_detail: "compact"для более легких запросов от клиента (идеально подходит для мобильных виджетов)
Ключевые особенности дизайна запроса¶
Движок поддерживает четкие, типизированные элементы управления для астрологической конфигурации и поведения рендеринга. Распространенные варианты включают:
| Поле | Тип | Цель ||---|---|---| | period | строка | daily, weekly, monthly, yearly || sections | массив | Области жизни для включения (например, general, career, love_singles) |
---| sign / birth | строка / объект | Источник знака (публичный или персонализированный) || target_date | строка | Явный якорь даты (YYYY-MM-DD) для воспроизводимости || zodiac_system | строка | tropical или sidereal |
---| ayanamsa | строка | Система смещения по звездной системе (lahiri, fagan_bradley и т.д.) |
---| house_system | строка | placidus, whole_sign, equal, koch || node_type | строка | true (фактическое значение) или mean (среднее значение) лунного узла |
---| tenant_id | string | Cache namespace isolation for multi-tenant or A/B scenarios |
Гарантии формы ответа в шлюзе¶
Ответы от Gateway проходят через данные движка и добавляют обертки: - _enterprise — информация о типе плана, квоте и ограничении скорости.- _api_metadata_ — информация об эндпоинте, поддерживаемые языки и контекст запроса
Для конечных точек отчетов, использующих движок, _api_metadata_.supported_languages поддерживает только английский язык:
Политика использования языка и перевода¶
Текущие конечные точки отчетов с поддержкой движка поддерживают только lang=en. Это сделано намеренно для сохранения детерминированной редакторской нюансов в производственной среде, при этом надежность перевода обеспечивается отдельно. Слой помощника перевода шлюза (lang=en|es|de|fr|pt) предоставляет переведенный вывод на границе API для всех конечных точек отчетов, кроме прогнозов.
Конвейер контента: V2 Content Packs¶
Редакторский контент поступает из структурированных V2 content packs в репозитории контента движка.
Во время выполнения, репозиторий выбирает варианты детерминированно с помощью стабильного выбора хэша с четырехступенчатой цепочкой резервного копирования:
- Точное соответствие (factor_type + factor_value + intensity)
- Любое значение для factor_type (factor_type + intensity)
- Любой фактор в разделе (section + intensity)
- Шаблон резервного копирования раздела
Эта структура обеспечивает разнообразие контента по интенсивности, сохраняя при этом воспроизводимость для одного и того же исходного значения.
Модель доверия: Закрытый ядро + Открытый источник Lite¶
Наш основной производственный движок является закрытым и оптимизирован для надежности, глубины и управляемых операций в корпоративной среде. Он включает:
- Полные персонализированные отчеты (для всех периодов)
- Отчеты о цикле дня рождения с факторами солнечного возврата
- Комплекты отчетов: планета, аспекты, транзиты, дом и планета-дом
- Натальжная карта с настраиваемым рендерингом SVG колеса
- Кэширование Redis, метрики, проверки работоспособности и горизонтальное масштабирование
Для поддержки независимых астрологов и оценки разработкой, мы также предоставляем бесплатную версию:
Используйте OpAstro для оценки качества движка, изучения логики вычисления факторов и проверки интеграции Swiss Ephemeris. Масштабируйтесь до корпоративных маршрутов NumerologyAPI для более богатых слоев отчетов, более широкого покрытия конечных точек и управляемых производственных операций.
Путь интеграции¶
- Начните с отчетов на уровне публичных данных — ежедневные/еженедельные/ежемесячные/годовые, используя только
sign. Не требуется информация о рождении. Эффективно используйте кэш. - Добавьте персонализированные поля рождения — предоставьте
birth_time+ координаты для получения дифференцированных редакций с учетом факторов, связанных с домами. - Создайте слои специализированных семей отчетов — планетарные, аспекты, транзиты и конечные точки домов для более глубокой функциональности продукта.
- Добавьте конечные точки рождения — полный JSON-схема рождения + SVG-колесо для визуализации и продвинутых астрологических рабочих процессов.
- Оптимизируйте с помощью разделов — запрашивайте только
sections, которые необходимы вашему UI (например,["general", "career"]), чтобы уменьшить размер передаваемых данных. - Используйте
tenant_idдля изоляции кэша — разделяйте бесплатные/премиум уровни или варианты A/B-тестирования без загрязнения кэшем.
Стратегия кэширования¶
| Режим | Эффективность кэша | Стратегия |
|---|---|---|
| Публичный (только по знакам) | Высокая — ~17 520 уникальных ежедневных кэшей | Предварительный прогрев на следующий день; TTL 1-4 часа |
| Персонализированный (с учетом рождения) | Ниже — для каждого пользователя | Ключи кэша для каждого пользователя; TTL 24 часа; рекомендуется Redis |