Data Freshness Standard
Назначение
Документ задает единый способ описывать свежесть данных для replicas, projections, Elasticsearch, ClickHouse, cache и export files.
FreshnessView
| Поле | Тип | Описание |
|---|---|---|
Source | string | PostgreSQL, Elasticsearch, ClickHouse, Redis, Replica. |
SourceService | string | Owning или projection service. |
AsOf | DateTimeOffset | До какого времени данные актуальны. |
LagSeconds | long | Задержка относительно текущего времени или event watermark. |
Watermark | string? | Event id/offset/batch id. |
FreshnessStatus | enum | Fresh, Stale, Unknown, Rebuilding. |
SlaSeconds | long | Заявленный SLA. |
PartialData | bool | Есть ли частичные данные. |
Warnings | string[] | Машиночитаемые warnings. |
SLA Категории
| Категория | Допустимый Lag | Примеры |
|---|---|---|
Strong | 0, source of truth | command response, Accounting ledger. |
NearRealtime | до 30 секунд | user dashboard, provider availability. |
Operational | до 5 минут | admin dashboard, manual queues. |
Analytical | до 30 минут | ClickHouse reports. |
Batch | часы/дни | regulatory exports, archived reports. |
Правила Использования
- Query к projection обязан вернуть
FreshnessView. - UI обязан показывать stale/partial data state.
- High-impact command не принимает решение на stale projection без documented exception.
- Export manifest сохраняет freshness на момент генерации.
- Rebuild индекса/материализованного view возвращает
Rebuilding, а не молчаливый empty result.
Fail Closed
Fail closed обязателен для:
- withdrawal decision check;
- game launch decision check;
- incentive redemption decision check;
- AML/KYC/safety checks;
- partner payout approval;
- provider callback settlement.
Fail open допускается только для read-only UX, где stale marker виден пользователю.
Обратные ссылки
Автоссылки: где используется этот документ.
- adr (2): ADR-0019: Data Freshness Standard, ADR-0059: Поиск во всех поверхностях PIN — Elasticsearch-проекции через Talent.Common.Domain.Search
- architecture-overview.md (1): Архитектура Pin