225 lines
9.9 KiB
Markdown
225 lines
9.9 KiB
Markdown
|
|
# Архитектура автоматизации воронки развития
|
|||
|
|
|
|||
|
|
## Обзор
|
|||
|
|
Воронка развития должна автоматически управлять жизненным циклом потенциальных объектов от момента обнаружения до передачи в управление.
|
|||
|
|
|
|||
|
|
## Источники данных для воронки
|
|||
|
|
|
|||
|
|
### 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 или по районам)
|