# 📋 План развития v2.x — Инициативная группа и Управление вопросами

**Дата:** 27 февраля 2026 г.
**Статус:** ⏳ Ожидает реализации

---

## 🎯 Концепция

**Инициативная группа (ИГ)** — активные жильцы, которые управляют домом. Им нужны:
- Отдельная рассылка
- Возможность создавать вопросы/предложения
- Статусы по вопросам (в работе, на будущем, решено)
- Прямое взаимодействие через Telegram

---

## 📊 НОВАЯ ФУНКЦИОНАЛЬНОСТЬ (v2.x)

### 1️⃣ Инициативная группа как сущность

| № | Функция | Описание | Приоритет |
|---|---------|----------|-----------|
| 1.1 | Модель `InitiativeGroup` в БД | Таблица с участниками ИГ | 🔴 Высокий |
| 1.2 | Поле `is_initiative` в `users` | Флаг участника ИГ | 🔴 Высокий |
| 1.3 | Команда `/ig_add <user_id>` | Добавить в ИГ (админ) | 🔴 Высокий |
| 1.4 | Команда `/ig_remove <user_id>` | Удалить из ИГ (админ) | 🔴 Высокий |
| 1.5 | Команда `/ig_list` | Список участников ИГ | 🔴 Высокий |
| 1.6 | Команда `/ig_only` | Режим рассылки только ИГ | 🟡 Средний |

---

### 2️⃣ Рассылки для инициативной группы

| № | Функция | Описание | Приоритет |
|---|---------|----------|-----------|
| 2.1 | Команда `/ig_broadcast` | Рассылка только ИГ | 🔴 Высокий |
| 2.2 | Команда `/broadcast_select` | Выбор аудитории (все/ИГ/квартира) | 🔴 Высокий |
| 2.3 | Шаблон "Только ИГ" | Префикс в сообщениях | 🟡 Средний |
| 2.4 | Статистика прочтения | Кто прочитал в ИГ | 🟢 Низкий |

---

### 3️⃣ Управление вопросами/предложениями

| № | Функция | Описание | Приоритет |
|---|---------|----------|-----------|
| 3.1 | Модель `Issue` в БД | Вопросы/предложения жильцов | 🔴 Высокий |
| 3.2 | Статусы вопросов | `new`, `in_work`, `on_hold`, `resolved`, `rejected` | 🔴 Высокий |
| 3.3 | Команда `/issue_create` | Создать вопрос (ИГ) | 🔴 Высокий |
| 3.4 | Команда `/issue_list` | Список вопросов | 🔴 Высокий |
| 3.5 | Команда `/issue_status <ID> <статус>` | Изменить статус (ИГ) | 🔴 Высокий |
| 3.6 | Команда `/issue_view <ID>` | Просмотр деталей | 🔴 Высокий |
| 3.7 | Команда `/issue_my` | Мои вопросы (жильцы) | 🟡 Средний |
| 3.8 | Приоритеты вопросов | `low`, `medium`, `high`, `critical` | 🟡 Средний |
| 3.9 | Назначение ответственного | Кто работает над вопросом | 🟡 Средний |
| 3.10 | Комментарии к вопросам | Обсуждение внутри вопроса | 🟢 Низкий |

---

### 4️⃣ Предложения от жильцов (через Telegram)

| № | Функция | Описание | Приоритет |
|---|---------|----------|-----------|
| 4.1 | Команда `/propose` | Создать предложение (все) | 🔴 Высокий |
| 4.2 | Модерация предложений | ИГ подтверждает/отклоняет | 🔴 Высокий |
| 4.3 | Команда `/propose_list` | Список предложений | 🟡 Средний |
| 4.4 | Голосование за предложения | Жильцы голосуют за важные | 🟡 Средний |
| 4.5 | Авто-создание вопроса | Если предложение набрало N голосов | 🟢 Низкий |

---

### 5️⃣ Статусы и уведомления

| № | Функция | Описание | Приоритет |
|---|---------|----------|-----------|
| 5.1 | Уведомление о новом вопросе | ИГ получает уведомление | 🔴 Высокий |
| 5.2 | Уведомление о смене статуса | Автор вопроса получает | 🔴 Высокий |
| 5.3 | Уведомление о комментарии | Участникам вопроса | 🟡 Средний |
| 5.4 | Еженедельный отчёт ИГ | Какие вопросы в работе | 🟢 Низкий |

---

