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

Статусные модели

Account

new -> active -> paused -> active
active|paused -> archived
new|active|paused -> blocked
blocked -> active

Правила:

  • archived не удаляет платежи и историю;
  • blocked не отменяет автоматически entitlement, но создаёт alert/задачу;
  • смена owner/status пишет audit.

Lead

new -> contacted -> qualified -> converted
new|contacted|qualified -> lost
new -> spam

Правила:

  • converted создаёт или связывает account/deal;
  • spam lead не создаёт повторную карточку;
  • storefront submission обрабатывается идемпотентно.

Deal

new -> qualified -> proposal -> won
new|qualified|proposal -> lost
new|qualified|proposal -> cancelled

Правила:

  • won требует order или invoice;
  • изменение amount после proposal пишет audit.

Order

draft -> confirmed -> fulfilled
draft|confirmed -> cancelled

Правила:

  • confirmed order может создать invoice;
  • fulfilled order не редактируется без adjustment.

Invoice

draft -> issued -> partially_paid -> paid
issued -> paid
issued|partially_paid -> overdue
draft|issued -> cancelled
issued|partially_paid|paid -> void

Правила:

  • issued фиксирует amount и invoice items;
  • paid создаётся только по сумме successful payments >= amount_total;
  • void требует причины и financial permission;
  • overdue может быть calculated status, но фиксируется в timeline.

Payment

pending -> succeeded
pending -> failed
succeeded -> refunded
succeeded -> disputed
disputed -> succeeded|refunded

Правила:

  • webhook должен иметь valid signature;
  • successful payment создаёт payment_credit;
  • повторный webhook не создаёт второй payment или balance entry;
  • refunded status не удаляет payment.

Refund

requested -> approved -> sent -> succeeded
requested|approved -> cancelled
sent -> failed
failed -> sent

Правила:

  • approved требует crm.refunds.manage;
  • succeeded создаёт refund_debit;
  • partial refund допустим, если amount <= paid amount minus previous refunds.

Entitlement

pending -> active -> expired
active -> suspended -> active
pending|active|suspended -> revoked

Правила:

  • active требует source_type/source_id;
  • revoked требует reason;
  • финансовый refund может создать entitlement revoke/suspend command;
  • CRM не создаёт LMS enrollment напрямую, а публикует event/command.

Ticket

open -> pending -> resolved -> closed
open|pending -> cancelled
resolved -> open

Правила:

  • reopening требует reason;
  • закрытие ticket сохраняет timeline.

Teacher payout

draft -> calculated -> review -> approved -> paid
draft|calculated|review -> cancelled
approved -> cancelled

Правила:

  • calculated snapshot воспроизводим;
  • approved payout нельзя пересчитать без новой версии или cancellation;
  • manual adjustment требует reason and audit.

Sync log

received -> processed
received -> ignored
received -> failed -> processed

Правила:

  • failed сохраняет error и retry count;
  • processed source event не обрабатывается повторно.