docs: План v2.x - Инициативная группа и управление вопросами
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
8152050306
commit
32f6ca8d5d
1 changed files with 321 additions and 0 deletions
321
ПЛАН_V2_ИНИЦИАТИВНАЯ_ГРУППА.md
Normal file
321
ПЛАН_V2_ИНИЦИАТИВНАЯ_ГРУППА.md
Normal 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`
|
||||
|
||||
---
|
||||
|
||||
**ГОТОВ К РЕАЛИЗАЦИИ! ЖДУ УКАЗАНИЙ!** 🚀
|
||||
Loading…
Reference in a new issue