domovoy_bot/VERSIONS.md

358 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📦 Версии домового бота
**Проект:** Домовой Бот для чата многоквартирного дома
**Репозиторий:** `/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 | — |
---
## 📋 Текущая версия: v4.8 REBORN
**Дата фиксации:** 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