# 📦 Версии домового бота

**Проект:** Домовой Бот для чата многоквартирного дома
**Репозиторий:** `/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
