14 KiB
14 KiB
📋 План развития 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
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
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
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
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
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 дня)
- ✅ Страница вопросов
- ✅ Фильтры и редактирование
- ✅ Дашборд
📝 ЗАМЕТКИ
Важные решения:
-
ИГ как отдельная таблица или поле в
users?- ✅ Решил: И то и то — отдельная таблица для ролей + поле для быстрого доступа
-
Кто может создавать вопросы?
- ✅ Решил: Все жильцы, но модерация ИГ
-
Сколько голосов для активации предложения?
- ✅ Решил: Настраиваемо (по умолчанию 10% от жильцов)
-
Удалять ли вопросы?
- ✅ Решил: Нет, только статус
resolvedилиrejected
- ✅ Решил: Нет, только статус
ГОТОВ К РЕАЛИЗАЦИИ! ЖДУ УКАЗАНИЙ! 🚀