Импорт PRINZIP CRM SQLite (49 MB, 102K заявок) для conversion-аналитики #14

Closed
opened 2026-04-27 15:38:30 +00:00 by lekss361 · 1 comment
lekss361 commented 2026-04-27 15:38:30 +00:00 (Migrated from github.com)

Антон предоставил доступ к analytics.prinzipevent.ru с SQLite-дампом (49 MB).

Что внутри

  • 102K заявок (leads)
  • 9K сделок (deals)
  • Revenue 39.9 млрд ₽ за 8 лет
  • Conversion peak 12.81% в 2023, обвал до 5.4% в 2025

Цель

  • Импорт в новые таблицы prinzip_leads / prinzip_deals
  • Conversion-аналитика: source → leads → deals waterfall
  • На /analytics/prinzip добавить блок «Воронка PRINZIP» (CRM funnel)
  • Сравнить лиды по ЖК с sale_graph агрегатами из DOM.РФ

Зависимости

  • Доступ к analytics.prinzipevent.ru подтверждён (см. graph entity Schema_Open_TODOs_Apr27 TODO #2)
  • Существующая инфра скрапера переиспользуется только если CRM отдаёт через web (вряд ли — скорее всего разовый импорт SQLite)
Антон предоставил доступ к analytics.prinzipevent.ru с SQLite-дампом (49 MB). ## Что внутри - 102K заявок (leads) - 9K сделок (deals) - Revenue 39.9 млрд ₽ за 8 лет - Conversion peak 12.81% в 2023, обвал до 5.4% в 2025 ## Цель - Импорт в новые таблицы prinzip_leads / prinzip_deals - Conversion-аналитика: source → leads → deals waterfall - На /analytics/prinzip добавить блок «Воронка PRINZIP» (CRM funnel) - Сравнить лиды по ЖК с sale_graph агрегатами из DOM.РФ ## Зависимости - Доступ к analytics.prinzipevent.ru подтверждён (см. graph entity Schema_Open_TODOs_Apr27 TODO #2) - Существующая инфра скрапера переиспользуется только если CRM отдаёт через web (вряд ли — скорее всего разовый импорт SQLite)
lekss361 commented 2026-04-27 16:29:51 +00:00 (Migrated from github.com)

Pipeline готов, ждёт SQLite-файла.

Schema: data/sql/52_schema_prinzip_crm.sql — таблицы prinzip_leads/prinzip_deals + 2 materialized views (funnel_monthly, funnel_by_object). Применена в прод-БД.
Import: data/sql/52_import_prinzip_crm.py — генератор field-mapping через --inspect-only (вторая попытка покажет реальные колонки из SQLite). Hashing PII (phone SHA256, email MD5).

Backend:

  • GET /api/v1/analytics/prinzip/funnel/monthly?months=
  • GET /api/v1/analytics/prinzip/funnel/by-source?months=
  • GET /api/v1/analytics/prinzip/funnel/by-object

Frontend на /analytics/prinzip — два чарта: PrinzipFunnelSankey (leads → engaged → converted by source) + PrinzipFunnelMonthly (bars + conv % line).

Сейчас БД пустая — после импорта все компоненты сами заработают.

Запуск:

# 1. Скачать SQLite (49 МБ) с analytics.prinzipevent.ru → data/raw/prinzip_crm.sqlite
# 2. Discover schema:
python data/sql/52_import_prinzip_crm.py --inspect-only
# 3. Поправить LEAD_FIELD_MAP / DEAL_FIELD_MAP под реальные имена колонок
# 4. Импорт:
DATABASE_URL=postgresql+psycopg://gendesign:...@127.0.0.1:15432/gendesign   python data/sql/52_import_prinzip_crm.py
Pipeline готов, ждёт SQLite-файла. Schema: data/sql/52_schema_prinzip_crm.sql — таблицы prinzip_leads/prinzip_deals + 2 materialized views (funnel_monthly, funnel_by_object). Применена в прод-БД. Import: data/sql/52_import_prinzip_crm.py — генератор field-mapping через --inspect-only (вторая попытка покажет реальные колонки из SQLite). Hashing PII (phone SHA256, email MD5). Backend: - GET /api/v1/analytics/prinzip/funnel/monthly?months= - GET /api/v1/analytics/prinzip/funnel/by-source?months= - GET /api/v1/analytics/prinzip/funnel/by-object Frontend на /analytics/prinzip — два чарта: PrinzipFunnelSankey (leads → engaged → converted by source) + PrinzipFunnelMonthly (bars + conv % line). Сейчас БД пустая — после импорта все компоненты сами заработают. Запуск: ``` # 1. Скачать SQLite (49 МБ) с analytics.prinzipevent.ru → data/raw/prinzip_crm.sqlite # 2. Discover schema: python data/sql/52_import_prinzip_crm.py --inspect-only # 3. Поправить LEAD_FIELD_MAP / DEAL_FIELD_MAP под реальные имена колонок # 4. Импорт: DATABASE_URL=postgresql+psycopg://gendesign:...@127.0.0.1:15432/gendesign python data/sql/52_import_prinzip_crm.py ```
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#14
No description provided.