# Архитектура автоматизации воронки развития ## Обзор Воронка развития должна автоматически управлять жизненным циклом потенциальных объектов от момента обнаружения до передачи в управление. ## Источники данных для воронки ### 1. Ручное добавление (реализовано) - Менеджер вручную добавляет объект через форму - Статус: `analysis` (по умолчанию) ### 2. Импорт из файлов (CSV/Excel) - Массовый импорт объектов из внешних источников - Парсинг адресов, характеристик, контактов - Автоматическое создание записей в воронке ### 3. Интеграция с внешними API - Парсинг публичных реестров (Росреестр, ГИС ЖКХ) - Мониторинг сайтов конкурентов - Интеграция с CRM системами ### 4. Автоматическое обнаружение - Анализ отзывов жильцов (модуль PR) - Выявление недовольства текущей УК - Мониторинг социальных сетей и форумов ## Автоматическое перемещение по стадиям ### Стадии воронки: 1. **analysis** (Анализ) - начальная стадия 2. **negotiation** (Переговоры) - активная работа с собственниками 3. **preparation** (Подготовка) - подготовка к ОСС 4. **voting** (Голосование) - идет ОСС 5. **transfer** (Передача) - объект передан в управление ### Правила автоматического перехода: #### 1. Analysis → Negotiation **Триггеры:** - Probability >= 30% (автоматически) - Создана маркетинговая активность для объекта - Проведена первая встреча с активистами **Условия:** - Минимум 3 контакта с собственниками - Наличие хотя бы 1 активиста #### 2. Negotiation → Preparation **Триггеры:** - Probability >= 60% - Собрано >= 5 активистов - Проведено >= 3 встреч **Условия:** - Технический аудит завершен - Подготовлен проект договора управления #### 3. Preparation → Voting **Триггеры:** - Создано ОСС для объекта (автоматически) - Probability >= 70% **Условия:** - ОСС создано и запланировано - Подготовлены все документы #### 4. Voting → Transfer **Триггеры:** - ОСС завершено успешно (quorum > 50%, решение "за") - Probability >= 90% **Условия:** - ОСС статус = 'completed' - Результат голосования положительный #### 5. Откат стадий **Negotiation → Analysis:** - Нет активности > 30 дней - Probability < 20% **Preparation → Negotiation:** - ОСС отменено - Probability < 50% ## Автоматический расчет probability ### Формула расчета: ``` probability = baseProbability + (activistsCount * 5) + (meetingsHeld * 3) + (adsDistributed / 10) + (auditScore * 0.2) - (daysInactive * 0.5) ``` Где: - `baseProbability` = 20% (для новых объектов) - `activistsCount` = количество активистов (макс 10) - `meetingsHeld` = количество встреч (макс 10) - `adsDistributed` = количество розданных листовок (макс 500) - `auditScore` = оценка технического аудита (0-100) - `daysInactive` = дней без активности (макс 60) ### Обновление probability: - При каждом изменении маркетинговых метрик - При завершении технического аудита - Ежедневно (cron job) для пересчета по времени ## События и триггеры ### 1. Создание ОСС ```sql -- При создании ОСС автоматически: -- 1. Обновить статус pipeline на 'voting' -- 2. Связать ОСС с pipeline объектом -- 3. Отправить уведомление менеджеру ``` ### 2. Завершение ОСС ```sql -- При завершении ОСС: -- 1. Если quorum > 50% и решение "за": -- - Обновить статус pipeline на 'transfer' -- - Создать запись в buildings (если еще нет) -- - Связать building_id с pipeline -- 2. Если ОСС провалено: -- - Обновить probability (-20%) -- - Вернуть статус на 'preparation' или 'negotiation' ``` ### 3. Завершение технического аудита ```sql -- При завершении аудита: -- 1. Обновить probability на основе wear_percent и projected_margin -- 2. Если wear_percent > 70%: -- - Уменьшить probability на 15% -- 3. Если projected_margin < 10%: -- - Уменьшить probability на 10% ``` ### 4. Обновление маркетинговых метрик ```sql -- При обновлении метрик: -- 1. Пересчитать probability -- 2. Проверить условия для перехода на следующую стадию -- 3. Автоматически перевести, если условия выполнены ``` ## Deadlines и напоминания ### Автоматические напоминания: - **7 дней в стадии** - напомнить менеджеру о необходимости действий - **30 дней без активности** - предупреждение о риске потери объекта - **Deadline ОСС** - напоминание за 3 дня до окончания - **Просроченные задачи** - ежедневные уведомления ## Интеграция с другими модулями ### Связь с модулями: 1. **ОСС модуль** - автоматическое создание ОСС при переходе в 'preparation' 2. **Аудит модуль** - автоматическое создание задачи на аудит при 'negotiation' 3. **Маркетинг модуль** - автоматическое создание активности при добавлении объекта 4. **Buildings модуль** - автоматическое создание здания при 'transfer' ## Реализация ### 1. Таблица для истории переходов ```sql CREATE TABLE development_pipeline_history ( id BIGSERIAL PRIMARY KEY, pipeline_id VARCHAR(50) REFERENCES development_pipeline(id) ON DELETE CASCADE, from_status VARCHAR(20), to_status VARCHAR(20), reason TEXT, triggered_by VARCHAR(50), -- 'auto' | 'manual' | user_id created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); ``` ### 2. Таблица для правил автоматизации ```sql CREATE TABLE development_automation_rules ( id BIGSERIAL PRIMARY KEY, rule_name VARCHAR(100) NOT NULL, from_status VARCHAR(20), to_status VARCHAR(20), conditions JSONB, -- условия для срабатывания enabled BOOLEAN DEFAULT TRUE, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); ``` ### 3. Cron задачи (Node.js) - Ежедневная проверка условий для автоматических переходов - Пересчет probability для всех объектов - Проверка deadlines и отправка уведомлений ### 4. Триггеры в БД - Автоматическое обновление статуса при создании ОСС - Автоматическое обновление при завершении ОСС - Логирование всех изменений статуса ## Примеры workflow ### Сценарий 1: Успешный объект 1. Объект добавлен вручную → `analysis` (probability: 20%) 2. Проведена встреча, найдены активисты → probability: 35% → `negotiation` 3. Проведено 3 встречи, 5 активистов → probability: 65% → `preparation` 4. Создан технический аудит → probability: 70% 5. Создано ОСС → автоматически `voting` 6. ОСС завершено успешно → автоматически `transfer` + создан building ### Сценарий 2: Потеря объекта 1. Объект в `negotiation` 45 дней без активности 2. Автоматическое снижение probability до 15% 3. Автоматический откат в `analysis` 4. Уведомление менеджеру о риске потери ### Сценарий 3: Импорт из файла 1. Загружен CSV с 50 объектами 2. Автоматическое создание записей в `analysis` 3. Автоматическое создание маркетинговых активностей 4. Распределение по менеджерам (round-robin или по районам)