### 6️⃣ Веб-интерфейс для ИГ (расширение)

| № | Функция | Описание | Приоритет |
|---|---------|----------|-----------|
| 6.1 | Страница "Вопросы" | Список всех вопросов | 🔴 Высокий |
| 6.2 | Фильтры по статусам | new/in_work/resolved | 🔴 Высокий |
| 6.3 | Редактирование вопроса | Изменить статус, ответственного | 🔴 Высокий |
| 6.4 | Дашборд ИГ | Статистика по вопросам | 🟡 Средний |
| 6.5 | Экспорт вопросов | CSV/Excel отчёт | 🟢 Низкий |

---

## 🗄️ БАЗА ДАННЫХ (новые таблицы)

### Таблица `initiative_group`
```sql
CREATE TABLE initiative_group (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id BIGINT NOT NULL UNIQUE,
    role TEXT DEFAULT 'member',  -- admin, member
    joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    is_active BOOLEAN DEFAULT 1,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
)
```

### Таблица `issues`
```sql
CREATE TABLE issues (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    description TEXT,
    status TEXT DEFAULT 'new',  -- new, in_work, on_hold, resolved, rejected
    priority TEXT DEFAULT 'medium',  -- low, medium, high, critical
    created_by BIGINT NOT NULL,
    assigned_to BIGINT,  -- кто работает
    apartment VARCHAR(10),  -- квартира заявителя
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP,
    resolved_at TIMESTAMP,
    FOREIGN KEY (created_by) REFERENCES users(user_id),
    FOREIGN KEY (assigned_to) REFERENCES users(user_id)
)
```

### Таблица `issue_comments`
```sql
CREATE TABLE issue_comments (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    issue_id INTEGER NOT NULL,
    user_id BIGINT NOT NULL,
    message TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (issue_id) REFERENCES issues(id),
    FOREIGN KEY (user_id) REFERENCES users(user_id)
)
```

### Таблица `proposals`
```sql
CREATE TABLE proposals (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    description TEXT,
    user_id BIGINT NOT NULL,
    votes_count INTEGER DEFAULT 0,
    status TEXT DEFAULT 'pending',  -- pending, approved, rejected
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
)
```

### Таблица `proposal_votes`
```sql
CREATE TABLE proposal_votes (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    proposal_id INTEGER NOT NULL,
    user_id BIGINT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(proposal_id, user_id),
    FOREIGN KEY (proposal_id) REFERENCES proposals(id),
    FOREIGN KEY (user_id) REFERENCES users(user_id)
)
```

---

## 📱 НОВЫЕ КОМАНДЫ (список)

### Для админов / ИГ:
```
/ig_add <user_id>          — Добавить в ИГ
/ig_remove <user_id>       — Удалить из ИГ
/ig_list                   — Список ИГ
/ig_broadcast              — Рассылка только ИГ
/broadcast_select          — Выбор аудитории

/issue_create              — Создать вопрос
/issue_list                — Список вопросов
/issue_status <ID> <статус>— Изменить статус
/issue_view <ID>           — Просмотр деталей
/issue_assign <ID> <user>  — Назначить ответственного

/proposal_approve <ID>     — Одобрить предложение
/proposal_reject <ID>      — Отклонить предложение
```

### Для всех жильцов:
```
/propose                   — Создать предложение
/propose_list              — Список предложений
/issue_my                  — Мои вопросы
/vote <ID>                 — Проголосовать за предложение
```

---

## 🎯 СЦЕНАРИИ ИСПОЛЬЗОВАНИЯ

### Сценарий 1: Добавление в ИГ
```
Админ: /ig_add 123456789
Бот: ✅ Пользователь Иван Иванов добавлен в инициативную группу
```

### Сценарий 2: Рассылка только ИГ
```
Админ: /ig_broadcast
Бот: Отправьте сообщение для инициативной группы:
Админ: Срочно! Завтра собрание в 19:00
Бот: ✅ Рассылка отправлена 5 участникам ИГ
```

### Сценарий 3: Создание вопроса
```
ИГ: /issue_create
Бот: Введите название вопроса:
ИГ: Протечка в подъезде №2
Бот: Введите описание:
ИГ: Течёт крыша, нужна УК
Бот: ✅ Вопрос создан #42
   Статус: new
   Ответственный: не назначен
```

### Сценарий 4: Изменение статуса
```
ИГ: /issue_status 42 in_work
Бот: ✅ Вопрос #42 переведён в статус "В работе"
   Автор уведомлён
```

