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

ADR-0005: Financial Ledger И Double-Entry Accounting

Статус

Accepted

Контекст

Финансовые и учетные изменения требуют полной воспроизводимости, аудируемости и защиты от частичных ошибок. Простое хранение текущего итога в одном mutable поле не позволяет корректно объяснить происхождение изменений, безопасно восстанавливать состояние и проводить reconciliation.

Решение

Использовать immutable ledger-модель:

  • LedgerTransaction описывает бизнес-операцию;
  • LedgerEntry фиксирует проводку;
  • одна бизнес-операция может содержать несколько связанных entries;
  • исправления выполняются компенсирующими проводками, а не UPDATE существующих записей;
  • итоговые суммы вычисляются из ledger или из документированной materialized projection.

Последствия

  • Любое финансовое изменение получает audit trail и reason.
  • Прямое редактирование итоговых сумм запрещено.
  • Reconciliation и расследование расхождений становятся стандартной частью эксплуатации.
  • API, jobs и consumers обязаны работать с idempotency и transaction boundary.

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

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

Связанные Документы