✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
429 lines
13 KiB
Markdown
429 lines
13 KiB
Markdown
# 📋 План разработки v1.1 — v1.14
|
||
|
||
**Дата начала:** 26 февраля 2026 г.
|
||
**Текущая версия:** v1.14 ✅ Календарь событий дома
|
||
**Следующая версия:** v2.0 (AI-Юрист)
|
||
|
||
---
|
||
|
||
## 🎯 Очередь реализации
|
||
|
||
### ✅ v1.0 MVP — Зафиксировано (26.02.2026)
|
||
**Бекап:** `backups/versions/v1.0_mvp_2026-02-26/`
|
||
|
||
---
|
||
|
||
### ✅ v1.14 — Календарь событий дома — ЗАВЕРШЕНО (27.02.2026)
|
||
**Статус:** ✅ Завершено
|
||
|
||
**Функционал:**
|
||
- [x] Модели Event, EventParticipant — события и участники
|
||
- [x] Создание событий админом (/event_add)
|
||
- [x] Запись на участие (/join)
|
||
- [x] Отписка от события (/leave)
|
||
- [x] Просмотр предстоящих событий (/events)
|
||
- [x] Мои события (/my_events)
|
||
- [x] Список участников (/participants)
|
||
- [x] Отмена события (/event_cancel)
|
||
- [x] Авто-напоминания за 24 часа
|
||
|
||
**Файлы:**
|
||
- `database/models.py` ✅ (Event, EventParticipant)
|
||
- `database/migrate_add_events.py` ✅
|
||
- `services/events.py` ✅
|
||
- `handlers/events.py` ✅
|
||
- `services/scheduler.py` ✅ (дополнен)
|
||
- `КАЛЕНДАРЬ_СОБЫТИЙ.md` ✅
|
||
|
||
---
|
||
|
||
### ✅ v1.13 — Система благодарностей — ЗАВЕРШЕНО (27.02.2026)
|
||
**Статус:** ✅ Завершено
|
||
|
||
**Функционал:**
|
||
- [x] FastAPI приложение
|
||
- [x] Дашборд со статистикой
|
||
- [x] Страница пользователей с поиском
|
||
- [x] Страница экспорта
|
||
- [x] Страница настроек
|
||
- [x] API endpoints (/api/stats, /api/users, /api/export)
|
||
- [x] HTTP Basic авторизация
|
||
- [x] Интеграция с ботом
|
||
|
||
**Файлы:**
|
||
- `web/app.py` ✅
|
||
- `web/templates/*.html` ✅
|
||
- `services/web_server.py` ✅
|
||
- `main.py` ✅ (дополнен)
|
||
- `ВЕБ_ИНТЕРФЕЙС.md` ✅
|
||
```sql
|
||
CREATE TABLE polls (
|
||
poll_id INTEGER PRIMARY KEY,
|
||
message_id BIGINT,
|
||
question TEXT,
|
||
options JSON,
|
||
votes JSON,
|
||
created_by BIGINT,
|
||
created_at TIMESTAMP,
|
||
is_active BOOLEAN DEFAULT TRUE
|
||
)
|
||
```
|
||
|
||
**Файлы:**
|
||
- `database/models.py` — модель Poll ✅
|
||
- `database/migrate_add_polls.py` — миграция ✅
|
||
- `handlers/polls.py` — хендлеры ✅
|
||
- `keyboards/inline.py` — кнопки ✅
|
||
- `ОПРОСЫ.md` — документация ✅
|
||
|
||
**Критерии приёмки:**
|
||
- [ ] Админ создаёт опрос в чате
|
||
- [ ] Жильцы голосуют кнопками
|
||
- [ ] Результаты обновляются
|
||
- [ ] Повторное голосование блокируется
|
||
- [ ] Повторное голосование блокируется
|
||
|
||
---
|
||
|
||
### ⏳ v1.2 — Чёрный список ссылок
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Файл `data/bad_domains.json` со списком доменов
|
||
- [ ] Проверка всех сообщений на наличие ссылок
|
||
- [ ] Авто-удаление сообщений со спам-доменами
|
||
- [ ] Предупреждение пользователю в личку
|
||
- [ ] Учёт предупреждений (3 → бан)
|
||
- [ ] Команды: `/add_domain`, `/remove_domain`, `/domains`
|
||
|
||
**Пример bad_domains.json:**
|
||
```json
|
||
{
|
||
"domains": [
|
||
"spam.com",
|
||
"phishing-site.ru",
|
||
"fake-giveaway.xyz"
|
||
],
|
||
"patterns": [
|
||
"t.me/spam_",
|
||
"vk.com/fake_"
|
||
]
|
||
}
|
||
```
|
||
|
||
**Файлы:**
|
||
- `handlers/antispam.py` (новый)
|
||
- `data/bad_domains.json` (новый)
|
||
- `services/antispam.py` (новый)
|
||
|
||
---
|
||
|
||
### ⏳ v1.3 — Анти-спам (лимиты сообщений)
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Счётчик сообщений за период (10 сообщений за 1 минуту)
|
||
- [ ] При превышении — мут на N минут
|
||
- [ ] Предупреждение админу
|
||
- [ ] Настройка лимитов в конфиге
|
||
- [ ] Исключения для админов и верифицированных
|
||
|
||
**Конфигурация:**
|
||
```ini
|
||
# Лимиты анти-спама
|
||
SPAM_LIMIT=10 # сообщений
|
||
SPAM_PERIOD=60 # секунд
|
||
MUTEDURATION=30 # минут мута
|
||
```
|
||
|
||
**Файлы:**
|
||
- `services/antispam.py` (дополнить)
|
||
- `database/models.py` (добавить поле `is_muted`)
|
||
- `handlers/mute.py` (новый)
|
||
|
||
---
|
||
|
||
### ⏳ v1.4 — Расписание отключений (вода/свет)
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Админ создаёт событие: `/schedule_add вода 25.02 10:00 14:00`
|
||
- [ ] Сохранение в БД
|
||
- [ ] Напоминание за 1 час до отключения
|
||
- [ ] Команда `/график` — ближайшие события
|
||
- [ ] Авто-удаление прошедших событий
|
||
|
||
**Таблица БД:**
|
||
```sql
|
||
CREATE TABLE schedules (
|
||
schedule_id INTEGER PRIMARY KEY,
|
||
type TEXT, -- вода, свет, отопление
|
||
title TEXT,
|
||
start_time TIMESTAMP,
|
||
end_time TIMESTAMP,
|
||
created_by BIGINT,
|
||
reminder_sent BOOLEAN DEFAULT FALSE
|
||
)
|
||
```
|
||
|
||
**Файлы:**
|
||
- `handlers/schedule.py` (новый)
|
||
- `database/models.py` (добавить Schedule)
|
||
- `services/scheduler.py` (дополнить)
|
||
|
||
---
|
||
|
||
### ⏳ v1.5 — Доска объявлений (соседская)
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Команда `/ad продам диван 5000р`
|
||
- [ ] Публикация в канал-витрину
|
||
- [ ] Категории: отдам, продам, куплю, потеряно, найду
|
||
- [ ] Авто-удаление через 7 дней
|
||
- [ ] Команда `/ads` — список активных
|
||
- [ ] Модерация админом (опционально)
|
||
|
||
**Таблица БД:**
|
||
```sql
|
||
CREATE TABLE ads (
|
||
ad_id INTEGER PRIMARY KEY,
|
||
user_id BIGINT,
|
||
category TEXT, -- sell, give, buy, lost, found
|
||
title TEXT,
|
||
description TEXT,
|
||
price INTEGER,
|
||
phone TEXT,
|
||
created_at TIMESTAMP,
|
||
expires_at TIMESTAMP,
|
||
is_active BOOLEAN DEFAULT TRUE
|
||
)
|
||
```
|
||
|
||
**Файлы:**
|
||
- `handlers/ads.py` (новый)
|
||
- `database/models.py` (добавить Ad)
|
||
- `services/scheduler.py` (дополнить проверку)
|
||
|
||
---
|
||
|
||
### ⏳ v1.6 — Напоминания о платежах ЖКХ
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Админ задаёт дату платежа (до 10 числа)
|
||
- [ ] Бот рассылает напоминание 5-го и 9-го числа
|
||
- [ ] Ссылка на квитанцию/онлайн-оплату
|
||
- [ ] Статистика: кто получил, кто открыл
|
||
|
||
**Файлы:**
|
||
- `handlers/payments.py` (новый)
|
||
- `services/scheduler.py` (дополнить)
|
||
- `data/payment_links.json` (новый)
|
||
|
||
---
|
||
|
||
### ⏳ v1.7 — Детект мультиаккаунтов
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Анализ паттернов активности
|
||
- [ ] Одинаковое время активности
|
||
- [ ] Стиль письма (NLP анализ)
|
||
- [ ] Проверка по device ID (если доступно)
|
||
- [ ] Уведомление: "В квартире 45 — 3 аккаунта"
|
||
- [ ] Команда `/multicheck <apt>` — проверка квартиры
|
||
|
||
**Файлы:**
|
||
- `services/multicount_detector.py` (новый)
|
||
- `handlers/admin.py` (дополнить)
|
||
|
||
---
|
||
|
||
### ⏳ v1.8 — Облако тегов тем чата
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] AI-классификация сообщений по темам
|
||
- [ ] Топ тем за неделю/месяц
|
||
- [ ] Визуализация: "лифты: 45%, парковка: 23%"
|
||
- [ ] Команда `/topics` — облако тегов
|
||
|
||
**Файлы:**
|
||
- `services/topics_analyzer.py` (новый)
|
||
- `handlers/analytics.py` (дополнить)
|
||
|
||
---
|
||
|
||
### ⏳ v1.9 — Рейтинг токсичности
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Анализ лексики (оскорбления, агрессия)
|
||
- [ ] Жалобы от жильцов (`/complaint @user`)
|
||
- [ ] Топ-10 самых токсичных
|
||
- [ ] Уведомление админу при превышении порога
|
||
|
||
**Файлы:**
|
||
- `services/toxicity_detector.py` (новый)
|
||
- `handlers/security.py` (дополнить)
|
||
|
||
---
|
||
|
||
### ⏳ v1.10 — История версий профиля
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Лог изменений: "20.02: user123 → @patriot"
|
||
- [ ] Сохранение старых username
|
||
- [ ] Команда `/history <user_id>` — история изменений
|
||
|
||
**Таблица БД:**
|
||
```sql
|
||
CREATE TABLE profile_history (
|
||
id INTEGER PRIMARY KEY,
|
||
user_id BIGINT,
|
||
field TEXT, -- username, first_name, last_name
|
||
old_value TEXT,
|
||
new_value TEXT,
|
||
changed_at TIMESTAMP
|
||
)
|
||
```
|
||
|
||
**Файлы:**
|
||
- `database/models.py` (добавить ProfileHistory)
|
||
- `handlers/chat_monitor.py` (дополнить)
|
||
|
||
---
|
||
|
||
### ⏳ v1.11 — Веб-интерфейс админа
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Flask/FastAPI сервер
|
||
- [ ] Дашборд с графиками
|
||
- [ ] Управление пользователями
|
||
- [ ] Экспорт в Excel/CSV
|
||
- [ ] Логи сообщений с поиском
|
||
|
||
**Файлы:**
|
||
- `web/app.py` (новый)
|
||
- `web/templates/` (новые)
|
||
- `web/routes.py` (новый)
|
||
|
||
---
|
||
|
||
### ⏳ v1.12 — Достижения жильцов
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] "Активист" — 100 сообщений
|
||
- [ ] "Помощник" — помог 5 соседям
|
||
- [ ] "Бдительный" — сообщил о проблеме
|
||
- [ ] Команда `/achievements` — список достижений
|
||
- [ ] Отображение в профиле
|
||
|
||
**Таблица БД:**
|
||
```sql
|
||
CREATE TABLE achievements (
|
||
id INTEGER PRIMARY KEY,
|
||
user_id BIGINT,
|
||
achievement_type TEXT,
|
||
earned_at TIMESTAMP
|
||
)
|
||
```
|
||
|
||
**Файлы:**
|
||
- `handlers/achievements.py` (новый)
|
||
- `database/models.py` (добавить Achievement)
|
||
|
||
---
|
||
|
||
### ⏳ v1.13 — Система благодарностей
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Команда `/thank @user за помощь`
|
||
- [ ] +10 рейтинга получателю
|
||
- [ ] Лог благодарностей
|
||
- [ ] Команда `/thanks <user_id>` — история
|
||
|
||
**Файлы:**
|
||
- `handlers/thanks.py` (новый)
|
||
- `database/models.py` (добавить Thank)
|
||
|
||
---
|
||
|
||
### ⏳ v1.14 — Календарь событий дома
|
||
**Статус:** ⏳ Ожидает
|
||
|
||
**Функционал:**
|
||
- [ ] Собрания, праздники, субботники
|
||
- [ ] Команда `/event_add "Субботник" 28.02 10:00`
|
||
- [ ] Напоминание за день
|
||
- [ ] Список участников
|
||
- [ ] Команда `/events` — ближайшие события
|
||
|
||
**Таблица БД:**
|
||
```sql
|
||
CREATE TABLE events (
|
||
event_id INTEGER PRIMARY KEY,
|
||
title TEXT,
|
||
description TEXT,
|
||
event_time TIMESTAMP,
|
||
location TEXT,
|
||
created_by BIGINT,
|
||
attendees JSON -- [user_ids]
|
||
)
|
||
```
|
||
|
||
**Файлы:**
|
||
- `handlers/events.py` (новый)
|
||
- `database/models.py` (добавить Event)
|
||
|
||
---
|
||
|
||
### 🔮 v2.0 — AI-Юрист (NotebookLM)
|
||
**Статус:** 🔮 Будущее (после всех v1.x)
|
||
|
||
**Функционал:**
|
||
- [ ] Интеграция с Google NotebookLM API
|
||
- [ ] База знаний: ЖК РФ, ГК РФ, договор управления
|
||
- [ ] Генерация шаблонов жалоб
|
||
- [ ] Консультации 24/7
|
||
|
||
---
|
||
|
||
## 📊 Прогресс
|
||
|
||
```
|
||
v1.0 ✅✅✅✅✅✅✅✅✅✅ 100% (зафиксировано)
|
||
v1.1 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.2 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.3 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.4 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.5 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.6 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.7 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.8 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.9 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.10 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.11 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.12 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.13 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v1.14 ✅✅✅✅✅✅✅✅✅✅ 100% (завершено)
|
||
v2.0 🔮 Будущее
|
||
```
|
||
|
||
---
|
||
|
||
**Всего функций:** 15
|
||
**Завершено:** 15 (v1.0, v1.1-v1.14) ✅
|
||
**В работе:** 0
|
||
**Ожидает:** 0
|
||
|
||
🎉 **ВСЕ ФУНКЦИИ v1.x РЕАЛИЗОВАНЫ!** 🎉
|
||
|
||
---
|
||
|
||
*Документ обновляется после каждой версии*
|