EE DataCollector API сочетает асинхронный контур расчётов портрета/прогноза/Synthesis++, opt-in portrait-only structural export и синхронный hourly-endpoint для geocentric-прогноза Луны. Архитектура разделяет SubjectContext и TemporalContext.

# 1. Введение

2.3.4

2026-09-30

# Ключевые изменения

Сохранён асинхронный контур `create_task -> worker -> get_result` для тяжёлых составных расчётов.

Добавлен новый синхронный `GET /get_hourly_forecast` для почасового прогноза Луны и планет на локальные сутки.

Hourly-endpoint возвращает geocentric-позиции, независимый угловой `tithi`, локальный `lunar_day` по новолуниям/Moon rise, nullable `is_satanic` и окно `void of course`.

Во всех lunar payload добавлен `phase_direction`: waxing, waning, boundary или null. Он вычисляется только из `phase_angle`; legacy `phase_name` сохранён без изменения.

Для hourly-endpoint добавлен двухуровневый кэш: batch-cache эфемерид и result-cache по `date + lat + lng + timezone`.

Канонический слой Synthesis++ и export_result продолжают работать без изменения контракта.

Добавлен additive opt-in structural export: create_task с response.structural_export=portrait_structural_v3 и чтение через get_structural_result.

# Сводная информация

https://digihash.ru/datacollector/api.php

2.3.4

HTTPS / JSON

# Возможности системы

  • Асинхронная очередь задач для портрета, периодического прогноза и Synthesis++.
  • Отдельный portrait-only structural export с provenance расчётных фактов и производных аналитических признаков.
  • Синхронный hourly-endpoint для UI и сервисов, которым нужен готовый почасовой результат сразу.
  • Разделение SubjectContext/TemporalContext во всех вычислениях.
  • Серверное кэширование портретов, дневных прогнозов и нового почасового geocentric-прогноза.
  • Режим критического отказа для внешних источников: при недоступности эфемерид API не отдаёт фальшивый частичный успех.

# Архитектура решения

Этапы жизненного цикла

1

Клиент → POST create_task

Запускает тяжёлую составную задачу для портрета/прогноза/Synthesis++.

2

Worker → Асинхронный расчёт

Собирает итоговый payload и сохраняет его для последующего `get_result`.

3

Клиент → GET get_result или get_structural_result

Опрос обычного/Synthesis++ результата либо отдельного structural_v3 для opt-in задачи.

4

Клиент → GET get_hourly_forecast

Синхронный запрос почасового прогноза на local-день с отдельным result-cache.

Политика кеширования

# Модель хранения и кэширования

Кэш разделён по доменам данных. В публичных ответах файловые пути никогда не раскрываются.

Портретные данные
Постоянно

Immutable SubjectContext и производные portrait-расчёты.

Периодические forecast-данные
По temporal-контексту

Классический дневной/недельный/месячный forecast.

Hourly geocentric forecast
По `date + lat + lng + timezone`

Отдельный JSON-cache для нового почасового метода.

# Технические требования

List

  • •Формат обмена: JSON
  • •Кодировка: UTF-8
  • •Дата: YYYY-MM-DD
  • •Время: HH:MM или HH:MM:SS
  • •Все запросы выполняются по HTTPS