свёртка доставки в объекты и сшивка с приёмом

- internal/fold — свёртка по идентификатору доставки, тело из архива: тот же
  код, каким пойдёт пересборка витрины
- приём зовёт свёртку на context.WithoutCancel с собственным дедлайном;
  исход разбора на код ответа не влияет
- слой доставки хранится в delivery.derived_layer и наследуется от
  ПРЕДШЕСТВУЮЩЕЙ доставки автоматизации: без границы по времени свёртка
  переставала быть функцией от префикса журнала (1737 объектов против 1742)
- task verify:archive — сходимость на живом архиве, 99 доставок из 99
This commit is contained in:
av
2026-08-01 18:03:59 +03:00
parent c9ddf0b4dd
commit 32f21044e4
17 changed files with 898 additions and 36 deletions
@@ -0,0 +1,17 @@
-- +goose Up
-- Слой, выведенный для доставки. Нужен не отчётности, а самому выводу слоя:
-- доставка без плотных метрик наследует последний надёжно выведенный слой той
-- же автоматизации, и без хранения этой памяти первая же такая доставка после
-- перезапуска сервиса осталась бы без слоя (измерено: 2 доставки из 89).
--
-- Пустая строка означает «слой не выводился» — такие доставки в наследование
-- не участвуют.
ALTER TABLE delivery ADD COLUMN derived_layer TEXT NOT NULL DEFAULT '';
-- Поиск идёт «последний слой этой автоматизации»: сортировка по времени приёма
-- внутри автоматизации.
CREATE INDEX delivery_automation_layer ON delivery (automation_id, received_at DESC);
-- +goose Down
DROP INDEX delivery_automation_layer;
ALTER TABLE delivery DROP COLUMN derived_layer;