UC-OVR-004. От реферальной ссылки до объекта у собственника
Назначение
Сквозная воронка «от ссылки до покупки» (матрица): реферальная ссылка агента → регистрация инвестора →
лид → фиксация клиента у застройщика → бронь → сделка → завершённая сделка → объект в портфеле
инвестора-собственника. Пересекает referral → crm → chessboard → investor-owner и связывает
их через интеграционные события. Крупные под-воронки вынесены в
UC-OVR-005 (лид→сделка) и UC-OVR-006
(бронь→регистрация).
Metadata
| Поле | Значение |
|---|---|
| Статус | draft |
| Owning team | crm (оркестрация воронки) |
| Primary capability | end-to-end-purchase-funnel |
| Risk level | high |
Scope И Участники
| Участник | Роль |
|---|---|
| Агент | Владелец реф-ссылки, ведёт лид, фиксирует клиента, создаёт бронь/сделку |
| Инвестор | Переходит по ссылке, регистрируется, покупает объект |
| Менеджер застройщика | Одобряет фиксацию, ведёт сделку со стороны девелопера |
referral | Привязка «инвестор↔агент» (bond) + запрос привязки лида |
crm | Лид → фиксация → бронь → сделка (ядро воронки) |
chessboard | Статус объекта недвижимости (Резерв/Бронь/Продан) |
investor-owner | Портфель собственника: объект после завершённой сделки |
rewards / notifications | Метрики/комиссии агента, уведомления по этапам |
Preconditions
- У агента есть активная реф-ссылка (UC-REF-001).
- Объект застройщика опубликован в шахматке и доступен к бронированию.
Основной Сценарий
- Ссылка. Агент делится реф-ссылкой; аноним открывает её — cookie
referralUrl(UC-REF-002). - Регистрация. Инвестор регистрируется/авторизуется;
referralсоздаёт связку (bond) и запрашивает привязку лида — UC-REF-004 →pin.referral.bonds.v1,pin.referral.lead-attachments.v1. - Лид. Заявка на консультацию/бронь (UC-OVR-001 /
UC-OVR-003) →
pin.crm.lead-created.v1в воронке агента. - Фиксация. Агент фиксирует клиента у застройщика
(create-fixation.md,
UC-FIX-001); менеджер застройщика
одобряет (UC-FIX-002) →
pin.crm.fixation-approved.v1(rewards инкрементит user-centric метрику агента). - Сделка. Из лида/одобренной фиксации создаётся сделка
(UC-CRM-002) →
pin.crm.deal-created.v1. Подробности лид→сделка — UC-OVR-005. - Бронь. Создаётся бронь объекта →
pin.crm.booking-created.v1/booking-paid.v1;chessboardпереводит объект в «Резерв»/«Бронь» (UC-CHS-006). - Ведение сделки. Канбан-этапы (UC-CRM-003)
→
pin.crm.deal-stage-changed.v1; регистрация/эскроу — UC-OVR-006. - Завершение. Сделка завершается (UC-CRM-005)
→
pin.crm.deal-completed.v1;chessboard— объект «Продан». - Собственник.
investor-owner(consumer crm-deal-completed.md) добавляет объект в портфель инвестора (UC-OWN-002) → property-added.md / owner-linked.md.
Sequence
Постусловие
После полного прохода воронки (happy) гарантированно:
- в
referralесть связка (bond) инвестор↔агент (key =ReferredUserId), журнал привязки лида подтверждён; - в
crmпоследовательно созданы и связаныLead→ одобренныйFixationRequest→Deal→Booking; лид помечен сконвертированным; сделка достиглаCompleted; снапшотыAgentUserId/AgencyCompanyIdиммутабельны на всех сущностях; chessboardпровёл объектСвободен → Резерв/Бронь → Продан(по событиям crm);rewardsучёл одобрение фиксации (user-centric метрика агента) и начислил комиссию поdeal-completed(база —FinalPrice);investor-ownerзавёл объект в портфель инвестора (first-seen поDealId) и опубликовалproperty-added/owner-linked;- по этапам ушли уведомления сторонам.
Инвариант атрибуции: агент, зафиксированный в лиде/сделке снапшотом AgentUserId, остаётся получателем
метрик/комиссии до конца воронки независимо от последующей смены его членства (см.
UC-OVR-008).
Альтернативные Сценарии И Отказы
| Ситуация | Поведение |
|---|---|
| Фиксация отклонена застройщиком | pin.crm.fixation-rejected.v1 (UC-FIX-003); сделка не создаётся; агент может уточнить и повторить (правила окна фиксации) |
| Бронь истекла/отменена | booking-expired/booking-cancelled → объект возвращается в «Свободен»; воронка откатывается к этапу брони |
| Сделка отменена | deal-cancelled вместо deal-completed; pin.crm.deal-completed.v1 не публикуется — объект в портфель не попадает, комиссия не начисляется |
| Реф-привязки нет | Воронка идёт по ПИН-маршруту (UC-OVR-002); комиссия/атрибуция — у ПИН |
deal-completed доставлен повторно | investor-owner/rewards/chessboard идемпотентны (first-seen по DealId) — портфель/комиссия/статус не дублируются |
| Событие этапа опередило предыдущее (переупорядочивание) | Порядок per-DealId гарантирован ключом; потребители держат Version-guard, устаревшее событие игнорируется |
| Агент вышел из агентства во время воронки | Исторические снапшоты AgencyCompanyId/AgentUserId не пересчитываются (back-fill запрещён, ADR-0061); воронка завершается на прежней атрибуции |
Согласованность И Идемпотентность
- Событийная цепочка, а не распределённая транзакция. Этапы связаны асинхронными событиями
(
bonds/lead-attachments→lead-created→fixation-approved→deal-created→booking-created→deal-stage-changed→deal-completed→property-added). Каждое — атомарно с изменением своего агрегата; между этапами есть окна eventual-consistency (статус объекта/буст < 1 мин, метрики/уведомления < 5 мин). - Многошаговая координация с компенсацией вынесена в саги: бронь (Резерв → Бронь → передача в продажу) и
завершение сделки (fan-out) — см. UC-OVR-006. Отказ на этапе не
«ломает» ранее зафиксированные факты — он публикует компенсирующее/терминальное событие
(
fixation-rejected,booking-expired,deal-cancelled). - Идемпотентность терминала.
deal-completedтерминален и публикуется ровно один раз на сделку; downstream-эффекты (объект в портфель, комиссия, статус «Продан») — first-seen поDealId. - Порядок per-инвестор/per-сделка. Реф-связки упорядочены по
ReferredUserId, событийная жизнь сделки — поDealId; глобального порядка между сделками нет.
Acceptance Criteria (Given/When/Then)
- Happy (ссылка → объект в портфеле). Дано: у агента активная реф-ссылка, объект застройщика опубликован.
Когда: инвестор проходит регистрацию, лид, одобренную фиксацию, бронь и сделку до завершения. Тогда: объект
переходит в «Продан», появляется в портфеле инвестора (
property-added), агент получает user-centric метрику и комиссию с атрибуцией по снапшотуAgentUserId. - Фиксация отклонена. Дано: активный лид, отправлена фиксация. Когда: застройщик отклоняет. Тогда:
fixation-rejected, сделка не создаётся, воронка останавливается на этапе фиксации. - Сделка отменена. Дано: сделка в работе. Когда: сделка отменяется. Тогда:
deal-completedне публикуется, объект не попадает в портфель, комиссия не начисляется. - Нет реф-привязки. Дано: инвестор без bond к агенту. Когда: проходит воронку. Тогда: атрибуция и комиссия у ПИН (ПИН-маршрут).
- Идемпотентность завершения. Дано:
deal-completedдоставлен дважды. Когда: потребители обрабатывают повтор. Тогда: объект в портфеле и комиссия — по одному разу (first-seen поDealId).
Source Of Truth И Данные
| Данные | Владелец | Consistency rule |
|---|---|---|
| Связка инвестор↔агент (bond) | referral | Key = ReferredUserId, строгий порядок per-инвестор |
| Лид/фиксация/бронь/сделка | crm | В одном согласованном изменении; снапшоты AgencyCompanyId/AgentUserId иммутабельны |
| Статус объекта | chessboard | Меняется только по событиям crm (eventual) |
| Объект в портфеле | investor-owner | Создаётся по pin.crm.deal-completed.v1 (идемпотентно по DealId) |
Контракты И Зависимости
- Events: bond-created.md, lead-created.md, fixation-approved.md, deal-created.md, deal-completed.md, property-added.md.
- Под-воронки: UC-OVR-005, UC-OVR-006.
- ADR: 0061 independent-agent, 0056 simplicity-first.
Наблюдаемость
- critical metrics: конверсия по этапам (ссылка→рег→лид→фиксация→бронь→сделка→завершено); time-to-close.
- trace path:
referral→crm(цепочка событий) →chessboard→investor-owner. - alerts: обрыв воронки на этапе (падение конверсии); объект «Продан» без записи в портфеле.
Риски И Guardrails
- Риск: потеря атрибуции агента при рассинхроне bond↔lead. Control: снапшот
AgentUserIdв лиде/сделке, back-fill запрещён. - Риск: дубль объекта в портфеле. Control: идемпотентность consumer по
DealId(property-addedfirst-seen). - Риск: рассинхрон статуса объекта. Control:
chessboard— единственный владелец, изменения только событиями.
Обратные ссылки
Автоссылки: где используется этот документ.
- Саги (2): Saga «Booking» (Резерв → Бронь → передача в продажу), Saga «Deal Completion» (fan-out завершения сделки)
- scenarios (3): Кросс-сервисные сценарии PIN (OVR), UC-OVR-005. От лида до сделки (4 фазы), UC-OVR-006. Сделка: от брони до регистрации (инвестор-инициатор)
- index.md (1): CRM Service
- registries (1): Реестр use cases и user stories PIN