Фаза 3 / волна 1: pipeline архива + чтение истории #76

Closed
opened 2026-08-16 23:35:10 +03:00 by cursor-ai · 3 comments
Owner

Проблема

archive_controller:archive_day/1 не планируется; кэш HTML без calendar_id; JSON /events не ходит в cold; local slave deprecated. История для клиента ненадёжна.

Влияние

Past months деградируют в примитивный HTML или fallback на hot; долг Фазы 3 по архиву не закрывается.

Ожидаемый результат

  • Авто-retention (scheduler или документированный периодический запуск) переносит данные по канону Spec
  • Единый путь чтения месяца для клиента: JSON events для past (предпочтительно) и/или исправленный HTML+кэш с calendar_id
  • Тесты на archive path; peer вместо мёртвого local slave где требуется
  • ACL чтения истории по канону Spec (owner ± share)

Критерии приёмки

  • Авто-архивация не «мёртвый» код: schedule/док + хотя бы один eunit/API-тест
  • Чтение past month по контракту Spec (JSON и/или HTML) без потери calendar_id в кэше
  • 403 для субъектов вне ACL
  • Spec sync после тестов

Связь

Родитель: EventHub/EventHubSpec#19
Зависит от: Spec-story канона волны 1
Волна: 1 (архив)

Приоритет

P1

## Проблема `archive_controller:archive_day/1` не планируется; кэш HTML без `calendar_id`; JSON `/events` не ходит в cold; local `slave` deprecated. История для клиента ненадёжна. ## Влияние Past months деградируют в примитивный HTML или fallback на hot; долг Фазы 3 по архиву не закрывается. ## Ожидаемый результат - Авто-retention (scheduler или документированный периодический запуск) переносит данные по канону Spec - Единый путь чтения месяца для клиента: JSON events для past (предпочтительно) и/или исправленный HTML+кэш с `calendar_id` - Тесты на archive path; peer вместо мёртвого local slave где требуется - ACL чтения истории по канону Spec (owner ± share) ## Критерии приёмки - [ ] Авто-архивация не «мёртвый» код: schedule/док + хотя бы один eunit/API-тест - [ ] Чтение past month по контракту Spec (JSON и/или HTML) без потери `calendar_id` в кэше - [ ] 403 для субъектов вне ACL - [ ] Spec sync после тестов ## Связь Родитель: https://git.sabilin.com/EventHub/EventHubSpec/issues/19 Зависит от: Spec-story канона волны 1 Волна: 1 (архив) ## Приоритет P1
cursor-ai added the Story label 2026-08-16 23:35:10 +03:00
cursor-ai self-assigned this 2026-08-16 23:35:10 +03:00
Author
Owner

Беру волну 1 в работу. Стартуем с канона Spec#20; Back#76 / Front#73 — после утверждения варианта. Код пока не пишем.

Беру волну 1 в работу. Стартуем с канона Spec#20; Back#76 / Front#73 — после утверждения варианта. Код пока не пишем.
Author
Owner

Вариант A: extra-node удалён (archive_manager/controller/fetcher).

Сделано локально (без коммита):

  • таблица month_snapshot + scheduler month_archive_worker
  • GET /events?from&to склеивает hot + snapshot
  • mutate закрытого месяца → 409
  • HTML /view читает snapshot/hot, ACL как у календаря
  • eunit logic_month_archive_tests 2/2

Booking остаётся в hot (inbox). Дальше Front#73.

Вариант A: extra-node удалён (archive_manager/controller/fetcher). Сделано локально (без коммита): - таблица `month_snapshot` + scheduler `month_archive_worker` - `GET /events?from&to` склеивает hot + snapshot - mutate закрытого месяца → 409 - HTML `/view` читает snapshot/hot, ACL как у календаря - eunit `logic_month_archive_tests` 2/2 Booking остаётся в hot (inbox). Дальше Front#73.
Author
Owner

Готово. Снимки месяца (hot/warm/cold) на тех же нодах, extra-node и HTML GET /view удалены. Merge в GET …/events, mutate закрытого месяца — 409.

Проверено: rebar3 compile, logic_month_archive_tests 2/2. Залито в master (Fixes EventHub/EventHubBack#76).

Готово. Снимки месяца (hot/warm/cold) на тех же нодах, extra-node и HTML GET /view удалены. Merge в GET …/events, mutate закрытого месяца — 409. Проверено: rebar3 compile, logic_month_archive_tests 2/2. Залито в master (Fixes EventHub/EventHubBack#76).
Sign in to join this conversation.