domovoy_bot/ПЛАН_V2_ИНИЦИАТИВНАЯ_ГРУППА.md
2026-02-28 10:03:59 +00:00

321 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📋 План развития 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`
---
**ГОТОВ К РЕАЛИЗАЦИИ! ЖДУ УКАЗАНИЙ!** 🚀