[CL-1180] income-distribution: settled-gate на snapshot дивидендов (L-4 промежуточный) #1181
No reviewers
Labels
No labels
ci-failing
duplicate
needs-rebase
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
europa-tech-srl/europatech!1181
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/claude-1176-l4-dividend-settled-gate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
api/src/services/p2p-order/settled-shares.ts: новый bulk-хелперgetUnsettledEscrowSharesByUser(tx, objectId)— одинgroupBy(buyerId)по non-SETTLED эскроу объекта (та же семантика, что существующий A1-GATEgetUnsettledEscrowShares).api/src/services/income-distribution/reports.ts: record-date snapshot вcreateMonthlyReportвычитает per-user unsettled-доли (clamp 0, нулевые холдеры выпадают). perShare и accrual-база считаются от settled-долей — netProfit сохраняется by construction.reports.test.ts(вычитание, phantom-холдер из REFUNDED эскроу, clamp, скоуп groupBy) + mock-sync вincome-distribution.test.ts.docs/vault/modules/api-p2p.md— заметка о распространении settled-gate.Зачем
Находка аудита L-4 (issue #1176):
share_ownershipsкредитуется при match, ДО settlement эскроу; при REFUNDED/EXPIRED доли остаются в ownership до ручной reconciliation.income-distribution/preparation.tsначислял дивиденды на эти phantom-доли. Это промежуточный безопасный фикс из issue — закрывает дивиденд-leak без разворота трейда. Полная модель (revertPlan, миграция, revert обеих ног) остаётся за #1176 и ждёт решения по open question.Гейт стоит в момент СОЗДАНИЯ снапшота, а не дистрибуции: perShare выводится из суммы snapshot-долей, поэтому вычитание на этапе дистрибуции разбалансировало бы residual-инвариант
SUM(accruals) = netProfit(W12-B2.2) и могло абортить дистрибуцию.План тестирования
pnpm exec vitest run src/services/income-distribution/__tests__/reports.test.ts— 7/7 (TDD: 4 новых сперва red).tsc --noEmitчисто, eslint чисто.Где могу ошибаться
Ref #1176 (не закрывает).