docs(orders): зафиксирован версионный приём заказов

- Зачем:
  - отменённая подмена партиции snapshot_date противоречила порционному чтению Kafka и могла обучать потере ранее принятых версий.
- Что:
  - добавлены спецификация приёма заказов и ADR о версионном ODS с ods.order_v.
  - согласованы мастер-спека, дока хранилища, ADR 0008 и исследование формата.
  - зафиксированы граница приёма, координаты загрузки, диагностические повторы и отложенное проектирование DDS.
- Проверка:
  - git diff --cached --check.
  - горячее ревью по правилам репозитория и принятому решению.
  - два прохода холодного ревью.
This commit is contained in:
2026-08-16 21:42:11 +03:00
parent 8d54a3caba
commit ede1df765c
6 changed files with 311 additions and 65 deletions
@@ -63,8 +63,9 @@ Debezium проводит ту же границу внутри одного с
`created_at` и `updated_at` — аудит строки источника. Поэтому
`toDate(created_at)` в
[мастер-спеке](../specs/2026-07-30-stand-v2-realism.md) используется только как
стабильный технический ключ партиции `dds.order`: это день создания строки
[спецификации приёма заказов](../specs/2026-08-16-order-ingestion.md)
используется как стабильный технический ключ партиции `ods.order_snapshot`:
это день создания строки
источника, а не доказательство дня бизнес-события.
Минимальное решение — не добавлять `ordered_at` на всякий случай. Пока модель
@@ -155,8 +156,8 @@ parseDateTime64InJodaSyntaxOrNull(
слепок с `snapshot_date = ORIGIN` уезжает прогоном дня 1.
`as_of_date` тоже могло бы означать дату, по состоянию на которую показаны
данные. Но `snapshot_date` уже является языком спеки, партиции ODS и ADR о
приёме заказов. Переименование не добавляет урока и может спутать дату
данные. Но `snapshot_date` уже является языком спеки и ADR о приёме заказов.
Переименование не добавляет урока и может спутать дату
выгрузки с периодом бизнес-действия записи. Для этого стенда оставляем
`snapshot_date`.
@@ -205,6 +206,7 @@ KISS-вариант для [существующего модуля сериал
Граница этого решения: `toDecimal64OrNull(..., 2)` проверяет числовую
преобразуемость, но не лексическое правило «ровно два знака» — локально строки
`1299.90`, `1299.9` и `1299.900` дали одно значение. Проверка денежного формата
не нужна сериализатору этого слепка: он сам выпускает ровно два знака. Считать
ли остальные формы браком при приёме, решает задача #80; это решение отдельного
лексического валидатора не требует.
не нужна сериализатору этого слепка: он сам выпускает ровно два знака. Приём ODS
проверяет ту же каноническую форму и считает остальные формы браком; граница
строгого приёма зафиксирована в
[спецификации заказов](../specs/2026-08-16-order-ingestion.md).