docs: План v2.x - Инициативная группа и управление вопросами

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
Admin 2026-02-28 10:03:59 +00:00
parent 8152050306
commit 32f6ca8d5d

View file

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