feat(deals): schema — lead_statuses funnel 14->5 (new/viewed/in_progress/won/lost)

This commit is contained in:
Дмитрий
2026-05-17 17:27:14 +03:00
parent 90be402106
commit 5e73e0cf0f
2 changed files with 16 additions and 19 deletions
+8 -2
View File
@@ -1,11 +1,17 @@
# CHANGELOG schema.sql — Лидерра
**Назначение:** консолидированный журнал изменений `schema.sql`. Содержит двадцать одну запись в обратном хронологическом порядке (v8.22 → v8.21 → v8.20 → v8.19 → v8.18 → v8.17 → v8.16 → v8.15 → v8.14 → v8.13 → v8.12 → v8.11 → v8.10 → v8.9 → v8.8 → v8.7 → v8.6 → v8.5 → v8.4 → v8.3 → v8.2), как принято в keep-a-changelog.
**Назначение:** консолидированный журнал изменений `schema.sql`. Содержит двадцать две записи в обратном хронологическом порядке (v8.23 → v8.22 → v8.21 → v8.20 → v8.19 → v8.18 → v8.17 → v8.16 → v8.15 → v8.14 → v8.13 → v8.12 → v8.11 → v8.10 → v8.9 → v8.8 → v8.7 → v8.6 → v8.5 → v8.4 → v8.3 → v8.2), как принято в keep-a-changelog.
**Файл схемы:** `schema.sql` (текущая версия — v8.22, консолидированная — разворачивает БД с нуля).
**Файл схемы:** `schema.sql` (текущая версия — v8.23, консолидированная — разворачивает БД с нуля).
**История записей:**
## v8.23 — 2026-05-17 — Редизайн «Сделки» (воронка статусов 14 → 5)
**Изменения:**
Воронка статусов 14 → 5: seed `lead_statuses` (`new`/`viewed`/`in_progress`/`won`/`lost`). Инкрементальная миграция `2026_05_17_120000_deals_funnel_14_to_5_statuses.php` ремапит `deals.status`, `tenant_status_overrides.status_slug`, `import_unknown_statuses.mapped_to_slug`. Редизайн страницы «Сделки», спека `docs/superpowers/specs/2026-05-17-deals-page-redesign-design.md`. **Структурных изменений нет** — только seed `lead_statuses` (14 → 5 строк); schema baseline без изменений (64 базовых таблиц / 12 партиций / 119 индексов / 40 RLS / 5 функций / 13 триггеров).
## v8.22 — 2026-05-17 — Plan 6 (C9 — Subject-level regions)
**Изменения:**
+8 -17
View File
@@ -1,6 +1,6 @@
-- =============================================================================
-- schema.sql — единая схема БД для SaaS-аналога crm.bp-gr.ru («Лидерра»)
-- Версия: v8.22 (17.05.2026 — Plan 6 (C9): projects.regions INT[] subject-level filtering + GIN-индекс idx_projects_regions)
-- Версия: v8.23 (17.05.2026 — Редизайн «Сделки»: seed lead_statuses 14→5 (new/viewed/in_progress/won/lost))
-- Метрики: 64 базовые таблицы (62 regular + 2 partitioned parents: deals + supplier_lead_costs) + 12 партиций / 119 индексов / 40 RLS-политик / 5 функций / 13 триггеров
-- Базовая версия: v8.20 (11.05.2026 — Plan 5 frontend projects UI: projects.archived_at TIMESTAMPTZ NULL для soft archive flow; tenants.limits JSONB NOT NULL DEFAULT '{}' для per-tenant project/user лимитов)
-- Базовая версия: v8.19 (11.05.2026 — Plan 4 billing+csv+admin: tenants.delivered_in_month, lead_charges.charge_source + CHECK, supplier_leads.recovered_from_csv_at, supplier_csv_reconcile_log)
@@ -316,7 +316,7 @@ CREATE TABLE tariff_plans (
-- -----------------------------------------------------------------------------
-- lead_statuses — справочник статусов воронки (раздел 7.3, 8.1)
-- 14 статусов: 6 системных + 8 настраиваемых
-- 5 статусов воронки (все системные)
-- -----------------------------------------------------------------------------
CREATE TABLE lead_statuses (
slug VARCHAR(50) PRIMARY KEY,
@@ -2574,22 +2574,13 @@ CREATE INDEX idx_admin_audit_pending ON saas_admin_audit_log(approved_at) WHERE
-- 11. ЗАПОЛНЕНИЕ СПРАВОЧНИКОВ
-- =============================================================================
-- 14 статусов воронки (раздел 7.3, 8.1)
-- 5 статусов воронки (редизайн «Сделки» 2026-05-17 — было 14)
INSERT INTO lead_statuses (slug, name_ru, is_system, sort_order, color_hex) VALUES
('new', 'Новые', TRUE, 1, '#3B82F6'),
('viewed', 'Просмотрено', TRUE, 2, '#8B5CF6'),
('worked', 'Проработан', TRUE, 3, '#06B6D4'),
('base', 'База', FALSE, 4, '#64748B'),
('missed', 'Недозвон', FALSE, 5, '#F59E0B'),
('negotiations', 'Переговоры', FALSE, 6, '#EAB308'),
('waiting_payment', 'Ожидаем оплаты', FALSE, 7, '#A78BFA'),
('partnership', 'Партнерка', FALSE, 8, '#EC4899'),
('paid', 'Оплачено', TRUE, 9, '#10B981'),
('closed', 'Закрыто и не реализовано', TRUE, 10, '#6B7280'),
('test_drive', 'Тест драйв', FALSE,11, '#14B8A6'),
('hot', 'Горячий', FALSE,12, '#EF4444'),
('replacement', 'На замену', FALSE,13, '#F97316'),
('final_missed', 'Конечный недозвон', TRUE, 14, '#1F2937');
('new', 'Новая сделка', TRUE, 1, '#3B82F6'),
('viewed', 'Просмотрено', TRUE, 2, '#8B5CF6'),
('in_progress', 'В работе', TRUE, 3, '#06B6D4'),
('won', 'Сделка', TRUE, 4, '#10B981'),
('lost', 'Не реализовано', TRUE, 5, '#6B7280');
-- НОВОЕ в v8.2: каталог поставщиков B1/B2/B3