✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
358 lines
16 KiB
Markdown
358 lines
16 KiB
Markdown
# 📦 Версии домового бота
|
||
|
||
**Проект:** Домовой Бот для чата многоквартирного дома
|
||
**Репозиторий:** `/home/matrixhasyou/domovoy_bot`
|
||
|
||
---
|
||
|
||
## 🎯 План развития (Roadmap 2.0)
|
||
|
||
### Функции для реализации (приоритетные):
|
||
|
||
| № | Функция | Статус | Версия | Дата |
|
||
|---|---------|--------|--------|------|
|
||
| 1 | **Опросы и голосования** | ✅ Реализовано | v1.1 | 26.02.2026 |
|
||
| 2 | **Чёрный список ссылок** | ✅ Реализовано | v1.2 | 26.02.2026 |
|
||
| 3 | **Анти-спам (лимиты сообщений)** | ✅ Реализовано | v1.3 | 26.02.2026 |
|
||
| 4 | **Расписание отключений (вода/свет)** | ✅ Реализовано | v1.4 | 26.02.2026 |
|
||
| 5 | **Доска объявлений (соседская)** | ✅ Реализовано | v1.5 | 26.02.2026 |
|
||
| 6 | **Напоминания о платежах ЖКХ** | ✅ Реализовано | v1.6 | 26.02.2026 |
|
||
| 7 | **Детект мультиаккаунтов** | ✅ Реализовано | v1.7 | 26.02.2026 |
|
||
| 8 | **Облако тегов тем чата** | ✅ Реализовано | v1.8 | 26.02.2026 |
|
||
| 9 | **Рейтинг токсичности** | ✅ Реализовано | v1.9 | 26.02.2026 |
|
||
| 10 | **История версий профиля** | ✅ Реализовано | v1.10 | 26.02.2026 |
|
||
| 11 | **Веб-интерфейс админа** | ✅ Реализовано | v1.11 | 27.02.2026 |
|
||
| 12 | **Достижения жильцов** | ✅ Реализовано | v1.12 | 27.02.2026 |
|
||
| 13 | **Система благодарностей** | ✅ Реализовано | v1.13 | 27.02.2026 |
|
||
| 14 | **Календарь событий дома** | ✅ Реализовано | v1.14 | 27.02.2026 |
|
||
| 15 | **AI-Юрист (NotebookLM)** | 🔮 Будущее | v2.0 | — |
|
||
|
||
---
|
||
|
||
## 📋 Текущая версия: v1.0 MVP
|
||
|
||
**Дата фиксации:** 26 февраля 2026 г.
|
||
**Статус:** ✅ Готов к эксплуатации
|
||
**Бекап:** `backups/versions/v1.0_mvp_2026-02-26/`
|
||
|
||
### ✅ Реализованный функционал v1.0:
|
||
|
||
#### 1. База данных и архитектура
|
||
- [x] SQLite + SQLAlchemy (асинхронный)
|
||
- [x] 6 таблиц: User, Message, Service, VerificationRequest, SpyLog, Announcement
|
||
- [x] Миграции БД
|
||
- [x] Автоматическое создание таблиц при старте
|
||
|
||
#### 2. Пользователи и верификация
|
||
- [x] Регистрация через `/start`
|
||
- [x] Верификация по номеру квартиры
|
||
- [x] Профиль с квартирой и телефоном
|
||
- [x] Управление телефоном (`/myphone`, `/add_phone`, `/edit_phone`, `/remove_phone`)
|
||
- [x] Несколько жильцов на квартиру (метка 🏠(N))
|
||
- [x] Команды `/apt`, `/apt_stats`, `/find`
|
||
|
||
#### 3. Рейтинг и уровни
|
||
- [x] +1 балл за каждое сообщение
|
||
- [x] Уровни: Новичок (0-99), Сосед (100-499), Активист (500-999), Лидер (1000+)
|
||
- [x] Команды: `/rating`, `/top`, `/rank`
|
||
- [x] Только для админов в личке
|
||
|
||
#### 4. Безопасность
|
||
- [x] Детект шпионов (Score 0-100, 8 факторов)
|
||
- [x] Анти-мат (3 предупреждения → бан)
|
||
- [x] Чёрный список слов (~50 слов)
|
||
- [x] Бан/разбан (`/ban`, `/unban`)
|
||
- [x] Отзыв верификации (`/unverify`)
|
||
- [x] Авто-удаление через 7 дней без верификации
|
||
- [x] Логирование подозрительных (`/log_spy`)
|
||
|
||
#### 5. Админ-панель
|
||
- [x] Только в личке (`/admin`)
|
||
- [x] Кнопки меню: Статистика, Шпионы, Пользователи, Рассылка, Рейтинг
|
||
- [x] Рассылка объявлений (чат + лички)
|
||
- [x] Статистика чата (`/stats`)
|
||
- [x] Экспорт JSON (`/export`)
|
||
|
||
#### 6. Телефоны и контакты
|
||
- [x] Экстренные службы (103, 101, 102, 104, 112)
|
||
- [x] УК и аварийные службы
|
||
- [x] Мастера (сантехники, электрики)
|
||
- [x] Участковый
|
||
- [x] Личные телефоны жильцов
|
||
|
||
#### 7. Планировщик задач (APScheduler)
|
||
- [x] Еженедельный экспорт JSON (воскресенье 03:00)
|
||
- [x] Ежедневная проверка шпионов (02:00)
|
||
- [x] Обновление активности (ежечасно)
|
||
|
||
#### 8. Мониторинг чата
|
||
- [x] Перехват всех сообщений
|
||
- [x] Подсчёт message_count
|
||
- [x] Обновление last_seen
|
||
- [x] Уведомления о новых участниках
|
||
|
||
#### 9. Инфраструктура
|
||
- [x] Прокси (socks5 через xray)
|
||
- [x] Логирование в `logs/bot.log`
|
||
- [x] Скрипты управления: `run.sh`, `start.sh`, `stop.sh`
|
||
- [x] Виртуальное окружение (venv)
|
||
|
||
---
|
||
|
||
## 📁 Структура проекта v1.0
|
||
|
||
```
|
||
domovoy_bot/
|
||
├── config.py # Конфигурация (токен, админы, прокси)
|
||
├── main.py # Точка входа
|
||
├── requirements.txt # Зависимости (8 пакетов)
|
||
├── .env # Переменные окружения
|
||
├── .env.example # Пример .env
|
||
├── VERSIONS.md # Этот файл
|
||
│
|
||
├── database/
|
||
│ ├── __init__.py
|
||
│ ├── db.py # Асинхронная сессия
|
||
│ ├── models.py # Модели (6 таблиц)
|
||
│ └── init_db.py # Инициализация БД
|
||
│
|
||
├── handlers/ # Роутеры aiogram (9 файлов)
|
||
│ ├── __init__.py
|
||
│ ├── admin.py # Админ-команды
|
||
│ ├── users.py # Пользовательские команды
|
||
│ ├── phones.py # Телефоны
|
||
│ ├── verification.py # Верификация
|
||
│ ├── chat_monitor.py # Мониторинг чата
|
||
│ ├── security.py # Безопасность
|
||
│ ├── apartments.py # Квартиры
|
||
│ └── antimat.py # Анти-мат
|
||
│
|
||
├── services/
|
||
│ ├── __init__.py
|
||
│ ├── spy_detector.py # Детект шпионов
|
||
│ ├── analytics.py # Аналитика и экспорт
|
||
│ └── scheduler.py # Планировщик
|
||
│
|
||
├── utils/
|
||
│ ├── __init__.py
|
||
│ ├── decorators.py # @admin_only
|
||
│ ├── formatters.py # Форматирование
|
||
│ └── validators.py # Валидация
|
||
│
|
||
├── keyboards/
|
||
│ ├── __init__.py
|
||
│ ├── inline.py # Inline-кнопки
|
||
│ ├── admin_menu.py # Админ-меню
|
||
│ └── reply.py # Reply-кнопки
|
||
│
|
||
├── data/
|
||
│ ├── phones.json # Телефоны служб
|
||
│ ├── bad_words.json # Чёрный список слов
|
||
│ └── spies_patterns.json # Паттерны шпионов
|
||
│
|
||
├── logs/ # Логи
|
||
├── exports/ # JSON экспорты
|
||
├── backups/
|
||
│ └── versions/ # Версионные бекапы
|
||
└── venv/ # Виртуальное окружение
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Метрики проекта v1.0
|
||
|
||
| Показатель | Значение |
|
||
|------------|----------|
|
||
| **Строк кода** | ~3500 |
|
||
| **Файлов Python** | 25+ |
|
||
| **Таблиц БД** | 6 |
|
||
| **Хендлеров** | 30+ |
|
||
| **Команд бота** | 25+ |
|
||
| **Зависимостей** | 8 основных |
|
||
|
||
---
|
||
|
||
## 🔄 История версий
|
||
|
||
### v1.5 — Доска объявлений — 26 февраля 2026
|
||
|
||
**Статус:** ✅ Реализовано
|
||
**Бекап:** `backups/versions/v1.5_ads_2026-02-26/`
|
||
|
||
**Реализовано:**
|
||
- Модель `Ad` — объявления жильцов
|
||
- 6 категорий (продам, куплю, отдам, потеряно, нашлось, услуга)
|
||
- Пошаговое создание объявлений (/ad)
|
||
- Просмотр всех объявлений (/ads)
|
||
- Удаление своих объявлений (/ad_del)
|
||
- Авто-удаление через 7 дней
|
||
- Модерация для админов
|
||
- Только для верифицированных
|
||
|
||
**Файлы:**
|
||
- `database/models.py` — модель Ad
|
||
- `database/migrate_add_ads.py` — миграция
|
||
- `handlers/ads.py` — хендлеры
|
||
- `keyboards/inline.py` — клавиатуры
|
||
- `services/scheduler.py` — авто-удаление
|
||
- `ДОСКА_ОБЪЯВЛЕНИЙ.md` — документация
|
||
|
||
**Изменения:**
|
||
- 11 таблиц БД (было 10)
|
||
- +1 хендлер (ads_router)
|
||
- +4 команды
|
||
|
||
---
|
||
|
||
### v1.4 — Расписание отключений — 26 февраля 2026
|
||
|
||
**Статус:** ✅ Реализовано
|
||
**Бекап:** `backups/versions/v1.4_schedule_2026-02-26/`
|
||
|
||
**Реализовано:**
|
||
- Модель `Schedule` — события отключений
|
||
- 6 типов отключений (вода, свет, отопление, газ, лифт, общее)
|
||
- Пошаговое создание событий (/schedule_add)
|
||
- Просмотр расписания (/график, /schedule)
|
||
- Удаление событий (/schedule_del)
|
||
- Авто-напоминания за 1 час до начала
|
||
- Inline-меню для выбора типа
|
||
|
||
**Файлы:**
|
||
- `database/models.py` — модель Schedule
|
||
- `database/migrate_add_schedules.py` — миграция
|
||
- `handlers/schedule.py` — хендлеры
|
||
- `keyboards/inline.py` — клавиатуры
|
||
- `services/scheduler.py` — напоминания
|
||
- `РАСПИСАНИЕ_ОТКЛЮЧЕНИЙ.md` — документация
|
||
|
||
**Изменения:**
|
||
- 10 таблиц БД (было 9)
|
||
- +1 хендлер (schedule_router)
|
||
- +4 команды
|
||
|
||
---
|
||
|
||
### v1.3 — Анти-спам лимиты — 26 февраля 2026
|
||
|
||
**Статус:** ✅ Реализовано
|
||
**Бекап:** `backups/versions/v1.3_rate_limits_2026-02-26/`
|
||
|
||
**Реализовано:**
|
||
- Сервис `RateLimiter` — подсчёт сообщений за период
|
||
- Авто-удаление сообщений при превышении лимита (10 за 60 сек)
|
||
- Система предупреждений (2 → мут на 30 мин)
|
||
- Автоматическая проверка истечения мута
|
||
- Команды: `/mute`, `/unmute`, `/check_mute`, `/muted`
|
||
- Команды: `/rate_stats`, `/user_rate`, `/clear_rate_warnings`
|
||
|
||
**Файлы:**
|
||
- `services/rate_limiter.py` — сервис лимитов
|
||
- `handlers/ratelimit.py` — хендлеры
|
||
- `handlers/chat_monitor.py` — проверка лимитов
|
||
- `database/models.py` — модель MessageRate
|
||
- `database/migrate_add_rate_limits.py` — миграция
|
||
- `АНТИ-СПАМ_ЛИМИТЫ.md` — документация
|
||
|
||
**Изменения:**
|
||
- 9 таблиц БД (было 8)
|
||
- +1 сервис (rate_limiter)
|
||
- +1 хендлер (ratelimit_router)
|
||
- +7 команд
|
||
|
||
---
|
||
|
||
### v1.2 — Чёрный список ссылок — 26 февраля 2026
|
||
|
||
**Статус:** ✅ Реализовано
|
||
**Бекап:** `backups/versions/v1.2_antispam_2026-02-26/`
|
||
|
||
**Реализовано:**
|
||
- Чёрный список доменов (`data/bad_domains.json`)
|
||
- Чёрный список паттернов (t.me/spam_, vk.com/scam_)
|
||
- Чёрный список ключевых слов (спам-фразы)
|
||
- Авто-удаление спам-сообщений
|
||
- Система предупреждений (3 → бан)
|
||
- Уведомление админа о каждом случае
|
||
- Команды: `/add_domain`, `/remove_domain`, `/domains`, `/patterns`, `/keywords`
|
||
- Команды: `/warnings`, `/clear_warnings`, `/antispam_stats`
|
||
|
||
**Файлы:**
|
||
- `data/bad_domains.json` — чёрный список
|
||
- `services/antispam.py` — сервис проверки
|
||
- `handlers/antispam.py` — хендлеры
|
||
- `handlers/chat_monitor.py` — проверка ссылок
|
||
- `database/models.py` — модель SpamWarning
|
||
- `database/migrate_add_spam_warnings.py` — миграция
|
||
- `ЧЁРНЫЙ_СПИСОК_ССЫЛОК.md` — документация
|
||
|
||
**Изменения:**
|
||
- 8 таблиц БД (было 7)
|
||
- +1 сервис (antispam)
|
||
- +1 хендлер (antispam_router)
|
||
- +12 команд
|
||
|
||
---
|
||
|
||
### v1.1 — Опросы и голосования — 26 февраля 2026
|
||
|
||
**Статус:** ✅ Зафиксировано
|
||
**Бекап:** `backups/versions/v1.0_mvp_2026-02-26/`
|
||
|
||
**Реализовано:**
|
||
- Полный MVP функционал
|
||
- Безопасность (анти-мат, детект шпионов)
|
||
- Рейтинг пользователей
|
||
- Админ-панель с рассылкой
|
||
- Учёт квартир и жильцов
|
||
- Телефоны служб и мастеров
|
||
|
||
**Известные ограничения:**
|
||
- Нет точной даты создания аккаунта Telegram (API не отдаёт)
|
||
- Детект офисных часов требует доработки
|
||
- AI-юрист отложен на v2.0
|
||
|
||
---
|
||
|
||
## 📝 Процесс разработки
|
||
|
||
### Рабочий цикл:
|
||
1. **Фиксация версии** → бекап текущей версии
|
||
2. **Реализация функции** → код + тесты
|
||
3. **Проверка** → тестирование на пустой группе (админ + 1 пользователь)
|
||
4. **Приёмка** → подтверждение от заказчика
|
||
5. **Документирование** → обновление VERSIONS.md
|
||
6. **Бекап** → копия в `backups/versions/vX.X/`
|
||
|
||
### Тестовое окружение:
|
||
- **Группа:** Тестовая (2 участника)
|
||
- **Админ:** matrixhasyou
|
||
- **Пользователь:** друг (тестовый аккаунт)
|
||
|
||
### Критерии приёмки функции:
|
||
- [ ] Функция работает в тестовой группе
|
||
- [ ] Нет ошибок в логах
|
||
- [ ] Админ получает уведомления
|
||
- [ ] Пользователь получает обратную связь
|
||
- [ ] Документация обновлена
|
||
|
||
---
|
||
|
||
## 🎯 Следующая версия: v1.2
|
||
|
||
**План:** Чёрный список ссылок
|
||
|
||
**Функционал:**
|
||
- Файл `data/bad_domains.json` со списком доменов
|
||
- Проверка всех сообщений на наличие ссылок
|
||
- Авто-удаление сообщений со спам-доменами
|
||
- Предупреждение пользователю в личку
|
||
- Учёт предупреждений (3 → бан)
|
||
- Команды: `/add_domain`, `/remove_domain`, `/domains`
|
||
|
||
**Статус:** ⏳ Ожидает реализации
|
||
|
||
---
|
||
|
||
**Дата последнего обновления:** 26 февраля 2026 г.
|
||
**Версия документа:** 1.0
|