# Техническое задание: Домовой бот для чата жильцов ## Дом на ~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 **Статус:** На согласовании