Files
chatballs/apps/backend
AndreyandClaude Opus 5 c01bf8aef6 🔥 chore(db): мёртвые поля отменённых доменов удалены из схемы
Колонки пережили решения, которыми были отменены:

- `Organization.tax_regime` и `vat_mode` — налоговый профиль организации,
  отменён вместе с управленческой картиной продаж (ADR-HUB-0010, отменён
  ADR-CHATBALLS-0041). Миграция identity/0032;
- `Channel.allow_sales_attribution` и `allow_checkout_actions` — коммерческие
  флаги канала; ADR-CHATBALLS-0045 §4 объявил их запрещёнными безусловно, но
  колонки остались. Миграция channels/0008.

Вместе с флагами ушёл аппарат инвариантов канала. P1-P2 были их единственным
содержимым, P3-P5 сняты с сущностью Product: после удаления полей
`policy_violations()` всегда возвращала бы пустой кортеж, `PolicyInvariantError`
не могла быть возбуждена никогда, а `require_valid_policy()` стала бы
вызовом-пустышкой. В `channels/policy.py` остались только состав полей и их
отображение в payload для двух живых флагов (`allow_anonymous_sessions`,
`allow_self_reported_contact`).

Удалён `channels/test_policy_migration.py`: он проверял приведение данных
исторической миграции channels/0005 по колонкам, которых больше нет. Отсюда
622 backend-теста вместо 624 — ровно два его метода, покрытие не потеряно.

Из `identity/admin.py` колонки убраны из `list_display`: иначе админка падает
проверкой admin.E108.

Django выполняет `DROP COLUMN ... CASCADE` и молча уносит зависящие вьюхи,
поэтому зависимости проверены до миграции: три вьюхи зависят от таблиц, но ни
одна не читает эти колонки; политик RLS, constraint'ов и индексов на них нет.
После применения все 10 вьюх схемы chatballs на месте, колонок в
information_schema нет.

Проверка: `manage.py check` и `makemigrations --check` чисты, локальная БД
смигрирована, полный check.ps1 зелёный (typecheck ×2, vitest 76, CLI 9, e2e 8,
backend 622).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 20:44:01 +03:00
..
2026-06-17 18:14:16 +03:00
2026-06-17 18:14:16 +03:00