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

14 KiB
Raw Permalink Blame History

📋 План развития 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 дня)

  • Страница вопросов
  • Фильтры и редактирование
  • Дашборд

📝 ЗАМЕТКИ

Важные решения:

  1. ИГ как отдельная таблица или поле в users?

    • Решил: И то и то — отдельная таблица для ролей + поле для быстрого доступа
  2. Кто может создавать вопросы?

    • Решил: Все жильцы, но модерация ИГ
  3. Сколько голосов для активации предложения?

    • Решил: Настраиваемо (по умолчанию 10% от жильцов)
  4. Удалять ли вопросы?

    • Решил: Нет, только статус resolved или rejected

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