Перейти к основному содержимому

Отчет/Export: <Название Отчета>

Назначение

Опиши бизнес-цель отчета или export-а, пользователей, decision value и owning service/app.

Классификация

ПолеЗначение
Тип отчетаDashboard / CSV / XLSX / PDF / API export
Аудитория<admin/partner/finance/compliance>
Чувствительность<Internal/PII/Sensitive/Financial>
Freshness SLA<real-time/minutes/hours/day>
Retention<duration>

Доступ

ActorPermissionTenant/Brand scopeAudit
<Actor><permission.name><scope rule><ReadSensitive/ExportSensitive>

Исходные Source Data

ИсточникВладелецТипFreshnessJoin key
<entity/event/projection/fact><service><source of truth/read model/ClickHouse fact><SLA><TenantId + key>

Фильтры <ReportFilterModel>

ПолеТипОбязательностьDefaultОграничения
TenantIdTenantIdДаIdentity claimsRequired
<FilterName><Type>Да/Нет<default><range/enum/reference id>

Строка Отчета <ReportRowModel>

ПолеТипОбязательностьРасчетMasking
<ColumnName><Type>Да/Нет<source/calculation><rule>

Модель Totals <ReportTotalsModel>

ПолеТипОбязательностьРасчетPrecision
<TotalName>decimalДа<formula><scale/rounding/CurrencyId>

Формат Export-а

ColumnЗаголовокТипФорматNullableИсточник
<ColumnName><Заголовок><Type><format>Да/Нет<ReportRowModel.Field>

Процесс Генерации

  1. Проверить permission, tenant scope, brand scope и export limits.
  2. Провалидировать <ReportFilterModel>.
  3. Создать <ExportJob> или выполнить synchronous query согласно лимиту размера.
  4. Прочитать source data с documented freshness SLA.
  5. Сформировать <ReportRowModel> и <ReportTotalsModel>.
  6. Записать audit record и безопасную ссылку на файл, если export async.

Лимиты

ЛимитЗначениеОшибка
Max rows<number><ErrorCode>
Max date range<duration><ErrorCode>
Concurrent exports<number per actor/tenant><ErrorCode>

Наблюдаемость

ТипПравило
Metrics<duration/rows/file size/errors>
Logs<started/generated/downloaded/expired/failed>
TracescorrelationId, tenantId, exportJobId

Обратные ссылки

Автоссылки: где используется этот документ.