### Сценарий 5: Предложение от жильца
```
Жилец: /propose
Бот: Введите ваше предложение:
Жилец: Установить видеонаблюдение во дворе
Бот: ✅ Предложение создано #15
   Для активации нужно 10 голосов
   Текущих: 0

Другой жилец: /vote 15
Бот: ✅ Вы проголосовали за предложение #15
   Голосов: 1/10
```

---

## 📊 ТАБЛИЦА ВСЕХ НОВЫХ ФУНКЦИЙ (итоговая)

| № | Функция | Версия | Статус | Приоритет |
|---|---------|--------|--------|-----------|
| 1.1 | Модель `InitiativeGroup` в БД | v2.1 | ⏳ Ожидает | 🔴 |
| 1.2 | Поле `is_initiative` в `users` | v2.1 | ⏳ Ожидает | 🔴 |
| 1.3 | Команда `/ig_add` | v2.1 | ⏳ Ожидает | 🔴 |
| 1.4 | Команда `/ig_remove` | v2.1 | ⏳ Ожидает | 🔴 |
| 1.5 | Команда `/ig_list` | v2.1 | ⏳ Ожидает | 🔴 |
| 2.1 | Команда `/ig_broadcast` | v2.1 | ⏳ Ожидает | 🔴 |
| 2.2 | Команда `/broadcast_select` | v2.1 | ⏳ Ожидает | 🔴 |
| 3.1 | Модель `Issue` в БД | v2.2 | ⏳ Ожидает | 🔴 |
| 3.2 | Статусы вопросов | v2.2 | ⏳ Ожидает | 🔴 |
| 3.3 | Команда `/issue_create` | v2.2 | ⏳ Ожидает | 🔴 |
| 3.4 | Команда `/issue_list` | v2.2 | ⏳ Ожидает | 🔴 |
| 3.5 | Команда `/issue_status` | v2.2 | ⏳ Ожидает | 🔴 |
| 3.6 | Команда `/issue_view` | v2.2 | ⏳ Ожидает | 🔴 |
| 4.1 | Команда `/propose` | v2.3 | ⏳ Ожидает | 🔴 |
| 4.2 | Модерация предложений | v2.3 | ⏳ Ожидает | 🔴 |
| 4.3 | Команда `/propose_list` | v2.3 | ⏳ Ожидает | 🟡 |
| 4.4 | Голосование за предложения | v2.3 | ⏳ Ожидает | 🟡 |
| 5.1 | Уведомление о новом вопросе | v2.2 | ⏳ Ожидает | 🔴 |
| 5.2 | Уведомление о смене статуса | v2.2 | ⏳ Ожидает | 🔴 |
| 6.1 | Страница "Вопросы" (веб) | v2.4 | ⏳ Ожидает | 🔴 |
| 6.2 | Фильтры по статусам (веб) | v2.4 | ⏳ Ожидает | 🔴 |

---

## 🗺️ ДОРОЖНАЯ КАРТА

### v2.1 — Инициативная группа (1-2 дня)
- ✅ Модель в БД
- ✅ Команды `/ig_add`, `/ig_remove`, `/ig_list`
- ✅ Рассылка только ИГ

### v2.2 — Управление вопросами (2-3 дня)
- ✅ Модель `Issue` в БД
- ✅ Команды создания/просмотра/статусов
- ✅ Уведомления о сменах

### v2.3 — Предложения от жильцов (2 дня)
- ✅ Команда `/propose`
- ✅ Голосование
- ✅ Модерация ИГ

### v2.4 — Веб-интерфейс для ИГ (2-3 дня)
- ✅ Страница вопросов
- ✅ Фильтры и редактирование
- ✅ Дашборд

---

## 📝 ЗАМЕТКИ

### Важные решения:
1. **ИГ как отдельная таблица** или поле в `users`?
   - ✅ Решил: **И то и то** — отдельная таблица для ролей + поле для быстрого доступа

2. **Кто может создавать вопросы?**
   - ✅ Решил: **Все жильцы**, но модерация ИГ

3. **Сколько голосов для активации предложения?**
   - ✅ Решил: **Настраиваемо** (по умолчанию 10% от жильцов)

4. **Удалять ли вопросы?**
   - ✅ Решил: **Нет**, только статус `resolved` или `rejected`

---

**ГОТОВ К РЕАЛИЗАЦИИ! ЖДУ УКАЗАНИЙ!** 🚀
