US-реестр: Финансовый блок ПИН (US-FIN)
Назначение
Реестр user stories платформенных акторов ПИН контекста rewards — что настраивают и делают Менеджер ПИН
и финансовый оператор ПИН вокруг денег вознаграждений: акт поступления средств как гейт всех выплат
(каскад одобрений), корректировка суммы начисления (gross) до гейта, настройка удержания платформы
(0.25–1.50 п.п.) и индивидуальных условий по измерениям Застройщик / Проект / Планировка (и временных акций),
реферальные ставки и реферальные начисления/выплаты. Все эти сущности живут вне tenant-модели —
платформенный scope, кросс-tenant видимость (../domain/platform-receipt.md,
ADR-0052). Каждая story даёт формулировку «как … хочу … чтобы …», приоритет, критерий приёмки и ссылки на
покрывающие домены, операции, события и use-cases.
Metadata
| Поле | Значение |
|---|---|
| ID-диапазон | US-FIN-01..16 |
| Роли | Менеджер ПИН (условия платформы, ставки, gross-корректировки) / финансовый оператор ПИН (акты поступления, реферальные поручения) |
| Контекст | rewards (платформенный scope, кросс-tenant) |
| Статус | draft |
| Приоритеты | Must (гейт денег и удержание) / Should (индивидуальные условия, реферальные ставки, корректировки) / Could (акции, удобства) |
| Правило покрытия | Каждая story обязана иметь ≥ 1 покрывающий домен-документ и ≥ 1 операционный документ (api/UC/событие); отсутствие покрытия = дыра traceability |
Карта покрытия (обзор)
Роль: Менеджер ПИН — монетизация и правила (US-FIN-01..08)
Менеджер ПИН настраивает, сколько платформа зарабатывает на каждой сделке и реферале, и правит суммы начислений до момента получения денег. Условия и ставки применяются снапшотом на момент завершения сделки — их последующая правка не пересчитывает уже созданные начисления.
| № | User Story | Приоритет | Критерий приёмки | Покрытие: домен | Покрытие: API / UC / события |
|---|---|---|---|---|---|
| US-FIN-01 | Как Менеджер ПИН, я хочу задать глобальное удержание платформы в процентных пунктах ставки застройщика (0.25–1.50 п.п.), чтобы платформа получала свою долю с каждой сделки. | Must | Создаётся запись условий с RetentionPercentagePoints ∈ [0.25; 1.50]; вне диапазона — отказ (INV-PT-1); глобальная запись (все измерения null) — страховочный уровень резолюции. | ../domain/platform-commission-terms.md — INV-PT-1, Global | ../api/platform/create-platform-terms.md; UC-RWD-007 |
| US-FIN-02 | Как Менеджер ПИН, я хочу задать индивидуальные условия удержания по измерениям Застройщик / Проект / Планировка (и по конкретному агентству), чтобы монетизация отражала договорённости с застройщиками. | Should | Условия задаются на пересечении осей объекта (DeveloperCompanyId → ProjectId → LayoutGroupId, сверху вниз) и агентства; ось заполняется top-down (INV-PT-5); резолюция выбирает наиболее специфичную активную запись на момент CompletedAt. | ../domain/platform-commission-terms.md — PlatformTermsScope, INV-PT-5 | ../api/platform/create-platform-terms.md, ../api/platform/activate-platform-terms.md; UC-RWD-007 |
| US-FIN-03 | Как Менеджер ПИН, я хочу проводить временные акции ПИН (пониженное удержание на срок) обычной записью условий с ограниченным периодом, чтобы не заводить отдельные промо-флаги. | Could | Акция — запись с EffectiveFrom/EffectiveTo; периоды активных условий одной специфичности не пересекаются (INV-PT-2); по истечении периода резолюция автоматически возвращается к более широкой записи. | ../domain/platform-commission-terms.md — период, INV-PT-2 | ../api/platform/create-platform-terms.md; UC-RWD-007 |
| US-FIN-04 | Как Менеджер ПИН, я хочу активировать, досрочно завершать и архивировать условия удержания, чтобы управлять их жизненным циклом без потери истории. | Should | Draft → Active → Archived; в Active меняется только EffectiveTo (сокращение периода, INV-PT-3); архивная запись выведена из резолюции, но снятые снапшоты в начислениях живы. | ../domain/platform-commission-terms.md — статусы, INV-PT-3 | ../api/platform/activate-platform-terms.md, ../api/platform/update-platform-terms.md, ../api/platform/archive-platform-terms.md |
| US-FIN-05 | Как Менеджер ПИН, я хочу видеть реестр условий удержания с их специфичностью и периодами, чтобы контролировать монетизацию и находить пробелы. | Should | Список показывает измерения, RetentionPercentagePoints, период и статус; доступен только платформенному scope (rewards.platform-terms.view); агентствам сами условия не отдаются. | ../domain/platform-commission-terms.md — permissions | ../api/platform/list-platform-terms.md |
| US-FIN-06 | Как Менеджер ПИН, я хочу задавать реферальные ставки на 4 уровнях специфичности (партнёр×застройщик / партнёр / застройщик / глобально) со сроками действия, чтобы платить рефералам корректный процент. | Should | Ставка резолвится по «специфичное побеждает» на момент CompletedAt; периоды внутри одного уровня не пересекаются; снапшот ставки фиксируется в реферальном начислении. | ../domain/referral-rate-rule.md — уровни, срок; ../domain/referral-accrual.md — AppliedRateSnapshot | ../api/platform/create-referral-rate-rule.md, ../api/platform/activate-referral-rate-rule.md; UC-RWD-008 |
| US-FIN-07 | Как Менеджер ПИН, я хочу управлять жизненным циклом реферальных ставок (обновить/активировать/архивировать) и видеть их реестр, чтобы поддерживать актуальность условий. | Should | Draft → Active → Archived с непересечением периодов внутри уровня; реестр показывает уровень, процент, период и статус. | ../domain/referral-rate-rule.md — статусы, непересечение | ../api/platform/update-referral-rate-rule.md, ../api/platform/archive-referral-rate-rule.md, ../api/platform/list-referral-rate-rules.md |
| US-FIN-08 | Как Менеджер ПИН, я хочу скорректировать сумму комиссионного начисления (gross) с обязательной причиной, пока деньги ещё не получены, чтобы исправить ошибку расчёта до необратимого гейта. | Should | Корректировка gross допустима в PendingConfirmation/Confirmed, пока начисление не в поручении и не в не-отменённом акте; скорректированная сумма > удержания ПИН (пул > 0); удержание Platform не пересчитывается; исходная сумма фиксируется в OriginalCommissionAmount; каждая корректировка оставляет append-only аудит-строку с причиной; после MoneyReceived gross неизменяем. | ../domain/commission-accrual.md — INV-10/11, CommissionAccrualAdjustmentEntity | ../api/platform/adjust-commission-accrual.md; UC-RWD-011 |
Роль: Финансовый оператор ПИН — гейт денег и выплаты (US-FIN-09..16)
Финансовый оператор проводит факт получения денег от застройщика и запускает выплаты. Регистрация акта — единый необратимый гейт: до неё ни одна выплата (агентская или реферальная) недоступна.
| № | User Story | Приоритет | Критерий приёмки | Покрытие: домен | Покрытие: API / UC / события |
|---|---|---|---|---|---|
| US-FIN-09 | Как финоператор ПИН, я хочу завести акт поступления средств по пакетному платежу застройщика (номер RC-{yyyy}-{seq}, сумма поступления), чтобы связать пришедшие деньги с подтверждёнными начислениями. | Must | Акт создаётся Draft по одному застройщику (INV-RC-1); номер уникален per-year; сумма поступления берётся из платёжного документа. | ../domain/platform-receipt.md — Number, INV-RC-1 | ../api/platform/create-platform-receipt.md; UC-RWD-010 |
| US-FIN-10 | Как финоператор ПИН, я хочу набрать в акт подтверждённые начисления этого застройщика и видеть предпросмотр сходимости Σ позиций против суммы акта, чтобы собрать корректный состав. | Must | В акт включаются только начисления в Confirmed того же застройщика (INV-RC-1), каждое — максимум в одном не-отменённом акте (INV-RC-3); предпросмотр показывает Σ позиций и расхождение с суммой акта. | ../domain/platform-receipt.md — INV-RC-1/2/3, позиции | ../api/platform/create-platform-receipt.md; UC-RWD-010 |
| US-FIN-11 | Как финоператор ПИН, я хочу зарегистрировать акт и тем самым атомарно провести каскад одобрений, чтобы деньги стали доступны к выплате. | Must | При Register (Σ позиций = сумме акта, INV-RC-2) в одном согласованном изменении: позиции Confirmed → MoneyReceived, связанные рефералки Pending → Approved, публикуются события получения денег; расхождение суммы/устаревшая позиция — отказ (SUM_MISMATCH/ITEM_STALE), состав пересобирается. | ../domain/platform-receipt.md — INV-RC-2/4, каскад; ../domain/referral-accrual.md — INV-RA-3 | ../api/platform/register-platform-receipt.md; ../events/commission-money-received.md |
| US-FIN-12 | Как финоператор ПИН, я хочу понимать, что зарегистрированный акт неизменяем и не откатывается, чтобы ошибки исправлять компенсацией, а не разворотом. | Must | Registered — терминальный: состав и поля не правятся (INV-RC-4); исправление — компенсирующим начислением/корректировкой следующим периодом; черновик можно отменить (Cancel), освободив начисления. | ../domain/platform-receipt.md — INV-RC-4, статусы | ../api/platform/register-platform-receipt.md; UC-RWD-010 |
| US-FIN-13 | Как финоператор ПИН, я хочу видеть реестр актов поступления и подсвеченный возраст старейшего подтверждённого начисления без акта, чтобы не быть узким местом гейта. | Should | Реестр показывает акты со статусами и суммами; наблюдаемость даёт возраст старейшего Confirmed-начисления без акта (алерт при превышении порога — оператор блокирует выплаты). | ../domain/platform-receipt.md — наблюдаемость | ../api/platform/list-platform-receipts.md |
| US-FIN-14 | Как финоператор ПИН, я хочу сформировать и утвердить реферальное платёжное поручение по одобренным начислениям, чтобы выплатить вознаграждения партнёрам. | Should | Поручение Kind = ReferralReward (tenant — компания ПИН) собирает свободные реферальные начисления в Approved, группирует по партнёрам; Approve замораживает состав при ItemsCount ≥ 1. | ../domain/payout-order.md — ReferralReward, INV-1/6 | ../api/platform/create-referral-payout-order.md, ../api/platform/approve-referral-payout-order.md, ../api/platform/list-referral-payout-orders.md |
| US-FIN-15 | Как финоператор ПИН, я хочу отметить реферальное поручение выплаченным (исполнение платежа вне платформы), чтобы каскадно закрыть начисления и провести дебет кошельков. | Should | MarkPaid из PendingPayment каскадит привязанные рефералки Approved → Paid, проставляет PaidAt, публикует событие статуса поручения; дебет счетов ReferralCommission — по событию (ADR-0065). | ../domain/payout-order.md — INV-7; ../domain/referral-accrual.md — INV-RA-5 | ../api/platform/mark-referral-payout-order-paid.md; ../events/payout-order-status-changed.md |
| US-FIN-16 | Как Менеджер/оператор ПИН, я хочу вести реестр реферальных начислений: скорректировать сумму (с причиной, до выплаты) или отменить ошибочное начисление целиком, чтобы поддерживать финансовую корректность. | Should | Корректировка суммы допустима пока начисление свободно и не выплачено (Pending/Approved, INV-RA-6), оставляет append-only аудит-строку; отмена целиком — ManualCorrection (не способ поправить сумму); из Approved дельта/отмена компенсируются проводкой кошелька Correction. | ../domain/referral-accrual.md — INV-RA-6, ManualCorrection | ../api/platform/adjust-referral-accrual.md, ../api/platform/cancel-referral-accrual.md, ../api/platform/list-referral-accruals.md; UC-RWD-011 |
Зафиксированные ограничения покрытия
| US | Ограничение | Принято |
|---|---|---|
| US-FIN-01/02 | Удержание — только процентные пункты ставки застройщика, не процент от суммы комиссии | Модель монетизации ADR-0066 (0.25–1.50 п.п.); политика агентства делит пул (gross − удержание) |
| US-FIN-08/16 | Корректировка суммы — first-class, не отмена/правка ставки | Обязательная причина + append-only аудит; после MoneyReceived gross неизменяем (ADR-0067 п.4) |
| US-FIN-11/12 | Гейт денег необратим | Регистрация акта — атомарный каскад без отката; частичные оплаты акта вне scope v1 (ADR-0067) |
| US-FIN-14/15 | Исполнение платежей отложено | Полная структура поручений + ручной MarkPaid (решение №9 ТЗ); реквизиты — из profile при будущей интеграции |
| US-FIN-04/06 | Правка условий/ставок не пересчитывает начисления | Применённые значения зафиксированы снапшотами на момент CompletedAt |
Обратные ссылки
Автоссылки: где используется этот документ.
- Use Cases (2): US-реестр: Владелец агентства (US-OWN-AG), US-реестр: Реферальный партнёр (US-PRT)
- registries (1): Реестр use cases и user stories PIN
Связанные документы
- Дома полей: ../domain/platform-commission-terms.md (удержание, специфичность, период), ../domain/referral-rate-rule.md (реферальные ставки), ../domain/commission-accrual.md (gross-корректировки, статусы), ../domain/referral-accrual.md (реферальные начисления), ../domain/platform-receipt.md (акт-гейт), ../domain/payout-order.md (реферальные выплаты).
- Use cases: UC-RWD-007, UC-RWD-008, UC-RWD-009, UC-RWD-010, UC-RWD-011.
- События: ../events/commission-money-received.md, ../events/commission-accrual-status-changed.md, ../events/referral-accrual-status-changed.md, ../events/payout-order-status-changed.md.
- Смежные реестры US: партнёр — user-stories-partner.md; владелец агентства — user-stories-agency-owner.md.