domovoy_bot/TECHNICAL_SPECIFICATION.md
Admin ba4676b0af v1.0 MVP - Инициализация проекта 🏠
 Регистрация и верификация жильцов
 Рейтинг активности (уровни)
 Детект шпионов (Score 0-100)
 Анти-мат система (3 предупреждения → бан)
 Админ-панель с рассылкой
 Учёт квартир (несколько жильцов)
 Телефоны экстренных служб и мастеров
 Еженедельный экспорт JSON
 Прокси (socks5) для обхода РКН

Бекап: backups/versions/v1.0_mvp_2026-02-26/

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 10:54:16 +00:00

310 lines
14 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.

# Техническое задание: Домовой бот для чата жильцов
## Дом на ~1000 квартир (~2000 жителей)
---
## 📋 1. ОБЩИЕ ПОЛОЖЕНИЯ
### 1.1 Назначение
Бот для Telegram-чата многоквартирного дома, выполняющий функции:
- Модерация и безопасность чата
- Информационная поддержка жильцов
- Юридическая помощь через AI (NotebookLM)
- Аналитика активности и выявление «шпионов»
- Сервисы взаимопомощи соседей
### 1.2 Целевая аудитория
- Собственники квартир (1000+)
- Арендаторы
- Члены семей (итого ~2000 человек)
- Возраст: от 18 до 80+ лет
---
## 🎯 2. ФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ
### 2.1 Верификация и безопасность
| Функция | Описание | Приоритет |
|---------|----------|-----------|
| **Регистрация жильца** | Привязка Telegram ID к номеру квартиры + подтверждение (фото квитанции/код с доски) | 🔴 Высокий |
| **Премодерация входа** | Новый участник не видит чат, пока не пройдёт верификацию | 🔴 Высокий |
| **Детект мультиаккаунтов** | Выявление нескольких аккаунтов от одного человека (по поведению, времени активности) | 🟡 Средний |
| **Анти-спам** | Ограничение частоты сообщений, фильтрация ссылок | 🔴 Высокий |
| **Чёрный список** | Бан пользователей, автоматический бан при повторной регистрации | 🟡 Средний |
| **Тег «Не верифицирован»** | Визуальная маркировка в чате для непроверенных | 🟢 Низкий |
### 2.2 Информационные команды (меню)
**Формат:** Inline-кнопки + текстовые команды (кириллица!)
| Команда | Описание | Контент |
|---------|----------|---------|
| `/телефон` или кнопка «📞 Экстренные службы» | Телефоны служб | Текст + картинка |
| `/юрист` или кнопка «⚖️ Юридическая помощь» | AI-консультация через NotebookLM | Ссылка на ответ AI |
| `/сантехник` | Контакты проверенных мастеров | Список с рейтингом |
| `/участковый` | Контакты полиции | ФИО, телефон, приёмные часы |
| `/график` | Отключения воды, света, уборка | Календарь/таблица |
| `/объявление` | Последние новости дома | Последние 5 объявлений |
| `/продам` | Соседский маркетплейс | Ссылка на канал-витрину |
| `/помощь` | Список всех команд | Меню помощи |
### 2.3 AI-Юрист (NotebookLM интеграция)
**База знаний:**
- Конституция РФ
- Жилищный кодекс РФ
- Гражданский кодекс РФ (части 1, 2)
- КоАП РФ, УК РФ (релевантные статьи)
- **Договор управления вашего дома**
- Протоколы ОСС (общих собраний собственников)
- СанПиН, ГОСТы по ЖКХ
- Региональные нормативы (ваш субъект РФ)
**Сценарий работы:**
```
1. Жилец → /юрист → вводит вопрос
2. Бот → отправляет в NotebookLM API
3. NotebookLM → генерирует ответ со ссылками на законы
4. Бот → формирует ответ + шаблон документа (если нужно)
5. Жилец → получает в личку (или в чат, по настройке)
```
**Пример ответа:**
> «Согласно п. 4.2 Договора управления №XX от ДД.ММ.ГГГГ, УК обязана устранить протечку в течение 30 минут.
> Статья 161 ЖК РФ подтверждает...
> 📎 [Скачать шаблон претензии в УК
### 2.4 Аналитика и экспорт
| Функция | Периодичность | Формат |
|---------|---------------|--------|
| **Экспорт чата** | Еженедельно (воскресенье 03:00) | JSON с ID пользователей |
| **Облако тегов тем** | Еженедельно | Текст: «лифты: 45%, парковка: 23%...» |
| **Рейтинг активности** | Ежемесячно | Топ-10 полезных / Топ-10 токсичных |
| **Детект «шпионов»** | Постоянно | Уведомление админу при аномалиях |
| **Статистика команд** | Ежемесячно | Какие команды популярны |
**Структура JSON экспорта:**
```json
{
"export_date": "2026-02-23T03:00:00+03:00",
"chat_id": "-1001234567890",
"messages": [
{
"message_id": 12345,
"user_id": 987654321,
"username": "@nickname",
"first_name": "Иван",
"last_name": "Иванов",
"apartment": "45",
"timestamp": "2026-02-22T14:30:00+03:00",
"text": "У кого свет моргает?",
"reply_to": null,
"forward_from": null
}
],
"users": [
{
"user_id": 987654321,
"username": "@nickname",
"first_name": "Иван",
"last_name": "Иванов",
"apartment": "45",
"verified": true,
"join_date": "2025-06-15",
"message_count": 342
}
]
}
```
### 2.5 Соседские сервисы
| Сервис | Описание |
|--------|----------|
| **Маркетплейс** | Канал-витрина: `/продам диван 5000р` → пост в @dom_market |
| **Бронирование** | Колясочная, барбекю, гостевая парковка (календарь занятости) |
| **Взаимопомощь** | «Отдам котёнка», «Посажу ребёнка на час», «Нужна дрель» |
| **Рейтинг мастеров** | Сантехники/электрики с оценками от соседей |
### 2.6 Опросы и голосования
| Тип | Описание |
|-----|----------|
| **Быстрые опросы** | «За какой цвет покрасить подъезд?» (неофициально) |
| **Подготовка к ОСС** | Сбор мнений перед официальным голосованием |
| **Обратная связь** | «Оцените работу УК за месяц» |
---
## 🛠 3. ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ
### 3.1 Стек технологий
| Компонент | Рекомендуемое |
|-----------|---------------|
| **Язык** | Python 3.11+ |
| **Библиотека бота** | aiogram 3.x (асинхронная) |
| **База данных** | PostgreSQL / SQLite (для начала) |
| **Хранение файлов** | Локально / S3 / Google Drive |
| **NotebookLM API** | Google API (через сервисный аккаунт) |
| **Хостинг** | VPS (Timeweb, Selectel, Reg.ru) |
| **CI/CD** | GitHub Actions / GitLab CI |
### 3.2 Безопасность данных (ФЗ-152)
- [ ] Персональные данные (номера квартир, ID) хранятся только на сервере
- [ ] Доступ к базе — только у администратора (ты)
- [ ] В чат не выгружать таблицы с персональными данными
- [ ] Логирование доступа к базе данных
- [ ] Политика конфиденциальности (публичная оферта для жильцов)
### 3.3 Надёжность
- [ ] Автостарт при падении (systemd / Docker restart policy)
- [ ] Резервное копирование БД (ежедневно)
- [ ] Логирование ошибок (отправка критичных ошибок админу в личку)
- [ ] Rate limiting для API (чтобы Telegram не забанил)
---
## 📊 4. АРХИТЕКТУРА БАЗЫ ДАННЫХ
### Таблица `users`
```sql
CREATE TABLE users (
user_id BIGINT PRIMARY KEY,
username VARCHAR(255),
first_name VARCHAR(255),
last_name VARCHAR(255),
apartment VARCHAR(10),
phone VARCHAR(20),
verified BOOLEAN DEFAULT FALSE,
verification_date TIMESTAMP,
join_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
message_count INTEGER DEFAULT 0,
is_banned BOOLEAN DEFAULT FALSE,
is_admin BOOLEAN DEFAULT FALSE,
last_seen TIMESTAMP
);
```
### Таблица `messages`
```sql
CREATE TABLE messages (
message_id BIGINT,
user_id BIGINT REFERENCES users(user_id),
chat_id BIGINT,
text TEXT,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
reply_to_message_id BIGINT,
PRIMARY KEY (message_id, chat_id)
);
```
### Таблица `requests` (юридические запросы)
```sql
CREATE TABLE requests (
request_id SERIAL PRIMARY KEY,
user_id BIGINT REFERENCES users(user_id),
question TEXT,
answer TEXT,
notebooklm_response JSONB,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status VARCHAR(50) DEFAULT 'pending'
);
```
### Таблица `services` (мастера, контакты)
```sql
CREATE TABLE services (
service_id SERIAL PRIMARY KEY,
name VARCHAR(255),
category VARCHAR(100),
phone VARCHAR(20),
rating DECIMAL(3,2) DEFAULT 0,
reviews_count INTEGER DEFAULT 0,
verified_by_admin BOOLEAN DEFAULT FALSE
);
```
---
## 🚀 5. ДОРОЖНАЯ КАРТА (ROADMAP)
### Этап 1: MVP (2-3 недели)
- [ ] Базовый бот с командами `/старт`, `/помощь`, `/телефон`
- [ ] Регистрация пользователей (привязка к квартире)
- [ ] Экспорт чата в JSON (еженедельно)
- [ ] Админ-панель (просмотр базы жильцов)
### Этап 2: Безопасность (2 недели)
- [ ] Премодерация новых участников
- [ ] Детект мультиаккаунтов
- [ ] Анти-спам фильтры
### Этап 3: AI-Юрист (3-4 недели)
- [ ] Интеграция с NotebookLM API
- [ ] Загрузка нормативной базы
- [ ] Тестирование ответов на типовых вопросах
### Этап 4: Соседские сервисы (3 недели)
- [ ] Маркетплейс (канал-витрина)
- [ ] Бронирование ресурсов
- [ ] Рейтинг мастеров
### Этап 5: Аналитика (2 недели)
- [ ] Облако тегов тем
- [ ] Рейтинг активности
- [ ] Дашборд для админа (Grafana / веб-интерфейс)
---
## ❓ 6. ОТКРЫТЫЕ ВОПРОСЫ
1. **Модерация контента:** Блокировать ли мат/оскорбления автоматически? (AI-модерация / чёрный список слов)
2. **Анонимные жалобы:** Давать ли возможность жаловаться на соседей анонимно?
3. **Платные услуги:** Будет ли интеграция с платежом (квартплата, взносы)?
4. **Видеонаблюдение:** Интеграция с камерами подъезда/двора?
5. **Умный дом:** Датчики протечек, шума, качества воздуха (общедомовые)?
---
## 📎 7. ПРИЛОЖЕНИЯ
### 7.1 Список экстренных телефонов (шаблон)
```
🚑 Скорая: 103, 112
🔥 Пожарные: 101, 112
👮 Полиция: 102, 112
⛽ Газовая служба: 104
💧 Аварийная водоканал: +7 (XXX) XXX-XX-XX
🔌 Аварийная электросети: +7 (XXX) XXX-XX-XX
🏢 Диспетчер УК: +7 (XXX) XXX-XX-XX (круглосуточно)
👨‍⚖️ Участковый: Иванов И.И. +7 (XXX) XXX-XX-XX
```
### 7.2 Примеры юридических запросов для тестирования AI
- «Соседи сверху залили, что делать?»
- «УК не убирает подъезд, куда жаловаться?»
- «Можно ли курить на балконе?»
- «Как оспорить решение ОСС
- «Платить ли за капремонт, если дом новый?»
---
## 📝 8. КРИТЕРИИ ПРИЁМКИ
- [ ] Бот отвечает на все команды из раздела 2.2
- [ ] Экспорт JSON формируется корректно, содержит ID пользователей
- [ ] Верификация работает (неверифицированные помечаются)
- [ ] AI-юрист выдаёт ответы со ссылками на законы
- [ ] База данных хранит пользователей с привязкой к квартирам
- [ ] Бот работает стабильно 7 дней без падений
---
**Версия ТЗ:** 1.0
**Дата:** 23.02.2026
**Статус:** На согласовании