From bfc22efe2457625e11b4c798ea9ad6884059cee1 Mon Sep 17 00:00:00 2001 From: Dmitry Evdokimov Date: Mon, 25 May 2026 01:12:43 +0300 Subject: [PATCH] first commit --- .dockerignore | 9 + .gitignore | 42 + README.md | 132 ++ SYSTEM_AUDIT.md | 487 ++++++ api/.env.example | 35 + api/Dockerfile | 16 + api/__init__.py | 1 + api/clients/__init__.py | 1 + api/clients/chroma_store.py | 88 ++ api/clients/openrouter_client.py | 13 + api/config.py | 50 + api/deps.py | 45 + api/logging.py | 24 + api/main.py | 148 ++ api/prompts/__init__.py | 1 + api/prompts/rag_prompts.py | 91 ++ api/requirements.txt | 9 + api/routers/__init__.py | 1 + api/routers/health.py | 15 + api/routers/indexing.py | 19 + api/routers/rag.py | 185 +++ api/schemas.py | 92 ++ api/services/__init__.py | 1 + api/services/indexing.py | 126 ++ api/services/legal_ai.py | 724 +++++++++ api/services/local_embeddings.py | 57 + api/services/retrieval.py | 122 ++ bot/.env.example | 29 + bot/Dockerfile | 16 + bot/aiogram_run.py | 100 ++ bot/create_bot.py | 85 + bot/handlers/__init__.py | 0 bot/handlers/admin/__init__.py | 0 bot/handlers/admin/blacklist.py | 221 +++ bot/handlers/admin/list_of_users.py | 53 + bot/handlers/admin/mailer.py | 133 ++ bot/handlers/admin/main.py | 67 + bot/handlers/admin/management.py | 142 ++ bot/handlers/admin/settings.py | 85 + bot/handlers/admin/statistic.py | 28 + bot/handlers/client/__init__.py | 0 bot/handlers/client/main.py | 506 ++++++ bot/handlers/start.py | 59 + bot/keyboards/__init__.py | 0 bot/keyboards/admin/mailer_kbs.py | 55 + bot/keyboards/admin/main_kbs.py | 95 ++ bot/keyboards/inline_keyboards.py | 3 + bot/keyboards/reply_keyboards.py | 132 ++ bot/middlewares/album.py | 60 + bot/middlewares/users_control.py | 93 ++ bot/requirements.txt | 42 + bot/states/__init__.py | 0 bot/states/admin_states.py | 36 + bot/states/client_states.py | 20 + bot/templates/users.xlsx | Bin 0 -> 5399 bytes bot/utils/__init__.py | 0 bot/utils/cfg_loader.py | 17 + bot/utils/rag_api.py | 85 + bot/utils/text_tools.py | 120 ++ bot/webhooks.py | 16 + compose.yml | 95 ++ mvp.md | 1373 +++++++++++++++++ parser/__init__.py | 1 + parser/__main__.py | 5 + parser/cli.py | 135 ++ parser/config.py | 136 ++ parser/discovery.py | 60 + parser/fetcher.py | 171 ++ parser/ingest.py | 68 + parser/normalizer.py | 166 ++ parser/utils.py | 108 ++ postgres.env.example | 9 + protocol/generate_protocol_docx.py | 782 ++++++++++ protocol/task/SWE_lab2.docx | Bin 0 -> 790673 bytes protocol/task/SWE_lab3.docx | Bin 0 -> 837760 bytes protocol/task/ОФОРМЛЕНИЕ.docx | Bin 0 -> 70973 bytes protocol/task/пример оформления курсовой.doc | Bin 0 -> 270848 bytes protocol/Протокол_курсовой_работы_LawBot.docx | Bin 0 -> 453173 bytes shared/__init__.py | 27 + shared/engine.py | 14 + shared/models.py | 163 ++ shared/repositories.py | 723 +++++++++ shared/types.py | 35 + 83 files changed, 8903 insertions(+) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 README.md create mode 100644 SYSTEM_AUDIT.md create mode 100644 api/.env.example create mode 100644 api/Dockerfile create mode 100644 api/__init__.py create mode 100644 api/clients/__init__.py create mode 100644 api/clients/chroma_store.py create mode 100644 api/clients/openrouter_client.py create mode 100644 api/config.py create mode 100644 api/deps.py create mode 100644 api/logging.py create mode 100644 api/main.py create mode 100644 api/prompts/__init__.py create mode 100644 api/prompts/rag_prompts.py create mode 100644 api/requirements.txt create mode 100644 api/routers/__init__.py create mode 100644 api/routers/health.py create mode 100644 api/routers/indexing.py create mode 100644 api/routers/rag.py create mode 100644 api/schemas.py create mode 100644 api/services/__init__.py create mode 100644 api/services/indexing.py create mode 100644 api/services/legal_ai.py create mode 100644 api/services/local_embeddings.py create mode 100644 api/services/retrieval.py create mode 100644 bot/.env.example create mode 100644 bot/Dockerfile create mode 100644 bot/aiogram_run.py create mode 100644 bot/create_bot.py create mode 100644 bot/handlers/__init__.py create mode 100644 bot/handlers/admin/__init__.py create mode 100644 bot/handlers/admin/blacklist.py create mode 100644 bot/handlers/admin/list_of_users.py create mode 100644 bot/handlers/admin/mailer.py create mode 100644 bot/handlers/admin/main.py create mode 100644 bot/handlers/admin/management.py create mode 100644 bot/handlers/admin/settings.py create mode 100644 bot/handlers/admin/statistic.py create mode 100644 bot/handlers/client/__init__.py create mode 100644 bot/handlers/client/main.py create mode 100644 bot/handlers/start.py create mode 100644 bot/keyboards/__init__.py create mode 100644 bot/keyboards/admin/mailer_kbs.py create mode 100644 bot/keyboards/admin/main_kbs.py create mode 100644 bot/keyboards/inline_keyboards.py create mode 100644 bot/keyboards/reply_keyboards.py create mode 100644 bot/middlewares/album.py create mode 100644 bot/middlewares/users_control.py create mode 100644 bot/requirements.txt create mode 100644 bot/states/__init__.py create mode 100644 bot/states/admin_states.py create mode 100644 bot/states/client_states.py create mode 100644 bot/templates/users.xlsx create mode 100644 bot/utils/__init__.py create mode 100644 bot/utils/cfg_loader.py create mode 100644 bot/utils/rag_api.py create mode 100644 bot/utils/text_tools.py create mode 100644 bot/webhooks.py create mode 100644 compose.yml create mode 100644 mvp.md create mode 100644 parser/__init__.py create mode 100644 parser/__main__.py create mode 100644 parser/cli.py create mode 100644 parser/config.py create mode 100644 parser/discovery.py create mode 100644 parser/fetcher.py create mode 100644 parser/ingest.py create mode 100644 parser/normalizer.py create mode 100644 parser/utils.py create mode 100644 postgres.env.example create mode 100644 protocol/generate_protocol_docx.py create mode 100644 protocol/task/SWE_lab2.docx create mode 100644 protocol/task/SWE_lab3.docx create mode 100644 protocol/task/ОФОРМЛЕНИЕ.docx create mode 100644 protocol/task/пример оформления курсовой.doc create mode 100644 protocol/Протокол_курсовой_работы_LawBot.docx create mode 100644 shared/__init__.py create mode 100644 shared/engine.py create mode 100644 shared/models.py create mode 100644 shared/repositories.py create mode 100644 shared/types.py diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..555776a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +.git +.venv +venv +__pycache__ +*.pyc +*.pyo + +volumes +**/__pycache__ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dcb115e --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# Python +__pycache__/ +*.py[cod] +*.so + +# Virtualenvs +.venv/ +venv/ + +# Tool caches +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ +.coverage +.coverage.* +htmlcov/ + +# Editors / OS +.idea/ +.vscode/ +.DS_Store + +# Build artifacts +build/ +dist/ +*.egg-info/ + +# Local environment files +.env +.env.* +**/.env +**/.env.* +postgres.env +!api/.env.example +!bot/.env.example +!postgres.env.example + +# Runtime data +volumes/ + +# Local protocol artifacts +protocol/.xdp-* diff --git a/README.md b/README.md new file mode 100644 index 0000000..b7e4d5d --- /dev/null +++ b/README.md @@ -0,0 +1,132 @@ +# LawBot + +Telegram-бот с RAG-поиском по законам РФ. + +## Что внутри + +- `bot/` — Telegram-бот на `aiogram` +- `api/` — FastAPI-сервис для retrieval и генерации ответа +- `parser/` — CLI-парсер и загрузка законов +- `shared/` — общий слой БД и модели +- `compose.yml` — запуск всего стека через Docker Compose + +## Стек + +- Telegram Bot API +- FastAPI +- PostgreSQL +- Redis +- ChromaDB +- OpenRouter +- локальная embedding-модель на CPU + +## Подготовка + +Создай рабочие env-файлы из примеров: + +```bash +cp bot/.env.example bot/.env +cp api/.env.example api/.env +cp postgres.env.example postgres.env +``` + +Заполни: + +- `bot/.env` — `TOKEN`, `BASE_ADMIN`, при необходимости `TELEGRAM_BOT_PROXY` +- `api/.env` — `OPENAI_API_KEY` +- `postgres.env` — логин/пароль БД + +## Запуск + +```bash +docker compose up -d --build +``` + +Проверка API: + +```bash +curl http://127.0.0.1:8080/health +``` + +## Загрузка законов + +Полный прогон: + +```bash +docker compose exec tgbot python -m parser run +``` + +Запуск только для одной категории: + +```bash +docker compose exec tgbot python -m parser run --categories labor --limit 1 +``` + +Отдельные шаги: + +```bash +docker compose exec tgbot python -m parser discover +docker compose exec tgbot python -m parser fetch +docker compose exec tgbot python -m parser normalize +docker compose exec tgbot python -m parser ingest +``` + +## Индексация Chroma + +После нового `parser ingest` перестрой индекс: + +```bash +curl -X POST http://127.0.0.1:8080/api/v1/index/rebuild \ + -H 'Content-Type: application/json' \ + -d '{"reset_collection": true}' +``` + +Индексация только нужного домена: + +```bash +curl -X POST http://127.0.0.1:8080/api/v1/index/rebuild \ + -H 'Content-Type: application/json' \ + -d '{"law_types":["criminal"],"reset_collection":false}' +``` + +## Полезные команды + +Проверить логи: + +```bash +docker compose logs -f tgbot +docker compose logs -f api +``` + +Проверить поиск: + +```bash +curl -X POST http://127.0.0.1:8080/api/v1/rag/search \ + -H 'Content-Type: application/json' \ + -d '{ + "question":"Работодатель задержал зарплату. Что делать?", + "category":"Работа", + "region":"Москва", + "top_k":3 + }' +``` + +Проверить полный ответ: + +```bash +curl -X POST http://127.0.0.1:8080/api/v1/rag/answer \ + -H 'Content-Type: application/json' \ + -d '{ + "question":"Работодатель задержал зарплату. Что делать?", + "category":"Работа", + "region":"Москва", + "top_k":3 + }' +``` + +## Данные + +- PostgreSQL: `./volumes/postgres` +- ChromaDB: `./volumes/chroma` +- Hugging Face cache: `./volumes/huggingface` +- Parser artifacts: `./volumes/parser` diff --git a/SYSTEM_AUDIT.md b/SYSTEM_AUDIT.md new file mode 100644 index 0000000..490b598 --- /dev/null +++ b/SYSTEM_AUDIT.md @@ -0,0 +1,487 @@ +# SYSTEM AUDIT: LawBot + +## 1. Что это за проект + +`LawBot` — это Telegram-бот, который: + +1. принимает вопрос пользователя; +2. ищет подходящие нормы закона РФ; +3. достает текст из своей базы; +4. передает найденные фрагменты в LLM; +5. возвращает пользователю ответ простыми словами. + +Проект состоит из 4 основных частей: + +| Часть | Папка | Что делает | +|---|---|---| +| Telegram-бот | `bot/` | Общается с пользователем в Telegram | +| API для RAG | `api/` | Делает поиск по законам и генерацию ответа | +| Парсер законов | `parser/` | Скачивает и нормализует документы | +| Общий слой БД | `shared/` | Хранит модели БД и методы работы с БД | + +--- + +## 2. Архитектура проекта + +### 2.1. Общая схема + +```mermaid +flowchart LR + User["Пользователь Telegram"] + Bot["bot/\nAiogram bot"] + Api["api/\nFastAPI RAG API"] + Parser["parser/\nCLI parser"] + Shared["shared/\nDB layer"] + Pg["PostgreSQL"] + Redis["Redis"] + Chroma["ChromaDB"] + LLM["OpenRouter LLM"] + Embed["Local embedding model"] + Consultant["consultant.ru"] + + User --> Bot + Bot --> Api + Bot --> Shared + Bot --> Redis + + Api --> Shared + Api --> Chroma + Api --> LLM + Api --> Embed + + Shared --> Pg + + Parser --> Consultant + Parser --> Shared + Parser --> Pg +``` + +### 2.2. Что запускается в Docker Compose + +Файл: [compose.yml](/home/ruby/Desktop/DockerProjects/LawBot/compose.yml:1) + +| Сервис | Образ / Dockerfile | Назначение | Порт | +|---|---|---|---| +| `tgbot` | `bot/Dockerfile` | Telegram-бот | нет внешнего порта | +| `api` | `api/Dockerfile` | FastAPI RAG API | `8080` | +| `postgredb` | `postgres:16-alpine` | Основная БД | нет внешнего порта | +| `redisdb` | `redis:6-alpine` | FSM/storage для aiogram | нет внешнего порта | +| `chromadb` | `chromadb/chroma:1.0.12` | Векторный поиск | `8000` | + +Важно: отдельного контейнера для `parser/` нет. Парсер запускается командой внутри контейнера `tgbot`. + +--- + +## 3. Структура директорий + +### 3.1. Корень проекта + +| Путь | Назначение | +|---|---| +| `compose.yml` | Запуск всех сервисов | +| `README.md` | Краткая инструкция по запуску | +| `mvp.md` | Текстовое описание MVP | +| `postgres.env` | Настройки подключения к PostgreSQL | +| `postgres.env.example` | Пример env для PostgreSQL | +| `SYSTEM_AUDIT.md` | Этот аудит | +| `volumes/` | Постоянные данные контейнеров | +| `protocol/` | Документы для курсовой | + +### 3.2. Папка `api/` + +| Путь | Назначение | +|---|---| +| `api/main.py` | Точка входа FastAPI | +| `api/config.py` | Чтение env-переменных API | +| `api/deps.py` | Создание singleton-зависимостей | +| `api/schemas.py` | Pydantic-схемы API | +| `api/logging.py` | Настройка логов API | +| `api/routers/` | HTTP-роуты (`health`, `indexing`, `rag`) | +| `api/services/` | Основная логика: embeddings, retrieval, indexing, LLM | +| `api/clients/` | Клиенты для OpenRouter и Chroma | +| `api/prompts/` | Промпты для классификации и ответа | +| `api/requirements.txt` | Зависимости API | +| `api/Dockerfile` | Сборка контейнера API | + +### 3.3. Папка `bot/` + +| Путь | Назначение | +|---|---| +| `bot/aiogram_run.py` | Точка входа Telegram-бота | +| `bot/create_bot.py` | Создание Bot / Dispatcher / Redis / ORM | +| `bot/handlers/` | Обработчики команд, кнопок и сценариев | +| `bot/keyboards/` | Reply и inline клавиатуры | +| `bot/middlewares/` | Антифлуд, blacklist, album middleware | +| `bot/states/` | FSM состояния aiogram | +| `bot/utils/rag_api.py` | HTTP-клиент бота для вызова `api` | +| `bot/utils/text_tools.py` | Форматирование и нарезка текста для Telegram | +| `bot/templates/` | Шаблоны файлов (`users.xlsx`) | +| `bot/requirements.txt` | Зависимости бота | +| `bot/Dockerfile` | Сборка контейнера бота | +| `bot/webhooks.py` | Отдельный тестовый FastAPI webhook, не подключен к `compose.yml` | + +### 3.4. Папка `parser/` + +| Путь | Назначение | +|---|---| +| `parser/__main__.py` | Позволяет запускать `python -m parser` | +| `parser/cli.py` | CLI-команды `discover/fetch/normalize/ingest/run` | +| `parser/config.py` | Список целевых документов и пути сохранения | +| `parser/discovery.py` | Проверка категорий на `consultant.ru/popular/` | +| `parser/fetcher.py` | Скачивание root HTML и страниц статей | +| `parser/normalizer.py` | Разбор HTML и сборка нормализованного JSON | +| `parser/ingest.py` | Запись документов и чанков в PostgreSQL | +| `parser/utils.py` | Общие функции парсера | + +### 3.5. Папка `shared/` + +| Путь | Назначение | +|---|---| +| `shared/models.py` | SQLAlchemy-модели | +| `shared/repositories.py` | Класс `ORM` и методы работы с БД | +| `shared/engine.py` | Создание async engine и sessionmaker | +| `shared/types.py` | Вспомогательные типы | +| `shared/__init__.py` | Единая точка импорта DB-слоя | + +### 3.6. Папка `protocol/` + +| Путь | Назначение | +|---|---| +| `protocol/generate_protocol_docx.py` | Генератор `.docx` протокола курсовой | +| `protocol/Протокол_курсовой_работы_LawBot.docx` | Готовый документ | +| `protocol/task/` | Входные материалы задания | + +### 3.7. Папка `volumes/` + +| Путь | Назначение | +|---|---| +| `volumes/postgres/` | Данные PostgreSQL | +| `volumes/chroma/` | Данные ChromaDB | +| `volumes/huggingface/` | Кеш embedding-модели | +| `volumes/parser/` | Артефакты парсера: raw, normalized, state | + +--- + +## 4. Ключевые сервисы, модули и точки входа + +### 4.1. Точки входа + +| Компонент | Точка входа | Что происходит | +|---|---|---| +| Telegram-бот | [bot/aiogram_run.py](/home/ruby/Desktop/DockerProjects/LawBot/bot/aiogram_run.py:1) | Поднимает bot, middleware, routers и polling | +| FastAPI API | [api/main.py](/home/ruby/Desktop/DockerProjects/LawBot/api/main.py:1) | Поднимает API, проверяет БД, запускает автоиндексацию | +| Парсер | [parser/__main__.py](/home/ruby/Desktop/DockerProjects/LawBot/parser/__main__.py:1) -> [parser/cli.py](/home/ruby/Desktop/DockerProjects/LawBot/parser/cli.py:1) | Запускает CLI пайплайн | + +### 4.2. Основные модули API + +| Модуль | Файл | Роль | +|---|---|---| +| Конфиг | `api/config.py` | Читает env и хранит настройки | +| Роуты | `api/routers/rag.py` | `/search` и `/answer` | +| Индексация | `api/routers/indexing.py` | `/api/v1/index/rebuild` | +| Retrieval | `api/services/retrieval.py` | Гибридный поиск: Postgres FTS + Chroma | +| Индексация | `api/services/indexing.py` | Перенос чанков из Postgres в Chroma | +| Embeddings | `api/services/local_embeddings.py` | Локальные эмбеддинги через `sentence-transformers` | +| LLM-логика | `api/services/legal_ai.py` | Классификация, генерация ответа, заголовка консультации | +| Векторное хранилище | `api/clients/chroma_store.py` | Работа с Chroma | +| LLM-клиент | `api/clients/openrouter_client.py` | AsyncOpenAI-клиент для OpenRouter | + +### 4.3. Основные модули бота + +| Модуль | Файл | Роль | +|---|---|---| +| Создание бота | `bot/create_bot.py` | Bot, Dispatcher, RedisStorage, ORM, timezone | +| Главный запуск | `bot/aiogram_run.py` | Сборка всех роутеров | +| Пользовательский сценарий | `bot/handlers/client/main.py` | Вопрос -> регион -> ответ -> история | +| Админка | `bot/handlers/admin/*.py` | Статистика, blacklist, рассылка, настройки | +| HTTP-клиент к API | `bot/utils/rag_api.py` | Отправляет запросы в FastAPI | +| Форматирование | `bot/utils/text_tools.py` | Подготовка текста под Telegram HTML | + +### 4.4. Основные модули парсера + +| Модуль | Файл | Роль | +|---|---|---| +| Discovery | `parser/discovery.py` | Собирает manifest целевых документов | +| Fetch | `parser/fetcher.py` | Скачивает страницы документов | +| Normalize | `parser/normalizer.py` | Превращает HTML в нормализованный JSON | +| Ingest | `parser/ingest.py` | Пишет `law_sources` и `law_chunks` в БД | + +### 4.5. Основной DB-слой + +| Модуль | Файл | Роль | +|---|---|---| +| ORM | `shared/repositories.py` | Все операции с PostgreSQL | +| Модели | `shared/models.py` | Таблицы пользователей, консультаций, законов, чанков | + +--- + +## 5. Кто за что отвечает + +| Сервис / модуль | Отвечает за | +|---|---| +| `tgbot` | UI для пользователя и администратора | +| `api` | Поиск по законам и генерацию ответа | +| `parser` | Наполнение базы законами | +| `shared` | Единый доступ к PostgreSQL | +| `postgredb` | Хранение пользователей, консультаций, законов и чанков | +| `redisdb` | Хранение FSM-состояний aiogram | +| `chromadb` | Векторный индекс чанков | +| `OpenRouter` | LLM для классификации и ответа | +| Локальная embedding-модель | Преобразование текста в векторы | + +--- + +## 6. Переменные окружения + +### 6.1. `bot/.env` + +Источник: [bot/.env.example](/home/ruby/Desktop/DockerProjects/LawBot/bot/.env.example:1) + +| Переменная | Назначение | +|---|---| +| `TOKEN` | Telegram bot token | +| `TELEGRAM_BOT_PROXY` | Прокси для Telegram Bot API | +| `BASE_ADMIN` | Telegram ID администратора | +| `RAG_API_URL` | URL FastAPI сервиса | +| `REDIS_URL` | Подключение к Redis | +| `POSTGRES_DB` | Имя БД | +| `POSTGRES_USER` | Логин БД | +| `POSTGRES_PASSWORD` | Пароль БД | +| `POSTGRES_HOST` | Хост PostgreSQL | +| `POSTGRES_PORT` | Порт PostgreSQL | +| `TIMEZONE` | Часовой пояс для отображения дат | + +### 6.2. `api/.env` + +Источник: [api/.env.example](/home/ruby/Desktop/DockerProjects/LawBot/api/.env.example:1) + +| Переменная | Назначение | +|---|---| +| `OPENAI_BASE_URL` | Базовый URL OpenRouter | +| `OPENAI_API_KEY` | Ключ доступа к OpenRouter | +| `LLM_MODEL` | Модель LLM для классификации и ответа | +| `EMBEDDING_MODEL` | Локальная embedding-модель | +| `EMBEDDING_DEVICE` | Устройство (`cpu`) | +| `CHROMA_HOST` | Хост ChromaDB | +| `CHROMA_PORT` | Порт ChromaDB | +| `CHROMA_COLLECTION` | Название коллекции Chroma | +| `CHROMA_SSL` | Использовать ли SSL | +| `RAG_TOP_K` | Дефолтное число результатов RAG | +| `FTS_TOP_K` | Сколько брать из full-text поиска | +| `VECTOR_TOP_K` | Сколько брать из vector search | +| `INDEX_BATCH_SIZE` | Размер батча для индексации и embeddings | +| `LLM_TIMEOUT_SECONDS` | Таймаут LLM-запросов | +| `API_HOST` | Хост FastAPI | +| `API_PORT` | Порт FastAPI | +| `LOG_LEVEL` | Уровень логов | +| `AUTO_INDEX_ON_STARTUP` | Запускать ли автоиндексацию при старте API | +| `AUTO_INDEX_ONLY_IF_EMPTY` | Индексировать только если Chroma пустая/не синхронизирована | +| `AUTO_INDEX_RESET_COLLECTION` | Сбрасывать ли коллекцию при автоиндексации | +| `AUTO_INDEX_RETRY_DELAY_SECONDS` | Пауза между попытками автоиндексации | +| `AUTO_INDEX_MAX_ATTEMPTS` | Максимум попыток автоиндексации | + +### 6.3. `postgres.env` + +Источник: [postgres.env.example](/home/ruby/Desktop/DockerProjects/LawBot/postgres.env.example:1) + +| Переменная | Назначение | +|---|---| +| `POSTGRES_DB` | Имя БД PostgreSQL | +| `POSTGRES_USER` | Пользователь БД | +| `POSTGRES_PASSWORD` | Пароль БД | +| `POSTGRES_HOST` | Хост БД | +| `POSTGRES_PORT` | Порт БД | + +--- + +## 7. Основные таблицы данных + +Источник: [shared/models.py](/home/ruby/Desktop/DockerProjects/LawBot/shared/models.py:1) + +| Таблица | Назначение | +|---|---| +| `users` | Пользователи Telegram | +| `admins` | Администраторы | +| `blacklist` | Заблокированные пользователи | +| `settings` | Настройки бота | +| `consultations` | Диалоги пользователя с ботом | +| `messages` | Сообщения внутри консультаций | +| `rag_queries` | История поисковых запросов и найденных чанков | +| `law_sources` | Документы законов | +| `law_chunks` | Чанки статей законов | + +--- + +## 8. Потоки данных + +### 8.1. Поток ответа пользователю + +1. Пользователь пишет в Telegram. +2. `bot/handlers/client/main.py` принимает сообщение. +3. Бот вызывает `bot/utils/rag_api.py`. +4. HTTP-запрос уходит в `POST /api/v1/rag/answer`. +5. `api/services/legal_ai.py` классифицирует вопрос. +6. `api/services/retrieval.py` ищет чанки: + - через PostgreSQL full-text search; + - через Chroma vector search. +7. `api/services/legal_ai.py` генерирует ответ через OpenRouter. +8. Если `save_history=true`, API сохраняет: + - консультацию; + - сообщения; + - rag-запрос. +9. Бот получает ответ, форматирует его и отправляет в Telegram. + +### 8.2. Поток загрузки законов + +1. Команда `python -m parser run`. +2. `parser/discovery.py` собирает manifest. +3. `parser/fetcher.py` скачивает root HTML и статьи. +4. `parser/normalizer.py` делает нормализованный JSON. +5. `parser/ingest.py` записывает документы и чанки в PostgreSQL. +6. `api/services/indexing.py` переносит чанки в Chroma. + +### 8.3. Схема зависимости модулей + +```text +bot/handlers/client/main.py + -> bot/utils/rag_api.py + -> api/routers/rag.py + -> api/services/legal_ai.py + -> api/services/retrieval.py + -> shared/repositories.py + -> PostgreSQL / ChromaDB / OpenRouter + +parser/cli.py + -> parser/discovery.py + -> parser/fetcher.py + -> parser/normalizer.py + -> parser/ingest.py + -> shared/repositories.py + -> PostgreSQL +``` + +--- + +## 9. Используемые технологии и зависимости + +### 9.1. По сервисам + +| Область | Технологии | +|---|---| +| Bot | `aiogram`, `aiohttp`, `httpx`, `redis`, `uvloop` | +| API | `FastAPI`, `uvicorn`, `openai`, `chromadb`, `sentence-transformers`, `SQLAlchemy`, `asyncpg` | +| Parser | `requests`, `beautifulsoup4` | +| DB | `PostgreSQL`, `SQLAlchemy`, `asyncpg` | +| Vector search | `ChromaDB` | +| LLM | `OpenRouter` через `AsyncOpenAI` | +| Embeddings | `sentence-transformers` + локальная модель | + +### 9.2. Замеченные версии + +Источники: +- [api/requirements.txt](/home/ruby/Desktop/DockerProjects/LawBot/api/requirements.txt:1) +- [bot/requirements.txt](/home/ruby/Desktop/DockerProjects/LawBot/bot/requirements.txt:1) + +| Пакет | Версия | +|---|---| +| `fastapi` | `0.115.9` | +| `uvicorn` | `0.34.2` | +| `openai` | `1.82.0` | +| `chromadb` | `1.0.12` | +| `SQLAlchemy` | `2.0.38` | +| `asyncpg` | `0.30.0` | +| `sentence-transformers` | `5.1.2` | +| `aiogram` | `3.17.0` | +| `httpx` | `0.28.1` | +| `redis` | `5.2.1` | +| `beautifulsoup4` | `4.13.4` | + +--- + +## 10. Что выглядит слабо или странно + +Ниже только то, что видно по текущему коду. + +| Проблема | Где видно | Почему это слабое место | +|---|---|---| +| Нет отдельного сервиса `parser` | `compose.yml` | Парсер живет внутри контейнера бота. Это смешивает роли и зависимости. | +| Нет миграций БД | `shared/repositories.py:97` | Схема создается через `create_all()` и `ALTER TABLE`, что плохо масштабируется. | +| Один большой репозиторий БД | `shared/repositories.py` | Класс `ORM` содержит слишком много обязанностей: users, laws, consultations, search. | +| Один большой сервис LLM | `api/services/legal_ai.py` | В одном файле смешаны классификация, ответ, fallback, sanitizing и генерация заголовка. | +| `bot/requirements.txt` содержит лишнее | `bot/requirements.txt` | Там есть `fastapi`, `uvicorn`, parser-зависимости. Контейнер бота тяжелее, чем должен быть. | +| `cfg_loader.py` выглядит мертвым кодом | `bot/utils/cfg_loader.py` | Ищет `cfg/config.json`, но такой папки в проекте нет и импортов почти нет. | +| `bot/webhooks.py` не подключен | `bot/webhooks.py`, `compose.yml` | В проекте есть отдельный FastAPI webhook-файл, но он не участвует в основном запуске. | +| Нет тестов | по структуре файлов | В проекте не найдено папки `tests/` или явных unit/integration тестов. | +| Парсер завязан на HTML-структуру сайта | `parser/fetcher.py`, `parser/normalizer.py` | Любое изменение верстки `consultant.ru` может сломать парсинг. | +| Full-text поиск только на русском tsvector | `shared/repositories.py` | Это нормально для РФ, но поиск по сложным формулировкам может быть нестабилен без доп. нормализации. | +| В `api` автоиндексация идет при старте | `api/main.py` | Удобно для MVP, но на большом объеме это может тормозить старт сервиса. | +| В репозитории есть `.venv/` | структура проекта | Локальное окружение лежит внутри проекта. Это легко случайно потащить в архив или deploy-контекст. | + +### 10.1. Неясные или частично подтвержденные зоны + +| Наблюдение | Что именно неясно | +|---|---| +| Админская часть | Полный функционал не анализировался построчно во всех admin handlers | +| `protocol/` | Это не runtime-часть приложения, а документы для курсовой | +| `bot/keyboards/inline_keyboards.py` | Файл существует, но по структуре почти пустой и не играет заметной роли | + +--- + +## 11. Рекомендации по улучшению структуры + +### 11.1. Что стоит сделать в первую очередь + +| Рекомендация | Зачем | +|---|---| +| Выделить `parser` в отдельный контейнер | Чтобы бот не таскал лишние parser-зависимости | +| Ввести миграции (`alembic`) | Чтобы схема БД менялась предсказуемо | +| Разбить `shared/repositories.py` на несколько репозиториев | Например: `users`, `consultations`, `laws`, `rag` | +| Разбить `api/services/legal_ai.py` | Отдельно: classifier, answer renderer, title generator, fallback | +| Добавить `tests/` | Минимум smoke-тесты для `api`, `parser`, `shared` | +| Вынести parser-зависимости из `bot/requirements.txt` | Уменьшить размер и сложность контейнера бота | + +### 11.2. Что улучшит понятность проекта + +| Рекомендация | Зачем | +|---|---| +| Добавить `docs/architecture.md` | Новичку будет проще понять проект | +| Сделать единый `settings`-слой и для `bot`, и для `parser` | Сейчас конфигурация читается разными способами | +| Удалить или подключить мертвые файлы | Например `bot/webhooks.py`, `bot/utils/cfg_loader.py` | +| Добавить схему “как идет запрос” в README | Снизит порог входа | + +### 11.3. Что важно для production + +| Рекомендация | Зачем | +|---|---| +| Ограничить и логировать ошибки внешних API | OpenRouter и Consultant могут вести себя нестабильно | +| Добавить rate limiting и retry policy на уровне API-клиентов | Улучшит устойчивость | +| Отдельно мониторить время поиска и генерации | Позволит понять, где тормозит система | +| Добавить backup-стратегию для `volumes/postgres` и `volumes/chroma` | Сейчас данные локально персистентны, но не защищены от потери | + +--- + +## 12. Краткий вывод + +Проект уже собран как рабочий MVP: + +- есть Telegram-бот; +- есть FastAPI-сервис для RAG; +- есть парсер законов; +- есть PostgreSQL и ChromaDB; +- есть единый DB-слой. + +Главная архитектурная идея понятная: + +1. `parser` наполняет PostgreSQL законами; +2. `api` строит векторный индекс и отвечает на вопросы; +3. `bot` общается с пользователем; +4. `shared` соединяет все это с БД. + +Главные слабые места сейчас: + +- смешение ролей `bot` и `parser`; +- отсутствие миграций; +- слишком крупные файлы `shared/repositories.py` и `api/services/legal_ai.py`; +- отсутствие автоматических тестов. + +Для новичка проект уже читаемый, но поддерживать его дальше будет проще после разделения больших модулей на более мелкие. diff --git a/api/.env.example b/api/.env.example new file mode 100644 index 0000000..0ecb2cf --- /dev/null +++ b/api/.env.example @@ -0,0 +1,35 @@ +# OpenRouter endpoint and API key for LLM calls +OPENAI_BASE_URL=https://openrouter.ai/api/v1 +OPENAI_API_KEY=sk-or-v1-replace_me + +# Main LLM used for classification and final answer generation +LLM_MODEL=openai/gpt-4.1-mini + +# Local embedding model for Chroma indexing/search +EMBEDDING_MODEL=deepvk/USER2-small +EMBEDDING_DEVICE=cpu + +# Chroma connection settings +CHROMA_HOST=chromadb +CHROMA_PORT=8000 +CHROMA_COLLECTION=law_chunks +CHROMA_SSL=false + +# Retrieval settings +RAG_TOP_K=5 +FTS_TOP_K=20 +VECTOR_TOP_K=20 +INDEX_BATCH_SIZE=16 +LLM_TIMEOUT_SECONDS=90 + +# FastAPI bind settings +API_HOST=0.0.0.0 +API_PORT=8080 +LOG_LEVEL=INFO + +# Background indexing on startup +AUTO_INDEX_ON_STARTUP=true +AUTO_INDEX_ONLY_IF_EMPTY=true +AUTO_INDEX_RESET_COLLECTION=false +AUTO_INDEX_RETRY_DELAY_SECONDS=15 +AUTO_INDEX_MAX_ATTEMPTS=20 diff --git a/api/Dockerfile b/api/Dockerfile new file mode 100644 index 0000000..8acb269 --- /dev/null +++ b/api/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.12-slim + +WORKDIR /app + +ENV PYTHONPATH=/app +ENV HF_HOME=/root/.cache/huggingface +ENV CUDA_VISIBLE_DEVICES="" + +COPY api/requirements.txt /app/api-requirements.txt + +RUN pip install --no-cache-dir --extra-index-url https://download.pytorch.org/whl/cpu torch==2.7.0 && \ + pip install --no-cache-dir -r /app/api-requirements.txt + +COPY . /app + +CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8080"] diff --git a/api/__init__.py b/api/__init__.py new file mode 100644 index 0000000..bd45c89 --- /dev/null +++ b/api/__init__.py @@ -0,0 +1 @@ +"""FastAPI RAG service package.""" diff --git a/api/clients/__init__.py b/api/clients/__init__.py new file mode 100644 index 0000000..60d4a88 --- /dev/null +++ b/api/clients/__init__.py @@ -0,0 +1 @@ +"""API clients.""" diff --git a/api/clients/chroma_store.py b/api/clients/chroma_store.py new file mode 100644 index 0000000..8e308fc --- /dev/null +++ b/api/clients/chroma_store.py @@ -0,0 +1,88 @@ +from __future__ import annotations + +import logging +from typing import Any + +import chromadb +from chromadb.config import Settings as ChromaSettings + +from api.config import settings + + +logger = logging.getLogger(__name__) + + +class ChromaVectorStore: + def __init__(self) -> None: + self._client = chromadb.HttpClient( + host=settings.chroma_host, + port=settings.chroma_port, + ssl=settings.chroma_ssl, + settings=ChromaSettings(anonymized_telemetry=False), + ) + self._collection_name = settings.chroma_collection + logger.info( + "Chroma client configured: host=%s port=%s collection=%s ssl=%s", + settings.chroma_host, + settings.chroma_port, + self._collection_name, + settings.chroma_ssl, + ) + + @property + def collection_name(self) -> str: + return self._collection_name + + def get_collection(self): + return self._client.get_or_create_collection( + name=self._collection_name, + metadata={"hnsw:space": "cosine"}, + ) + + def count(self) -> int: + return int(self.get_collection().count()) + + def reset_collection(self) -> None: + logger.warning("Resetting Chroma collection: %s", self._collection_name) + try: + self._client.delete_collection(self._collection_name) + except Exception: + logger.exception( + "Could not delete Chroma collection before reset, continuing with create_collection" + ) + self.get_collection() + + def upsert( + self, + ids: list[str], + documents: list[str], + embeddings: list[list[float]], + metadatas: list[dict[str, Any]], + ) -> None: + logger.info( + "Upserting %s embeddings into Chroma collection=%s", + len(ids), + self._collection_name, + ) + self.get_collection().upsert( + ids=ids, + documents=documents, + embeddings=embeddings, + metadatas=metadatas, + ) + + def query( + self, + query_embeddings: list[list[float]], + n_results: int, + ) -> dict[str, Any]: + logger.info( + "Running vector query against collection=%s n_results=%s", + self._collection_name, + n_results, + ) + return self.get_collection().query( + query_embeddings=query_embeddings, + n_results=n_results, + include=["distances", "metadatas", "documents"], + ) diff --git a/api/clients/openrouter_client.py b/api/clients/openrouter_client.py new file mode 100644 index 0000000..0ba4809 --- /dev/null +++ b/api/clients/openrouter_client.py @@ -0,0 +1,13 @@ +from __future__ import annotations + +from openai import AsyncOpenAI + +from api.config import settings + + +def build_openai_client() -> AsyncOpenAI: + return AsyncOpenAI( + api_key=settings.openai_api_key, + base_url=settings.openai_base_url, + timeout=settings.llm_timeout_seconds, + ) diff --git a/api/config.py b/api/config.py new file mode 100644 index 0000000..90afaf3 --- /dev/null +++ b/api/config.py @@ -0,0 +1,50 @@ +from __future__ import annotations + +from dataclasses import dataclass + +from decouple import config + + +def _to_bool(value: str) -> bool: + return value.strip().lower() in {"1", "true", "yes", "on"} + + +@dataclass(frozen=True) +class Settings: + app_host: str = config("API_HOST", default="0.0.0.0") + app_port: int = config("API_PORT", cast=int, default=8080) + openai_base_url: str = config( + "OPENAI_BASE_URL", default="https://openrouter.ai/api/v1" + ) + openai_api_key: str = config("OPENAI_API_KEY", default="") + llm_model: str = config("LLM_MODEL", default="openai/gpt-4.1-mini") + embedding_model: str = config( + "EMBEDDING_MODEL", default="deepvk/USER2-small" + ) + embedding_device: str = config("EMBEDDING_DEVICE", default="cpu") + chroma_host: str = config("CHROMA_HOST", default="chromadb") + chroma_port: int = config("CHROMA_PORT", cast=int, default=8000) + chroma_collection: str = config("CHROMA_COLLECTION", default="law_chunks") + chroma_ssl: bool = _to_bool(config("CHROMA_SSL", default="false")) + rag_top_k: int = config("RAG_TOP_K", cast=int, default=5) + fts_top_k: int = config("FTS_TOP_K", cast=int, default=20) + vector_top_k: int = config("VECTOR_TOP_K", cast=int, default=20) + index_batch_size: int = config("INDEX_BATCH_SIZE", cast=int, default=32) + llm_timeout_seconds: int = config("LLM_TIMEOUT_SECONDS", cast=int, default=90) + log_level: str = config("LOG_LEVEL", default="INFO") + auto_index_on_startup: bool = _to_bool(config("AUTO_INDEX_ON_STARTUP", default="true")) + auto_index_only_if_empty: bool = _to_bool( + config("AUTO_INDEX_ONLY_IF_EMPTY", default="true") + ) + auto_index_reset_collection: bool = _to_bool( + config("AUTO_INDEX_RESET_COLLECTION", default="false") + ) + auto_index_retry_delay_seconds: int = config( + "AUTO_INDEX_RETRY_DELAY_SECONDS", cast=int, default=15 + ) + auto_index_max_attempts: int = config( + "AUTO_INDEX_MAX_ATTEMPTS", cast=int, default=20 + ) + + +settings = Settings() diff --git a/api/deps.py b/api/deps.py new file mode 100644 index 0000000..59cea6e --- /dev/null +++ b/api/deps.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +from functools import lru_cache + +from api.clients.chroma_store import ChromaVectorStore +from api.clients.openrouter_client import build_openai_client +from api.config import settings +from api.services.indexing import IndexingService +from api.services.legal_ai import LegalAIService +from api.services.local_embeddings import get_embedding_service +from api.services.retrieval import HybridRetrievalService +from shared import ORM + + +@lru_cache(maxsize=1) +def get_orm() -> ORM: + return ORM() + + +@lru_cache(maxsize=1) +def get_vector_store() -> ChromaVectorStore: + return ChromaVectorStore() + + +@lru_cache(maxsize=1) +def get_ai_service() -> LegalAIService: + return LegalAIService(build_openai_client(), settings.llm_model) + + +@lru_cache(maxsize=1) +def get_retrieval_service() -> HybridRetrievalService: + return HybridRetrievalService( + orm=get_orm(), + embedder=get_embedding_service(), + vector_store=get_vector_store(), + ) + + +@lru_cache(maxsize=1) +def get_indexing_service() -> IndexingService: + return IndexingService( + orm=get_orm(), + embedder=get_embedding_service(), + vector_store=get_vector_store(), + ) diff --git a/api/logging.py b/api/logging.py new file mode 100644 index 0000000..b0162e1 --- /dev/null +++ b/api/logging.py @@ -0,0 +1,24 @@ +from __future__ import annotations + +import logging + +from api.config import settings + + +def configure_logging() -> None: + logging.basicConfig( + level=getattr(logging, settings.log_level.upper(), logging.INFO), + format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", + ) + + logging.getLogger("httpx").setLevel(logging.WARNING) + logging.getLogger("chromadb").setLevel(logging.INFO) + for logger_name in ( + "chromadb.telemetry", + "chromadb.telemetry.product", + "chromadb.telemetry.product.posthog", + ): + noisy_logger = logging.getLogger(logger_name) + noisy_logger.setLevel(logging.CRITICAL) + noisy_logger.propagate = False + noisy_logger.disabled = True diff --git a/api/main.py b/api/main.py new file mode 100644 index 0000000..ebbca20 --- /dev/null +++ b/api/main.py @@ -0,0 +1,148 @@ +from __future__ import annotations + +import asyncio +from contextlib import asynccontextmanager +import logging +from time import perf_counter + +from fastapi import FastAPI, Request + +from api.config import settings +from api.deps import get_indexing_service, get_orm, get_vector_store +from api.logging import configure_logging +from api.routers.health import router as health_router +from api.routers.indexing import router as indexing_router +from api.routers.rag import router as rag_router + + +configure_logging() +logger = logging.getLogger(__name__) + + +async def run_startup_indexing_task() -> None: + if not settings.auto_index_on_startup: + logger.info("Startup auto-index is disabled") + return + + indexing_service = get_indexing_service() + vector_store = get_vector_store() + + for attempt in range(1, settings.auto_index_max_attempts + 1): + try: + current_count = vector_store.count() + db_chunk_count = await indexing_service.get_indexable_chunks_count() + should_reset_collection = settings.auto_index_reset_collection + + logger.info( + "Startup auto-index check: attempt=%s/%s chroma_count=%s postgres_chunks=%s", + attempt, + settings.auto_index_max_attempts, + current_count, + db_chunk_count, + ) + + if db_chunk_count == 0: + logger.warning( + "No indexable chunks found in Postgres yet, retrying in %ss", + settings.auto_index_retry_delay_seconds, + ) + await asyncio.sleep(settings.auto_index_retry_delay_seconds) + continue + + if settings.auto_index_only_if_empty and current_count == db_chunk_count and current_count > 0: + logger.info( + "Skipping startup auto-index because Chroma is already in sync with Postgres: %s items", + current_count, + ) + return + + if current_count not in {0, db_chunk_count}: + should_reset_collection = True + logger.warning( + "Chroma/Postgres count mismatch detected, forcing collection reset: chroma_count=%s postgres_chunks=%s", + current_count, + db_chunk_count, + ) + + result = await indexing_service.rebuild( + reset_collection=should_reset_collection, + ) + logger.info("Startup auto-index completed successfully: %s", result) + return + except asyncio.CancelledError: + logger.info("Startup auto-index task cancelled") + raise + except Exception: + logger.exception( + "Startup auto-index attempt %s/%s failed", + attempt, + settings.auto_index_max_attempts, + ) + await asyncio.sleep(settings.auto_index_retry_delay_seconds) + + logger.error( + "Startup auto-index exhausted all %s attempts", + settings.auto_index_max_attempts, + ) + + +@asynccontextmanager +async def lifespan(app: FastAPI): + orm = get_orm() + startup_index_task: asyncio.Task | None = None + + logger.info("API startup initiated") + await orm.init_schema() + logger.info("Database schema is ready") + + startup_index_task = asyncio.create_task(run_startup_indexing_task()) + app.state.startup_index_task = startup_index_task + yield + if startup_index_task is not None and not startup_index_task.done(): + startup_index_task.cancel() + try: + await startup_index_task + except asyncio.CancelledError: + pass + await orm.close() + logger.info("API shutdown completed") + + +app = FastAPI(title="LawBot RAG API", version="0.1.0", lifespan=lifespan) + + +@app.middleware("http") +async def log_requests(request: Request, call_next): + started_at = perf_counter() + logger.info( + "HTTP request started: method=%s path=%s client=%s", + request.method, + request.url.path, + request.client.host if request.client else "unknown", + ) + try: + response = await call_next(request) + except Exception: + duration_ms = round((perf_counter() - started_at) * 1000, 2) + logger.exception( + "HTTP request failed: method=%s path=%s duration_ms=%s", + request.method, + request.url.path, + duration_ms, + ) + raise + + duration_ms = round((perf_counter() - started_at) * 1000, 2) + logger.info( + "HTTP request completed: method=%s path=%s status=%s duration_ms=%s", + request.method, + request.url.path, + response.status_code, + duration_ms, + ) + return response + + +app.include_router(health_router) +app.include_router(indexing_router) +app.include_router(rag_router) diff --git a/api/prompts/__init__.py b/api/prompts/__init__.py new file mode 100644 index 0000000..d7a950c --- /dev/null +++ b/api/prompts/__init__.py @@ -0,0 +1 @@ +"""Prompt templates for the RAG API.""" diff --git a/api/prompts/rag_prompts.py b/api/prompts/rag_prompts.py new file mode 100644 index 0000000..73a4737 --- /dev/null +++ b/api/prompts/rag_prompts.py @@ -0,0 +1,91 @@ +CLASSIFIER_PROMPT = """Ты классификатор юридических вопросов по законам РФ. + +Верни только JSON без markdown. + +Поля: +- legal_domain +- issue_type +- jurisdiction +- region +- needs_clarification +- clarification_questions +- search_queries +- filters + +Правила: +1. jurisdiction всегда RU. +2. Если данных недостаточно, needs_clarification = true. +3. search_queries должны быть пригодны для поиска по базе законов. +4. Не придумывай статьи. +5. Не давай юридический ответ на этом этапе. +6. filters.law_type заполняй только реальными доменами права, если уверен. +""" + + +ANSWER_PROMPT = """Ты юридический ИИ-консультант по законам РФ. + +Твоя задача — подготовить структурированный ответ пользователю простым языком только на основании переданных норм закона. + +Жесткие правила: +1. Используй только переданные фрагменты законов. +2. Не придумывай статьи, номера законов, судебную практику и сроки. +3. Если источников недостаточно, прямо скажи об этом. +4. Не обещай победу в суде. +5. Не выдавай себя за адвоката. +6. Не помогай обходить закон. +7. В конце добавь дисклеймер. +8. Не используй markdown, символы **, __, #, списки через `-` и другое markdown-оформление. +9. Пиши обычным текстом. Для акцентов используй короткие заголовки и нумерованные пункты. +10. Никогда не используй слова SOURCES, source, chunk, retrieval, база, векторный поиск, фрагменты, контекст. +11. Нельзя писать фразы вроде: "в ваших SOURCES", "по этим источникам", "на основании этих источников", "в базе нет", "в контексте нет". +12. Если данных не хватает, говори только по-человечески, например: "По тем нормам, которые удалось найти, прямого ответа на этот нюанс нет" или "В найденных нормах этот частный вопрос прямо не раскрыт". +13. Верни только JSON без markdown и без пояснений. + +JSON schema: +{ + "short_conclusion": "краткий вывод в 1-3 предложениях", + "legal_points": ["ключевая норма 1", "ключевая норма 2"], + "action_steps": ["практический шаг 1", "практический шаг 2"], + "risks": ["риск или ограничение 1", "риск или ограничение 2"] +} +""" + + +FOLLOW_UP_ANSWER_PROMPT = """Ты юридический ИИ-консультант по законам РФ. + +Твоя задача — продолжить уже начатую консультацию и ответить пользователю простым, живым и естественным языком только на основании переданных норм закона. + +Жесткие правила: +1. Используй только переданные нормы закона. +2. Учитывай историю консультации и отвечай именно на последний вопрос пользователя. +3. Не придумывай статьи, номера законов, судебную практику и сроки. +4. Если источников недостаточно, прямо скажи об этом. +5. Не обещай победу в суде. +6. Не выдавай себя за адвоката. +7. Не помогай обходить закон. +8. Не используй markdown и символы **, __, #, списки через `-`. +9. Не используй жесткий шаблон с разделами, если вопрос этого не требует. +10. Если уместно, можешь дать короткий пошаговый план. +11. В конце кратко укажи, на какие нормы ты опираешься, и добавь дисклеймер. +12. Никогда не используй слова SOURCES, source, chunk, retrieval, база, векторный поиск, фрагменты, контекст. +13. Нельзя писать фразы вроде: "в ваших SOURCES", "по этим источникам", "на основании этих источников", "в базе нет", "в контексте нет". +14. Если данных не хватает, формулируй это только естественным языком без упоминания внутренней кухни системы. + +Формат ответа: +- свободный, разговорный, но деловой и понятный; +- без лишней воды; +- можно использовать короткие абзацы и списки; +- если вопрос уточняющий, отвечай прямо на него, а не повторяй всю предыдущую структуру заново. +""" + + +CONSULTATION_TITLE_PROMPT = """Ты помогаешь придумать короткий заголовок для юридической консультации. + +Правила: +1. Верни только сам заголовок без кавычек, markdown и пояснений. +2. Заголовок должен быть коротким: 3-8 слов, максимум 70 символов. +3. Заголовок должен ясно отражать суть проблемы пользователя. +4. Не используй даты, обращения, вводные слова и канцеляризмы. +5. Не ставь точку в конце. +6. Пиши по-русски. +""" diff --git a/api/requirements.txt b/api/requirements.txt new file mode 100644 index 0000000..d4378b3 --- /dev/null +++ b/api/requirements.txt @@ -0,0 +1,9 @@ +fastapi==0.115.9 +uvicorn==0.34.2 +openai==1.82.0 +chromadb==1.0.12 +python-decouple==3.8 +SQLAlchemy==2.0.38 +asyncpg==0.30.0 +pydantic==2.10.6 +sentence-transformers==5.1.2 diff --git a/api/routers/__init__.py b/api/routers/__init__.py new file mode 100644 index 0000000..c5cfac8 --- /dev/null +++ b/api/routers/__init__.py @@ -0,0 +1 @@ +"""FastAPI routers.""" diff --git a/api/routers/health.py b/api/routers/health.py new file mode 100644 index 0000000..bde6cec --- /dev/null +++ b/api/routers/health.py @@ -0,0 +1,15 @@ +import logging + +from fastapi import APIRouter + +from api.schemas import HealthResponse + + +router = APIRouter(tags=["health"]) +logger = logging.getLogger(__name__) + + +@router.get("/health", response_model=HealthResponse) +async def healthcheck() -> HealthResponse: + logger.debug("Healthcheck request") + return HealthResponse(status="ok") diff --git a/api/routers/indexing.py b/api/routers/indexing.py new file mode 100644 index 0000000..615b0b9 --- /dev/null +++ b/api/routers/indexing.py @@ -0,0 +1,19 @@ +from fastapi import APIRouter + +from api.deps import get_indexing_service +from api.schemas import IndexRequest, IndexResponse + + +router = APIRouter(prefix="/api/v1/index", tags=["index"]) + + +@router.post("/rebuild", response_model=IndexResponse) +async def rebuild_index(payload: IndexRequest) -> IndexResponse: + service = get_indexing_service() + result = await service.rebuild( + source_ids=payload.source_ids, + law_types=payload.law_types, + reset_collection=payload.reset_collection, + batch_size=payload.batch_size, + ) + return IndexResponse(**result) diff --git a/api/routers/rag.py b/api/routers/rag.py new file mode 100644 index 0000000..b747c39 --- /dev/null +++ b/api/routers/rag.py @@ -0,0 +1,185 @@ +import logging + +from fastapi import APIRouter, HTTPException + +from api.deps import get_ai_service, get_orm, get_retrieval_service +from api.schemas import ( + AnswerRequest, + AnswerResponse, + ClassificationResult, + RetrievedChunk, + SearchRequest, + SearchResponse, +) +from api.services.legal_ai import build_fallback_title, infer_law_types + + +router = APIRouter(prefix="/api/v1/rag", tags=["rag"]) +logger = logging.getLogger(__name__) + + +@router.post("/search", response_model=SearchResponse) +async def search(payload: SearchRequest) -> SearchResponse: + logger.info( + "RAG search request: category=%s region=%s top_k=%s question_length=%s", + payload.category, + payload.region, + payload.top_k, + len(payload.question), + ) + ai_service = get_ai_service() + retrieval = get_retrieval_service() + + try: + classification = await ai_service.classify( + question=payload.question, + category=payload.category, + region=payload.region, + user_type=payload.user_type, + history=payload.history, + ) + chunks = await retrieval.retrieve( + classification=classification, + fallback_law_types=payload.law_types or infer_law_types(payload.category), + top_k=payload.top_k, + ) + except RuntimeError as exc: + logger.exception("RAG search failed") + raise HTTPException(status_code=502, detail=str(exc)) from exc + return SearchResponse( + classification=classification, + generated_queries=classification.search_queries, + retrieved_chunks=[RetrievedChunk(**chunk) for chunk in chunks], + ) + + +@router.post("/answer", response_model=AnswerResponse) +async def answer(payload: AnswerRequest) -> AnswerResponse: + logger.info( + "RAG answer request: user_id=%s consultation_id=%s save_history=%s category=%s region=%s top_k=%s question_length=%s", + payload.user_id, + payload.consultation_id, + payload.save_history, + payload.category, + payload.region, + payload.top_k, + len(payload.question), + ) + ai_service = get_ai_service() + retrieval = get_retrieval_service() + orm = get_orm() + + try: + classification = await ai_service.classify( + question=payload.question, + category=payload.category, + region=payload.region, + user_type=payload.user_type, + history=payload.history, + ) + chunks = await retrieval.retrieve( + classification=classification, + fallback_law_types=payload.law_types or infer_law_types(payload.category), + top_k=payload.top_k, + ) + except RuntimeError as exc: + logger.exception("RAG answer failed on classification/retrieval stage") + raise HTTPException(status_code=502, detail=str(exc)) from exc + if not chunks: + logger.warning("RAG answer request returned no reliable chunks") + raise HTTPException( + status_code=404, + detail="No reliable law chunks were found for this question.", + ) + + try: + answer_text = await ai_service.answer( + question=payload.question, + category=payload.category, + region=payload.region, + user_type=payload.user_type, + history=payload.history, + sources=chunks, + ) + except RuntimeError as exc: + logger.exception("RAG answer failed on generation stage") + raise HTTPException(status_code=502, detail=str(exc)) from exc + + consultation_id = payload.consultation_id + user_message_id = None + assistant_message_id = None + + if payload.save_history: + if payload.user_id is None: + raise HTTPException( + status_code=400, + detail="user_id is required when save_history=true", + ) + user = await orm.get_user(payload.user_id) + if user is None: + raise HTTPException( + status_code=404, + detail="User was not found. Start the bot first so the profile is created.", + ) + + if consultation_id is not None: + consultation = await orm.get_consultation( + consultation_id=consultation_id, + user_id=payload.user_id, + ) + if consultation is None: + raise HTTPException( + status_code=404, + detail="Consultation was not found for this user.", + ) + + if consultation_id is None: + try: + consultation_title = await ai_service.generate_consultation_title( + question=payload.question, + category=payload.category or classification.legal_domain, + answer=answer_text, + ) + except RuntimeError: + logger.exception("Consultation title generation failed, using fallback title") + consultation_title = build_fallback_title(payload.question) + + consultation = await orm.create_consultation( + user_id=payload.user_id, + category=payload.category or classification.legal_domain, + title=consultation_title, + region=payload.region or classification.region, + ) + consultation_id = consultation.id + + user_message = await orm.create_message( + consultation_id=consultation_id, + role="user", + content=payload.question, + ) + user_message_id = user_message.id + + await orm.create_rag_query( + consultation_id=consultation_id, + user_message_id=user_message_id, + generated_queries=classification.search_queries, + retrieved_chunks=chunks, + ) + + assistant_message = await orm.create_message( + consultation_id=consultation_id, + role="assistant", + content=answer_text, + sources_json=chunks, + ) + assistant_message_id = assistant_message.id + + return AnswerResponse( + classification=classification, + generated_queries=classification.search_queries, + retrieved_chunks=[RetrievedChunk(**chunk) for chunk in chunks], + answer=answer_text, + consultation_id=consultation_id, + user_message_id=user_message_id, + assistant_message_id=assistant_message_id, + ) diff --git a/api/schemas.py b/api/schemas.py new file mode 100644 index 0000000..696bcd5 --- /dev/null +++ b/api/schemas.py @@ -0,0 +1,92 @@ +from __future__ import annotations + +from typing import Any + +from pydantic import BaseModel, Field + + +class HealthResponse(BaseModel): + status: str + + +class IndexRequest(BaseModel): + source_ids: list[int] | None = None + law_types: list[str] | None = None + reset_collection: bool = True + batch_size: int | None = None + + +class IndexResponse(BaseModel): + indexed_chunks: int + indexed_sources: int + collection_name: str + + +class SearchRequest(BaseModel): + question: str + category: str | None = None + region: str | None = None + user_type: str | None = None + history: list[dict[str, str]] = Field(default_factory=list) + law_types: list[str] | None = None + top_k: int = 5 + + +class RetrievedChunk(BaseModel): + chunk_id: int + source_id: int + source_title: str + source_url: str | None = None + law_type: str | None = None + article_number: str | None = None + article_title: str | None = None + chunk_text: str + metadata: dict[str, Any] = Field(default_factory=dict) + score: float + + +class ClassificationResult(BaseModel): + legal_domain: str + issue_type: str + jurisdiction: str = "RU" + region: str | None = None + needs_clarification: bool = False + clarification_questions: list[str] = Field(default_factory=list) + search_queries: list[str] = Field(default_factory=list) + filters: dict[str, Any] = Field(default_factory=dict) + + +class StructuredInitialAnswer(BaseModel): + short_conclusion: str + legal_points: list[str] = Field(default_factory=list) + action_steps: list[str] = Field(default_factory=list) + risks: list[str] = Field(default_factory=list) + + +class SearchResponse(BaseModel): + classification: ClassificationResult + generated_queries: list[str] + retrieved_chunks: list[RetrievedChunk] + + +class AnswerRequest(BaseModel): + user_id: int | None = None + consultation_id: int | None = None + save_history: bool = False + question: str + category: str | None = None + region: str | None = None + user_type: str | None = None + history: list[dict[str, str]] = Field(default_factory=list) + law_types: list[str] | None = None + top_k: int = 5 + + +class AnswerResponse(BaseModel): + classification: ClassificationResult + generated_queries: list[str] + retrieved_chunks: list[RetrievedChunk] + answer: str + consultation_id: int | None = None + user_message_id: int | None = None + assistant_message_id: int | None = None diff --git a/api/services/__init__.py b/api/services/__init__.py new file mode 100644 index 0000000..0f8e8cd --- /dev/null +++ b/api/services/__init__.py @@ -0,0 +1 @@ +"""Service layer for the RAG API.""" diff --git a/api/services/indexing.py b/api/services/indexing.py new file mode 100644 index 0000000..10f2eba --- /dev/null +++ b/api/services/indexing.py @@ -0,0 +1,126 @@ +from __future__ import annotations + +import logging + +from fastapi.concurrency import run_in_threadpool + +from api.clients.chroma_store import ChromaVectorStore +from api.config import settings +from api.services.local_embeddings import LocalEmbeddingService +from shared import ORM + + +logger = logging.getLogger(__name__) + + +def build_embedding_text(chunk: dict) -> str: + article_title = chunk.get("article_title") or "" + source_title = chunk.get("source_title") or "" + return "\n".join( + part + for part in [ + f"source: {source_title}", + f"article: {article_title}", + f"text: {chunk['chunk_text']}", + ] + if part.strip() + ) + + +class IndexingService: + def __init__( + self, + orm: ORM, + embedder: LocalEmbeddingService, + vector_store: ChromaVectorStore, + ) -> None: + self.orm = orm + self.embedder = embedder + self.vector_store = vector_store + + async def get_indexable_chunks_count( + self, + source_ids: list[int] | None = None, + law_types: list[str] | None = None, + ) -> int: + chunks = await self.orm.list_chunks_for_indexing( + source_ids=source_ids, + law_types=law_types, + active_only=True, + ) + return len(chunks) + + async def rebuild( + self, + source_ids: list[int] | None = None, + law_types: list[str] | None = None, + reset_collection: bool = True, + batch_size: int | None = None, + ) -> dict: + logger.info( + "Index rebuild started: reset_collection=%s source_ids=%s law_types=%s", + reset_collection, + source_ids, + law_types, + ) + chunks = await self.orm.list_chunks_for_indexing( + source_ids=source_ids, + law_types=law_types, + active_only=True, + ) + logger.info("Loaded %s chunks from Postgres for indexing", len(chunks)) + if reset_collection: + await run_in_threadpool(self.vector_store.reset_collection) + + batch_size = batch_size or settings.index_batch_size + indexed_chunks = 0 + indexed_sources = len({chunk["source_id"] for chunk in chunks}) + + for start in range(0, len(chunks), batch_size): + batch = chunks[start : start + batch_size] + batch_number = (start // batch_size) + 1 + total_batches = max(1, (len(chunks) + batch_size - 1) // batch_size) + logger.info( + "Indexing batch %s/%s with %s chunks", + batch_number, + total_batches, + len(batch), + ) + embeddings = await run_in_threadpool( + self.embedder.encode_documents, + [build_embedding_text(chunk) for chunk in batch], + ) + await run_in_threadpool( + self.vector_store.upsert, + [str(chunk["chunk_id"]) for chunk in batch], + [chunk["chunk_text"] for chunk in batch], + embeddings, + [ + { + "chunk_id": chunk["chunk_id"], + "source_id": chunk["source_id"], + "source_title": chunk["source_title"], + "source_url": chunk["source_url"], + "law_type": chunk["law_type"] or "", + "jurisdiction": chunk["jurisdiction"], + "article_number": chunk["article_number"] or "", + "article_title": chunk["article_title"] or "", + "version_hash": chunk["version_hash"], + } + for chunk in batch + ], + ) + indexed_chunks += len(batch) + logger.info( + "Indexed %s/%s chunks into Chroma", + indexed_chunks, + len(chunks), + ) + + result = { + "indexed_chunks": indexed_chunks, + "indexed_sources": indexed_sources, + "collection_name": self.vector_store.collection_name, + } + logger.info("Index rebuild completed: %s", result) + return result diff --git a/api/services/legal_ai.py b/api/services/legal_ai.py new file mode 100644 index 0000000..c9a0111 --- /dev/null +++ b/api/services/legal_ai.py @@ -0,0 +1,724 @@ +from __future__ import annotations + +import json +import logging +import re + +from openai import AsyncOpenAI + +from api.prompts.rag_prompts import ( + ANSWER_PROMPT, + CLASSIFIER_PROMPT, + CONSULTATION_TITLE_PROMPT, + FOLLOW_UP_ANSWER_PROMPT, +) +from api.schemas import ClassificationResult, StructuredInitialAnswer + + +logger = logging.getLogger(__name__) + + +CATEGORY_MAP = { + "работа": ["labor"], + "труд": ["labor"], + "защита прав потребителей": ["consumer", "civil"], + "потребител": ["consumer", "civil"], + "жилье": ["housing", "civil", "mortgage"], + "аренда": ["housing", "civil"], + "семья": ["family"], + "долги": ["civil", "enforcement"], + "займы": ["civil"], + "договоры": ["civil"], + "договор": ["civil"], + "суд": ["procedural"], + "процесс": ["procedural"], + "административ": ["administrative"], + "уголов": ["criminal"], + "краж": ["criminal"], + "мошеннич": ["criminal"], +} + +LAW_TYPE_ALIASES = { + "labor": "labor", + "труд": "labor", + "трудовое право": "labor", + "criminal": "criminal", + "уголов": "criminal", + "civil": "civil", + "граждан": "civil", + "договор": "civil", + "consumer": "consumer", + "защита прав потребителей": "consumer", + "потребител": "consumer", + "housing": "housing", + "жилищ": "housing", + "аренда": "housing", + "family": "family", + "семейн": "family", + "procedural": "procedural", + "процесс": "procedural", + "суд": "procedural", + "administrative": "administrative", + "административ": "administrative", + "enforcement": "enforcement", + "исполнительн": "enforcement", + "mortgage": "mortgage", + "ипотек": "mortgage", +} + + +INITIAL_ANSWER_RESPONSE_FORMAT = { + "type": "json_schema", + "json_schema": { + "name": "lawbot_initial_answer", + "strict": True, + "schema": { + "type": "object", + "additionalProperties": False, + "properties": { + "short_conclusion": {"type": "string"}, + "legal_points": { + "type": "array", + "items": {"type": "string"}, + }, + "action_steps": { + "type": "array", + "items": {"type": "string"}, + }, + "risks": { + "type": "array", + "items": {"type": "string"}, + }, + }, + "required": [ + "short_conclusion", + "legal_points", + "action_steps", + "risks", + ], + }, + }, +} + + +CLASSIFIER_RESPONSE_FORMAT = { + "type": "json_schema", + "json_schema": { + "name": "lawbot_classifier", + "strict": True, + "schema": { + "type": "object", + "additionalProperties": False, + "properties": { + "legal_domain": {"type": "string"}, + "issue_type": {"type": "string"}, + "jurisdiction": {"type": "string"}, + "region": { + "type": ["string", "null"], + }, + "needs_clarification": {"type": "boolean"}, + "clarification_questions": { + "type": "array", + "items": {"type": "string"}, + }, + "search_queries": { + "type": "array", + "items": {"type": "string"}, + }, + "filters": { + "type": "object", + "additionalProperties": False, + "properties": { + "law_type": { + "type": ["array", "null"], + "items": {"type": "string"}, + }, + }, + }, + }, + "required": [ + "legal_domain", + "issue_type", + "jurisdiction", + "region", + "needs_clarification", + "clarification_questions", + "search_queries", + "filters", + ], + }, + }, +} + + +def extract_json(content: str, purpose: str = "response") -> dict: + try: + return json.loads(content) + except json.JSONDecodeError: + match = re.search(r"\{.*\}", content, re.S) + if not match: + logger.error("LLM %s returned non-JSON content: %s", purpose, content) + raise RuntimeError(f"LLM {purpose} returned invalid JSON.") + try: + return json.loads(match.group(0)) + except json.JSONDecodeError as exc: + logger.error("LLM %s returned malformed JSON fragment: %s", purpose, content) + raise RuntimeError(f"LLM {purpose} returned malformed JSON.") from exc + + +def looks_like_llm_refusal(content: str) -> bool: + normalized = " ".join(content.lower().split()) + refusal_markers = ( + "i cannot assist", + "i can't assist", + "i cannot help", + "i'm sorry, but i cannot", + "не могу помочь с этим", + "не могу помочь в этом", + "не могу содействовать", + "не могу помочь с запросом", + "не могу ответить на этот запрос", + ) + return any(marker in normalized for marker in refusal_markers) + + +def infer_law_types(category: str | None) -> list[str] | None: + if not category: + return None + + normalized = category.lower().strip() + for key, law_types in CATEGORY_MAP.items(): + if key in normalized: + return law_types + return None + + +def normalize_law_type_values(value) -> list[str] | None: + if value is None: + return None + + raw_values = value if isinstance(value, list) else [value] + normalized_values: list[str] = [] + + for raw_value in raw_values: + if not isinstance(raw_value, str): + continue + raw_normalized = raw_value.strip().lower() + for alias, code in LAW_TYPE_ALIASES.items(): + if alias in raw_normalized: + if code not in normalized_values: + normalized_values.append(code) + break + + return normalized_values or None + + +def extract_message_content(completion, purpose: str) -> str: + choices = getattr(completion, "choices", None) + if not choices: + logger.error( + "LLM %s returned empty choices: model=%s id=%s usage=%s raw=%s", + purpose, + getattr(completion, "model", None), + getattr(completion, "id", None), + getattr(completion, "usage", None), + completion, + ) + raise RuntimeError( + "LLM provider returned an empty response. Check OPENROUTER model name and provider response." + ) + + first_choice = choices[0] + message = getattr(first_choice, "message", None) + if message is None: + logger.error( + "LLM %s returned choice without message: model=%s id=%s choice=%s", + purpose, + getattr(completion, "model", None), + getattr(completion, "id", None), + first_choice, + ) + raise RuntimeError("LLM provider returned a malformed response without message.") + + content = getattr(message, "content", None) + if content is None: + logger.error( + "LLM %s returned empty message content: model=%s id=%s finish_reason=%s message=%s", + purpose, + getattr(completion, "model", None), + getattr(completion, "id", None), + getattr(first_choice, "finish_reason", None), + message, + ) + raise RuntimeError("LLM provider returned an empty message content.") + + return content + + +def build_fallback_title(question: str, limit: int = 70) -> str: + title = " ".join(question.strip().split()) + if not title: + return "Юридическая консультация" + title = title.rstrip(" .,!?:;") + if len(title) <= limit: + return title + trimmed = title[: limit - 1].rstrip(" .,!?:;") + return f"{trimmed}…" + + +def infer_primary_law_type(category: str | None, question: str) -> str: + inferred = infer_law_types(category) + if inferred: + return inferred[0] + + normalized_question = question.lower() + for key, law_types in CATEGORY_MAP.items(): + if key in normalized_question: + return law_types[0] + + return "other" + + +def sanitize_answer_text(answer: str) -> str: + sanitized = answer.strip() + replacements = ( + (r"(?i)\bSOURCES\b", "нормах закона"), + (r"(?i)\bsource\b", "нормах закона"), + (r"(?i)\bchunk(?:s)?\b", "нормах закона"), + (r"(?i)\bretrieval\b", "поиске норм"), + ( + r"(?i)в ваших нормах закона", + "в найденных нормах закона", + ), + ( + r"(?i)на основании этих источников", + "по найденным нормам закона", + ), + ( + r"(?i)по этим источникам", + "по найденным нормам закона", + ), + ( + r"(?i)в базе нет", + "прямого ответа в найденных нормах нет", + ), + ( + r"(?i)в контексте нет", + "в найденных нормах прямо не указано", + ), + ) + + for pattern, replacement in replacements: + sanitized = re.sub(pattern, replacement, sanitized) + + sanitized = re.sub(r"\s{2,}", " ", sanitized) + return sanitized.strip() + + +def format_numbered_lines(items: list[str]) -> str: + normalized = [" ".join(item.strip().split()) for item in items if item and item.strip()] + return "\n".join(f"{index}. {item}" for index, item in enumerate(normalized, start=1)) + + +def build_sources_section(sources: list[dict]) -> list[str]: + lines: list[str] = [] + seen: set[tuple[str, str, str]] = set() + + for source in sources: + title = str(source.get("source_title") or "").strip() + article_number = str(source.get("article_number") or "").strip() + article_title = str(source.get("article_title") or "").strip() + key = (title, article_number, article_title) + if not title or key in seen: + continue + seen.add(key) + + if article_number and article_title: + lines.append(f"{title}, ст. {article_number} — {article_title}") + elif article_number: + lines.append(f"{title}, ст. {article_number}") + else: + lines.append(title) + + if len(lines) >= 5: + break + + return lines + + +def render_structured_initial_answer( + payload: StructuredInitialAnswer, + sources: list[dict], +) -> str: + legal_points = payload.legal_points or ["В найденных нормах прямой ответ на вопрос не раскрыт."] + action_steps = payload.action_steps or ["Уточните обстоятельства и проверьте формулировку вопроса."] + risks = payload.risks or ["Ответ зависит от деталей ситуации и содержания применимых норм."] + source_lines = build_sources_section(sources) + if not source_lines: + source_lines = ["Подходящие нормы закона по этому вопросу автоматически не выделились."] + + parts = [ + "⚖️ Краткий вывод", + payload.short_conclusion.strip(), + "", + "📌 Что говорит закон", + format_numbered_lines(legal_points), + "", + "✅ Что можно сделать", + format_numbered_lines(action_steps), + "", + "⚠️ Риски и ограничения", + format_numbered_lines(risks), + "", + "📚 Найденные источники", + format_numbered_lines(source_lines), + "", + "❗ Важно", + "Ответ носит информационный характер и не заменяет консультацию юриста.", + ] + return "\n".join(parts).strip() + + +def first_sentence(text: str, limit: int = 220) -> str: + normalized = " ".join(text.split()) + normalized = re.sub(r"^\d+\s*\.\s*", "", normalized) + normalized = re.sub(r"\s+([,.;:!?])", r"\1", normalized) + if not normalized: + return "" + match = re.split(r"(?<=[.!?])\s+", normalized, maxsplit=1) + sentence = match[0].strip() + if len(sentence) <= limit: + return sentence + trimmed = sentence[: limit - 1].rstrip(" ,;:") + return f"{trimmed}…" + + +def build_structured_answer_fallback( + *, + question: str, + category: str | None, + sources: list[dict], +) -> StructuredInitialAnswer: + legal_points: list[str] = [] + for source in sources[:3]: + article_number = str(source.get("article_number") or "").strip() + article_title = str(source.get("article_title") or "").strip() + chunk_text = str(source.get("chunk_text") or "").strip() + summary = first_sentence(chunk_text) + + if article_number and article_title and summary: + legal_points.append(f"Статья {article_number} {article_title}: {summary}") + elif article_number and article_title: + legal_points.append(f"Статья {article_number} {article_title}.") + elif summary: + legal_points.append(summary) + + if not legal_points: + legal_points.append("В найденных нормах есть общие ориентиры, но прямой ответ зависит от деталей ситуации.") + + category_hint = (category or "").lower() + is_criminal = "уголов" in category_hint or any( + str(source.get("law_type") or "") == "criminal" for source in sources + ) + + if is_criminal: + short_conclusion = ( + "По найденным нормам возможна уголовная ответственность, " + "но точная квалификация и последствия зависят от обстоятельств дела." + ) + action_steps = [ + "Как можно быстрее обратитесь за очной помощью адвоката по уголовным делам.", + "Соберите и сохраните документы, повестки, протоколы и другие материалы, которые у вас уже есть.", + "Подготовьте точную хронологию событий, потому что для оценки важны обстоятельства и формулировка обвинения.", + ] + risks = [ + "Точная статья и возможное наказание зависят от обстоятельств, мотива, последствий и процессуального статуса.", + "Без изучения материалов дела нельзя надёжно оценить квалификацию и линию защиты.", + ] + else: + short_conclusion = ( + "По найденным нормам можно дать только общий ориентир; " + "точный вывод зависит от фактических обстоятельств вопроса." + ) + action_steps = [ + "Уточните ключевые обстоятельства и формулировку вопроса.", + "Соберите документы и доказательства, которые относятся к ситуации.", + "При необходимости получите очную консультацию профильного юриста.", + ] + risks = [ + "Ответ может измениться, если появятся новые существенные детали.", + "Без полного набора обстоятельств правовая оценка будет предварительной.", + ] + + return StructuredInitialAnswer( + short_conclusion=short_conclusion, + legal_points=legal_points, + action_steps=action_steps, + risks=risks, + ) + + +def build_classification_fallback( + *, + question: str, + category: str | None, + region: str | None, +) -> ClassificationResult: + primary_law_type = infer_primary_law_type(category, question) + filters = {"law_type": [primary_law_type]} if primary_law_type != "other" else {} + return ClassificationResult( + legal_domain=primary_law_type, + issue_type="general_question", + jurisdiction="RU", + region=region, + needs_clarification=False, + clarification_questions=[], + search_queries=[question], + filters=filters, + ) + + +class LegalAIService: + def __init__(self, client: AsyncOpenAI, llm_model: str) -> None: + self.client = client + self.llm_model = llm_model + + async def classify( + self, + question: str, + category: str | None, + region: str | None, + user_type: str | None = None, + history: list[dict[str, str]] | None = None, + ) -> ClassificationResult: + logger.info( + "LLM classification started: category=%s region=%s user_type=%s question_length=%s history_items=%s", + category, + region, + user_type, + len(question), + len(history or []), + ) + category_hint = category or "не указана" + region_hint = region or "не указан" + user_type_hint = user_type or "не указан" + history_lines = [] + for item in (history or [])[-6:]: + role = item.get("role", "user") + content = item.get("content", "") + history_lines.append(f"{role}: {content}") + history_text = "\n".join(history_lines) if history_lines else "нет" + + user_prompt = ( + f"Категория пользователя: {category_hint}\n" + f"Регион: {region_hint}\n" + f"Тип пользователя: {user_type_hint}\n" + f"История консультации:\n{history_text}\n" + f"Вопрос: {question}\n" + ) + try: + completion = await self.client.chat.completions.create( + model=self.llm_model, + temperature=0, + response_format=CLASSIFIER_RESPONSE_FORMAT, + messages=[ + {"role": "system", "content": CLASSIFIER_PROMPT}, + {"role": "user", "content": user_prompt}, + ], + ) + except Exception as exc: + logger.warning( + "LLM classification request with schema failed, using heuristic fallback: category=%s question=%s error=%s", + category, + question, + exc, + ) + return build_classification_fallback( + question=question, + category=category, + region=region, + ) + content = extract_message_content(completion, "classification") or "{}" + try: + payload = extract_json(content, "classification") + except RuntimeError: + logger.warning( + "LLM classification schema response was invalid, using heuristic fallback: category=%s question=%s", + category, + question, + ) + return build_classification_fallback( + question=question, + category=category, + region=region, + ) + search_queries = payload.get("search_queries") or [question] + filters = payload.get("filters") or {} + normalized_law_types = normalize_law_type_values(filters.get("law_type")) + if "law_type" in filters: + if normalized_law_types: + filters["law_type"] = normalized_law_types + else: + filters.pop("law_type", None) + fallback_law_types = infer_law_types(category) + if fallback_law_types and not filters.get("law_type"): + filters["law_type"] = fallback_law_types + + result = ClassificationResult( + legal_domain=payload.get("legal_domain", "other"), + issue_type=payload.get("issue_type", "general_question"), + jurisdiction=payload.get("jurisdiction", "RU"), + region=payload.get("region") or region, + needs_clarification=bool(payload.get("needs_clarification", False)), + clarification_questions=payload.get("clarification_questions", []), + search_queries=search_queries, + filters=filters, + ) + logger.info( + "LLM classification completed: legal_domain=%s issue_type=%s queries=%s needs_clarification=%s", + result.legal_domain, + result.issue_type, + result.search_queries, + result.needs_clarification, + ) + return result + + async def answer( + self, + question: str, + category: str | None, + region: str | None, + user_type: str | None, + history: list[dict[str, str]] | None, + sources: list[dict], + ) -> str: + logger.info( + "LLM answer generation started: category=%s region=%s user_type=%s sources=%s question_length=%s history_items=%s", + category, + region, + user_type, + len(sources), + len(question), + len(history or []), + ) + serialized_sources = json.dumps(sources, ensure_ascii=False, indent=2) + history_lines = [] + for item in (history or [])[-6:]: + role = item.get("role", "user") + content = item.get("content", "") + history_lines.append(f"{role}: {content}") + history_text = "\n".join(history_lines) if history_lines else "нет" + has_consultation_history = bool(history) + answer_prompt = FOLLOW_UP_ANSWER_PROMPT if has_consultation_history else ANSWER_PROMPT + + user_prompt = ( + f"Категория: {category or 'не указана'}\n" + f"Регион: {region or 'не указан'}\n" + f"Тип пользователя: {user_type or 'не указан'}\n" + f"История консультации:\n{history_text}\n" + f"Вопрос пользователя: {question}\n\n" + f"SOURCES:\n{serialized_sources}" + ) + try: + if has_consultation_history: + completion = await self.client.chat.completions.create( + model=self.llm_model, + temperature=0.2, + messages=[ + {"role": "system", "content": answer_prompt}, + {"role": "user", "content": user_prompt}, + ], + ) + else: + completion = await self.client.chat.completions.create( + model=self.llm_model, + temperature=0.2, + response_format=INITIAL_ANSWER_RESPONSE_FORMAT, + messages=[ + {"role": "system", "content": answer_prompt}, + {"role": "user", "content": user_prompt}, + ], + ) + except Exception as exc: + if has_consultation_history: + raise + logger.warning( + "LLM initial answer request with schema failed, using structured fallback: category=%s question=%s error=%s", + category, + question, + exc, + ) + structured_answer = build_structured_answer_fallback( + question=question, + category=category, + sources=sources, + ) + answer = render_structured_initial_answer(structured_answer, sources) + logger.info("LLM answer generation completed via fallback: answer_length=%s", len(answer)) + return answer + raw_answer = extract_message_content(completion, "answer").strip() + if has_consultation_history: + answer = sanitize_answer_text(raw_answer) + else: + if looks_like_llm_refusal(raw_answer): + logger.warning( + "LLM returned refusal for initial answer, using structured fallback: category=%s question=%s", + category, + question, + ) + structured_answer = build_structured_answer_fallback( + question=question, + category=category, + sources=sources, + ) + else: + try: + payload = extract_json(raw_answer, "answer") + structured_answer = StructuredInitialAnswer.model_validate(payload) + except (RuntimeError, ValueError) as exc: + logger.warning( + "LLM initial answer schema response was invalid, using structured fallback: category=%s question=%s error=%s", + category, + question, + exc, + ) + structured_answer = build_structured_answer_fallback( + question=question, + category=category, + sources=sources, + ) + answer = render_structured_initial_answer(structured_answer, sources) + logger.info("LLM answer generation completed: answer_length=%s", len(answer)) + return answer + + async def generate_consultation_title( + self, + *, + question: str, + category: str | None, + answer: str, + ) -> str: + logger.info( + "LLM consultation title generation started: category=%s question_length=%s answer_length=%s", + category, + len(question), + len(answer), + ) + user_prompt = ( + f"Категория: {category or 'не указана'}\n" + f"Вопрос пользователя: {question}\n" + f"Краткое содержание ответа:\n{answer[:1500]}" + ) + completion = await self.client.chat.completions.create( + model=self.llm_model, + temperature=0, + messages=[ + {"role": "system", "content": CONSULTATION_TITLE_PROMPT}, + {"role": "user", "content": user_prompt}, + ], + ) + content = extract_message_content(completion, "consultation_title") + title = " ".join(content.strip().split()).strip("\"' ") + title = build_fallback_title(title, limit=70) + logger.info("LLM consultation title generation completed: title=%s", title) + return title diff --git a/api/services/local_embeddings.py b/api/services/local_embeddings.py new file mode 100644 index 0000000..67a5619 --- /dev/null +++ b/api/services/local_embeddings.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +from functools import lru_cache +import logging + +from sentence_transformers import SentenceTransformer + +from api.config import settings + + +logger = logging.getLogger(__name__) + + +class LocalEmbeddingService: + def __init__(self) -> None: + logger.info( + "Loading embedding model: model=%s device=%s", + settings.embedding_model, + settings.embedding_device, + ) + self._model = SentenceTransformer( + settings.embedding_model, + device=settings.embedding_device, + ) + self._model.max_seq_length = 512 + logger.info( + "Embedding model loaded: model=%s max_seq_length=%s", + settings.embedding_model, + self._model.max_seq_length, + ) + + def encode_documents(self, texts: list[str]) -> list[list[float]]: + logger.info("Encoding document batch: size=%s", len(texts)) + return self._model.encode( + texts, + prompt_name="search_document", + normalize_embeddings=True, + convert_to_numpy=True, + batch_size=settings.index_batch_size, + show_progress_bar=False, + ).tolist() + + def encode_queries(self, texts: list[str]) -> list[list[float]]: + logger.info("Encoding query batch: size=%s", len(texts)) + return self._model.encode( + texts, + prompt_name="search_query", + normalize_embeddings=True, + convert_to_numpy=True, + batch_size=settings.index_batch_size, + show_progress_bar=False, + ).tolist() + + +@lru_cache(maxsize=1) +def get_embedding_service() -> LocalEmbeddingService: + return LocalEmbeddingService() diff --git a/api/services/retrieval.py b/api/services/retrieval.py new file mode 100644 index 0000000..5b76bdc --- /dev/null +++ b/api/services/retrieval.py @@ -0,0 +1,122 @@ +from __future__ import annotations + +import logging + +from fastapi.concurrency import run_in_threadpool + +from api.clients.chroma_store import ChromaVectorStore +from api.config import settings +from api.schemas import ClassificationResult +from api.services.local_embeddings import LocalEmbeddingService +from shared import ORM + + +logger = logging.getLogger(__name__) + + +def normalize_law_types_arg(value: list[str] | str | None) -> list[str] | None: + if value is None: + return None + if isinstance(value, str): + return [value] + normalized = [item for item in value if isinstance(item, str) and item.strip()] + return normalized or None + + +class HybridRetrievalService: + def __init__( + self, + orm: ORM, + embedder: LocalEmbeddingService, + vector_store: ChromaVectorStore, + ) -> None: + self.orm = orm + self.embedder = embedder + self.vector_store = vector_store + + async def retrieve( + self, + classification: ClassificationResult, + fallback_law_types: list[str] | None, + top_k: int, + ) -> list[dict]: + queries = classification.search_queries or [] + law_types = normalize_law_types_arg( + classification.filters.get("law_type") + or fallback_law_types + or None + ) + logger.info( + "Hybrid retrieval started: queries=%s law_types=%s jurisdiction=%s top_k=%s", + queries, + law_types, + classification.jurisdiction, + top_k, + ) + + merged_scores: dict[int, float] = {} + + for query in queries: + lexical_hits = await self.orm.search_law_chunks_full_text( + query=query, + law_types=law_types, + jurisdiction=classification.jurisdiction, + limit=settings.fts_top_k, + ) + logger.info("Full-text hits for query '%s': %s", query, len(lexical_hits)) + for rank, hit in enumerate(lexical_hits): + merged_scores[hit["chunk_id"]] = merged_scores.get(hit["chunk_id"], 0.0) + ( + 1.2 / (rank + 1) + ) + + query_embedding = await run_in_threadpool( + self.embedder.encode_queries, + [query], + ) + vector_hits = await run_in_threadpool( + self.vector_store.query, + query_embedding, + settings.vector_top_k, + ) + ids = vector_hits.get("ids", [[]])[0] + distances = vector_hits.get("distances", [[]])[0] + metadatas = vector_hits.get("metadatas", [[]])[0] + logger.info("Vector hits for query '%s': %s", query, len(ids)) + + for rank, (chunk_id, distance, metadata) in enumerate( + zip(ids, distances, metadatas) + ): + if law_types and metadata.get("law_type") not in law_types: + continue + score = 1.0 / (rank + 1) + score += max(0.0, 1.0 - float(distance or 1.0)) + merged_scores[int(chunk_id)] = merged_scores.get(int(chunk_id), 0.0) + score + + ranked_ids = [ + chunk_id + for chunk_id, _ in sorted( + merged_scores.items(), + key=lambda item: item[1], + reverse=True, + ) + ][: max(top_k * 3, top_k)] + + rows = await self.orm.get_law_chunks_with_sources_by_ids( + ranked_ids, + law_types=law_types, + jurisdiction=classification.jurisdiction, + ) + by_id = {row["chunk_id"]: row for row in rows} + + results = [] + for chunk_id in ranked_ids: + row = by_id.get(chunk_id) + if row is None: + continue + row["score"] = round(merged_scores.get(chunk_id, 0.0), 6) + results.append(row) + if len(results) >= top_k: + break + + logger.info("Hybrid retrieval completed: returned=%s", len(results)) + return results diff --git a/bot/.env.example b/bot/.env.example new file mode 100644 index 0000000..cd8d1b8 --- /dev/null +++ b/bot/.env.example @@ -0,0 +1,29 @@ +# Telegram bot token from @BotFather +TOKEN=123456789:replace_me + +# Optional proxy for Telegram Bot API. +# Leave empty if you connect directly. +# Format: protocol(http/socks5):ip:port:user:pass +TELEGRAM_BOT_PROXY= + +# Telegram user id that will have admin access in the bot +BASE_ADMIN=000000000 + +# URL of the FastAPI service. +# Inside docker compose use the internal service name. +RAG_API_URL=http://api:8080 + +# Redis connection for FSM/storage. +# Inside docker compose use the internal service name. +REDIS_URL=redis://redisdb:6379/0 + +# Postgres connection used by the shared DB layer. +# Inside docker compose use the internal service name. +POSTGRES_DB=law_bot_db +POSTGRES_USER=lawbot_user +POSTGRES_PASSWORD=change_me +POSTGRES_HOST=postgredb +POSTGRES_PORT=5432 + +# All user-facing dates and times are shown in this timezone +TIMEZONE=Europe/Moscow diff --git a/bot/Dockerfile b/bot/Dockerfile new file mode 100644 index 0000000..c7b2dc0 --- /dev/null +++ b/bot/Dockerfile @@ -0,0 +1,16 @@ +# базовый образ Python +FROM python:3.13-alpine + +# рабочая директория +WORKDIR /app/bot + +ENV PYTHONPATH=/app + +# файл зависимостей +COPY bot/requirements.txt /app/ + +# устанавливаем зависимости +RUN pip install --no-cache-dir --upgrade pip && \ + pip install --no-cache-dir -r /app/requirements.txt + +COPY . /app diff --git a/bot/aiogram_run.py b/bot/aiogram_run.py new file mode 100644 index 0000000..3d7329d --- /dev/null +++ b/bot/aiogram_run.py @@ -0,0 +1,100 @@ +# Aiogram +from aiogram.types.bot_command_scope_all_private_chats import ( + BotCommandScopeAllPrivateChats, +) +from aiogram.exceptions import TelegramNetworkError + +# Bot +from create_bot import bot, dp, start_command, orm + +# Entry +from handlers.start import start_router +from handlers.admin.main import admin_main_router + +# Client handlers +from handlers.client.main import client_router + +# Admin handlers +from handlers.admin.list_of_users import list_of_users_router +from handlers.admin.statistic import admin_statistic_router +from handlers.admin.management import admin_management_router +from handlers.admin.mailer import admin_mailer_router +from handlers.admin.settings import admin_settings_router +from handlers.admin.blacklist import admin_blacklist_router + +# middlewares +from middlewares.users_control import * +from middlewares.album import AlbumMiddleware + +# Another +import asyncio +import logging +from decouple import config +from uvloop import run + + +logger = logging.getLogger(__name__) + + +async def safe_set_my_commands(retries: int = 3, delay_seconds: int = 5) -> None: + for attempt in range(1, retries + 1): + try: + await bot.set_my_commands( + start_command, + scope=BotCommandScopeAllPrivateChats(), + request_timeout=120, + ) + return + except TelegramNetworkError as exc: + if attempt == retries: + logger.warning( + "Could not set bot commands after %s attempts: %s", + retries, + exc, + ) + return + logger.warning( + "Telegram API timeout while setting commands, retry %s/%s in %ss", + attempt, + retries, + delay_seconds, + ) + await asyncio.sleep(delay_seconds) + + +async def main(): + try: + await orm.init_schema() + await safe_set_my_commands() + await orm.create_admin(int(config("BASE_ADMIN")), "base_admin", "base_admin") + + dp.message.middleware(BlacklistMiddleware()) + dp.callback_query.middleware(BlacklistMiddleware()) + dp.message.middleware(AntiFloodMiddleware()) + dp.message.middleware(AlbumMiddleware()) + + # ENTRY POINTS + dp.include_routers(start_router, admin_main_router) + + # CLIENT + dp.include_router(client_router) + + # ADMIN + dp.include_routers( + list_of_users_router, + admin_statistic_router, + admin_management_router, + admin_mailer_router, + admin_settings_router, + admin_blacklist_router, + ) + + # await bot.delete_webhook(drop_pending_updates = True) + await dp.start_polling(bot) + finally: + await bot.session.close() + await orm.close() + + +if __name__ == "__main__": + run(main()) diff --git a/bot/create_bot.py b/bot/create_bot.py new file mode 100644 index 0000000..f172b88 --- /dev/null +++ b/bot/create_bot.py @@ -0,0 +1,85 @@ +# aiogram +from aiogram import Bot, Dispatcher +from aiogram.client.default import DefaultBotProperties +from aiogram.client.session.aiohttp import AiohttpSession +from aiogram.enums import ParseMode +from aiogram.fsm.storage.redis import RedisStorage, DefaultKeyBuilder, StorageKey +from aiogram.types import BotCommand + +# cfg +from decouple import config + +# db +from shared import ORM + +# another +import logging, pytz +from urllib.parse import quote + + +logging.basicConfig( + level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" +) +logger = logging.getLogger(__name__) +TELEGRAM_API_TIMEOUT = 120.0 + + +def build_telegram_proxy_url(proxy_value: str | None) -> str | None: + if proxy_value is None: + return None + + proxy_value = proxy_value.strip() + if not proxy_value: + return None + + parts = proxy_value.split(":") + if len(parts) < 3: + raise ValueError( + "TELEGRAM_BOT_PROXY must be in format protocol(http/socks5):ip:port:user:pass" + ) + + protocol, host, port, *auth_parts = parts + if not protocol or not host or not port: + raise ValueError( + "TELEGRAM_BOT_PROXY must be in format protocol(http/socks5):ip:port:user:pass" + ) + + username = auth_parts[0] if len(auth_parts) > 0 else "" + password = ":".join(auth_parts[1:]) if len(auth_parts) > 1 else "" + + if username or password: + auth = f"{quote(username, safe='')}:{quote(password, safe='')}@" + else: + auth = "" + + return f"{protocol}://{auth}{host}:{port}" + + +telegram_proxy_url = build_telegram_proxy_url( + config("TELEGRAM_BOT_PROXY", default="") +) +bot_session = ( + AiohttpSession(proxy=telegram_proxy_url, timeout=TELEGRAM_API_TIMEOUT) + if telegram_proxy_url + else AiohttpSession(timeout=TELEGRAM_API_TIMEOUT) +) + +if telegram_proxy_url: + logger.info( + "Telegram Bot API proxy enabled for host %s", + telegram_proxy_url.rsplit("@", 1)[-1], + ) + +redis_url = config("REDIS_URL") +bot = Bot( + token=config("TOKEN"), + default=DefaultBotProperties(parse_mode=ParseMode.HTML), + session=bot_session, +) +storage = RedisStorage.from_url(redis_url) +storage.key_builder = DefaultKeyBuilder(with_bot_id=True) +dp = Dispatcher(storage=storage) + +start_command = [BotCommand(command="/start", description="🔄 Перезапустить бота")] +tz = pytz.timezone(config("TIMEZONE")) +orm = ORM() diff --git a/bot/handlers/__init__.py b/bot/handlers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bot/handlers/admin/__init__.py b/bot/handlers/admin/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bot/handlers/admin/blacklist.py b/bot/handlers/admin/blacklist.py new file mode 100644 index 0000000..4e2da0e --- /dev/null +++ b/bot/handlers/admin/blacklist.py @@ -0,0 +1,221 @@ +# Aiogram +import aiogram.types as types +from aiogram.fsm.context import FSMContext +from aiogram.filters import StateFilter +from aiogram import Router, F +from aiogram.exceptions import TelegramBadRequest + +# Const +from create_bot import orm + +# Keyboards +from keyboards.admin.main_kbs import * + +# States +from states.admin_states import AdminStates, AdminBlacklistStates + +# Another +from contextlib import suppress + + +# Init +admin_blacklist_router = Router() + + +@admin_blacklist_router.message( + F.text == "🚫 Черный список", StateFilter(AdminStates.main) +) +@admin_blacklist_router.message(F.text == "↩️ Назад", StateFilter(AdminBlacklistStates)) +async def cmd_blacklist(message: types.Message, state: FSMContext): + + msg_text = "🚫 Выберите действие:" + + await message.answer(text=msg_text, reply_markup=get_blacklist_kb()) + + await state.set_state(AdminBlacklistStates.main) + + +# *############################ +# *# ADD # +# *############################ + + +@admin_blacklist_router.message( + F.text == "➕ Добавить", StateFilter(AdminBlacklistStates.main) +) +async def cmd_blacklist_add(message: types.Message, state: FSMContext): + + msg_text = f"➕ Введите User ID:" + + await message.answer(text=msg_text, reply_markup=get_back_kb()) + + await state.set_state(AdminBlacklistStates.add_blacklist) + + +@admin_blacklist_router.message(F.text, StateFilter(AdminBlacklistStates.add_blacklist)) +async def cmd_blacklist_add_finish(message: types.Message, state: FSMContext): + + # validation + if not message.text.isdigit(): + await message.answer( + text="⛔️ Только цифры! Повторите попытку:", reply_markup=get_back_kb() + ) + return + + user_id = int(message.text) + + if not await orm.is_user_exists(user_id): + await message.answer( + text="⛔️ Пользователь не существует в БД! Повторите попытку:", + reply_markup=get_back_kb(), + ) + return + + await orm.create_blacklist(user_id=user_id) + + await message.answer(text=f"✅ Черный список обновлен!") + await cmd_blacklist(message, state) + + +# *############################ +# *# DEL # +# *############################ + + +@admin_blacklist_router.message( + F.text == "➖ Удалить", StateFilter(AdminBlacklistStates.main) +) +async def cmd_blacklist_delete(message: types.Message, state: FSMContext): + + msg_text = "➖ Введите User ID:" + + await message.answer(text=msg_text, reply_markup=get_back_kb()) + + await state.set_state(AdminBlacklistStates.del_blacklist) + + +@admin_blacklist_router.message(F.text, StateFilter(AdminBlacklistStates.del_blacklist)) +async def cmd_blacklist_delete_finish(message: types.Message, state: FSMContext): + + # validation + if not message.text.isdigit(): + await message.answer( + text="⛔️ Только цифры! Повторите попытку:", reply_markup=get_back_kb() + ) + return + + user_id = int(message.text) + + if not await orm.is_blacklisted(user_id): + await message.answer( + text="⛔️ Пользователь не найден в ЧС! Повторите попытку:", + reply_markup=get_back_kb(), + ) + return + + await orm.delete_blacklist(user_id=user_id) + + await message.answer(text=f"✅ Черный список обновлен!") + + await cmd_blacklist(message, state) + + +# *############################ +# *# LIST # +# *############################ + + +@admin_blacklist_router.message( + F.text == "👁 Открыть список", StateFilter(AdminBlacklistStates.main) +) +async def cmd_blacklist_list(message: types.Message, state: FSMContext): + + await state.update_data(blacklist_offset=0) + items = await orm.get_all_blacklist() + + if not items: + await message.answer(text="💭 Список пуст.") + return + + offset = 0 + max_offset = len(items) // 10 + (1 if len(items) % 10 != 0 else 0) + + msg_text = f"🚫 Черный список {offset + 1}/{max_offset}\n\n" + + for item in items[offset * 10 : (offset + 1) * 10]: + msg_text += f"✦ {item}\n" + + await message.answer( + text=msg_text, + reply_markup=get_bookList_ikb( + prefix="admin_blacklist", + offset=0, + max_offset=max_offset, + items=[], + element_col=10, + ), + ) + + +async def cmd_blacklist_list_query(query: types.CallbackQuery, state: FSMContext): + + data = await state.get_data() + offset = data.get("blacklist_offset") + items = await orm.get_all_blacklist() + + if not items: + await query.answer(text="💭 Список пуст.") + return + + max_offset = len(items) // 10 + (1 if len(items) % 10 != 0 else 0) + + if offset < 0: + offset = max_offset - 1 + await state.update_data(blacklist_offset=offset) + elif offset >= max_offset: + offset = 0 + await state.update_data(blacklist_offset=offset) + + msg_text = f"🚫 Черный список {offset + 1}/{max_offset}\n\n" + + for item in items[offset * 10 : (offset + 1) * 10]: + msg_text += f"✦ {item}\n" + + with suppress(TelegramBadRequest): + await query.message.edit_text( + text=msg_text, + reply_markup=get_bookList_ikb( + prefix="admin_blacklist", + offset=offset, + max_offset=max_offset, + items=[], + element_col=10, + ), + ) + + await query.answer() + + +@admin_blacklist_router.callback_query( + F.data == "admin_blacklist_next", StateFilter(AdminBlacklistStates.main) +) +@admin_blacklist_router.callback_query( + F.data == "admin_blacklist_prev", StateFilter(AdminBlacklistStates.main) +) +@admin_blacklist_router.callback_query( + F.data == "admin_blacklist_status", StateFilter(AdminBlacklistStates.main) +) +async def cmd_blacklist_list_actions(query: types.CallbackQuery, state: FSMContext): + + state_data = await state.get_data() + + if query.data.endswith("next"): + await state.update_data( + blacklist_offset=state_data.get("blacklist_offset", 0) + 1 + ) + elif query.data.endswith("prev"): + await state.update_data( + blacklist_offset=state_data.get("blacklist_offset", 0) - 1 + ) + + await cmd_blacklist_list_query(query, state) diff --git a/bot/handlers/admin/list_of_users.py b/bot/handlers/admin/list_of_users.py new file mode 100644 index 0000000..0c16ed5 --- /dev/null +++ b/bot/handlers/admin/list_of_users.py @@ -0,0 +1,53 @@ +# Aiogram +import aiogram.types as types +from aiogram.fsm.context import FSMContext +from aiogram.filters import StateFilter +from aiogram import Router, F + +# Const +from create_bot import tz, orm + +# States +from states.admin_states import AdminStates + +# Another +import shutil, os +from openpyxl import load_workbook + + +# Init +list_of_users_router = Router() + + +@list_of_users_router.message( + F.text == "📑 Список пользователей", StateFilter(AdminStates.main) +) +async def cmd_list_of_users(message: types.Message, state: FSMContext): + + # copy the table + table_path = shutil.copy( + src="templates/users.xlsx", dst=f"templates/users_list.xlsx" + ) + + # load table + book = load_workbook(filename=table_path) + sheet = book["users"] + + all_clients = await orm.get_all_users() + + for row, user in enumerate(all_clients, 2): + sheet.cell(row=row, column=1, value=user.user_id) + sheet.cell(row=row, column=2, value=user.username) + sheet.cell(row=row, column=3, value=user.fullname) + sheet.cell( + row=row, + column=4, + value=user.register_date.astimezone(tz).strftime(r"%d-%m-%y %H:%M %Z"), + ) + + book.save(table_path) + + await message.answer_document(document=types.FSInputFile(table_path)) + + if os.path.exists(table_path): + os.remove(table_path) diff --git a/bot/handlers/admin/mailer.py b/bot/handlers/admin/mailer.py new file mode 100644 index 0000000..e2b1669 --- /dev/null +++ b/bot/handlers/admin/mailer.py @@ -0,0 +1,133 @@ +# Aiogram imports +import logging + +import aiogram.types as types +from aiogram.fsm.context import FSMContext +from aiogram.filters import StateFilter +from aiogram import Router, F + +# Const +from create_bot import bot, orm + +# Keyboards +from keyboards.admin.mailer_kbs import * + +# Utils +from utils.text_tools import parse_links_to_inline_markup + +# States +from states.admin_states import AdminStates, AdminMailerStates + +# Funcs +from handlers.admin.main import show_admin_menu + + +admin_mailer_router = Router() +logger = logging.getLogger(__name__) + + +@admin_mailer_router.message(F.text == "✉️ Рассылка", StateFilter(AdminStates.main)) +@admin_mailer_router.message(F.text == "↩️ Назад", StateFilter(AdminMailerStates)) +async def process_mailer_post(message: types.Message, state: FSMContext): + + msg_text = "✉️ Отправьте пост одним сообщением:" + + await message.answer(text=msg_text, reply_markup=get_back_to_main_kb()) + + await state.set_state(AdminMailerStates.post) + + +@admin_mailer_router.message(StateFilter(AdminMailerStates.post)) +async def process_mailer_ikb(message: types.Message, state: FSMContext): + + await state.update_data(admin_mailer_post=message.message_id) + + msg_text = """✉️ Введите кнопки: + +
Отправьте ссылку(и) в формате: +[Текст кнопки + ссылка] +Пример: +[Переводчик + https://t.me/TransioBot] + +Чтобы добавить несколько кнопок в один ряд, пишите ссылки рядом с предыдущими. +Формат: +[Первый текст + первая ссылка][Второй текст + вторая ссылка] + +Чтобы добавить несколько кнопок в строчку, пишите новые ссылки с новой строки. +Формат: +[Первый текст + первая ссылка] +[Второй текст + вторая ссылка]
""" + + await message.answer( + text=msg_text, reply_markup=get_skip_kb(), disable_web_page_preview=True + ) + + await state.set_state(AdminMailerStates.ikb) + + +@admin_mailer_router.message(F.text, StateFilter(AdminMailerStates.ikb)) +async def process_mailer_preview(message: types.Message, state: FSMContext): + + ikb = ( + parse_links_to_inline_markup(message.text) + if message.text != "↪️ Пропустить" + else None + ) + await state.update_data(admin_mailer_ikb=ikb) + + state_data = await state.get_data() + post = state_data.get("admin_mailer_post") + + await message.answer(text="✉️ Предпросмотр:", reply_markup=get_mailer_finish_kb()) + + try: + await bot.copy_message( + chat_id=message.from_user.id, + from_chat_id=message.from_user.id, + message_id=post, + reply_markup=get_mailer_btn_ikb(buttons_preset=ikb), + ) + except Exception: + logger.exception("Mailer preview failed") + await message.answer(text="🔴 Ошибка!") + await process_mailer_post(message, state) + return + + await state.set_state(AdminMailerStates.preview) + + +@admin_mailer_router.message( + F.text == "🟢 Начать рассылку", StateFilter(AdminMailerStates.preview) +) +async def process_mailer_finish(message: types.Message, state: FSMContext): + + state_data = await state.get_data() + ikb = state_data.get("admin_mailer_ikb") + post = state_data.get("admin_mailer_post") + + all_users = await orm.get_all_user_ids() + + # info + await message.answer(text="▶️✉️ Рассылка запущена...") + + await state.clear() + + # back to main menu + await show_admin_menu(message, state) + + counter = 0 + for user_id in all_users: + try: + await bot.copy_message( + chat_id=user_id, + from_chat_id=message.from_user.id, + message_id=post, + reply_markup=get_mailer_btn_ikb(buttons_preset=ikb), + ) + counter += 1 + except Exception: + logger.exception("Mailer copy failed for user_id=%s", user_id) + + await message.answer( + text=f"✅ Рассылка завершена! Сообщение отправлено {counter}/{len(all_users)}." + ) diff --git a/bot/handlers/admin/main.py b/bot/handlers/admin/main.py new file mode 100644 index 0000000..e626cc4 --- /dev/null +++ b/bot/handlers/admin/main.py @@ -0,0 +1,67 @@ +# Aiogram +import aiogram.types as types +from aiogram.fsm.context import FSMContext +from aiogram.filters import Command, StateFilter +from aiogram import Router, F + +# Const +from create_bot import orm + +# Keyboards +from keyboards.admin.main_kbs import * + +# States +from states.admin_states import ( + AdminStates, + AdminMailerStates, + AdminManagementStates, + AdminSettingsStates, + AdminBlacklistStates, +) + +# Funcs +from handlers.start import cmd_start + + +# Init +admin_main_router = Router() + + +@admin_main_router.message(Command("admin"), StateFilter("*")) +async def cmd_login_as_admin(message: types.Message, state: FSMContext): + + if message.chat.type != "private": + return + + is_admin_exists = await orm.is_admin_exists(user_id=message.from_user.id) + + if is_admin_exists: + await show_admin_menu(message, state) + else: + await message.answer(text="🤨") + + +@admin_main_router.message(F.text == "🔚 Выйти", StateFilter(AdminStates.main)) +async def cmd_admin_exit(message: types.Message, state: FSMContext): + + await message.answer(text="🚪⠀", reply_markup=types.ReplyKeyboardRemove()) + + await cmd_start(message, state) + + +@admin_main_router.message( + F.text == "↩️ Вернуться в меню", + StateFilter( + AdminManagementStates.main, + AdminMailerStates.post, + AdminSettingsStates.main, + AdminBlacklistStates.main, + ), +) +async def show_admin_menu(message: types.Message, state: FSMContext): + + msg_text = "👮‍♂️ Вы находитесь в админ-панели" + + await message.answer(text=msg_text, reply_markup=get_main_menu_kb()) + + await state.set_state(AdminStates.main) diff --git a/bot/handlers/admin/management.py b/bot/handlers/admin/management.py new file mode 100644 index 0000000..992f7fc --- /dev/null +++ b/bot/handlers/admin/management.py @@ -0,0 +1,142 @@ +# Aiogram imports +import aiogram.types as types +from aiogram.fsm.context import FSMContext +from aiogram.filters import StateFilter +from aiogram import Router, F +from aiogram.exceptions import TelegramBadRequest + +# Const +from create_bot import bot, storage, StorageKey, orm + +# Keyboards +from keyboards.admin.main_kbs import * + +# States +from states.admin_states import AdminStates, AdminManagementStates + +# Config +from decouple import config + +# Another +from contextlib import suppress + + +# Init +admin_management_router = Router() + + +@admin_management_router.message( + F.text == "👮‍♂️ Управление админами", StateFilter(AdminStates.main) +) +@admin_management_router.message( + F.text == "↩️ Назад", StateFilter(AdminManagementStates) +) +async def cmd_management(message: types.Message, state: FSMContext): + + admins = await orm.get_all_admins() + + msg_text = "👮‍♂️ Действующие администраторы\n" + + for admin in admins: + msg_text += f"✦ [{admin.user_id}]: {admin.username if admin.username else admin.fullname}\n" + + msg_text += f"\n🔽 Выберите действие:" + + await message.answer(text=msg_text, reply_markup=get_add_admins_kb()) + + await state.set_state(AdminManagementStates.main) + + +# *############################ +# *# ADD # +# *############################ + + +@admin_management_router.message( + F.text == "➕ Добавить", StateFilter(AdminManagementStates.main) +) +async def cmd_management_add_id(message: types.Message, state: FSMContext): + + msg_text = "➕ Введите User ID нового админа:" + + await message.answer(text=msg_text, reply_markup=get_back_kb()) + + await state.set_state(AdminManagementStates.add_admin) + + +@admin_management_router.message(F.text, StateFilter(AdminManagementStates.add_admin)) +async def cmd_management_add_finish(message: types.Message, state: FSMContext): + + # validation + if not message.text.isdigit(): + await message.answer( + text="⛔️ Только цифры! Повторите попытку:", reply_markup=get_back_kb() + ) + return + + user_id = int(message.text) + + if not await orm.is_user_exists(user_id): + await message.answer( + text="⛔️ Пользователь не существует в БД! Повторите попытку:", + reply_markup=get_back_kb(), + ) + return + + user = await orm.get_user(user_id) + await orm.create_admin(user.user_id, user.username, user.fullname) + await message.answer("✅ Успешно!") + await cmd_management(message, state) + + +# *############################ +# *# DELETE # +# *############################ + + +@admin_management_router.message( + F.text == "➖ Удалить", StateFilter(AdminManagementStates.main) +) +async def cmd_management_delete(message: types.Message, state: FSMContext): + + msg_text = "➖ Введите ID админа для удаления:" + + await message.answer(text=msg_text, reply_markup=get_back_kb()) + + await state.set_state(AdminManagementStates.del_admin) + + +@admin_management_router.message(F.text, StateFilter(AdminManagementStates.del_admin)) +async def cmd_management_delete_finish(message: types.Message, state: FSMContext): + + # validation + if not message.text.isdigit(): + await message.answer(text="⛔️ Только цифры! Повторите попытку:") + return + + user_id = int(message.text) + + if user_id == int(config("BASE_ADMIN")): + await message.answer( + text="⛔️ Отказано! Повторите попытку:", reply_markup=get_back_kb() + ) + return + + if not await orm.is_admin_exists(user_id): + await message.answer(text="⛔️ Админ не найден! Повторите попытку:") + return + + # change admin state + with suppress(TelegramBadRequest): + await bot.send_message( + chat_id=user_id, + text="☹️ Вы больше не являетесь админом!", + reply_markup=types.ReplyKeyboardRemove(), + ) + + await storage.set_state( + key=StorageKey(bot_id=bot.id, chat_id=user_id, user_id=user_id), state=None + ) + await orm.delete_admin(user_id) + await message.answer("✅ Успешно!") + await cmd_management(message, state) diff --git a/bot/handlers/admin/settings.py b/bot/handlers/admin/settings.py new file mode 100644 index 0000000..73497f6 --- /dev/null +++ b/bot/handlers/admin/settings.py @@ -0,0 +1,85 @@ +# Aiogram imports +import aiogram.types as types +from aiogram.fsm.context import FSMContext +from aiogram.filters import StateFilter +from aiogram import Router, F + +# Const +from create_bot import orm + +# Keyboards +from keyboards.admin.main_kbs import * + +# States +from states.admin_states import AdminStates, AdminSettingsStates + + +# Init +admin_settings_router = Router() + + +@admin_settings_router.message(F.text == "↩️ Назад", StateFilter(AdminSettingsStates)) +@admin_settings_router.message(F.text == "⚙️ Настройки", StateFilter(AdminStates.main)) +async def cmd_settings(message: types.Message, state: FSMContext): + + msg_text = "⚙️ Выберите, что хотите изменить:" + + await message.answer(text=msg_text, reply_markup=get_settings_kb()) + + await state.set_state(AdminSettingsStates.main) + + +# *############################ +# *# EDIT PHOTO # +# *############################ + + +@admin_settings_router.message( + F.text.in_({"🖼 ..."}), StateFilter(AdminSettingsStates.main) +) +async def cmd_edit_photo(message: types.Message, state: FSMContext): + + x = {"🖼 ...": "..."} + + setting_key = x.get(message.text) + await state.update_data(setting_key=setting_key) + photo = await orm.get_setting_value(setting_key) + + msg_text = f"""Текущее значение: +
{photo}
+ +⌨️ Отправьте фото для изменения:""" + + if photo: + await message.answer_photo( + photo=photo, caption=msg_text, reply_markup=get_back_kb() + ) + else: + await message.answer(text=msg_text, reply_markup=get_back_kb()) + + await state.set_state(AdminSettingsStates.edit_photo) + + +@admin_settings_router.message(F.photo, StateFilter(AdminSettingsStates.edit_photo)) +async def cmd_edit_photo_setup(message: types.Message, state: FSMContext): + + photo = message.photo[-1].file_id + + state_data = await state.get_data() + setting_key = state_data.get("setting_key") + + await orm.update_setting_value(setting_key, photo) + + msg_text = f"""Текущее значение: +
{photo}
+ +⌨️ Отправьте фото для изменения:""" + + if photo: + await message.answer_photo( + photo=photo, caption=msg_text, reply_markup=get_back_kb() + ) + else: + await message.answer(text=msg_text, reply_markup=get_back_kb()) + + await state.set_state(AdminSettingsStates.edit_photo) diff --git a/bot/handlers/admin/statistic.py b/bot/handlers/admin/statistic.py new file mode 100644 index 0000000..9b38b1b --- /dev/null +++ b/bot/handlers/admin/statistic.py @@ -0,0 +1,28 @@ +# Aiogram +import aiogram.types as types +from aiogram.fsm.context import FSMContext +from aiogram.filters import StateFilter +from aiogram import Router, F + +# Const +from create_bot import orm + +# States +from states.admin_states import AdminStates + +# Init +admin_statistic_router = Router() + + +@admin_statistic_router.message( + F.text == "📊 Статистика", StateFilter(AdminStates.main) +) +async def cmd_statistic(message: types.Message, state: FSMContext): + + users_count = await orm.get_users_count() + + msg_text = f"""📊 Статистика + +🔹 Кол-во пользователей в боте: {users_count:,} чел.""" + + await message.answer(text=msg_text) diff --git a/bot/handlers/client/__init__.py b/bot/handlers/client/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bot/handlers/client/main.py b/bot/handlers/client/main.py new file mode 100644 index 0000000..3a698a2 --- /dev/null +++ b/bot/handlers/client/main.py @@ -0,0 +1,506 @@ +import aiogram.types as types +from aiogram import F, Router +from aiogram.filters import StateFilter +from aiogram.fsm.context import FSMContext + +from create_bot import orm, tz +from keyboards.reply_keyboards import ( + CATEGORY_BY_TEXT, + USER_TYPE_BY_TEXT, + USER_TYPE_LABEL_BY_CODE, + get_back_to_menu_kb, + get_categories_kb, + get_consultation_actions_ikb, + get_consultations_ikb, + get_delete_profile_kb, + get_main_menu_kb, + get_profile_kb, + get_user_types_kb, +) +from states.client_states import AskQuestionStates, MainStates, ProfileStates +from utils.rag_api import ask_rag_answer +from utils.text_tools import format_llm_answer_html, split_plain_text_chunks, to_html + +from datetime import datetime, timezone + + +client_router = Router() + +DAILY_CONSULTATION_LIMIT = 5 +CONSULTATION_MESSAGE_LIMIT = 5 + + +def get_today_start_utc() -> datetime: + now_local = datetime.now(tz) + start_local = now_local.replace(hour=0, minute=0, second=0, microsecond=0) + return start_local.astimezone(timezone.utc) + + +def build_start_text() -> str: + return ( + "Здравствуйте. Я юридический ИИ-консультант по законам РФ.\n\n" + "Я могу помочь:\n" + "— разобраться в ситуации;\n" + "— найти применимые нормы закона;\n" + "— объяснить их простыми словами;\n" + "— дать базовый план действий.\n\n" + "Ответ носит информационный характер и не заменяет консультацию юриста." + ) + + +def build_help_text() -> str: + return ( + "ℹ️ Как пользоваться ботом\n\n" + "1. Нажмите «Задать вопрос».\n" + "2. Выберите категорию.\n" + "3. Опишите ситуацию.\n" + "4. Укажите регион РФ.\n" + "5. Получите ответ с найденными источниками.\n\n" + "Пример хорошего вопроса:\n" + "«Работодатель не выплатил зарплату за апрель. Работаю официально, Москва. Что делать?»\n\n" + "Бот не заменяет юриста и не гарантирует результат спора." + ) + + +def build_profile_text(user) -> str: + return ( + "👤 Профиль\n\n" + f"Страна: {to_html(user.country or 'Россия')}\n" + f"Регион: {to_html(user.region or 'не указан')}\n" + f"Тип пользователя: {to_html(USER_TYPE_LABEL_BY_CODE.get(user.user_type, 'Физлицо'))}" + ) + + +def build_consultations_text(consultations: list) -> str: + lines = ["📚 Ваши консультации:\n"] + + for index, consultation in enumerate(consultations, start=1): + title = consultation.title or consultation.category + lines.append( + f"{index}. {to_html(title)} — {consultation.updated_at.astimezone(tz).strftime('%d.%m.%Y')}" + ) + + return "\n".join(lines) + + +def build_consultation_text(consultation, messages: list) -> str: + lines = [ + f"📚 Консультация #{consultation.id}", + "", + f"Категория: {to_html(consultation.category)}", + f"Регион: {to_html(consultation.region or 'не указан')}", + f"Статус: {to_html(consultation.status)}", + "", + ] + + if not messages: + lines.append("Сообщений пока нет.") + return "\n".join(lines) + + for message in messages[-6:]: + if message.role == "user": + title = "👤 Вопрос" + elif message.role == "assistant": + title = "🤖 Ответ" + else: + title = "ℹ️ Сообщение" + + lines.append(title) + if message.role == "assistant": + lines.append(format_llm_answer_html(message.content[:1800])) + else: + lines.append(to_html(message.content[:1800])) + lines.append("") + + return "\n".join(lines).strip() + + +def build_fallback_error_text(error_text: str) -> str: + if "No reliable law chunks" in error_text: + return ( + "Я не нашел в базе надежную норму по этому вопросу. " + "Попробуйте уточнить ситуацию, добавить детали или выбрать другую категорию." + ) + + return error_text + + +async def show_main_menu(message: types.Message, state: FSMContext) -> None: + await message.answer(build_start_text(), reply_markup=get_main_menu_kb()) + await state.set_state(MainStates.main) + + +async def process_question( + message: types.Message, + state: FSMContext, + *, + category: str, + question: str, + region: str, + consultation_id: int | None = None, +) -> None: + user = await orm.get_user(message.from_user.id) + if user is None: + await show_main_menu(message, state) + return + + if consultation_id is None: + consultations_today = await orm.count_user_consultations_since( + user_id=message.from_user.id, + since=get_today_start_utc(), + ) + if consultations_today >= DAILY_CONSULTATION_LIMIT: + await message.answer( + "На сегодня достигнут лимит: 5 новых консультаций. Попробуйте завтра.", + reply_markup=get_main_menu_kb(), + ) + await state.set_state(MainStates.main) + return + else: + message_count = await orm.count_user_messages_in_consultation(consultation_id) + if message_count >= CONSULTATION_MESSAGE_LIMIT: + await message.answer( + "В этой консультации уже достигнут лимит: 5 сообщений пользователя. " + "Создайте новую консультацию.", + reply_markup=get_main_menu_kb(), + ) + await state.set_state(MainStates.main) + return + + history = [] + if consultation_id is not None: + history = await orm.get_consultation_messages(consultation_id) + + await state.set_state(AskQuestionStates.processing) + await message.answer("⏳ Ищу подходящие нормы закона и готовлю ответ...") + + try: + response = await ask_rag_answer( + user_id=message.from_user.id, + consultation_id=consultation_id, + question=question, + category=category, + region=region, + user_type=user.user_type, + history=history, + ) + except RuntimeError as exc: + await message.answer( + build_fallback_error_text(str(exc)), + reply_markup=get_main_menu_kb(), + ) + await state.set_state(MainStates.main) + return + + if user.region != region: + await orm.set_user_region(message.from_user.id, region) + + raw_answer_text = response.get("answer", "Не удалось сформировать ответ.") + answer_chunks = [ + format_llm_answer_html(chunk) + for chunk in split_plain_text_chunks(raw_answer_text) + ] + saved_consultation_id = response.get("consultation_id") + + for index, answer_chunk in enumerate(answer_chunks): + reply_markup = None + if index == len(answer_chunks) - 1 and saved_consultation_id is not None: + reply_markup = get_consultation_actions_ikb(saved_consultation_id) + await message.answer(answer_chunk, reply_markup=reply_markup) + await message.answer( + "Можете задать новый вопрос или открыть историю консультаций.", + reply_markup=get_main_menu_kb(), + ) + await state.set_state(MainStates.main) + + +@client_router.message(F.text == "↩️ В меню", StateFilter("*")) +async def return_to_main_menu(message: types.Message, state: FSMContext): + await show_main_menu(message, state) + + +@client_router.message(F.text == "ℹ️ Помощь", StateFilter("*")) +async def show_help(message: types.Message, state: FSMContext): + await message.answer(build_help_text(), reply_markup=get_main_menu_kb()) + await state.set_state(MainStates.main) + + +@client_router.message(F.text == "⚖️ Задать вопрос", StateFilter("*")) +async def ask_question_entry(message: types.Message, state: FSMContext): + await message.answer( + "Выберите категорию вопроса:", + reply_markup=get_categories_kb(), + ) + await state.set_state(AskQuestionStates.choosing_category) + + +@client_router.message( + F.text.in_(list(CATEGORY_BY_TEXT.keys())), + AskQuestionStates.choosing_category, +) +async def set_question_category(message: types.Message, state: FSMContext): + await state.update_data( + category_text=message.text, + ) + await message.answer( + "Опишите ситуацию одним сообщением.\n\n" + "Постарайтесь указать:\n" + "— что произошло;\n" + "— когда произошло;\n" + "— с кем спор;\n" + "— чего вы хотите добиться.", + reply_markup=get_back_to_menu_kb(), + ) + await state.set_state(AskQuestionStates.waiting_question) + + +@client_router.message(AskQuestionStates.waiting_question) +async def set_question_text(message: types.Message, state: FSMContext): + question = (message.text or "").strip() + if not question: + await message.answer("Опишите ситуацию текстом одним сообщением.") + return + + user = await orm.get_user(message.from_user.id) + + await state.update_data(question=question) + + if user and user.region: + await message.answer( + "Укажите регион РФ, где произошла ситуация.\n\n" + f"Сейчас в профиле указан регион: {to_html(user.region)}\n" + "Если он подходит, отправьте символ: -", + reply_markup=get_back_to_menu_kb(), + ) + else: + await message.answer( + "Укажите регион РФ, где произошла ситуация.\n\n" + "Например:\n" + "Москва\n" + "Санкт-Петербург\n" + "Краснодарский край\n" + "Республика Татарстан", + reply_markup=get_back_to_menu_kb(), + ) + + await state.set_state(AskQuestionStates.waiting_region) + + +@client_router.message(AskQuestionStates.waiting_region) +async def set_region_and_process(message: types.Message, state: FSMContext): + payload = await state.get_data() + user = await orm.get_user(message.from_user.id) + region = (message.text or "").strip() + + if region == "-" and user and user.region: + region = user.region + + if not region: + await message.answer("Укажите регион РФ текстом.") + return + + await process_question( + message, + state, + category=payload["category_text"], + question=payload["question"], + region=region, + ) + + +@client_router.message(F.text == "📚 Мои консультации", StateFilter("*")) +async def show_consultations(message: types.Message, state: FSMContext): + consultations = await orm.list_user_consultations(message.from_user.id) + + if not consultations: + await message.answer( + "У вас пока нет консультаций.", + reply_markup=get_main_menu_kb(), + ) + await state.set_state(MainStates.main) + return + + await message.answer( + build_consultations_text(consultations), + reply_markup=get_consultations_ikb(consultations), + ) + await state.set_state(MainStates.main) + + +@client_router.callback_query(F.data.startswith("consultation:open:")) +async def open_consultation(callback: types.CallbackQuery, state: FSMContext): + consultation_id = int(callback.data.rsplit(":", 1)[-1]) + consultation = await orm.get_consultation(consultation_id, callback.from_user.id) + + if consultation is None: + await callback.answer("Консультация не найдена.", show_alert=True) + return + + messages = await orm.get_consultation_messages(consultation_id) + await callback.message.answer( + build_consultation_text(consultation, messages), + reply_markup=get_consultation_actions_ikb(consultation_id), + ) + await callback.answer() + await state.set_state(MainStates.main) + + +@client_router.callback_query(F.data.startswith("consultation:continue:")) +async def continue_consultation(callback: types.CallbackQuery, state: FSMContext): + consultation_id = int(callback.data.rsplit(":", 1)[-1]) + consultation = await orm.get_consultation(consultation_id, callback.from_user.id) + + if consultation is None: + await callback.answer("Консультация не найдена.", show_alert=True) + return + + await state.update_data( + consultation_id=consultation.id, + category_text=consultation.category, + region=consultation.region, + ) + await callback.message.answer( + "Напишите следующий вопрос по этой консультации одним сообщением.", + reply_markup=get_back_to_menu_kb(), + ) + await callback.answer() + await state.set_state(AskQuestionStates.waiting_continue_question) + + +@client_router.callback_query(F.data.startswith("consultation:delete:")) +async def delete_consultation(callback: types.CallbackQuery, state: FSMContext): + consultation_id = int(callback.data.rsplit(":", 1)[-1]) + await orm.delete_consultation(consultation_id, callback.from_user.id) + consultations = await orm.list_user_consultations(callback.from_user.id) + + await callback.answer("Консультация удалена.") + + if not consultations: + await callback.message.answer( + "Консультаций больше не осталось.", + reply_markup=get_main_menu_kb(), + ) + await state.set_state(MainStates.main) + return + + await callback.message.answer( + build_consultations_text(consultations), + reply_markup=get_consultations_ikb(consultations), + ) + await state.set_state(MainStates.main) + + +@client_router.message(AskQuestionStates.waiting_continue_question) +async def process_continue_question(message: types.Message, state: FSMContext): + question = (message.text or "").strip() + if not question: + await message.answer("Напишите вопрос текстом одним сообщением.") + return + + payload = await state.get_data() + consultation_id = payload.get("consultation_id") + consultation = await orm.get_consultation(consultation_id, message.from_user.id) + + if consultation is None: + await message.answer( + "Консультация не найдена. Начните новую.", + reply_markup=get_main_menu_kb(), + ) + await state.set_state(MainStates.main) + return + + await process_question( + message, + state, + category=consultation.category, + question=question, + region=consultation.region or payload.get("region"), + consultation_id=consultation.id, + ) + + +@client_router.message(F.text == "👤 Профиль", StateFilter("*")) +async def show_profile(message: types.Message, state: FSMContext): + user = await orm.get_user(message.from_user.id) + + if user is None: + await show_main_menu(message, state) + return + + await message.answer(build_profile_text(user), reply_markup=get_profile_kb()) + await state.set_state(MainStates.main) + + +@client_router.message(F.text == "🌍 Изменить регион", StateFilter("*")) +async def change_region_start(message: types.Message, state: FSMContext): + await message.answer( + "Напишите новый регион РФ одним сообщением.", + reply_markup=get_back_to_menu_kb(), + ) + await state.set_state(ProfileStates.waiting_region) + + +@client_router.message(ProfileStates.waiting_region) +async def change_region_finish(message: types.Message, state: FSMContext): + region = (message.text or "").strip() + if not region: + await message.answer("Регион не должен быть пустым.") + return + + await orm.set_user_region(message.from_user.id, region) + user = await orm.get_user(message.from_user.id) + await message.answer(build_profile_text(user), reply_markup=get_profile_kb()) + await state.set_state(MainStates.main) + + +@client_router.message(F.text == "👔 Изменить тип пользователя", StateFilter("*")) +async def change_user_type_start(message: types.Message, state: FSMContext): + await message.answer( + "Выберите тип пользователя:", + reply_markup=get_user_types_kb(), + ) + await state.set_state(ProfileStates.waiting_user_type) + + +@client_router.message( + F.text.in_(list(USER_TYPE_BY_TEXT.keys())), + ProfileStates.waiting_user_type, +) +async def change_user_type_finish(message: types.Message, state: FSMContext): + await orm.set_user_type(message.from_user.id, USER_TYPE_BY_TEXT[message.text]) + user = await orm.get_user(message.from_user.id) + await message.answer(build_profile_text(user), reply_markup=get_profile_kb()) + await state.set_state(MainStates.main) + + +@client_router.message(F.text == "🗑 Удалить мои данные", StateFilter("*")) +async def delete_profile_start(message: types.Message, state: FSMContext): + await message.answer( + "Удалить историю консультаций и сбросить профиль?", + reply_markup=get_delete_profile_kb(), + ) + await state.set_state(ProfileStates.confirm_delete) + + +@client_router.message(F.text == "✅ Да, удалить", ProfileStates.confirm_delete) +async def delete_profile_finish(message: types.Message, state: FSMContext): + await orm.delete_user(message.from_user.id) + await orm.create_user( + user_id=message.from_user.id, + username="@" + message.from_user.username if message.from_user.username else None, + fullname=to_html(message.from_user.full_name), + register_date=datetime.now(timezone.utc), + ) + await message.answer( + "Данные удалены. История очищена, профиль сброшен.", + reply_markup=get_main_menu_kb(), + ) + await state.set_state(MainStates.main) + + +@client_router.message(MainStates.main) +async def main_menu_fallback(message: types.Message): + await message.answer( + "Выберите действие в меню ниже.", + reply_markup=get_main_menu_kb(), + ) diff --git a/bot/handlers/start.py b/bot/handlers/start.py new file mode 100644 index 0000000..f035d60 --- /dev/null +++ b/bot/handlers/start.py @@ -0,0 +1,59 @@ +# Aiogram +import aiogram.types as types +from aiogram.fsm.context import FSMContext +from aiogram.filters import CommandStart, StateFilter +from aiogram import Router, F + +# Utils +from utils.text_tools import to_html + +# Const +from create_bot import orm + +# Keyboards +from keyboards.reply_keyboards import get_main_menu_kb + +# States +from states.client_states import MainStates + +# Another +from datetime import datetime, timezone + + +# Init +start_router = Router() + + +@start_router.message(CommandStart(), StateFilter("*")) +async def cmd_start(message: types.Message, state: FSMContext): + if message.chat.type != "private": + return + + user_id = message.from_user.id + username = ( + "@" + message.from_user.username + if message.from_user.username is not None + else None + ) + fullname = to_html(message.from_user.full_name) + + await orm.create_user( + user_id=user_id, + username=username, + fullname=fullname, + register_date=datetime.now(timezone.utc), + ) + + msg_text = ( + "Здравствуйте. Я юридический ИИ-консультант по законам РФ.\n\n" + "Я могу помочь:\n" + "— разобраться в ситуации;\n" + "— найти применимые нормы закона;\n" + "— объяснить их простыми словами;\n" + "— дать базовый план действий.\n\n" + "Ответ носит информационный характер и не заменяет консультацию юриста." + ) + + await message.answer(text=msg_text, reply_markup=get_main_menu_kb()) + + await state.set_state(MainStates.main) diff --git a/bot/keyboards/__init__.py b/bot/keyboards/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bot/keyboards/admin/mailer_kbs.py b/bot/keyboards/admin/mailer_kbs.py new file mode 100644 index 0000000..7f9bed4 --- /dev/null +++ b/bot/keyboards/admin/mailer_kbs.py @@ -0,0 +1,55 @@ +# Aiogram imports +from aiogram.utils.keyboard import ReplyKeyboardBuilder, InlineKeyboardBuilder +from aiogram.types import InlineKeyboardButton, KeyboardButton + + +def get_back_to_main_kb(): + + builder = ReplyKeyboardBuilder() + + builder.row(KeyboardButton(text="↩️ Вернуться в меню")) + + return builder.as_markup(resize_keyboard=True) + + +def get_back_kb(): + + builder = ReplyKeyboardBuilder() + + builder.row(KeyboardButton(text="↩️ Назад")) + + return builder.as_markup(resize_keyboard=True) + + +def get_skip_kb(): + + builder = ReplyKeyboardBuilder() + + builder.add(KeyboardButton(text="↪️ Пропустить"), KeyboardButton(text="↩️ Назад")) + builder.adjust(1) + + return builder.as_markup(resize_keyboard=True) + + +def get_mailer_finish_kb(): + + builder = ReplyKeyboardBuilder() + + builder.add( + KeyboardButton(text="🟢 Начать рассылку"), KeyboardButton(text="↩️ Назад") + ) + builder.adjust(1) + + return builder.as_markup(resize_keyboard=True, is_persistent=True) + + +def get_mailer_btn_ikb(buttons_preset: list[str] | None): + + builder = InlineKeyboardBuilder() + + if buttons_preset: + for row in buttons_preset: + for btn_name, btn_url in row: + builder.row(InlineKeyboardButton(text=btn_name, url=btn_url)) + + return builder.as_markup() diff --git a/bot/keyboards/admin/main_kbs.py b/bot/keyboards/admin/main_kbs.py new file mode 100644 index 0000000..5d99014 --- /dev/null +++ b/bot/keyboards/admin/main_kbs.py @@ -0,0 +1,95 @@ +# Aiogram imports +from aiogram.utils.keyboard import ( + ReplyKeyboardBuilder, + KeyboardButton, + InlineKeyboardBuilder, +) +from aiogram.types import ( + ReplyKeyboardMarkup, + InlineKeyboardMarkup, + InlineKeyboardButton, +) + + +def get_main_menu_kb(): + + builder = ReplyKeyboardBuilder() + + builder.row(KeyboardButton(text="📊 Статистика"), KeyboardButton(text="✉️ Рассылка")) + + builder.row( + KeyboardButton(text="🚫 Черный список"), KeyboardButton(text="⚙️ Настройки") + ) + + builder.row( + KeyboardButton(text="📑 Список пользователей"), + KeyboardButton(text="👮‍♂️ Управление админами"), + ) + + builder.row(KeyboardButton(text="🔚 Выйти")) + + return builder.as_markup(resize_keyboard=True, is_persistent=True) + + +def get_add_admins_kb(): + + builder = ReplyKeyboardBuilder() + + builder.row(KeyboardButton(text="➕ Добавить"), KeyboardButton(text="➖ Удалить")) + + builder.row(KeyboardButton(text="↩️ Вернуться в меню")) + + return builder.as_markup(resize_keyboard=True, is_persistent=True) + + +def get_back_kb(): + + builder = ReplyKeyboardBuilder() + + builder.row(KeyboardButton(text="↩️ Назад")) + + return builder.as_markup(resize_keyboard=True) + + +def get_settings_kb() -> ReplyKeyboardMarkup: + + builder = ReplyKeyboardBuilder() + + builder.add(KeyboardButton(text="↩️ Вернуться в меню")) + builder.adjust(2) + + return builder.as_markup(resize_keyboard=True, is_persistent=True) + + +def get_blacklist_kb(): + + builder = ReplyKeyboardBuilder() + + builder.row(KeyboardButton(text="👁 Открыть список")) + + builder.row(KeyboardButton(text="➕ Добавить"), KeyboardButton(text="➖ Удалить")) + + builder.row(KeyboardButton(text="↩️ Вернуться в меню")) + + return builder.as_markup(resize_keyboard=True, is_persistent=True) + + +def get_bookList_ikb( + prefix: str, offset: int, max_offset: int, items: list[tuple], element_col: int = 10 +) -> InlineKeyboardMarkup: + + builder = InlineKeyboardBuilder() + + for item_id, item_name in items[offset * element_col : (offset + 1) * element_col]: + builder.row( + InlineKeyboardButton( + text=f"{item_name}", callback_data=f"{prefix}_pick_{item_id}" + ) + ) + + builder.row( + InlineKeyboardButton(text="⬅️", callback_data=f"{prefix}_prev"), + InlineKeyboardButton(text="➡️", callback_data=f"{prefix}_next"), + ) + + return builder.as_markup() diff --git a/bot/keyboards/inline_keyboards.py b/bot/keyboards/inline_keyboards.py new file mode 100644 index 0000000..0175ad6 --- /dev/null +++ b/bot/keyboards/inline_keyboards.py @@ -0,0 +1,3 @@ +# Aiogram imports +from aiogram.utils.keyboard import InlineKeyboardBuilder +from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton diff --git a/bot/keyboards/reply_keyboards.py b/bot/keyboards/reply_keyboards.py new file mode 100644 index 0000000..3a0c643 --- /dev/null +++ b/bot/keyboards/reply_keyboards.py @@ -0,0 +1,132 @@ +# Aiogram imports +from aiogram.types import InlineKeyboardMarkup, KeyboardButton, ReplyKeyboardMarkup +from aiogram.utils.keyboard import InlineKeyboardBuilder, ReplyKeyboardBuilder +from decouple import config +import pytz + + +QUESTION_CATEGORIES = [ + ("💼 Работа", "labor"), + ("🛒 Защита прав потребителей", "consumer"), + ("🏠 Жилье / аренда", "housing"), + ("👪 Семья", "family"), + ("💰 Долги / займы", "civil"), + ("📄 Договоры", "civil"), + ("⚖️ Суд / процесс", "procedural"), + ("❓ Другое", "other"), +] + +USER_TYPES = [ + ("Физлицо", "physical_person"), + ("ИП", "individual_entrepreneur"), + ("ООО", "company"), +] + +CATEGORY_BY_TEXT = {text: code for text, code in QUESTION_CATEGORIES} +USER_TYPE_BY_TEXT = {text: code for text, code in USER_TYPES} +USER_TYPE_LABEL_BY_CODE = {code: text for text, code in USER_TYPES} +TZ = pytz.timezone(config("TIMEZONE")) + + +def get_main_menu_kb() -> ReplyKeyboardMarkup: + builder = ReplyKeyboardBuilder() + + builder.row(KeyboardButton(text="⚖️ Задать вопрос")) + builder.row( + KeyboardButton(text="📚 Мои консультации"), + KeyboardButton(text="👤 Профиль"), + ) + builder.row(KeyboardButton(text="ℹ️ Помощь")) + + return builder.as_markup(resize_keyboard=True, is_persistent=True) + + +def get_categories_kb() -> ReplyKeyboardMarkup: + builder = ReplyKeyboardBuilder() + + for text, _ in QUESTION_CATEGORIES: + builder.add(KeyboardButton(text=text)) + + builder.add(KeyboardButton(text="↩️ В меню")) + builder.adjust(1) + + return builder.as_markup(resize_keyboard=True, is_persistent=True) + + +def get_back_to_menu_kb() -> ReplyKeyboardMarkup: + builder = ReplyKeyboardBuilder() + builder.row(KeyboardButton(text="↩️ В меню")) + return builder.as_markup(resize_keyboard=True) + + +def get_profile_kb() -> ReplyKeyboardMarkup: + builder = ReplyKeyboardBuilder() + + builder.row(KeyboardButton(text="🌍 Изменить регион")) + builder.row(KeyboardButton(text="👔 Изменить тип пользователя")) + builder.row(KeyboardButton(text="🗑 Удалить мои данные")) + builder.row(KeyboardButton(text="↩️ В меню")) + + return builder.as_markup(resize_keyboard=True, is_persistent=True) + + +def get_user_types_kb() -> ReplyKeyboardMarkup: + builder = ReplyKeyboardBuilder() + + for text, _ in USER_TYPES: + builder.add(KeyboardButton(text=text)) + + builder.add(KeyboardButton(text="↩️ В меню")) + builder.adjust(1) + + return builder.as_markup(resize_keyboard=True) + + +def get_delete_profile_kb() -> ReplyKeyboardMarkup: + builder = ReplyKeyboardBuilder() + + builder.row(KeyboardButton(text="✅ Да, удалить")) + builder.row(KeyboardButton(text="↩️ В меню")) + + return builder.as_markup(resize_keyboard=True) + + +def get_consultations_ikb(consultations: list) -> InlineKeyboardMarkup: + builder = InlineKeyboardBuilder() + + for consultation in consultations: + title = consultation.title or consultation.category + updated_at = consultation.updated_at.astimezone(TZ).strftime("%d.%m.%Y") + builder.row( + ai_button( + text=f"{title[:48]} — {updated_at}", + callback_data=f"consultation:open:{consultation.id}", + ) + ) + + return builder.as_markup() + + +def get_consultation_actions_ikb(consultation_id: int) -> InlineKeyboardMarkup: + builder = InlineKeyboardBuilder() + + builder.row( + ai_button( + text="🔁 Продолжить", + callback_data=f"consultation:continue:{consultation_id}", + ) + ) + builder.row( + ai_button( + text="🗑 Удалить", + callback_data=f"consultation:delete:{consultation_id}", + ) + ) + + return builder.as_markup() + + +def ai_button(text: str, callback_data: str): + from aiogram.types import InlineKeyboardButton + + return InlineKeyboardButton(text=text, callback_data=callback_data) diff --git a/bot/middlewares/album.py b/bot/middlewares/album.py new file mode 100644 index 0000000..e316b71 --- /dev/null +++ b/bot/middlewares/album.py @@ -0,0 +1,60 @@ +import asyncio +from typing import Any, Dict, Union + +from aiogram import BaseMiddleware +from aiogram.types import Message + + +class AlbumMiddleware(BaseMiddleware): + def __init__(self, latency: Union[int, float] = 0.19): + # Initialize latency and album_data dictionary + self.latency = latency + self.album_data = {} + + # + def collect_album_messages(self, event: Message): + """ + Collect messages of the same media group. + """ + # # Check if media_group_id exists in album_data + if event.media_group_id not in self.album_data: + # # Create a new entry for the media group + self.album_data[event.media_group_id] = {"messages": []} + # + # # Append the new message to the media group + self.album_data[event.media_group_id]["messages"].append(event) + # + # # Return the total number of messages in the current media group + return len(self.album_data[event.media_group_id]["messages"]) + + # + async def __call__(self, handler, event: Message, data: Dict[str, Any]) -> Any: + """ + Main middleware logic. + """ + # # If the event has no media_group_id, pass it to the handler immediately + if not event.media_group_id: + return await handler(event, data) + # + # # Collect messages of the same media group + total_before = self.collect_album_messages(event) + # + # # Wait for a specified latency period + await asyncio.sleep(self.latency) + # + # # Check the total number of messages after the latency + total_after = len(self.album_data[event.media_group_id]["messages"]) + # + # # If new messages were added during the latency, exit + if total_before != total_after: + return + # + # # Sort the album messages by message_id and add to data + album_messages = self.album_data[event.media_group_id]["messages"] + album_messages.sort(key=lambda x: x.message_id) + data["album"] = album_messages + # + # # Remove the media group from tracking to free up memory + del self.album_data[event.media_group_id] + # # Call the original event handler + return await handler(event, data) diff --git a/bot/middlewares/users_control.py b/bot/middlewares/users_control.py new file mode 100644 index 0000000..8758ce4 --- /dev/null +++ b/bot/middlewares/users_control.py @@ -0,0 +1,93 @@ +from aiogram import types +from aiogram import BaseMiddleware +from datetime import datetime, timedelta, timezone +from collections import deque +import asyncio + +# Const +from create_bot import orm + + +class AntiFloodMiddleware(BaseMiddleware): + + def __init__( + self, max_messages: int = 5, interval: float = 2, block_time: float = 60.0 + ): + """ + Инициализация AntiFloodMiddleware. + + :param max_messages: Максимальное количество сообщений. + :param interval: Временной интервал (в секундах) для проверки сообщений. + :param block_time: Время блокировки пользователя (в секундах). + """ + super(AntiFloodMiddleware, self).__init__() + self.max_messages = max_messages + self.interval = interval + self.block_time = block_time + self.user_messages = {} # user_id: deque of message timestamps + self.blocked_users = {} # user_id: unblock_time + self.lock = asyncio.Lock() # Для обеспечения потокобезопасности + + async def __call__(self, handler, event: types.Message, data): + user_id = event.from_user.id + current_time = datetime.now(timezone.utc) + + async with self.lock: + # Проверка, заблокирован ли пользователь + if user_id in self.blocked_users: + unblock_time = self.blocked_users[user_id] + if current_time < unblock_time: + # Пользователь всё ещё заблокирован + return + else: + # Блокировка истекла + del self.blocked_users[user_id] + + if isinstance(event, types.CallbackQuery): + return await handler(event, data) + + # Инициализация очереди сообщений для пользователя, если её ещё нет + if user_id not in self.user_messages: + self.user_messages[user_id] = deque() + + user_queue = self.user_messages[user_id] + user_queue.append(current_time) + + # Удаление сообщений, которые старше интервала + while ( + user_queue + and (current_time - user_queue[0]).total_seconds() > self.interval + ): + user_queue.popleft() + + # Проверка, превысил ли пользователь лимит сообщений + if len(user_queue) > self.max_messages: + # Блокировка пользователя + self.blocked_users[user_id] = current_time + timedelta( + seconds=self.block_time + ) + # Очистка очереди сообщений + del self.user_messages[user_id] + + await event.answer(text="🧊 Вы заморожены на 1 минуту за флуд!") + + # Отмена обработки сообщения и блокировка + return + + return await handler(event, data) + + +class BlacklistMiddleware(BaseMiddleware): + def __init__(self): + super().__init__() + + async def __call__(self, handler, event: types.Update, data: dict): + user_id = self.get_user_id(event) + if user_id: + if await orm.is_blacklisted(user_id): + return + + return await handler(event, data) + + def get_user_id(self, event: types.Update): + return event.from_user.id diff --git a/bot/requirements.txt b/bot/requirements.txt new file mode 100644 index 0000000..54e8465 --- /dev/null +++ b/bot/requirements.txt @@ -0,0 +1,42 @@ +aiofiles==24.1.0 +aiogram==3.17.0 +aiohappyeyeballs==2.4.6 +aiohttp==3.11.12 +aiohttp-socks==0.10.1 +aiosignal==1.3.2 +annotated-types==0.7.0 +asyncio==3.4.3 +asyncpg==0.30.0 +attrs==25.1.0 +beautifulsoup4==4.13.4 +certifi==2025.1.31 +charset-normalizer==3.4.1 +dotenv-cli==3.4.1 +et_xmlfile==2.0.0 +frozenlist==1.5.0 +greenlet==3.1.1 +httpx==0.28.1 +idna==3.10 +magic-filter==1.0.12 +markdown-it-py==3.0.0 +mdurl==0.1.2 +multidict==6.1.0 +openpyxl==3.1.5 +propcache==0.2.1 +pydantic==2.10.6 +pydantic_core==2.27.2 +Pygments==2.19.1 +python-decouple==3.8 +redis==5.2.1 +requests==2.32.3 +rich==13.9.4 +simplejson==3.20.1 +SQLAlchemy==2.0.38 +soupsieve==2.7 +typing_extensions==4.12.2 +urllib3==2.3.0 +uvloop==0.21.0 +yarl==1.18.3 +fastapi +uvicorn +pytz diff --git a/bot/states/__init__.py b/bot/states/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bot/states/admin_states.py b/bot/states/admin_states.py new file mode 100644 index 0000000..23ea749 --- /dev/null +++ b/bot/states/admin_states.py @@ -0,0 +1,36 @@ +# Aiogram imports +from aiogram.fsm.state import State, StatesGroup + + +class AdminStates(StatesGroup): + + main = State() + + +class AdminMailerStates(StatesGroup): + + post = State() + ikb = State() + preview = State() + + +class AdminManagementStates(StatesGroup): + + main = State() + + add_admin = State() + del_admin = State() + + +class AdminSettingsStates(StatesGroup): + + main = State() + edit_photo = State() + + +class AdminBlacklistStates(StatesGroup): + + main = State() + + add_blacklist = State() + del_blacklist = State() diff --git a/bot/states/client_states.py b/bot/states/client_states.py new file mode 100644 index 0000000..8b44311 --- /dev/null +++ b/bot/states/client_states.py @@ -0,0 +1,20 @@ +# Aiogram imports +from aiogram.fsm.state import State, StatesGroup + + +class MainStates(StatesGroup): + main = State() + + +class AskQuestionStates(StatesGroup): + choosing_category = State() + waiting_question = State() + waiting_region = State() + processing = State() + waiting_continue_question = State() + + +class ProfileStates(StatesGroup): + waiting_region = State() + waiting_user_type = State() + confirm_delete = State() diff --git a/bot/templates/users.xlsx b/bot/templates/users.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0c7d8794d9bb6d91123bcca4764aec6f7822b8ad GIT binary patch literal 5399 zcmaJ_2RNI3*N;7F&#F;s)E+e&RL$CZ&r%ViL=bz`u3f5CLhbRPgsQ!R8b$4@twC*S z)aH}tdB3;bzTeYxU%8W9*L}|aKKpl$wi*^T6#yR}AE10+*aUEmZe0DgbOSrV1o+YS z(wA+T?Se!R+kVm9hoUnw_}K*w>dFl)B22Ap&h%ALxgDXqKNTn`h~nP2$GZkTyRgom zRd?o{735HR9A#hml_qzjejc6*_vy5F}T+neX-o}fy& zvZtXogz+7;VFQqodG2Om;C1i9CUQB=gYQG(Z$@{L zSUkH`)pPv|fsGWz;0QvWS#Utzr@8G{By>cA${OTvSeCcCX+~<|SCOL zJ>l&n;01Maw1z?*`Mn`dae6(@Q-WkohdkJ`5WdGx>65XHsuKV+WQ9GcFBNGVqp7-G zoeEc4ycA3vqJIvCvJD{bLv1sX?|(P-{cQDaklS`a(2D7Q%xUE|K|eQH82eJ}5=%nV zN||kG%QtKfoPCCu6C46|R+`@nm5`-{Z%;Lbz^AgEWpwgJ3zn4&zMfVKwcaqpu;M%C z#4iZ!54UDSBF{)8_|+2I6~A}gqViFUUv4ar4iMpv#>BbP82rr6V0(##^d9IsjI*1f4*-nXDi zSIMAN>qF4#3{2jergf0|KN3U z3X2Cbcb|p^Kb!m{6?maY)%q2en)T=n|7YKX6oBe?nyvH-sFgcI96`CEK@9=@L_h)- z7dN{*!iLRO@$5N+YIhLS$~opcRRh=(%u%CKwU0(4kE+F$h#Gc_*fd#`Vh1OKgK>r_ zRKT+XLvYRXQJRp8vf)sc0L7bz^9*yrYHeh5RJWQqXlZk@KLm!U9FcH})CrII;)P{JeZQcKsPS>SLOGajyRzzOshmnBfWx1IxBZ)u)0H?(aw z5n^f}L==8K7@zJl8wl^~d$9SL94|OFOU^|BQF3!RlAB0!rLq>qBN)XwP_?S~GUtOA zANRVVJzt8CvFkhX!fC0LEj{(s*Khadb_e9=>4(4e?*6c6E!F0&CvSinx;N?$!(~wU z%~ZF2--jPY0mc_KspliCn=Wrn z%WpfJ_ceNEuQOT_k>E*EO|TZ-%$Pzwnv8)oGwV}ssm{tHQ>}rbmH--yojnvMyST`w)JSClcaos z_sQB-ZPldtQ7CW8(?o$qhftt*Echj7|?Z#b8`&ndNpIr1~vL{zu|f_f^_ zxD3p_Gh&6)S-+xiY|E3}5?OK7D)wzy1XcU8(|v=tNt+nRmrcWNxDw%N=~19~nBIun z_J-iACt@Cg6$wppr8txp*fC34Mkh1lV~jit+txF;7M9p(%y;z%V(3 z|4&U5=YDa!P6}C;cHs;;kg?&-dCYqAxFF#(vc}}MUP`w9QaG2Y(Kf_(VJ$aaPLoB* z7Au$#NbenljgZP<>l=EZw1{HIFlCeJyuCy9#$>oZq=2G9;YnL{CPkb#Q=z*!g~T!; zdiuKg766#}=q|PQ1JBfgBuqAe4^adK`p;J-D#p+8kJ|OV_hZ>UycJnm=1{t5SY znBVey3ok0VsqE2-UB2_0jT@`wq^Ye{T5=mNG~#Y|FWx)x=a7Vlvixfvoeyh7=H{sj zvLMr|y?{Bz?~v3Na#{NDXBzyE!bew2WKg=?8AgF$vB7LAf|B;*6MaLhNBCOEKE2{N z6*6telMq>`d)cv%MUpJ|9?)vHWBa&mJ?%lMdIrNipJDo@=1y6#t4rjUC!~bSz@*n3 zwdN|2|%JswDs4*?NBxJ=CRU>ZCE+h~+P((MD zTw1iyt)dK<%SgF*RGL=hoy_*7Bf%fO2tyXQ-Y@6R4LOJ9DFP;9!L(gj|rvcENPvfmOUDj)CDBD_Lvv*M8(0fte= zUErXrO}yK51}8QE&`*EU+n77IA)r z@log7V29Yt@v6%}etI)P@Wx=$;FrB-<%2bmxV6X*c_Q569PIG6PEY)%;Pb7`1viDZJD-xZ$JsAO0@$w&e-;LYf>MTB4%g&G0~RM+BxfW@HEh z@6jGn4?P`e$FQUAGU_x`Cq{BAO4Qex@wJNxj|{UxnX`ida`$9+hX@-_zG{`>3Bh4^ z`5<1jc%&0Me>OpOrdp3d==e_GfpTh{>nuDW+frpq3J$05u#)sKrz#wVC(GzNXK5n| zB7-NVFg`!4Fr0o`RgwaO7Eh-O-#ou1E3ijnM5~Hhy7*%2HXmJ#UlhvmEPDHg@aNJ< zy))&{r^k=KrHHvwt+F_y%+iNJlZ$@pTH@f7PYK766MD3%SOp|Mu3j0!{R-Rt^GHB` z^@I%+r0oWEfeC=1ZeVn;g6LXkg$hyy92zAw%RhnHinLOQ`ng37(ZxZlnm`7o@aovj zIWwzvzOBuS7a3E2Q%)6c49c-Uk4oKMDF_kDRKRZ-EU!SCh`w`{$8&3zn99bJSPkXW z_M~vU6WeimO8k+aJeX8BS@3OcDGYAq^p%FKD$$Em!1*a_(ca)IW4)j9YOP7Y=5`8( zrBR(}oCsfag)ZfRkIFMC#ia8@@;DT)DuGcHXWu=n@|t|Jj0VzmYeOSS#*={chla5q zt0B3blV<1VlxG#bzMD$K;cJGS0BSnBFuJTVu}2Y~gAwA!wqc%uOQGJf-sU<6Vu8}( z4#+n(v-fmomU*7e^tKEs0$QYxVtJ-rDHWLNT3^US1ZxeS?k~7DDRi=BOh>rh;#if? z>~Ye3`PJ^r{=KYiC#$>l2wgUZIggH+D#+deaUZd8TUPe~ezT>n?fX;)3?b+XM|L5@1z7$-}6DQNF4si{Qw zwpap)fuHZ5Rvk6)}zO*E#=wu>#0jz;+?epKvaHI3=IB25SS?jQB<+4}M;8YC6zx4063cxI`N$!*;KPLm+hcec!a-L{wvwaeskUZLcfS(FkW< zU2h-;I+FSL6G@M+i~|2-BvW2D8^{CZ4u$+>xq%8oq##xJ!b~Cl*C~Cx#NiJyKuP_> zgxP8g7_?g>Ccuw1WGnvp?T4BpQs?sT$i9+4trOtk0`L)&+~tFw=L1#RdgiT|!m^fd zc^f>xn6u(U_F%;DGCPVFQa#O|7?>x1BM#zceFW9baMcxwA3&yVe8WhR&>z$J8cun9 z$6x&T$C~K58i~!^_R%bq#SfAjXg5WR)@xxL5cKBit$$p7{y9U@dYQ>Xo!!CC?w0yK zE?}4iTCXPkeyw(9s+MhpeJvch+;(%s8BaRCzQachAHi4Vk3BJc;g>xIPOXBOprTs+ zS_B?5r$KDqzH5`nHi+l&j-}96hh_INH1RSGJBp;mzwaCmQjkxaa6PBG#jSqUh?*Tlw!#AN-JPdW@Lkeu)a9Jt%abg)Hx`3v3fH`S3KwA zXo$}3UN%FOy908YzCn(iq|^D911>URQe_k$EzZiU^nI9_ZPaN#H;`}R*0X4^SY;qR z%-UE|_113}5fLwnacHTog$j#HE6@FT1Cxz0Br-tSbPPRDCuvxjE5Ht7Y_SnIW$L=H46cx4}$}?9^S@~ zu9>Xe5jF(~0BqX@V3Jt06l z>6>H?sm)d3jpCr4gn>x~__cz%zI8#bp#GDtEu?;DygqZImomTT?$uGht!RE{zCMef z$MRofeKo>gG5;FUe`mc8EYQQsFM5vq?{oiabopJ%^(Kr4A;0M03b0(gz&}8e-{oBI zQ0SKZi%5z7R^;~v{=09u%N5%FX|_`#{RDw{5$vc^hGD> uFT%bO_UrI}m!jVVTo0}P6fk`y;Qz^aZ8e-LHvs^IS69$g4+*9~|NCDfN%S-T literal 0 HcmV?d00001 diff --git a/bot/utils/__init__.py b/bot/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bot/utils/cfg_loader.py b/bot/utils/cfg_loader.py new file mode 100644 index 0000000..1e5243a --- /dev/null +++ b/bot/utils/cfg_loader.py @@ -0,0 +1,17 @@ +import simplejson as json + +# init +CFG_PATH = "cfg/config.json" + + +# load cfg and return it +def load_config(cfg_path=CFG_PATH): + + with open(cfg_path, "r", encoding="utf-8") as config_fp: + return json.load(config_fp) + + +def rewrite_config(obj, cfg_path=CFG_PATH): + + with open(cfg_path, "w", encoding="utf-8") as config_fp: + json.dump(obj, config_fp, indent=4) diff --git a/bot/utils/rag_api.py b/bot/utils/rag_api.py new file mode 100644 index 0000000..b3db58c --- /dev/null +++ b/bot/utils/rag_api.py @@ -0,0 +1,85 @@ +import logging + +import httpx +from decouple import config + + +logger = logging.getLogger(__name__) + +RAG_API_URL = config("RAG_API_URL", default="http://api:8080").rstrip("/") +HTTP_TIMEOUT = httpx.Timeout(120.0, connect=20.0) + + +def build_history_payload(messages: list) -> list[dict]: + payload = [] + + for message in messages[-6:]: + payload.append( + { + "role": message.role, + "content": message.content, + } + ) + + return payload + + +async def ask_rag_answer( + *, + user_id: int, + question: str, + category: str | None, + region: str | None, + user_type: str | None, + consultation_id: int | None = None, + history: list | None = None, + top_k: int = 5, +) -> dict: + payload = { + "user_id": user_id, + "consultation_id": consultation_id, + "save_history": True, + "question": question, + "category": category, + "region": region, + "user_type": user_type, + "history": build_history_payload(history or []), + "top_k": top_k, + } + + try: + async with httpx.AsyncClient(timeout=HTTP_TIMEOUT) as client: + response = await client.post( + f"{RAG_API_URL}/api/v1/rag/answer", + json=payload, + ) + response.raise_for_status() + return response.json() + except httpx.HTTPStatusError as exc: + detail = "" + try: + detail = exc.response.json().get("detail", "") + except Exception: + detail = exc.response.text + + if "No reliable law chunks" in detail: + detail = ( + "Я не нашел в базе надежную норму по этому вопросу. " + "Попробуйте уточнить ситуацию и задать вопрос еще раз." + ) + elif "User was not found" in detail: + detail = ( + "Профиль пользователя не найден в базе. " + "Нажмите /start и попробуйте еще раз." + ) + elif "Consultation was not found" in detail: + detail = ( + "Не удалось найти выбранную консультацию. " + "Откройте историю заново или начните новую консультацию." + ) + + logger.warning("RAG API returned %s: %s", exc.response.status_code, detail) + raise RuntimeError(detail or "Сервис анализа вернул ошибку.") + except httpx.HTTPError as exc: + logger.exception("RAG API request failed") + raise RuntimeError("Не удалось связаться с сервисом анализа. Попробуйте позже.") from exc diff --git a/bot/utils/text_tools.py b/bot/utils/text_tools.py new file mode 100644 index 0000000..2358cdb --- /dev/null +++ b/bot/utils/text_tools.py @@ -0,0 +1,120 @@ +import html +import re + + +def to_html(obj): + + return html.escape(str(obj)) + + +def format_llm_answer_html(text: str | None) -> str: + if text is None: + return "" + + escaped = html.escape(str(text).replace("\r\n", "\n").strip()) + normalized_lines = [] + + for line in escaped.split("\n"): + normalized_line = re.sub(r"^\s*[-*]\s+", "• ", line.rstrip()) + normalized_lines.append(normalized_line) + + formatted = "\n".join(normalized_lines) + formatted = re.sub(r"\*\*(.+?)\*\*", r"\1", formatted) + return formatted + + +def split_plain_text_chunks(text: str | None, limit: int = 3500) -> list[str]: + if text is None: + return [""] + + normalized = str(text).replace("\r\n", "\n").strip() + if not normalized: + return [""] + + paragraphs = normalized.split("\n\n") + chunks: list[str] = [] + current = "" + + for paragraph in paragraphs: + paragraph = paragraph.strip() + if not paragraph: + continue + + candidate = paragraph if not current else f"{current}\n\n{paragraph}" + if len(candidate) <= limit: + current = candidate + continue + + if current: + chunks.append(current) + current = "" + + if len(paragraph) <= limit: + current = paragraph + continue + + lines = paragraph.split("\n") + line_buffer = "" + + for line in lines: + line = line.rstrip() + line_candidate = line if not line_buffer else f"{line_buffer}\n{line}" + if len(line_candidate) <= limit: + line_buffer = line_candidate + continue + + if line_buffer: + chunks.append(line_buffer) + line_buffer = "" + + while len(line) > limit: + chunks.append(line[:limit].rstrip()) + line = line[limit:].lstrip() + + line_buffer = line + + if line_buffer: + current = line_buffer + + if current: + chunks.append(current) + + return chunks or [normalized[:limit]] + + +def parse_links_to_inline_markup(message: str) -> list: + """ + Парсит сообщение с форматированными ссылками и возвращает список рядов кнопок. + + Формат входного сообщения: + - [Текст кнопки + Ссылка] для одной кнопки. + - [Кнопка1 + Ссылка1][Кнопка2 + Ссылка2] для нескольких кнопок в одном ряду. + - Каждая строка представляет отдельный ряд кнопок. + + Пример: + [Кнопка1 + https://example.com] + [Кнопка2 + https://example.org][Кнопка3 + https://example.net] + + :param message: Строка с отформатированными ссылками. + :return: Список рядов кнопок, где каждый ряд — это список кортежей (Текст, Ссылка). + """ + # Исправленное регулярное выражение для поиска [Текст + Ссылка] + pattern = re.compile(r"\[([^\[\]+]+)\s*\+\s*(https?://[^\[\]]+)\]") + + # Инициализируем список рядов кнопок + keyboard_rows = [] + + # Разбиваем сообщение на строки + lines = message.strip().split("\n") + + for line in lines: + # Находим все совпадения в строке + matches = pattern.findall(line) + if matches: + row = [] + for text, url in matches: + button = (text.strip(), url.strip()) + row.append(button) + keyboard_rows.append(row) + + return keyboard_rows diff --git a/bot/webhooks.py b/bot/webhooks.py new file mode 100644 index 0000000..05f4eb1 --- /dev/null +++ b/bot/webhooks.py @@ -0,0 +1,16 @@ +from fastapi import FastAPI, Request +from fastapi.responses import JSONResponse + +app = FastAPI() + + +@app.get("/") +async def root(): + return {"message": "Hello, this is the test webhook endpoint!"} + + +@app.post("/webhook") +async def webhook(request: Request): + data = await request.json() + + return JSONResponse(content={"status": "ok", "data": data}) diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..fcc71e2 --- /dev/null +++ b/compose.yml @@ -0,0 +1,95 @@ +name: law-bot +x-default-logging: &default-logging + driver: json-file + options: + max-size: "10m" + max-file: "3" + +services: + tgbot: + build: + context: . + dockerfile: bot/Dockerfile + network: host + restart: unless-stopped + env_file: + - ./bot/.env + - ./postgres.env + environment: + - REDIS_URL=redis://redisdb:6379/0 + - POSTGRES_HOST=postgredb + - POSTGRES_PORT=5432 + - RAG_API_URL=http://api:8080 + depends_on: + redisdb: + condition: service_healthy + postgredb: + condition: service_healthy + api: + condition: service_healthy + command: python aiogram_run.py + logging: *default-logging + + redisdb: + image: redis:6-alpine + restart: unless-stopped + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + timeout: 5s + retries: 5 + logging: *default-logging + + chromadb: + image: chromadb/chroma:1.0.12 + restart: unless-stopped + ports: + - "8000:8000" + environment: + - IS_PERSISTENT=TRUE + - PERSIST_DIRECTORY=/data + volumes: + - ./volumes/chroma:/data + logging: *default-logging + + postgredb: + image: postgres:16-alpine + restart: unless-stopped + env_file: + - ./postgres.env + volumes: + - ./volumes/postgres:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] + interval: 5s + timeout: 5s + retries: 5 + logging: *default-logging + + api: + build: + context: . + dockerfile: api/Dockerfile + network: host + restart: unless-stopped + ports: + - "8080:8080" + env_file: + - ./api/.env + - ./postgres.env + environment: + - CHROMA_HOST=chromadb + - CHROMA_PORT=8000 + volumes: + - ./volumes/huggingface:/root/.cache/huggingface + depends_on: + postgredb: + condition: service_healthy + chromadb: + condition: service_started + healthcheck: + test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/health', timeout=5)"] + interval: 10s + timeout: 5s + retries: 10 + logging: *default-logging diff --git a/mvp.md b/mvp.md new file mode 100644 index 0000000..84d8a3e --- /dev/null +++ b/mvp.md @@ -0,0 +1,1373 @@ +# MVP Telegram-бота: юридический ИИ-консультант по законам РФ + +Версия: 1.0 +География: только Российская Федерация +Основная функция: юридическая консультация через RAG по базе законов РФ +LLM-интеграция: OpenRouter или любой OpenAI-compatible API +Язык интерфейса: русский +Платформа: Telegram + +--- + +## 1. Что делаем в MVP + +MVP — это Telegram-бот, который: + +1. принимает юридический вопрос пользователя; +2. уточняет категорию права и регион РФ; +3. формирует поисковые запросы для RAG; +4. ищет релевантные нормы в локальной базе законов; +5. отвечает простым языком; +6. показывает найденные источники; +7. сохраняет консультацию в историю. + +Главная ценность: + +> Пользователь задает вопрос, бот находит применимые нормы закона РФ, объясняет их простыми словами и дает базовый план действий. + +--- + +## 2. Что НЕ входит в MVP + +В MVP НЕ делаем: + +- проверку PDF/DOCX-документов; +- генерацию исков; +- генерацию договоров; +- генерацию претензий; +- оплату и тарифы; +- личный кабинет юриста; +- передачу живому специалисту; +- голосовые сообщения; +- OCR; +- сложную админ-панель; +- судебную практику как обязательный источник; +- автоматическое полное обновление всей правовой базы. + +--- + +## 3. Главное меню Telegram-бота + +Минимальное меню: + +```text +⚖️ Задать вопрос +📚 Мои консультации +👤 Профиль +ℹ️ Помощь +``` + +--- + +## 4. Раздел «⚖️ Задать вопрос» + +### 4.1. Категории MVP + +После нажатия «Задать вопрос» бот показывает категории: + +```text +Выберите категорию вопроса: + +💼 Работа +🛒 Защита прав потребителей +🏠 Жилье / аренда +👪 Семья +💰 Долги / займы +📄 Договоры +⚖️ Суд / процесс +❓ Другое +``` + +Для MVP не нужно покрывать все право. Достаточно основных бытовых категорий. + +--- + +### 4.2. Базовый сценарий консультации + +```mermaid +flowchart TD + A[Пользователь нажал Задать вопрос] --> B[Выбор категории] + B --> C[Бот просит описать ситуацию] + C --> D[Пользователь пишет вопрос] + D --> E[Бот уточняет регион РФ] + E --> F[Пользователь указывает регион] + F --> G[Создание консультации в БД] + G --> H[LLM классифицирует вопрос] + H --> I[LLM формирует RAG-запросы] + I --> J[Hybrid search по базе законов] + J --> K[Rerank найденных чанков] + K --> L[LLM формирует ответ только по источникам] + L --> M[Бот отправляет ответ] + M --> N[Сохранение ответа и источников в БД] +``` + +--- + +### 4.3. Сообщения бота + +#### Старт + +```text +Здравствуйте. Я юридический ИИ-консультант по законам РФ. + +Я могу помочь: +— разобраться в ситуации; +— найти применимые нормы закона; +— объяснить их простыми словами; +— дать базовый план действий. + +Ответ носит информационный характер и не заменяет консультацию юриста. +``` + +#### Запрос описания + +```text +Опишите ситуацию одним сообщением. + +Постарайтесь указать: +— что произошло; +— когда произошло; +— с кем спор; +— чего вы хотите добиться. +``` + +#### Запрос региона + +```text +Укажите регион РФ, где произошла ситуация. + +Например: +Москва +Санкт-Петербург +Краснодарский край +Республика Татарстан +``` + +--- + +## 5. Формат ответа бота + +Бот должен отвечать в одном стабильном формате: + +```text +⚖️ Краткий вывод +... + +📌 Что говорит закон +... + +✅ Что можно сделать +1. ... +2. ... +3. ... + +⚠️ Риски и ограничения +... + +📚 Найденные источники +1. ... +2. ... +3. ... + +❗ Важно +Я ИИ-консультант, а не адвокат. Ответ носит информационный характер. Для суда, крупных сумм, уголовных дел и сложных споров лучше обратиться к юристу. +``` + +--- + +## 6. Главное правило RAG + +Строгое правило: + +> Если источник не найден в RAG — бот не имеет права ссылаться на него. + +Нельзя писать: + +```text +Возможно, применяется статья 450 ГК РФ. +``` + +Нужно писать только так: + +```text +Найденные источники: +— ГК РФ, статья 450 — основания изменения и расторжения договора +``` + +Если источник не найден: + +```text +Я не нашел в базе надежную норму по этому вопросу. Могу дать только общий комментарий без ссылки на конкретную статью. +``` + +--- + +## 7. Как RAG будет искать подходящие нормы + +### 7.1. Входные данные + +На вход RAG-пайплайна идут: + +```json +{ + "user_question": "Работодатель не выплатил зарплату за последний месяц. Что делать?", + "category": "labor", + "region": "Москва", + "jurisdiction": "RU", + "user_type": "physical_person" +} +``` + +--- + +### 7.2. Шаг 1 — классификация вопроса + +LLM получает вопрос и возвращает структурированный JSON: + +```json +{ + "legal_domain": "labor_law", + "jurisdiction": "RU", + "region": "Москва", + "issue_type": "salary_delay", + "needs_clarification": false, + "search_intents": [ + "срок выплаты заработной платы", + "ответственность работодателя за задержку зарплаты", + "компенсация за задержку заработной платы", + "жалоба в трудовую инспекцию" + ] +} +``` + +Если данных мало: + +```json +{ + "legal_domain": "consumer_protection", + "needs_clarification": true, + "questions": [ + "Товар был с недостатком или качественный?", + "Сколько дней прошло с покупки?", + "Покупка была онлайн или в магазине?" + ] +} +``` + +В этом случае бот сначала задает уточняющие вопросы, а не запускает финальный ответ. + +--- + +### 7.3. Шаг 2 — генерация поисковых запросов + +LLM формирует 3–5 поисковых запросов: + +```json +{ + "queries": [ + "ТК РФ срок выплаты заработной платы", + "ТК РФ задержка заработной платы компенсация", + "ответственность работодателя за невыплату зарплаты", + "куда жаловаться если не выплатили зарплату" + ], + "filters": { + "jurisdiction": "RU", + "law_type": ["labor"], + "is_active": true + } +} +``` + +Важно: запросы генерирует LLM, но поиск выполняется не по интернету, а по локальной базе законов. + +--- + +### 7.4. Шаг 3 — hybrid search + +Для юридического поиска нельзя полагаться только на embeddings. + +Нужно использовать гибридный поиск: + +1. `vector search` — поиск по смыслу; +2. `full-text / BM25` — поиск по точным словам; +3. `metadata filters` — фильтр по юрисдикции, отрасли права, актуальности; +4. `reranker` — финальная сортировка найденных чанков. + +Минимальная схема: + +```mermaid +flowchart LR + A[LLM search queries] --> B[Vector search] + A --> C[Full-text search] + B --> D[Merge results] + C --> D + D --> E[Metadata filters] + E --> F[Reranker] + F --> G[Top 3-7 chunks for answer] +``` + +--- + +### 7.5. Шаг 4 — rerank + +Поиск может вернуть 20–50 фрагментов. В ответ LLM нельзя отправлять всё. + +Рекомендуемый режим MVP: + +```text +vector_top_k = 20 +text_top_k = 20 +merged_top_k = 30 +rerank_top_k = 5 +``` + +В финальный промпт LLM отправляем только 3–7 самых релевантных чанков. + +--- + +### 7.6. Шаг 5 — генерация ответа + +LLM получает: + +```json +{ + "user_question": "...", + "category": "...", + "region": "...", + "retrieved_sources": [ + { + "source_title": "Трудовой кодекс РФ", + "article": "136", + "article_title": "Порядок, место и сроки выплаты заработной платы", + "text": "..." + }, + { + "source_title": "Трудовой кодекс РФ", + "article": "236", + "article_title": "Материальная ответственность работодателя за задержку выплаты заработной платы", + "text": "..." + } + ] +} +``` + +Системное правило для LLM: + +```text +Отвечай только на основании retrieved_sources. +Не придумывай статьи, номера законов и судебную практику. +Если источников недостаточно, прямо скажи, что данных в базе недостаточно. +``` + +--- + +## 8. Раздел «📚 Мои консультации» + +Пользователь видит список своих консультаций: + +```text +📚 Ваши консультации: + +1. Невыплата зарплаты — 23.05.2026 +2. Возврат товара — 22.05.2026 +3. Аренда квартиры — 21.05.2026 +``` + +Кнопки по консультации: + +```text +👁 Открыть +🔁 Продолжить +🗑 Удалить +``` + +### 8.1. Продолжить консультацию + +Если пользователь нажал «Продолжить», новые сообщения добавляются к старой консультации. + +В RAG отправляется: + +1. новый вопрос; +2. краткая история консультации; +3. старые найденные источники; +4. при необходимости — новый поиск. + +--- + +## 9. Раздел «👤 Профиль» + +Минимальный профиль: + +```text +👤 Профиль + +Страна: Россия +Регион: Москва +Тип пользователя: Физлицо +``` + +Кнопки: + +```text +🌍 Изменить регион +👔 Изменить тип пользователя +🗑 Удалить мои данные +``` + +Тип пользователя: + +```text +Физлицо +ИП +ООО +``` + +Для MVP тип пользователя нужен только как контекст для LLM. + +--- + +## 10. Раздел «ℹ️ Помощь» + +```text +ℹ️ Как пользоваться ботом + +1. Нажмите «Задать вопрос». +2. Выберите категорию. +3. Опишите ситуацию. +4. Укажите регион РФ. +5. Получите ответ с найденными источниками. + +Пример хорошего вопроса: +«Работодатель не выплатил зарплату за апрель. Работаю официально, Москва. Что делать?» + +Бот не заменяет юриста и не гарантирует результат спора. +``` + +--- + +## 11. Архитектура MVP + +### 11.1. Минимальная архитектура + +```mermaid +flowchart TD + TG[Telegram] --> BOT[bot-service aiogram] + BOT --> DB[(PostgreSQL)] + BOT --> RAG[RAG service] + RAG --> VDB[(pgvector / Qdrant)] + RAG --> DB + RAG --> LLM[OpenRouter / OpenAI-compatible API] + BOT --> LLM +``` + +Для самого простого MVP можно сделать монолит: + +```text +one Python app: +— aiogram bot +— FastAPI optional +— RAG logic +— PostgreSQL access +— OpenAI-compatible client +``` + +--- + +### 11.2. Рекомендуемый стек + +```text +Python 3.12+ +aiogram 3.x +SQLAlchemy 2.x +Alembic +PostgreSQL 16+ +pgvector или Qdrant +Redis optional +OpenAI Python SDK +OpenRouter или OpenAI-compatible LLM +Docker Compose +``` + +--- + +## 12. Хранилище + +### 12.1. Таблицы MVP + +```text +users +consultations +messages +law_sources +law_chunks +rag_queries +``` + +--- + +### 12.2. users + +```sql +CREATE TABLE users ( + id BIGSERIAL PRIMARY KEY, + telegram_id BIGINT UNIQUE NOT NULL, + username TEXT, + first_name TEXT, + country TEXT NOT NULL DEFAULT 'Россия', + region TEXT, + user_type TEXT NOT NULL DEFAULT 'physical_person', + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); +``` + +`user_type`: + +```text +physical_person +individual_entrepreneur +company +``` + +--- + +### 12.3. consultations + +```sql +CREATE TABLE consultations ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, + category TEXT NOT NULL, + title TEXT, + region TEXT, + status TEXT NOT NULL DEFAULT 'active', + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); +``` + +--- + +### 12.4. messages + +```sql +CREATE TABLE messages ( + id BIGSERIAL PRIMARY KEY, + consultation_id BIGINT NOT NULL REFERENCES consultations(id) ON DELETE CASCADE, + role TEXT NOT NULL, + content TEXT NOT NULL, + sources_json JSONB, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +); +``` + +`role`: + +```text +user +assistant +system +``` + +--- + +### 12.5. law_sources + +```sql +CREATE TABLE law_sources ( + id BIGSERIAL PRIMARY KEY, + title TEXT NOT NULL, + source_type TEXT NOT NULL, + jurisdiction TEXT NOT NULL DEFAULT 'RU', + law_type TEXT, + document_number TEXT, + adoption_date DATE, + publication_date DATE, + effective_date DATE, + source_url TEXT, + official_publication_number TEXT, + version_hash TEXT, + is_active BOOLEAN NOT NULL DEFAULT true, + loaded_at TIMESTAMPTZ NOT NULL DEFAULT now() +); +``` + +Примеры `law_type`: + +```text +civil +labor +consumer +family +housing +tax +procedural +administrative +``` + +--- + +### 12.6. law_chunks + +Для pgvector: + +```sql +CREATE EXTENSION IF NOT EXISTS vector; + +CREATE TABLE law_chunks ( + id BIGSERIAL PRIMARY KEY, + source_id BIGINT NOT NULL REFERENCES law_sources(id) ON DELETE CASCADE, + chunk_index INT NOT NULL, + article_number TEXT, + article_title TEXT, + chunk_text TEXT NOT NULL, + metadata JSONB, + embedding vector(1536), + tsv tsvector, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +); +``` + +Индексы: + +```sql +CREATE INDEX law_chunks_source_id_idx ON law_chunks(source_id); +CREATE INDEX law_chunks_article_number_idx ON law_chunks(article_number); +CREATE INDEX law_chunks_tsv_idx ON law_chunks USING GIN(tsv); +CREATE INDEX law_chunks_embedding_idx ON law_chunks USING ivfflat (embedding vector_cosine_ops); +``` + +Размерность `embedding vector(1536)` нужно заменить под выбранную embedding-модель. + +--- + +### 12.7. rag_queries + +```sql +CREATE TABLE rag_queries ( + id BIGSERIAL PRIMARY KEY, + consultation_id BIGINT REFERENCES consultations(id) ON DELETE CASCADE, + user_message_id BIGINT REFERENCES messages(id) ON DELETE CASCADE, + generated_queries JSONB NOT NULL, + retrieved_chunks JSONB NOT NULL, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +); +``` + +Нужно для отладки качества RAG. + +--- + +## 13. LLM-интеграция OpenRouter / OpenAI-compatible + +OpenRouter поддерживает OpenAI-compatible API-стиль. Поэтому в коде лучше сразу писать через `openai` Python SDK с настраиваемыми: + +```text +OPENAI_BASE_URL +OPENAI_API_KEY +LLM_MODEL +EMBEDDING_MODEL +``` + +### 13.1. Пример клиента + +```python +from openai import OpenAI +import os + +client = OpenAI( + api_key=os.getenv("OPENAI_API_KEY"), + base_url=os.getenv("OPENAI_BASE_URL", "https://openrouter.ai/api/v1"), +) + +response = client.chat.completions.create( + model=os.getenv("LLM_MODEL", "openai/gpt-4.1-mini"), + messages=[ + {"role": "system", "content": "Ты юридический ИИ-консультант по законам РФ."}, + {"role": "user", "content": "Работодатель не выплатил зарплату. Что делать?"} + ], + temperature=0.2, +) +``` + +Для OpenAI напрямую: + +```env +OPENAI_BASE_URL=https://api.openai.com/v1 +OPENAI_API_KEY=... +LLM_MODEL=gpt-4.1-mini +``` + +Для OpenRouter: + +```env +OPENAI_BASE_URL=https://openrouter.ai/api/v1 +OPENAI_API_KEY=... +LLM_MODEL=openai/gpt-4.1-mini +``` + +--- + +## 14. Structured output для классификации + +Классификацию лучше получать строго в JSON. + +### 14.1. Prompt: классификатор + +```text +Ты классификатор юридических вопросов по законам РФ. + +Верни только JSON без markdown. + +Поля: +- legal_domain +- issue_type +- jurisdiction +- region +- needs_clarification +- clarification_questions +- search_queries +- filters + +Правила: +1. jurisdiction всегда RU. +2. Если данных недостаточно, needs_clarification = true. +3. search_queries должны быть пригодны для поиска по базе законов. +4. Не придумывай статьи. +5. Не давай юридический ответ на этом этапе. +``` + +### 14.2. Пример результата + +```json +{ + "legal_domain": "labor", + "issue_type": "salary_delay", + "jurisdiction": "RU", + "region": "Москва", + "needs_clarification": false, + "clarification_questions": [], + "search_queries": [ + "ТК РФ сроки выплаты заработной платы", + "ТК РФ задержка заработной платы компенсация", + "ответственность работодателя за задержку зарплаты" + ], + "filters": { + "law_type": ["labor"], + "jurisdiction": "RU", + "is_active": true + } +} +``` + +--- + +## 15. Prompt для финального ответа + +```text +Ты юридический ИИ-консультант по законам РФ. + +Твоя задача — ответить пользователю простым языком на основании найденных источников. + +Жесткие правила: +1. Используй только SOURCES. +2. Не придумывай статьи, номера законов, судебную практику и сроки. +3. Если источников недостаточно, прямо скажи об этом. +4. Не обещай победу в суде. +5. Не выдавай себя за адвоката. +6. Не помогай обходить закон. +7. В конце добавь дисклеймер. + +Формат ответа: + +⚖️ Краткий вывод +... + +📌 Что говорит закон +... + +✅ Что можно сделать +1. ... +2. ... +3. ... + +⚠️ Риски и ограничения +... + +📚 Найденные источники +1. [Название, статья, краткое описание] +2. ... + +❗ Важно +Ответ носит информационный характер и не заменяет консультацию юриста. +``` + +--- + +## 16. Источники законов РФ для базы + +### 16.1. Основной официальный источник + +Основной источник для MVP: + +```text +Официальный интернет-портал правовой информации +https://pravo.gov.ru/ +https://publication.pravo.gov.ru/ +``` + +Что важно: + +- это официальный контур опубликования правовых актов РФ; +- на `publication.pravo.gov.ru` есть раздел официального опубликования; +- есть раздел открытых данных; +- есть API-интерфейс; +- есть поиск по документам. + +Практически для MVP: + +```text +1. Использовать publication.pravo.gov.ru как первичный источник новых опубликованных актов. +2. Забрать нужные кодексы и федеральные законы. +3. Сохранять source_url, дату публикации, номер документа, hash версии. +4. Не пытаться на первом этапе спарсить всё право РФ. +``` + +Полезные URL: + +```text +https://publication.pravo.gov.ru/ +https://publication.pravo.gov.ru/OpenData +https://publication.pravo.gov.ru/help +``` + +--- + +### 16.2. Дополнительный официальный источник + +Дополнительный источник: + +```text +Портал Минюста России «Нормативные правовые акты в Российской Федерации» +https://pravo.minjust.ru/ +``` + +Что полезно: + +- федеральное законодательство; +- законодательство субъектов РФ; +- муниципальные акты; +- текущие и предыдущие редакции НПА. + +Полезные URL: + +```text +https://pravo.minjust.ru/ +https://pravo.minjust.ru/about_project +https://pravo.minjust.ru/about_project/setting_portal +``` + +--- + +### 16.3. Что парсить для MVP + +Не нужно сразу загружать все законы. + +Для MVP достаточно: + +```text +1. Конституция РФ +2. Гражданский кодекс РФ +3. Трудовой кодекс РФ +4. Семейный кодекс РФ +5. Жилищный кодекс РФ +6. Закон РФ «О защите прав потребителей» +7. Гражданский процессуальный кодекс РФ — базовые статьи +8. КоАП РФ — только базовые бытовые составы, если нужен административный блок +``` + +Для категорий MVP этого достаточно: + +| Категория в боте | Источники | +|---|---| +| Работа | ТК РФ | +| Потребители | Закон о защите прав потребителей, ГК РФ | +| Жилье / аренда | ГК РФ, ЖК РФ | +| Семья | СК РФ | +| Долги / займы | ГК РФ | +| Договоры | ГК РФ | +| Суд / процесс | ГПК РФ | + +--- + +### 16.4. Почему не стоит «парсить вообще всё» в MVP + +Полная база законодательства РФ — это сложно, потому что: + +- много редакций документов; +- есть федеральный, региональный и муниципальный уровни; +- есть акты, утратившие силу; +- у документов есть изменения и редакции; +- важна дата актуальности; +- часть пользовательских вопросов требует не только закон, но и практику применения. + +Для MVP правильнее сделать узкую, но качественную базу: + +```text +Кодексы + ключевые федеральные законы + метаданные + актуальность + хороший поиск. +``` + +--- + +## 17. Ingestion pipeline законов + +### 17.1. Схема загрузки + +```mermaid +flowchart TD + A[Источник: publication.pravo.gov.ru / pravo.minjust.ru] --> B[Fetcher] + B --> C[Raw storage] + C --> D[Text extractor / HTML parser] + D --> E[Normalizer] + E --> F[Split by articles] + F --> G[Chunker] + G --> H[Embeddings] + H --> I[(Vector DB / pgvector)] + E --> J[(PostgreSQL law_sources)] +``` + +--- + +### 17.2. Этапы + +#### 1. Fetcher + +Задача: + +```text +— скачать HTML/PDF/текст документа; +— сохранить оригинальный файл; +— сохранить URL; +— сохранить дату загрузки; +— сохранить hash. +``` + +#### 2. Raw storage + +Сохранять оригиналы обязательно: + +```text +/data/raw_laws/ + pravo/ + 2026-05-23/ + document_0001.html + document_0001.json +``` + +#### 3. Normalizer + +Приводит документ к единому виду: + +```json +{ + "title": "Трудовой кодекс Российской Федерации", + "document_number": "197-ФЗ", + "adoption_date": "2001-12-30", + "source_url": "...", + "text": "...", + "articles": [] +} +``` + +#### 4. Split by articles + +Кодексы нужно резать по статьям. + +Пример структуры: + +```json +{ + "article_number": "136", + "article_title": "Порядок, место и сроки выплаты заработной платы", + "text": "..." +} +``` + +#### 5. Chunker + +Если статья длинная, делить на чанки. + +Рекомендация: + +```text +chunk_size = 1000-1800 tokens +chunk_overlap = 100-200 tokens +``` + +Для коротких статей — один chunk = одна статья. + +#### 6. Embeddings + +Для каждого чанка: + +```text +embedding = embedding_model(chunk_text + article_title + source_title) +``` + +#### 7. Full-text index + +Дополнительно делать `tsvector` для PostgreSQL: + +```sql +UPDATE law_chunks +SET tsv = to_tsvector('russian', chunk_text); +``` + +--- + +## 18. Актуальность законов + +Для каждого источника хранить: + +```text +source_url +publication_date +effective_date +loaded_at +version_hash +is_active +``` + +Если документ обновился: + +```text +1. старая версия помечается is_active = false; +2. новая версия добавляется как новая запись; +3. чанки старой версии исключаются из поиска; +4. история консультаций сохраняет ссылки на версию, которая использовалась на момент ответа. +``` + +--- + +## 19. Retrieval API внутри проекта + +Минимальная функция: + +```python +async def retrieve_law_chunks( + queries: list[str], + law_types: list[str], + jurisdiction: str = "RU", + top_k: int = 5, +) -> list[LawChunk]: + ... +``` + +Внутри: + +```text +1. Создать embedding для каждого query. +2. Выполнить vector search. +3. Выполнить full-text search. +4. Слить результаты. +5. Убрать дубли. +6. Отфильтровать is_active = true. +7. Прогнать reranker. +8. Вернуть top_k чанков. +``` + +--- + +## 20. Пример SQL для hybrid search + +### 20.1. Full-text search + +```sql +SELECT + lc.id, + lc.chunk_text, + lc.article_number, + lc.article_title, + ls.title AS source_title, + ts_rank(lc.tsv, plainto_tsquery('russian', :query)) AS score +FROM law_chunks lc +JOIN law_sources ls ON ls.id = lc.source_id +WHERE + ls.jurisdiction = 'RU' + AND ls.is_active = true + AND lc.tsv @@ plainto_tsquery('russian', :query) +ORDER BY score DESC +LIMIT 20; +``` + +### 20.2. Vector search + +```sql +SELECT + lc.id, + lc.chunk_text, + lc.article_number, + lc.article_title, + ls.title AS source_title, + 1 - (lc.embedding <=> :query_embedding) AS score +FROM law_chunks lc +JOIN law_sources ls ON ls.id = lc.source_id +WHERE + ls.jurisdiction = 'RU' + AND ls.is_active = true +ORDER BY lc.embedding <=> :query_embedding +LIMIT 20; +``` + +--- + +## 21. FSM-состояния aiogram + +Минимальные состояния: + +```python +class AskQuestion(StatesGroup): + choosing_category = State() + waiting_question = State() + waiting_region = State() + processing = State() +``` + +Сценарий: + +```text +/start + -> main_menu + +Задать вопрос + -> choosing_category + +Выбрана категория + -> waiting_question + +Пользователь написал вопрос + -> waiting_region + +Пользователь указал регион + -> processing + -> RAG + -> answer + -> main_menu +``` + +--- + +## 22. Ограничения MVP + +### 22.1. Лимиты + +Чтобы не сжечь бюджет LLM: + +```text +Free MVP: +— 5 консультаций в день на пользователя +— максимум 5 сообщений в одной консультации +— максимум 7 retrieved chunks в одном ответе +— timeout LLM-запроса 60 секунд +``` + +### 22.2. Rate limit + +Ключ: + +```text +rate_limit:{telegram_id}:{date} +``` + +Хранить можно в Redis или PostgreSQL. + +--- + +## 23. Логирование + +Логировать: + +```text +telegram_id +consultation_id +category +region +user_question +generated_queries +retrieved_chunk_ids +llm_model +tokens_input +tokens_output +latency_ms +errors +``` + +Не логировать лишние персональные данные без необходимости. + +--- + +## 24. Safety rules + +Бот не должен: + +```text +— гарантировать победу в суде; +— обещать точный исход дела; +— советовать подделывать документы; +— помогать скрывать доходы; +— помогать обходить закон; +— составлять фиктивные схемы; +— выдавать себя за адвоката; +— давать категоричные инструкции по уголовным делам без рекомендации юриста. +``` + +В сложных случаях: + +```text +По этому вопросу лучше обратиться к юристу/адвокату, потому что ошибка может повлечь серьезные последствия. +``` + +--- + +## 25. Минимальный docker-compose + +```yaml +services: + bot: + build: . + env_file: + - .env + depends_on: + - postgres + restart: unless-stopped + + postgres: + image: pgvector/pgvector:pg16 + environment: + POSTGRES_DB: legal_bot + POSTGRES_USER: legal_bot + POSTGRES_PASSWORD: legal_bot_password + volumes: + - postgres_data:/var/lib/postgresql/data + ports: + - "5432:5432" + restart: unless-stopped + +volumes: + postgres_data: +``` + +--- + +## 26. .env + +```env +BOT_TOKEN= + +DATABASE_URL=postgresql+asyncpg://legal_bot:legal_bot_password@postgres:5432/legal_bot + +OPENAI_BASE_URL=https://openrouter.ai/api/v1 +OPENAI_API_KEY= +LLM_MODEL=openai/gpt-4.1-mini + +EMBEDDING_PROVIDER=openai +EMBEDDING_MODEL=text-embedding-3-small + +DAILY_CONSULTATION_LIMIT=5 +``` + +--- + +## 27. MVP roadmap + +### Этап 1 — Telegram shell + +```text +— /start +— главное меню +— выбор категории +— ввод вопроса +— ввод региона +— сохранение пользователя +``` + +### Этап 2 — база законов + +```text +— загрузить 5–8 основных источников +— распарсить по статьям +— сохранить law_sources +— сохранить law_chunks +— построить embeddings +— построить full-text index +``` + +### Этап 3 — RAG + +```text +— классификатор вопроса +— генератор search_queries +— hybrid search +— rerank +— финальный ответ с источниками +``` + +### Этап 4 — история + +```text +— список консультаций +— открыть консультацию +— продолжить консультацию +— удалить консультацию +``` + +### Этап 5 — защита от мусора + +```text +— лимиты +— логирование +— обработка ошибок LLM +— fallback если RAG ничего не нашел +— дисклеймер +``` + +--- + +## 28. Критерии готовности MVP + +MVP можно считать готовым, если: + +```text +1. Пользователь может задать вопрос. +2. Бот уточняет категорию и регион. +3. LLM генерирует поисковые запросы. +4. RAG возвращает реальные статьи из базы. +5. Ответ содержит только найденные источники. +6. История консультации сохраняется. +7. Пользователь может открыть старую консультацию. +8. Если источников нет, бот честно говорит об этом. +``` + +--- + +## 29. Короткое ТЗ в одну фразу + +Сделать Telegram-бота на Python/aiogram, который консультирует пользователей по законам РФ: принимает вопрос, уточняет категорию и регион, через OpenAI-compatible LLM формирует RAG-запросы, ищет по локальной базе законов РФ через hybrid search, отвечает простым языком с найденными источниками и сохраняет консультации в историю. + +--- + +## 30. Главный принцип разработки + +Не делать «ChatGPT в Telegram». + +Делать юридический workflow: + +```text +Категория → Вопрос → Регион → Классификация → RAG → Ответ с источниками → История +``` + +Самое важное качество MVP: + +```text +Лучше меньше категорий и источников, но чтобы бот не выдумывал статьи и всегда показывал, откуда взял правовую норму. +``` diff --git a/parser/__init__.py b/parser/__init__.py new file mode 100644 index 0000000..d5a863f --- /dev/null +++ b/parser/__init__.py @@ -0,0 +1 @@ +"""CLI parser package for LawBot ingestion.""" diff --git a/parser/__main__.py b/parser/__main__.py new file mode 100644 index 0000000..da281a5 --- /dev/null +++ b/parser/__main__.py @@ -0,0 +1,5 @@ +from parser.cli import main + + +if __name__ == "__main__": + main() diff --git a/parser/cli.py b/parser/cli.py new file mode 100644 index 0000000..fb2757e --- /dev/null +++ b/parser/cli.py @@ -0,0 +1,135 @@ +from __future__ import annotations + +import argparse +import asyncio + +from parser.discovery import discover_documents, build_session +from parser.fetcher import fetch_documents, load_manifest, load_raw_index +from parser.ingest import ingest_documents +from parser.normalizer import load_normalized_document, normalize_document, write_normalized_document +from shared import ORM + + +def parse_categories(value: str | None) -> set[str] | None: + if not value: + return None + return {item.strip() for item in value.split(",") if item.strip()} + + +def select_documents(categories: set[str] | None, limit: int | None) -> list[dict]: + manifest = load_manifest() + documents = manifest["documents"] + if categories: + documents = [doc for doc in documents if doc["category_key"] in categories] + if limit is not None: + documents = documents[:limit] + return documents + + +def run_discover(_: argparse.Namespace) -> None: + manifest = discover_documents(build_session()) + print(f"discovered {len(manifest['documents'])} documents from {manifest['source_page']}") + + +def run_fetch(args: argparse.Namespace) -> None: + documents = select_documents(parse_categories(args.categories), args.limit) + payloads = fetch_documents(documents, force=args.force, dry_run=args.dry_run) + print(f"fetched {len(payloads)} documents") + + +def run_normalize(args: argparse.Namespace) -> None: + documents = select_documents(parse_categories(args.categories), args.limit) + raw_index = load_raw_index() + normalized_count = 0 + + for document in documents: + raw_payload = raw_index.get("documents", {}).get(document["key"]) + if raw_payload is None: + raise FileNotFoundError( + f"raw payload for {document['key']} not found; run `python -m parser fetch` first" + ) + + normalized_document = normalize_document(raw_payload) + write_normalized_document(normalized_document, dry_run=args.dry_run) + normalized_count += 1 + + print(f"normalized {normalized_count} documents") + + +async def _run_ingest_async(args: argparse.Namespace) -> None: + documents = select_documents(parse_categories(args.categories), args.limit) + normalized_documents = [] + + for document in documents: + normalized = load_normalized_document(document["key"]) + if normalized is None: + raise FileNotFoundError( + f"normalized payload for {document['key']} not found; run `python -m parser normalize` first" + ) + normalized_documents.append(normalized) + + orm = None + try: + if not args.dry_run: + orm = ORM() + await orm.init_schema() + results = await ingest_documents(orm, normalized_documents, dry_run=args.dry_run) + finally: + if orm is not None: + await orm.close() + + print(f"ingested {len(results)} documents") + + +def run_ingest(args: argparse.Namespace) -> None: + asyncio.run(_run_ingest_async(args)) + + +def run_pipeline(args: argparse.Namespace) -> None: + run_discover(args) + if args.dry_run: + run_fetch(args) + print("dry-run stopped after fetch preview; raw files and DB were not changed") + return + + run_fetch(args) + run_normalize(args) + run_ingest(args) + + +def build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser(description="Consultant ingestion pipeline for LawBot.") + subparsers = parser.add_subparsers(dest="command", required=True) + + def add_common_flags(command_parser: argparse.ArgumentParser) -> None: + command_parser.add_argument("--categories", default=None) + command_parser.add_argument("--force", action="store_true") + command_parser.add_argument("--limit", type=int, default=None) + command_parser.add_argument("--dry-run", action="store_true") + + discover_parser = subparsers.add_parser("discover") + discover_parser.set_defaults(func=run_discover) + + fetch_parser = subparsers.add_parser("fetch") + add_common_flags(fetch_parser) + fetch_parser.set_defaults(func=run_fetch) + + normalize_parser = subparsers.add_parser("normalize") + add_common_flags(normalize_parser) + normalize_parser.set_defaults(func=run_normalize) + + ingest_parser = subparsers.add_parser("ingest") + add_common_flags(ingest_parser) + ingest_parser.set_defaults(func=run_ingest) + + run_parser = subparsers.add_parser("run") + add_common_flags(run_parser) + run_parser.set_defaults(func=run_pipeline) + + return parser + + +def main() -> None: + parser = build_parser() + args = parser.parse_args() + args.func(args) diff --git a/parser/config.py b/parser/config.py new file mode 100644 index 0000000..a1f649c --- /dev/null +++ b/parser/config.py @@ -0,0 +1,136 @@ +from __future__ import annotations + +from pathlib import Path + + +BASE_DIR = Path(__file__).resolve().parent.parent +VOLUMES_DIR = BASE_DIR / "volumes" / "parser" +RAW_ROOT = VOLUMES_DIR / "raw" / "consultant" +NORMALIZED_ROOT = VOLUMES_DIR / "normalized" +STATE_DIR = VOLUMES_DIR / "state" +MANIFEST_PATH = STATE_DIR / "manifest.json" +RAW_INDEX_PATH = STATE_DIR / "raw_index.json" + +POPULAR_URL = "https://www.consultant.ru/popular/" +REQUEST_TIMEOUT = 30 +MAX_RETRIES = 3 +MAX_WORKERS = 2 +USER_AGENT = ( + "LawBotParser/1.0 (+https://local.lawbot; " + "purpose=legal-rag-ingestion; contact=local-dev)" +) + +TARGET_DOCUMENTS = [ + { + "key": "constitution", + "category_key": "constitution", + "consultant_category": "Конституция РФ", + "law_type": "constitutional", + "source_short_name": "Конституция РФ", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_28399/", + }, + { + "key": "civil_code_part_1", + "category_key": "civil", + "consultant_category": "Гражданское право, гражданское законодательство РФ", + "law_type": "civil", + "source_short_name": "ГК РФ ч. 1", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_5142/", + }, + { + "key": "civil_code_part_2", + "category_key": "civil", + "consultant_category": "Гражданское право, гражданское законодательство РФ", + "law_type": "civil", + "source_short_name": "ГК РФ ч. 2", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_508506/", + }, + { + "key": "civil_code_part_3", + "category_key": "civil", + "consultant_category": "Гражданское право, гражданское законодательство РФ", + "law_type": "civil", + "source_short_name": "ГК РФ ч. 3", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_482694/", + }, + { + "key": "civil_code_part_4", + "category_key": "civil", + "consultant_category": "Гражданское право, гражданское законодательство РФ", + "law_type": "civil", + "source_short_name": "ГК РФ ч. 4", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_509417/", + }, + { + "key": "civil_procedure_code", + "category_key": "civil_procedure", + "consultant_category": "Гражданское процессуальное право, гражданский процесс", + "law_type": "procedural", + "source_short_name": "ГПК РФ", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_39570/", + }, + { + "key": "housing_code", + "category_key": "housing", + "consultant_category": "Жилищное право, жилищное законодательство РФ", + "law_type": "housing", + "source_short_name": "ЖК РФ", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_51057/", + }, + { + "key": "family_code", + "category_key": "family", + "consultant_category": "Семейное право, семейное законодательство РФ", + "law_type": "family", + "source_short_name": "СК РФ", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_8982/", + }, + { + "key": "labor_code", + "category_key": "labor", + "consultant_category": "Трудовое право, трудовое законодательство РФ", + "law_type": "labor", + "source_short_name": "ТК РФ", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_34683/", + }, + { + "key": "consumer_protection_law", + "category_key": "consumer", + "consultant_category": "Законодательство РФ о правах потребителя", + "law_type": "consumer", + "source_short_name": "ЗОЗПП", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_305/", + }, + { + "key": "enforcement_law", + "category_key": "enforcement", + "consultant_category": "Законодательство об исполнительном производстве", + "law_type": "enforcement", + "source_short_name": "ФЗ об исполнительном производстве", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_71450/", + }, + { + "key": "mortgage_law", + "category_key": "mortgage", + "consultant_category": "Законодательство об ипотеке", + "law_type": "mortgage", + "source_short_name": "ФЗ об ипотеке", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_19396/", + }, + { + "key": "administrative_code", + "category_key": "administrative", + "consultant_category": "Административное право, административное законодательство РФ", + "law_type": "administrative", + "source_short_name": "КоАП РФ", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_34661/", + }, + { + "key": "criminal_code", + "category_key": "criminal", + "consultant_category": "Уголовное право, уголовное законодательство РФ", + "law_type": "criminal", + "source_short_name": "УК РФ", + "source_url": "https://www.consultant.ru/document/cons_doc_LAW_10699/", + }, +] diff --git a/parser/discovery.py b/parser/discovery.py new file mode 100644 index 0000000..eba82a6 --- /dev/null +++ b/parser/discovery.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +from collections import defaultdict +from datetime import datetime, timezone + +import requests +from bs4 import BeautifulSoup + +from parser.config import MANIFEST_PATH, POPULAR_URL, TARGET_DOCUMENTS, USER_AGENT +from parser.utils import to_absolute_url, write_json + + +def discover_documents(session: requests.Session) -> dict: + response = session.get(POPULAR_URL, timeout=30) + response.raise_for_status() + + soup = BeautifulSoup(response.text, "html.parser") + anchors = { + anchor.get_text(" ", strip=True): to_absolute_url(anchor.get("href", ""), POPULAR_URL) + for anchor in soup.select("a[href]") + } + + grouped: dict[str, list[dict]] = defaultdict(list) + for document in TARGET_DOCUMENTS: + grouped[document["category_key"]].append(document) + + categories = [] + for category_key, docs in grouped.items(): + category_title = docs[0]["consultant_category"] + categories.append( + { + "key": category_key, + "title": category_title, + "found_on_popular_page": category_title in anchors, + "documents": [ + { + "key": doc["key"], + "source_url": doc["source_url"], + "law_type": doc["law_type"], + "source_short_name": doc["source_short_name"], + } + for doc in docs + ], + } + ) + + manifest = { + "generated_at": datetime.now(timezone.utc).isoformat(), + "source_page": POPULAR_URL, + "categories": sorted(categories, key=lambda item: item["title"]), + "documents": TARGET_DOCUMENTS, + } + write_json(MANIFEST_PATH, manifest) + return manifest + + +def build_session() -> requests.Session: + session = requests.Session() + session.headers.update({"User-Agent": USER_AGENT}) + return session diff --git a/parser/fetcher.py b/parser/fetcher.py new file mode 100644 index 0000000..44202fe --- /dev/null +++ b/parser/fetcher.py @@ -0,0 +1,171 @@ +from __future__ import annotations + +import time +from concurrent.futures import ThreadPoolExecutor, as_completed +from datetime import datetime, timezone +from pathlib import Path + +import requests +from bs4 import BeautifulSoup, Tag + +from parser.config import ( + MANIFEST_PATH, + MAX_RETRIES, + MAX_WORKERS, + RAW_INDEX_PATH, + RAW_ROOT, + REQUEST_TIMEOUT, +) +from parser.discovery import build_session, discover_documents +from parser.utils import ensure_dir, read_json, sha256_text, to_absolute_url, write_json + + +def fetch_with_retry(session: requests.Session, url: str) -> str: + last_error: Exception | None = None + for attempt in range(1, MAX_RETRIES + 1): + try: + response = session.get(url, timeout=REQUEST_TIMEOUT) + response.raise_for_status() + return response.text + except Exception as exc: # pragma: no cover - network branch + last_error = exc + if attempt < MAX_RETRIES: + time.sleep(attempt) + raise last_error # type: ignore[misc] + + +def extract_toc_articles(root_html: str, source_url: str) -> list[dict]: + soup = BeautifulSoup(root_html, "html.parser") + toc = soup.select_one(".document-page__toc > ul") + if toc is None: + return [] + + articles: list[dict] = [] + + def walk_list(node: Tag, stack: list[str]) -> None: + items = [child for child in node.children if isinstance(child, Tag) and child.name == "li"] + for li in items: + anchor = li.find("a", href=True, recursive=False) + if anchor is None: + continue + + title = anchor.get_text(" ", strip=True) + url = to_absolute_url(anchor["href"], source_url) + next_ul = li.find_next_sibling("ul") + + if title.startswith("Статья "): + article_number, _, article_title = title.partition(". ") + articles.append( + { + "article_number": article_number.replace("Статья", "").strip(), + "article_title": article_title.strip() or title, + "article_url": url, + "section_title": next((value for value in reversed(stack) if value.startswith("Раздел")), None), + "chapter_title": next((value for value in reversed(stack) if value.startswith("Глава")), None), + "part_title": next((value for value in reversed(stack) if value.startswith("Часть")), None), + "breadcrumb": [*stack, title], + } + ) + else: + if next_ul is not None: + walk_list(next_ul, [*stack, title]) + + walk_list(toc, []) + return articles + + +def _fetch_article(session: requests.Session, article: dict) -> tuple[dict, str]: + return article, fetch_with_retry(session, article["article_url"]) + + +def load_manifest() -> dict: + manifest = read_json(MANIFEST_PATH) + if manifest is None: + manifest = discover_documents(build_session()) + return manifest + + +def load_raw_index() -> dict: + return read_json(RAW_INDEX_PATH, default={"documents": {}}) + + +def save_raw_index(index_payload: dict) -> None: + write_json(RAW_INDEX_PATH, index_payload) + + +def fetch_documents( + selected_documents: list[dict], force: bool = False, dry_run: bool = False +) -> list[dict]: + session = build_session() + raw_index = load_raw_index() + raw_index.setdefault("documents", {}) + fetched_payloads: list[dict] = [] + + for document in selected_documents: + root_html = fetch_with_retry(session, document["source_url"]) + root_hash = sha256_text(root_html) + previous = raw_index["documents"].get(document["key"]) + + if ( + not force + and previous + and previous.get("root_hash") == root_hash + and Path(previous["raw_dir"]).exists() + ): + fetched_payloads.append(previous) + continue + + toc_articles = extract_toc_articles(root_html, document["source_url"]) + timestamp = datetime.now(timezone.utc) + raw_dir = RAW_ROOT / timestamp.date().isoformat() / document["key"] + article_dir = raw_dir / "articles" + + article_payloads: list[dict] = [] + article_hash_parts: list[str] = [] + + if not dry_run: + ensure_dir(article_dir) + (raw_dir / "root.html").write_text(root_html, encoding="utf-8") + + with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor: + futures = { + executor.submit(_fetch_article, session, article): index + for index, article in enumerate(toc_articles) + } + article_results = [None] * len(futures) + for future in as_completed(futures): + article, article_html = future.result() + index = futures[future] + article_hash = sha256_text(article_html) + article_hash_parts.append(article_hash) + article_payload = { + **article, + "file_name": f"{index:04d}.html", + "sha256": article_hash, + } + article_results[index] = (article_payload, article_html) + + for article_payload, article_html in article_results: + article_payloads.append(article_payload) + if not dry_run: + (article_dir / article_payload["file_name"]).write_text(article_html, encoding="utf-8") + + payload = { + **document, + "fetched_at": timestamp.isoformat(), + "raw_dir": str(raw_dir), + "root_file": "root.html", + "root_hash": root_hash, + "version_hash": sha256_text(root_hash + "".join(article_hash_parts)), + "article_count": len(article_payloads), + "articles": article_payloads, + } + + if not dry_run: + write_json(raw_dir / "sidecar.json", payload) + raw_index["documents"][document["key"]] = payload + save_raw_index(raw_index) + + fetched_payloads.append(payload) + + return fetched_payloads diff --git a/parser/ingest.py b/parser/ingest.py new file mode 100644 index 0000000..b274547 --- /dev/null +++ b/parser/ingest.py @@ -0,0 +1,68 @@ +from __future__ import annotations + +from datetime import date, datetime, timezone + +from parser.normalizer import build_chunks +from shared import ORM + + +def parse_iso_date(value: str | None) -> date | None: + if not value: + return None + return date.fromisoformat(value) + + +async def ingest_documents( + orm: ORM | None, normalized_documents: list[dict], dry_run: bool = False +) -> list[dict]: + results = [] + for document in normalized_documents: + source_payload = { + "title": document["title"], + "source_type": document["source_type"], + "jurisdiction": "RU", + "law_type": document["law_type"], + "document_number": document["document_number"], + "adoption_date": parse_iso_date(document["adoption_date"]), + "publication_date": parse_iso_date(document["publication_date"]), + "effective_date": parse_iso_date(document["effective_date"]), + "source_url": document["source_url"], + "official_publication_number": None, + "version_hash": document["version_hash"], + "is_active": True, + "loaded_at": datetime.now(timezone.utc), + } + chunks = build_chunks(document) + + if dry_run: + results.append( + { + "document_key": document["key"], + "status": "dry-run", + "chunk_count": len(chunks), + } + ) + continue + + if orm is None: + raise RuntimeError("ORM instance is required when dry_run is disabled") + + source, created = await orm.upsert_law_source(source_payload) + should_replace = created + if not created: + existing_count = await orm.get_chunks_count_by_source(source.id) + should_replace = existing_count == 0 + + if should_replace: + await orm.replace_law_chunks(source.id, chunks) + + results.append( + { + "document_key": document["key"], + "status": "updated" if should_replace else "skipped", + "chunk_count": len(chunks), + "source_id": source.id, + } + ) + + return results diff --git a/parser/normalizer.py b/parser/normalizer.py new file mode 100644 index 0000000..69b1b63 --- /dev/null +++ b/parser/normalizer.py @@ -0,0 +1,166 @@ +from __future__ import annotations + +import re +from pathlib import Path + +from bs4 import BeautifulSoup + +from parser.config import NORMALIZED_ROOT +from parser.utils import ( + chunk_paragraphs, + ensure_dir, + normalize_text, + parse_russian_date, + read_json, + write_json, +) + + +DOCUMENT_NUMBER_RE = re.compile(r"N\s*([0-9А-Яа-я\-ФКЗA-Z]+)") + + +def parse_root_metadata(root_html: str) -> dict: + soup = BeautifulSoup(root_html, "html.parser") + title_node = soup.select_one(".document-page__title h1") + title_text = title_node.get_text("\n", strip=True) if title_node else "" + content_node = soup.select_one(".document-page__content") + first_text = content_node.get_text("\n", strip=True) if content_node else "" + + document_number = None + number_match = DOCUMENT_NUMBER_RE.search(first_text or title_text) + if number_match: + document_number = number_match.group(1) + + adoption_date = parse_russian_date(first_text or title_text) + effective_date = None + effective_match = re.search(r"вступ\.\s*в силу с\s*(\d{2}\.\d{2}\.\d{4})", title_text) + if effective_match: + day, month, year = effective_match.group(1).split(".") + effective_date = f"{year}-{month}-{day}" + + lines = [line.strip() for line in title_text.splitlines() if line.strip()] + return { + "title": lines[0] if lines else title_text.strip(), + "version_note": "\n".join(lines[1:]).strip() or None, + "document_number": document_number, + "adoption_date": adoption_date, + "effective_date": effective_date, + "publication_date": None, + } + + +def parse_article_page(article_html: str) -> list[str]: + soup = BeautifulSoup(article_html, "html.parser") + content = soup.select_one(".document-page__content") + if content is None: + return [] + + for selector in [ + ".document__insert", + ".document__edit", + ".document-page__notes", + ".document-page__title-link", + ".document-page__title", + ]: + for node in content.select(selector): + node.decompose() + + heading = content.select_one("h1") + if heading is not None: + heading.decompose() + + paragraphs: list[str] = [] + for node in content.select("p"): + text = normalize_text(node.get_text("\n", strip=True)) + if not text: + continue + paragraphs.append(text) + + return paragraphs + + +def normalize_document(raw_payload: dict) -> dict: + raw_dir = Path(raw_payload["raw_dir"]) + root_html = (raw_dir / raw_payload["root_file"]).read_text(encoding="utf-8") + metadata = parse_root_metadata(root_html) + + articles = [] + for article_ref in raw_payload["articles"]: + article_html = (raw_dir / "articles" / article_ref["file_name"]).read_text(encoding="utf-8") + paragraphs = parse_article_page(article_html) + article_text = "\n\n".join(paragraphs).strip() + articles.append( + { + "article_number": article_ref["article_number"], + "article_title": article_ref["article_title"], + "article_url": article_ref["article_url"], + "section_title": article_ref.get("section_title"), + "chapter_title": article_ref.get("chapter_title"), + "part_title": article_ref.get("part_title"), + "breadcrumb": article_ref.get("breadcrumb", []), + "text": article_text, + "paragraphs": paragraphs, + } + ) + + normalized = { + "key": raw_payload["key"], + "title": metadata["title"], + "source_url": raw_payload["source_url"], + "source_type": "consultant_document", + "document_number": metadata["document_number"], + "adoption_date": metadata["adoption_date"], + "publication_date": metadata["publication_date"], + "effective_date": metadata["effective_date"], + "version_note": metadata["version_note"], + "version_hash": raw_payload["version_hash"], + "law_type": raw_payload["law_type"], + "consultant_category": raw_payload["consultant_category"], + "source_short_name": raw_payload["source_short_name"], + "articles": articles, + } + return normalized + + +def build_chunks(normalized_document: dict) -> list[dict]: + chunks: list[dict] = [] + for article in normalized_document["articles"]: + paragraphs = article["paragraphs"] or ([article["text"]] if article["text"] else []) + text_chunks = chunk_paragraphs(paragraphs) + if not text_chunks and article["text"]: + text_chunks = [article["text"]] + + for chunk_text in text_chunks: + chunks.append( + { + "chunk_index": len(chunks), + "article_number": article["article_number"], + "article_title": article["article_title"], + "chunk_text": chunk_text, + "metadata": { + "source_title": normalized_document["title"], + "source_short_name": normalized_document["source_short_name"], + "consultant_category": normalized_document["consultant_category"], + "chapter_title": article.get("chapter_title"), + "section_title": article.get("section_title"), + "article_number": article["article_number"], + "article_title": article["article_title"], + "document_url": article["article_url"], + "breadcrumb": article.get("breadcrumb", []), + "version_hash": normalized_document["version_hash"], + }, + } + ) + return chunks + + +def write_normalized_document(normalized_document: dict, dry_run: bool = False) -> Path: + output_path = NORMALIZED_ROOT / f"{normalized_document['key']}.json" + if not dry_run: + ensure_dir(output_path.parent) + write_json(output_path, normalized_document) + return output_path + + +def load_normalized_document(document_key: str) -> dict | None: + return read_json(NORMALIZED_ROOT / f"{document_key}.json", default=None) diff --git a/parser/utils.py b/parser/utils.py new file mode 100644 index 0000000..513e2ed --- /dev/null +++ b/parser/utils.py @@ -0,0 +1,108 @@ +from __future__ import annotations + +import hashlib +import json +import re +from datetime import datetime +from pathlib import Path +from typing import Any +from urllib.parse import urljoin + + +WHITESPACE_RE = re.compile(r"[ \t]+") +NEWLINES_RE = re.compile(r"\n{3,}") + +RUSSIAN_MONTHS = { + "января": 1, + "февраля": 2, + "марта": 3, + "апреля": 4, + "мая": 5, + "июня": 6, + "июля": 7, + "августа": 8, + "сентября": 9, + "октября": 10, + "ноября": 11, + "декабря": 12, +} + + +def ensure_dir(path: Path) -> Path: + path.mkdir(parents=True, exist_ok=True) + return path + + +def read_json(path: Path, default: Any = None) -> Any: + if not path.exists(): + return default + return json.loads(path.read_text(encoding="utf-8")) + + +def write_json(path: Path, payload: Any) -> None: + ensure_dir(path.parent) + path.write_text( + json.dumps(payload, ensure_ascii=False, indent=2, sort_keys=False), + encoding="utf-8", + ) + + +def sha256_text(value: str) -> str: + return hashlib.sha256(value.encode("utf-8")).hexdigest() + + +def normalize_text(value: str) -> str: + cleaned = value.replace("\xa0", " ") + cleaned = WHITESPACE_RE.sub(" ", cleaned) + cleaned = re.sub(r" *\n *", "\n", cleaned) + cleaned = NEWLINES_RE.sub("\n\n", cleaned) + return cleaned.strip() + + +def slugify(value: str) -> str: + slug = re.sub(r"[^a-zA-Z0-9]+", "-", value.lower()).strip("-") + return slug or "document" + + +def to_absolute_url(url: str, base_url: str) -> str: + return urljoin(base_url, url) + + +def parse_russian_date(value: str) -> str | None: + match = re.search(r"(\d{1,2})\s+([а-я]+)\s+(\d{4})", value.lower()) + if not match: + return None + + day = int(match.group(1)) + month = RUSSIAN_MONTHS.get(match.group(2)) + year = int(match.group(3)) + if month is None: + return None + + return datetime(year, month, day).date().isoformat() + + +def chunk_paragraphs( + paragraphs: list[str], max_chars: int = 4500, overlap_paragraphs: int = 1 +) -> list[str]: + if not paragraphs: + return [] + + chunks: list[str] = [] + current: list[str] = [] + current_len = 0 + + for paragraph in paragraphs: + paragraph_len = len(paragraph) + if current and current_len + paragraph_len + 2 > max_chars: + chunks.append("\n\n".join(current).strip()) + current = current[-overlap_paragraphs:] if overlap_paragraphs else [] + current_len = sum(len(item) + 2 for item in current) + + current.append(paragraph) + current_len += paragraph_len + 2 + + if current: + chunks.append("\n\n".join(current).strip()) + + return [chunk for chunk in chunks if chunk] diff --git a/postgres.env.example b/postgres.env.example new file mode 100644 index 0000000..d2250f8 --- /dev/null +++ b/postgres.env.example @@ -0,0 +1,9 @@ +# Postgres database used by bot, parser and API +POSTGRES_DB=law_bot_db +POSTGRES_USER=lawbot_user +POSTGRES_PASSWORD=change_me + +# Inside docker compose keep the service name. +# For local host-based tools you can override it with localhost. +POSTGRES_HOST=postgredb +POSTGRES_PORT=5432 diff --git a/protocol/generate_protocol_docx.py b/protocol/generate_protocol_docx.py new file mode 100644 index 0000000..d45b66f --- /dev/null +++ b/protocol/generate_protocol_docx.py @@ -0,0 +1,782 @@ +from __future__ import annotations + +from docx import Document +from docx.enum.section import WD_SECTION +from docx.enum.table import WD_TABLE_ALIGNMENT +from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_BREAK +from docx.oxml import OxmlElement +from docx.oxml.ns import qn +from docx.shared import Cm, Pt, RGBColor +from pathlib import Path + + +OUTPUT_PATH = Path("protocol/Протокол_курсовой_работы_LawBot.docx") +BLACK = RGBColor(0, 0, 0) + + +def apply_run_format(run, *, bold: bool | None = None, font_size: int | None = None) -> None: + if bold is not None: + run.bold = bold + if font_size is not None: + run.font.size = Pt(font_size) + run.font.name = "Times New Roman" + run._element.rPr.rFonts.set(qn("w:eastAsia"), "Times New Roman") + run.font.color.rgb = BLACK + run.font.underline = False + + +def set_cell_text(cell, text: str, align=WD_ALIGN_PARAGRAPH.CENTER, bold: bool = False, font_size=12): + cell.text = "" + paragraph = cell.paragraphs[0] + paragraph.alignment = align + run = paragraph.add_run(text) + apply_run_format(run, bold=bold, font_size=font_size) + + +def configure_document(document: Document) -> None: + section = document.sections[0] + section.page_width = Cm(21) + section.page_height = Cm(29.7) + section.top_margin = Cm(2) + section.bottom_margin = Cm(2) + section.left_margin = Cm(3) + section.right_margin = Cm(1.5) + section.different_first_page_header_footer = True + + normal = document.styles["Normal"] + normal.font.name = "Times New Roman" + normal._element.rPr.rFonts.set(qn("w:eastAsia"), "Times New Roman") + normal.font.size = Pt(14) + normal.font.color.rgb = BLACK + normal.paragraph_format.first_line_indent = Cm(1.25) + normal.paragraph_format.line_spacing = 1.5 + normal.paragraph_format.space_after = Pt(0) + normal.paragraph_format.space_before = Pt(0) + + for style_name in ["Heading 1", "Heading 2", "Heading 3"]: + style = document.styles[style_name] + style.font.name = "Times New Roman" + style._element.rPr.rFonts.set(qn("w:eastAsia"), "Times New Roman") + style.font.size = Pt(14) + style.font.bold = True + style.font.color.rgb = BLACK + style.font.underline = False + style.paragraph_format.first_line_indent = Cm(0) + style.paragraph_format.line_spacing = 1.5 + style.paragraph_format.space_before = Pt(12) + style.paragraph_format.space_after = Pt(6) + + footer = section.footer + paragraph = footer.paragraphs[0] + paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER + add_page_number_field(paragraph) + + +def add_page_number_field(paragraph) -> None: + run = paragraph.add_run() + fld_begin = OxmlElement("w:fldChar") + fld_begin.set(qn("w:fldCharType"), "begin") + + instr_text = OxmlElement("w:instrText") + instr_text.set(qn("xml:space"), "preserve") + instr_text.text = " PAGE " + + fld_separate = OxmlElement("w:fldChar") + fld_separate.set(qn("w:fldCharType"), "separate") + + fld_end = OxmlElement("w:fldChar") + fld_end.set(qn("w:fldCharType"), "end") + + run._r.append(fld_begin) + run._r.append(instr_text) + run._r.append(fld_separate) + run._r.append(fld_end) + + +def add_toc(paragraph) -> None: + run = paragraph.add_run() + fld_begin = OxmlElement("w:fldChar") + fld_begin.set(qn("w:fldCharType"), "begin") + + instr_text = OxmlElement("w:instrText") + instr_text.set(qn("xml:space"), "preserve") + instr_text.text = ' TOC \\o "1-3" \\h \\z \\u ' + + fld_separate = OxmlElement("w:fldChar") + fld_separate.set(qn("w:fldCharType"), "separate") + + placeholder = OxmlElement("w:t") + placeholder.text = "Обновите поле содержания в Microsoft Word (ПКМ -> Обновить поле)." + + fld_end = OxmlElement("w:fldChar") + fld_end.set(qn("w:fldCharType"), "end") + + run._r.append(fld_begin) + run._r.append(instr_text) + run._r.append(fld_separate) + run._r.append(placeholder) + run._r.append(fld_end) + + +def add_title_page(document: Document) -> None: + p = document.add_paragraph() + p.alignment = WD_ALIGN_PARAGRAPH.CENTER + apply_run_format(p.add_run("МИНОБРНАУКИ РОССИИ"), bold=True, font_size=14) + + for line in [ + "Федеральное государственное бюджетное образовательное учреждение", + "высшего образования", + "_______________________________", + "_______________________________", + ]: + paragraph = document.add_paragraph() + paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER + run = paragraph.add_run(line) + apply_run_format(run, font_size=14) + + document.add_paragraph() + document.add_paragraph() + document.add_paragraph() + + p = document.add_paragraph() + p.alignment = WD_ALIGN_PARAGRAPH.CENTER + run = p.add_run("ПРОТОКОЛ КУРСОВОЙ РАБОТЫ") + apply_run_format(run, bold=True, font_size=16) + + p = document.add_paragraph() + p.alignment = WD_ALIGN_PARAGRAPH.CENTER + run = p.add_run( + "на тему «Разработка Telegram-бота для юридических консультаций\n" + "на основе технологии Retrieval-Augmented Generation»" + ) + apply_run_format(run, font_size=14) + + document.add_paragraph() + document.add_paragraph() + + table = document.add_table(rows=4, cols=2) + table.alignment = WD_TABLE_ALIGNMENT.RIGHT + table.columns[0].width = Cm(5.5) + table.columns[1].width = Cm(7.5) + rows = [ + ("Выполнил:", "студент группы ____________"), + ("Ф.И.О.:", "__________________________"), + ("Руководитель:", "__________________________"), + ("Дата:", "__________________________"), + ] + for row, (left, right) in zip(table.rows, rows): + set_cell_text(row.cells[0], left, align=WD_ALIGN_PARAGRAPH.LEFT, bold=False, font_size=14) + set_cell_text(row.cells[1], right, align=WD_ALIGN_PARAGRAPH.LEFT, bold=False, font_size=14) + + document.add_paragraph() + document.add_paragraph() + document.add_paragraph() + document.add_paragraph() + document.add_paragraph() + + p = document.add_paragraph() + p.alignment = WD_ALIGN_PARAGRAPH.CENTER + apply_run_format(p.add_run("Волгоград, 2026"), font_size=14) + + document.add_page_break() + + +def add_heading(document: Document, text: str, level: int = 1) -> None: + paragraph = document.add_heading(text, level=level) + paragraph.alignment = WD_ALIGN_PARAGRAPH.LEFT + for run in paragraph.runs: + apply_run_format(run, bold=True, font_size=14) + + +def add_paragraph(document: Document, text: str, align=WD_ALIGN_PARAGRAPH.JUSTIFY) -> None: + paragraph = document.add_paragraph(text) + paragraph.alignment = align + + +def add_list(document: Document, items: list[str]) -> None: + for index, item in enumerate(items, start=1): + paragraph = document.add_paragraph(f"{index}. {item}") + paragraph.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY + paragraph.paragraph_format.first_line_indent = Cm(0) + paragraph.paragraph_format.left_indent = Cm(1.25) + + +def add_figure_placeholder(document: Document, number: int, title: str, marker: str) -> None: + p = document.add_paragraph() + p.alignment = WD_ALIGN_PARAGRAPH.CENTER + run = p.add_run(f"[МЕСТО ДЛЯ {marker.upper()}]") + apply_run_format(run, bold=True, font_size=14) + + caption = document.add_paragraph() + caption.alignment = WD_ALIGN_PARAGRAPH.CENTER + run = caption.add_run(f"Рисунок {number} – {title}") + apply_run_format(run, font_size=14) + + +def add_table_with_caption( + document: Document, + number: int, + title: str, + headers: list[str], + rows: list[list[str]], +) -> None: + caption = document.add_paragraph() + caption.alignment = WD_ALIGN_PARAGRAPH.CENTER + run = caption.add_run(f"Таблица {number} – {title}") + apply_run_format(run, font_size=14) + + table = document.add_table(rows=len(rows) + 1, cols=len(headers)) + table.style = "Table Grid" + table.alignment = WD_TABLE_ALIGNMENT.CENTER + + for cell, header in zip(table.rows[0].cells, headers): + set_cell_text(cell, header, bold=True) + + for row_obj, row_data in zip(table.rows[1:], rows): + for cell, value in zip(row_obj.cells, row_data): + set_cell_text(cell, value, align=WD_ALIGN_PARAGRAPH.LEFT) + + document.add_paragraph() + + +def build_document() -> None: + document = Document() + configure_document(document) + add_title_page(document) + + add_heading(document, "СОДЕРЖАНИЕ", level=1) + toc_paragraph = document.add_paragraph() + toc_paragraph.alignment = WD_ALIGN_PARAGRAPH.LEFT + add_toc(toc_paragraph) + document.add_page_break() + + add_heading(document, "ВВЕДЕНИЕ", level=1) + add_paragraph( + document, + "Развитие цифровых сервисов и широкое распространение генеративных моделей " + "искусственного интеллекта создают предпосылки для появления специализированных " + "информационных систем, способных предоставлять пользователю понятные и быстрые " + "консультации в узких предметных областях. Одной из таких областей является " + "юриспруденция, где особенно важны актуальность источников, проверяемость ответа " + "и возможность сослаться на конкретную норму права.", + ) + add_paragraph( + document, + "В рамках курсовой работы разработан Telegram-бот LawBot, предназначенный для " + "консультирования пользователей по бытовым юридическим вопросам в правовом поле " + "Российской Федерации. Система реализует подход Retrieval-Augmented Generation: " + "пользовательский запрос классифицируется, затем по локальной базе нормативных " + "документов выполняется гибридный поиск, после чего большая языковая модель " + "формирует ответ только по найденным источникам. Такой подход позволяет объединить " + "преимущества генеративных моделей и контролируемого поиска по локальному корпусу.", + ) + add_paragraph( + document, + "Объектом исследования является процесс автоматизации первичной юридической " + "консультации в Telegram. Предметом исследования являются методы проектирования " + "чат-ботов, механизмы гибридного поиска по правовым документам и способы " + "организации RAG-контура для прикладной юридической системы.", + ) + add_paragraph( + document, + "Цель работы состоит в повышении доступности правовой информации для пользователя " + "за счет разработки Telegram-бота, который принимает вопрос, подбирает релевантные " + "нормы закона и объясняет их простым языком с сохранением ссылок на источники.", + ) + add_paragraph(document, "Для достижения поставленной цели решены следующие задачи:") + add_list( + document, + [ + "проведен анализ предметной области и существующих решений в области юридических чат-ботов;", + "спроектированы сценарии использования, функциональные требования и архитектура системы;", + "реализованы Telegram-бот, парсер нормативных документов, общий слой доступа к данным и RAG API;", + "выполнено тестирование разработанного программного продукта.", + ], + ) + add_paragraph( + document, + "Работа состоит из четырех глав, заключения и списка использованных источников. " + "В документе содержатся 10 рисунков и 4 таблицы. Первая глава посвящена анализу " + "предметной области и подходов к разработке чат-ботов, во второй главе рассмотрены " + "вопросы проектирования, в третьей главе описана реализация, а в четвертой приведены " + "результаты тестирования.", + ) + + add_heading(document, "1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ", level=1) + add_heading(document, "1.1 Характеристика предметной области", level=2) + add_paragraph( + document, + "Предметной областью проекта является автоматизированная первичная юридическая " + "консультация по законодательству Российской Федерации. В отличие от развлекательных " + "или сервисных чат-ботов, юридический бот должен обеспечивать не только корректный " + "диалог, но и высокую точность подбора правовой нормы, прозрачность происхождения " + "ответа и сохранение истории взаимодействия. Ошибочный ответ в данной области может " + "привести пользователя к неверным действиям, поэтому в системе сделан акцент на " + "локальный корпус документов и обязательную ссылку на найденный источник.", + ) + add_paragraph( + document, + "Для MVP-версии были выбраны наиболее частые бытовые категории вопросов: трудовые " + "отношения, защита прав потребителей, жилье и аренда, семейные споры, долги и займы, " + "договорные отношения, вопросы суда и процесса, а также обобщенная категория " + "«Другое». В качестве документной базы используются федеральные нормативные акты: " + "Конституция Российской Федерации, Гражданский кодекс РФ (части 1–4), Гражданский " + "процессуальный кодекс РФ, Жилищный кодекс РФ, Семейный кодекс РФ, Трудовой кодекс РФ, " + "Закон РФ «О защите прав потребителей», Федеральный закон «Об исполнительном " + "производстве», Федеральный закон «Об ипотеке» и КоАП РФ. Источником для первичного " + "получения текстов выбран раздел популярных документов на сайте КонсультантПлюс [1].", + ) + add_paragraph( + document, + "Основная проблема пользователя в такой системе заключается в том, что ему сложно " + "самостоятельно определить нужный нормативный акт, статью и актуальную редакцию " + "документа. Кроме того, нормативный язык зачастую сложен для восприятия. Следовательно, " + "бот должен решать сразу две задачи: находить релевантные правовые фрагменты и " + "объяснять их доступным языком, не выходя за пределы найденных источников.", + ) + + add_heading(document, "1.2 Анализ существующих решений", level=2) + add_paragraph( + document, + "В области юридических информационных сервисов можно выделить несколько классов " + "решений: генеративные универсальные ИИ-ассистенты, rule-based FAQ-боты, " + "retrieval-ориентированные справочные системы и гибридные системы, совмещающие " + "поиск и генерацию. На практике каждое решение имеет собственные преимущества и " + "ограничения.", + ) + add_table_with_caption( + document, + 1, + "Сравнение существующих решений и подходов", + ["Решение", "Подход", "Преимущества", "Ограничения"], + [ + [ + "ChatGPT, GigaChat и аналогичные LLM-ассистенты", + "generation-based", + "Естественный диалог, гибкость формулировок, хорошие пояснения", + "Без внешнего поиска возможны галлюцинации и отсутствие точных ссылок на нормы", + ], + [ + "FAQ-боты государственных и коммерческих сервисов", + "rule-based", + "Предсказуемость ответов, простая проверяемость сценариев", + "Ограниченный охват, слабая работа со свободным текстом", + ], + [ + "Справочно-правовые системы", + "retrieval-based", + "Высокая полнота поиска по нормативным актам, удобная работа с документами", + "Требуют самостоятельного анализа текста пользователем, не ориентированы на диалог в Telegram", + ], + [ + "Гибридные RAG-системы", + "hybrid", + "Сочетают поиск по корпусу и генерацию понятного ответа", + "Сложнее в проектировании, требуют отдельного контура индексации и контроля качества", + ], + ], + ) + add_paragraph( + document, + "Для юридической области pure generation-подход является недостаточно надежным, " + "поскольку модель может предложить правдоподобный, но не подтвержденный нормой " + "закона ответ. Чисто rule-based подход, напротив, слишком ограничен и плохо подходит " + "для свободно сформулированных пользовательских ситуаций. Справочно-правовые системы " + "эффективны как поиск по документам, однако требуют от пользователя самостоятельного " + "изучения и интерпретации результатов. По этим причинам наиболее рациональным для " + "поставленной задачи является гибридный RAG-подход.", + ) + + add_heading(document, "1.3 Обоснование выбранного подхода", level=2) + add_paragraph( + document, + "В проекте выбран гибридный сценарий, в котором генеративная модель используется для " + "классификации запроса, генерации поисковых фраз и финального формулирования ответа, " + "а поиск выполняется по локальной базе нормативных актов. На первом этапе пользовательский " + "вопрос дополняется контекстом категории, региона и типа пользователя. На втором этапе " + "LLM формирует несколько поисковых фраз и предварительные фильтры. На третьем этапе " + "система выполняет full-text поиск в PostgreSQL и vector search в ChromaDB, объединяет " + "результаты и отбирает наиболее релевантные фрагменты. Финальный ответ формируется " + "исключительно по этим фрагментам.", + ) + add_paragraph( + document, + "Выбранная схема обеспечивает компромисс между качеством диалога и контролем над " + "источниками. Она хорошо масштабируется: можно добавлять новые документы, повторно " + "индексировать корпус, улучшать embedding-модель, не меняя пользовательский интерфейс. " + "Именно поэтому данный подход выбран как основа архитектуры LawBot.", + ) + + add_heading(document, "2 ПРОЕКТИРОВАНИЕ ЧАТ-БОТА", level=1) + add_heading(document, "2.1 Сценарии использования системы", level=2) + add_paragraph( + document, + "Основным актором системы является пользователь Telegram, который может начать новую " + "консультацию, выбрать категорию вопроса, описать ситуацию, указать регион, получить " + "ответ с найденными источниками и сохранить консультацию в историю. Дополнительным " + "актором является администратор, имеющий доступ к административным функциям управления. " + "Также в архитектуре присутствуют внешние сервисы: источник нормативных документов, " + "LLM-провайдер и сервисы хранения.", + ) + add_figure_placeholder( + document, + 1, + "Диаграмма вариантов использования Telegram-бота LawBot", + "диаграммы use case", + ) + add_paragraph( + document, + "Ключевой пользовательский сценарий включает последовательность «выбор категории – " + "описание ситуации – указание региона – поиск по базе – выдача ответа – сохранение " + "в историю». Отдельно поддерживается сценарий продолжения ранее начатой консультации, " + "в котором система учитывает краткую историю сообщений и использует ее как дополнительный " + "контекст для генерации ответа.", + ) + + add_heading(document, "2.2 Функциональные требования", level=2) + add_table_with_caption( + document, + 2, + "Ключевые функциональные требования к системе", + ["Группа требований", "Содержание"], + [ + [ + "Пользовательский интерфейс", + "Система должна поддерживать команды /start, главное меню, категории вопросов, профиль и историю консультаций.", + ], + [ + "Юридический поиск", + "Система должна выполнять гибридный поиск по локальному корпусу правовых документов и учитывать категорию, регион и тип пользователя.", + ], + [ + "Формирование ответа", + "Система должна формировать ответ простым языком только по найденным источникам и отображать ссылки на используемые нормы.", + ], + [ + "Управление данными", + "Система должна хранить пользователей, консультации, сообщения, список документов, чанки и историю RAG-запросов.", + ], + [ + "Подготовка корпуса", + "Система должна скачивать, нормализовать и загружать тексты законов с сохранением версионности и исходного HTML.", + ], + ], + ) + add_figure_placeholder( + document, + 2, + "Диаграмма требований к системе LawBot", + "диаграммы requirements", + ) + add_paragraph( + document, + "Сценарии и требования были согласованы с задачами курсовой работы. Особое внимание " + "уделено функции контроля источников: бот не должен ссылаться на правовые нормы, которых " + "нет среди найденных RAG-фрагментов. Это требование является критически важным для " + "юридической предметной области.", + ) + + add_heading(document, "2.3 Архитектура решения", level=2) + add_paragraph( + document, + "Архитектура системы состоит из пяти логических подсистем: Telegram-бота, парсера, " + "общего слоя доступа к базе данных, RAG API и подсистем хранения. Telegram-бот " + "реализован на aiogram [2] и отвечает за пользовательский диалог. Парсер выделен в " + "отдельный CLI-модуль, который подготавливает нормативный корпус и сохраняет его в " + "PostgreSQL [5]. FastAPI-сервис [3] выполняет индексацию в ChromaDB [6], гибридный " + "поиск, классификацию запроса и формирование ответа. Общие модели и репозитории " + "вынесены в пакет shared, чтобы разные сервисы работали с единым описанием данных.", + ) + add_figure_placeholder( + document, + 3, + "Компонентная диаграмма системы LawBot", + "компонентной диаграммы", + ) + add_paragraph( + document, + "Физическое развертывание выполняется в Docker Compose [10]. В составе стенда работают " + "контейнеры tgbot, api, postgredb, redisdb и chromadb. Для каждого сервиса задан healthcheck, " + "а для логов используется драйвер json-file с ротацией. Для embedding-модели дополнительно " + "прокинут volume, чтобы модель не загружалась заново после каждого перезапуска.", + ) + add_figure_placeholder( + document, + 4, + "Схема развертывания контейнеров в Docker Compose", + "схемы развертывания", + ) + + add_heading(document, "2.4 Проектирование хранилища данных", level=2) + add_paragraph( + document, + "Для хранения структурированных данных выбрана реляционная СУБД PostgreSQL [5]. " + "В системе используются таблицы users, consultations, messages, law_sources, law_chunks " + "и rag_queries. Таблица users хранит профиль пользователя Telegram, consultations и messages " + "описывают историю взаимодействия, law_sources и law_chunks содержат нормативные документы " + "и их фрагменты, а rag_queries фиксирует сгенерированные поисковые фразы и найденные чанки. " + "Для полнотекстового поиска в PostgreSQL используется поле tsv с русской морфологией.", + ) + add_paragraph( + document, + "Векторный индекс вынесен в ChromaDB [6]. Такое разделение позволяет хранить канонический " + "текст документов в PostgreSQL и независимо перестраивать embedding-индекс, не дублируя " + "основную бизнес-логику. Для поддержки будущих сценариев поиска по истории консультаций " + "и аудита источников все сообщения и RAG-запросы также сохраняются в основной базе данных.", + ) + add_figure_placeholder( + document, + 5, + "ER-диаграмма и логическая модель хранения данных LawBot", + "er-диаграммы", + ) + + add_heading(document, "3 РЕАЛИЗАЦИЯ ЧАТ-БОТА", level=1) + add_heading(document, "3.1 Используемые технологии и среда разработки", level=2) + add_table_with_caption( + document, + 3, + "Основные технологии проекта", + ["Технология", "Назначение"], + [ + ["Python 3.12/3.13", "Основной язык разработки сервисов"], + ["aiogram 3.x [2]", "Telegram-бот и обработчики пользовательских состояний"], + ["FastAPI [3]", "REST API для RAG-контура и индексации"], + ["SQLAlchemy 2.x [4]", "ORM и общий слой доступа к базе данных"], + ["PostgreSQL 16 [5]", "Хранение пользователей, истории консультаций и правовых документов"], + ["ChromaDB [6]", "Векторная база данных для семантического поиска по чанкам"], + ["Sentence Transformers [7]", "Локальная CPU-модель эмбеддингов deepvk/USER2-small [9]"], + ["OpenRouter [8]", "OpenAI-compatible доступ к LLM openai/gpt-5.2 для классификации и генерации ответа"], + ["Docker Compose [10]", "Контейнеризация и оркестрация сервисов"], + ["Redis [11]", "Хранилище состояний FSM и служебных данных бота"], + ], + ) + add_paragraph( + document, + "Разработка выполнялась в виде многомодульного проекта. Для бота, API и парсера выбрана " + "единая рабочая директория с общим пакетом shared. Такое решение позволило использовать " + "одни и те же ORM-модели и репозитории как из Telegram-сервиса, так и из API и парсера, " + "не дублируя схему данных.", + ) + + add_heading(document, "3.2 Реализация парсера нормативных документов", level=2) + add_paragraph( + document, + "Парсер реализован как самостоятельный CLI-модуль parser. Он поддерживает команды " + "discover, fetch, normalize, ingest и run. Команда discover анализирует страницу " + "популярных правовых подборок на сайте КонсультантПлюс [1], формирует manifest и " + "определяет набор документов для загрузки. Команда fetch скачивает HTML-документы и " + "сохраняет их в raw-кеш. Команда normalize выделяет метаданные, статьи и внутреннюю " + "структуру документа, после чего сохраняет нормализованный JSON. Команда ingest " + "загружает полученные данные в PostgreSQL.", + ) + add_paragraph( + document, + "Для каждого документа рассчитывается version_hash, что позволяет повторно запускать " + "пайплайн без создания лишних дублей. Документы сохраняются как сущности law_sources, " + "а статьи и их фрагменты – как law_chunks. В рамках MVP был успешно загружен набор из " + "13 правовых источников и 5304 чанков, что покрывает ключевые бытовые юридические " + "сценарии проекта.", + ) + add_paragraph( + document, + "Сохранение исходного HTML и normalized JSON делает парсер пригодным для последующей " + "диагностики, повторной индексации и возможной смены механизма chunking без повторной " + "загрузки всего корпуса.", + ) + + add_heading(document, "3.3 Реализация Telegram-бота", level=2) + add_paragraph( + document, + "Пользовательский интерфейс реализован в сервисе tgbot на базе aiogram [2]. Бот " + "поддерживает главное меню, разделы «Задать вопрос», «Мои консультации», «Профиль» " + "и «Помощь», а также административные разделы. Логика диалога построена на FSM, " + "где отдельные состояния отвечают за выбор категории, ввод вопроса, ввод региона, " + "продолжение консультации и редактирование профиля. Для хранения состояния используется " + "Redis [11].", + ) + add_paragraph( + document, + "В момент получения вопроса бот обращается к RAG API через отдельный модуль на базе " + "httpx. Запрос включает идентификатор пользователя, категорию вопроса, регион, тип " + "пользователя и при необходимости краткую историю предыдущих сообщений. После получения " + "ответа бот отображает его пользователю и сохраняет возможность открыть или продолжить " + "консультацию. Также реализованы суточные лимиты на число консультаций и ограничение " + "на количество пользовательских сообщений в одной ветке консультации.", + ) + add_figure_placeholder( + document, + 6, + "Главное меню Telegram-бота LawBot", + "скриншота интерфейса", + ) + add_figure_placeholder( + document, + 7, + "Пример ответа бота с найденными источниками", + "скриншота диалога", + ) + + add_heading(document, "3.4 Реализация RAG API и гибридного поиска", level=2) + add_paragraph( + document, + "RAG API реализован как отдельный FastAPI-сервис [3]. Он содержит эндпоинты /health, " + "/api/v1/index/rebuild, /api/v1/rag/search и /api/v1/rag/answer. Во время старта сервиса " + "инициализируется схема базы данных и запускается фоновая задача автоиндексации: если " + "коллекция ChromaDB пуста или рассинхронизирована с PostgreSQL, сервис автоматически " + "запускает rebuild индекса в фоне и детально логирует все этапы процесса.", + ) + add_paragraph( + document, + "Алгоритм retrieval включает несколько фаз. Сначала LLM классифицирует вопрос и генерирует " + "набор search_queries. Затем для каждой поисковой фразы выполняется полнотекстовый поиск " + "по PostgreSQL и векторный поиск по ChromaDB. Результаты объединяются в общую таблицу " + "оценок, сортируются и отбираются по верхнему порогу top_k. Такой механизм позволяет " + "учитывать как точные совпадения ключевых слов, так и семантическую близость запроса " + "и текста нормы.", + ) + add_paragraph( + document, + "Векторные представления создаются локальной CPU-моделью deepvk/USER2-small [9] через " + "библиотеку Sentence Transformers [7]. Для LLM-интеграции используется OpenRouter [8], " + "через который подключена модель openai/gpt-5.2 по OpenAI-compatible интерфейсу. " + "В промпте генерации ответа жёстко задано правило: использовать только те источники, " + "которые были возвращены retrieval-контуром.", + ) + add_figure_placeholder( + document, + 8, + "Фоновая индексация чанков и продовые логи RAG API", + "скриншота логов", + ) + + add_heading(document, "3.5 Надежность и эксплуатационные особенности", level=2) + add_paragraph( + document, + "Для повышения надежности проект контейнеризирован. В compose-конфигурации настроены " + "healthcheck-проверки для PostgreSQL, Redis и API, а также ротация логов через driver " + "json-file. Для embedding-модели настроен отдельный volume, благодаря которому модель " + "не скачивается повторно при каждом перезапуске. Для Telegram Bot API предусмотрена " + "поддержка proxy, параметризуемая через переменную окружения.", + ) + add_paragraph( + document, + "Сервис API ведет расширенные продовые логи: фиксируются старт и завершение HTTP-запросов, " + "загрузка embedding-модели, шаги индексации, число найденных полнотекстовых и векторных " + "совпадений, а также параметры классификации и генерации ответа. Такая детализация " + "позволяет анализировать производительность и находить проблемные участки в retrieval-пайплайне.", + ) + + add_heading(document, "4 ТЕСТИРОВАНИЕ ЧАТ-БОТА", level=1) + add_heading(document, "4.1 Методика тестирования", level=2) + add_paragraph( + document, + "Тестирование проекта выполнялось как на уровне отдельных сервисов, так и на уровне " + "сквозного пользовательского сценария. Проверялись корректность парсинга документов, " + "загрузка данных в PostgreSQL, построение индекса в ChromaDB, маршрутизация запросов " + "через RAG API и реакция Telegram-бота на действия пользователя. Дополнительно были " + "проверены фоновые механизмы: автоиндексация при старте API, ротация логов и сохранение " + "кеша embedding-модели на volume.", + ) + add_table_with_caption( + document, + 4, + "Основные тестовые сценарии", + ["№", "Сценарий", "Ожидаемый результат", "Фактический результат"], + [ + ["1", "Команда /start", "Открывается главное меню бота", "Успешно"], + ["2", "Новая консультация", "Пользователь проходит шаги категория -> вопрос -> регион -> ответ", "Успешно"], + ["3", "RAG answer", "API возвращает ответ со ссылками на найденные источники", "Успешно"], + ["4", "История консультаций", "Пользователь может открыть, продолжить и удалить консультацию", "Успешно"], + ["5", "Перестроение индекса", "API индексирует чанки в ChromaDB без ручного вмешательства", "Успешно"], + ["6", "Повторный запуск API", "Модель эмбеддингов берется из локального volume, скачивание не повторяется", "Успешно"], + ], + ) + add_heading(document, "4.2 Результаты тестирования", level=2) + add_paragraph( + document, + "В ходе функционального тестирования был выполнен полный пайплайн parser -> PostgreSQL -> " + "ChromaDB -> RAG API -> Telegram-бот. После запуска parser run в базе данных присутствовали " + "13 активных источников и 5304 чанка, что подтвердило корректность загрузки нормативного корпуса. " + "Затем был выполнен rebuild индекса и проверены поисковые запросы по темам трудового права, " + "защиты прав потребителей, жилья и договоров. Система корректно возвращала подборку правовых " + "норм и формировала итоговый ответ по найденным фрагментам.", + ) + add_paragraph( + document, + "При пользовательском тестировании проверялись сценарии работы с главным меню, " + "оформление новой консультации, сохранение истории, изменение региона и типа пользователя, " + "а также повторное продолжение старой консультации. Все ключевые сценарии были отработаны " + "успешно, критических ошибок, приводящих к потере данных или невозможности получить ответ, " + "не обнаружено.", + ) + add_figure_placeholder( + document, + 9, + "Тестовый сценарий получения ответа по трудовому вопросу", + "скриншота тестирования", + ) + add_figure_placeholder( + document, + 10, + "Тестовый сценарий работы с историей консультаций", + "скриншота тестирования", + ) + + add_heading(document, "ЗАКЛЮЧЕНИЕ", level=1) + add_paragraph( + document, + "В результате выполнения курсовой работы был разработан Telegram-бот LawBot для " + "юридических консультаций по законодательству Российской Федерации. В ходе работы были " + "решены все поставленные задачи: проведен анализ предметной области, спроектированы " + "сценарии и архитектура системы, реализованы пользовательский бот, модуль подготовки " + "правового корпуса, общий слой работы с данными и RAG API, а также выполнено " + "тестирование полученного решения.", + ) + add_paragraph( + document, + "Практическая значимость результата заключается в том, что пользователь получает " + "доступный интерфейс для первичной юридической консультации с опорой на локальный " + "корпус нормативных документов. В отличие от обычных генеративных ассистентов, " + "разработанная система контролирует происхождение ответа и ограничивает генерацию " + "только найденными источниками.", + ) + add_paragraph( + document, + "В качестве направлений дальнейшего развития можно выделить расширение корпуса " + "документов, добавление автоматического обновления базы законов, подключение более " + "сильных reranking-моделей, поддержку загрузки пользовательских документов и развитие " + "аналитики по качеству retrieval и генерации ответов.", + ) + + add_heading(document, "СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ", level=1) + references = [ + "КонсультантПлюс. Популярные документы и кодексы [Электронный ресурс]. URL: https://www.consultant.ru/popular/ (дата обращения: 24.05.2026).", + "aiogram 3 documentation [Электронный ресурс]. URL: https://docs.aiogram.dev/ (дата обращения: 24.05.2026).", + "FastAPI Documentation [Электронный ресурс]. URL: https://fastapi.tiangolo.com/ (дата обращения: 24.05.2026).", + "SQLAlchemy 2.0 Documentation [Электронный ресурс]. URL: https://docs.sqlalchemy.org/ (дата обращения: 24.05.2026).", + "PostgreSQL Documentation [Электронный ресурс]. URL: https://www.postgresql.org/docs/ (дата обращения: 24.05.2026).", + "Chroma Documentation [Электронный ресурс]. URL: https://docs.trychroma.com/ (дата обращения: 24.05.2026).", + "Sentence Transformers Documentation [Электронный ресурс]. URL: https://www.sbert.net/ (дата обращения: 24.05.2026).", + "OpenRouter Documentation [Электронный ресурс]. URL: https://openrouter.ai/docs (дата обращения: 24.05.2026).", + "Модель deepvk/USER2-small на Hugging Face [Электронный ресурс]. URL: https://huggingface.co/deepvk/USER2-small (дата обращения: 24.05.2026).", + "Docker Compose file reference [Электронный ресурс]. URL: https://docs.docker.com/reference/compose-file/ (дата обращения: 24.05.2026).", + "Redis Documentation [Электронный ресурс]. URL: https://redis.io/docs/ (дата обращения: 24.05.2026).", + "PlantUML language reference guide [Электронный ресурс]. URL: https://plantuml.com/ru/guide (дата обращения: 24.05.2026).", + ] + for index, item in enumerate(references, start=1): + paragraph = document.add_paragraph() + paragraph.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY + paragraph.paragraph_format.first_line_indent = Cm(0) + paragraph.paragraph_format.left_indent = Cm(0) + run = paragraph.add_run(f"{index}. {item}") + run.font.name = "Times New Roman" + run._element.rPr.rFonts.set(qn("w:eastAsia"), "Times New Roman") + run.font.size = Pt(14) + + OUTPUT_PATH.parent.mkdir(parents=True, exist_ok=True) + document.save(OUTPUT_PATH) + + +if __name__ == "__main__": + build_document() diff --git a/protocol/task/SWE_lab2.docx b/protocol/task/SWE_lab2.docx new file mode 100644 index 0000000000000000000000000000000000000000..510f875f201e3030309d814e0eaf4732cab5c395 GIT binary patch literal 790673 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 @l6 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 z%0Dkzv*<_<++mFK4wNqGkVFa*?t=5Ne&e@uu=pK;Fj=3q<+Ggj?gK53t;G>YmsJM5%!&4a6pYCEQ0&kj zBncJAqDDQb(`E~}`4;C_Gc)Z{15WsNSDcTp22NDQ;`!c@4TvM$%uPTGWmrKCo9{LM zAq`v!1rvwrdTxV32v9)>M0;)&?6G-=qaA^WC^`E8QYPVs9gh%QN1 zIF4yCA6#D}DA-pwCkPe8-8)5f(rU(@9%Xm%z~}I5#*xZp_mGn`C{~tEk|xwFV{Tf{ zF@uJU>0RWtp^(@3JEM`uU(|q546osEi*NqR;Z?I{0jz!noKtoie80SDzczM zj-CqXcpo+{MYiro$viL3)6J~71YYP_+q|TLqM*}B&GM6U{9JY zb8_s{YM)+HUI^9LSYa0oO=H%2e2#SnO#ihvy5^nURV5KF)$`reZyQ(UorzM=!sp6# z3Ae=*ZK>)KPi?KW?M3EM5W63KSsQj`cBH{`@2f1Vd-QuViW9M?Em8|Z>;O4~e9eF_ zou+wXXs>hbH)^l1}^O3T*rn)4AW-#g@!PJD-g*oUQ&o5s^ zc`GPzNi=)wPN>MG!uM60GN)6Z25$^Sr3AweUd3>S3+Gd^y4yTOw8J8UMTJBng)26( zx%#S^iiDqbr)dZ06rqiYLyEGy@h!>gv^+^E;=TlCQAWwu4Ea?CdC_Q>RQLCg{xcxt zRvd0mfHJ=kGNrv|7V8o$>-^RgS~nlfdC)pJiG|HNw+BPW8us$H+ARSGs`6ir=6=H* zGM+NOm&Jms2!1T0ma>eEs2(55%9sW7#t}(HI3+ZWvf6dhtGst(OFMM!SFwjbD>u8B zcT8=c_iY5nw>GaMT0<(??``jcu3YX;*6*KsNA)HxiGu`L4KLZpJh>@%#@{)PR7YBJ zpk69IEBb?6$6YK7y&@mkq)Fj7`T{w0L15Yo7^@$Fy8=D;-OpAylb-D0n$alNc$kaA zyG+F&`~X|bpA|22Od@!n3-6i|e#!}?r|P4_+ELoS@*;V-@+EapBuw&>->_YeGALZ` z%W&2`T=s&syAYeSuzf#jt7Qtt{QNzMRB}v1uyl9{+j>9cL5L6SAw_XYjp~o+E(E?w z?FM#hnU*wp1N_KO+Bd!o5y&jHi(^vnn9=sADZ;5nRaZB{tO>)LWrhiB>Vot<#RT!m zW&uHf^bpSANd7SZ+cE3v*Jt9XruXyMaQ08g^IwhHLostOfa_teU~#(JrK-jI6&e>p ziKblxzXOH1x=9IA|CJs6qK9$T4{tkss-_xKG~Z=*6aH)o% zRScQ{b1CW9R3jXZmwwewXk|GAnZ9PubE0B=0-p1d_rcj8cYX>!)F(TCeAU+=)7+L{ zxVs@t=m9`%S3R_T7036i1mi!#+@rBr9zAqr^Q0@aCcr&6?IA0t(q|T3>5mend35j2 z!!Ls{Y&sf{t-y~8_69N6&(3uQ?0v_2k*P*VLcQMFw`%IuDrQ(_U6`krT>KYPa|wC9 zH*NaF{`;@TEn>@j!SDCpEk_=PPfoDWg)1-xE9_=W*(l+KZBf|kSM?|XmfXat3<*b1 zMgdno;jB;eq}bKB`^JNk%v3@N`7W<3bfPat8-?KZAM@DW6hxsKPZI4YGV8WRC?tpK z(QG0urE~$>lH_z*>cr8Ws8nd%Qi~ULIqw#Qtawh03x4pcnr~AvD>mGeC5ojuX3yB{ z6qmW#$=FDW2T0VyETfK#qP&91M3r%Js9SOs)teVaL*Pe;QccfmX!k#Kp^V_>JaB9` z?5P_M&F|}Fe2S?YZgZl}yZvsw9%0xSDBVIZR0?8n5WoG8mTx~T<2HUtk2TV8v#et` zM7?dlvA1~0FPIYc{l{<}q!E8D)$zfU75BdST>dYSg%^%@iU?on+nOIS+)Hs%&3}tt zNz!k>C;p%(B?3JLJIL=NbOiF?w>GHBt0%b9mSjnTtbOVSsN;azx1&S)brrKs&{W&d zNxCsvKX0xoiHN>bw(u+c?`5@I#R+lNT^~#&v{U$=_InTns?sgfVBlXR-w;xz z=_%Gp_o7@MtQAP?O~ zQ+t{SA%`|rzKhy6~PC)p`n zd|qbl{#JdA1OyT4G7y#V53ci74LNYEG;3{MoqLgiKC1gJCbe-yvck6FcBb(qwOaRd zo|mTET>INKKPd_mjReOBIXDSKCz8D{JWc1mBihW5uyVO#a7D(t6WbYjeZP4J+dGsv z#(LXCH^S0-1akR-1;rjN&X}KTb2(L?ueoL{Rn{_Z-`RWY6$g~>`mOjuK* ze9yxxI2oAPoRSFFIK3wyd-QU=HWA2LH(|;aNfLK`U@;k2D6HS+tt7@sts$OZy@~GH(Y3PvWQ8dhSk)SiZ^y|+l$8z2orZ~%9HDoHjL=TLi`Q~AHUi!CS{sO{JN32 zq7yN+6%&~%pU=2)T)J=ChM!!+Gp-qpDvY|(bA4P_mhGa?m=ZQRKG+7HPsazT4#mu( zDaCmkhaYor1l9vPxLr+(weJ2ZWoJpF`^DU@&#|GYCni-IXNvgHT-q~A#8HRn?@h}7 zJ5)GQv&j>@J4JHC*#6EW5f%4n0lvw-!XMrG;d=4q~A(i8Qs3j7J>l^?(V z?32jMdxL!-*uPR=P>S88&cLRE=bY}u%0Zg-S3;b+@7S1poWPrcTgh1-nz z+eW|$?oIi4z3lQL-go}%_`pya);u^lPTo$f`5}b1g-kMW#kN)7V=oE)zNSm5XlU0w z;F<6=8g?#!)H`{lsf3ix7VS)e@2dJt?Tjdk^+b5_J)H`_8t$d?zDko|Vc) zRZF^jCf8V(K8D#@^H$};B>KKTqt!2u5uEpv1-)H4m_t_TE~Oyt>q>FF-e^LszKTUX1@qMhpKJ@Y z$&|GCFZgV*9fH^|(zzCc|p^lS#paH_pE( zbD0JXMxh`5A7ZhHrW3-Y(&^ew)wvrAGfgmHok;`I`_9o>*qD8$B<5$x$@<%| z0ok{)@`h0#zf~FQxi=AGuJg&c_U`ZDf|3U%M{hEKQ)h{#QQWC9lgg=HkVlZ%7Dt0~ zDf7aZy&0OGY5Z?5%69CvBkkxI+b=tR27B<`e0@=Rp_AJ!INzGoI2l98ksrLnanIo< z=_@Ah8rhEiijdsi24R5baJYBDPJd(*iTFE4(|gY3u@`L?sFmS`?-l!=uM%;q(l_Hb z8+cvs@+vf*=RBCPxchi%=1PBBMtaM2#0;z*wmiFiA6Clg*sLbH5wM_ggn#7fsT$oF z$Gls5-TCtAUBst#2EwbOojYx+ zGrpKsTkx8B9E;A&(Gle9o5*hM@7svjDza@6GQYq2DVvVY!DM8#)fmT^kzTR@a6a?| zA*->1QGJtdtiBVe4fo#b)$~q%ySc|c&k=sjI@!DDiY{RDU9&eli)1g)HmG_T)-$uA z!__l9qe31>b%VY112rLA!S-PD*EFj6d*=u=0gG4Yi|XSvi8fr1*=x1iJi32-bxO)pN-ylIYf$xOKRYwG^1wH2tV>SG4_D#$xSe_@ zQ^nFf-7!X|h8})<{c%^242fuVn=+8`Ys|xhhXVs7(g{Da2f47&$U0gcJAMl{_S<=Y zl$cFEu4{~0mgn^#%ok8SHHZC@1dkH^v~OgJm(hb?C9#^y!o|gutX|n zgms$Yz0bYPaZlU_$KUK{$4-Nr(LE-VS3aO37^Qv_ZfxQ1Q{Et@>u2{|WSq7%%xw-x)8*3x(_&UD`hSu?AUTu1qaeiT zLz`vO@p+OxNd05^)mZ1flt*9h<)9d^b>?oz4Mfxm_q)XU@k(FyW7)vpejH=}5ZcbA zhTixqcFmub!YM0GJ6bGuccEgXomNsV6L!0S*wR~3NxY!XTI9zhxw%c4I;yL#|5(Bw z6Py+4*Yt3~mp0e)X&2Zy5B9XVPb4Hhy?yE!=RT4e)^TMUL7PH}-2+duLmtM|}Io_EjZSe`Q;9eFg>>*B-OT7|s?e-JTQqgxjw+g4w0E zo%y2Hna73tG!xD(e%6^5m?Hw)pZd{rL%CG#1Zn{Slyvo8F@9is=sm8$eb3?7?IXKR ziT$_yx#c$-@@P z+WlZ84Q^#d0v8M;&bhYzIgcifu}M8b8_U2Q^2zqdqH*1VWEP><`u>4lYR?V!}S7 z&_UT&z5d*=tnJ5Ik7$Bu_-(7S&jGi|vcwx_EnN)=E-=Je5&2h-+J;KD$se$85J>uT z^C)L+TyfDC6?-5qmfrTb2g#LJ^f+UzBjk0@PNiPbf^aR#Q^y-JzO;_h6l&!XzClhWyg&rI**M$B z!2&9u%oFc)RSM1vq6hEu)e(k`_ZnCJXtv1lx`BO+nK&ge^Vc%tdcV{BWhG6;u8#b- zLDp0#wGB}g$J>o_OLy(+jSWHw$&VK2Te$Lnmhw9z!{NlLre}?P#LbmCQ%`N=ji@=d z(02y%FS_>PS2|^t*P09C^67JfhH5uA)|WSSZo>{!$KUt@7QfDJE>}p4lxTBkZ*g%r zsEcl~S68Mi($|-VV*Ff*13AHou+KKR1d=JyHMy5ub$&&*i!1~d{FkP)E`$_r7CCDk8YUx;>=h}(nBpC&-L;o;JN#8Ou;;^1Z&@WW zUeU2Lgh?qH7Z!L3B=J@<=Vqr}@W-#^VDQh+ClP?D)2ONiDBR*St z+UKhMYBAHmrIz6z#F^+~(bhC-c9-{g(hjz5{QXsfZNtH51|K)8F1z>fEu0Ut{EZ?bH>jHCWUNyJC(x~a{yFO`ay9ZfmrPBoMp3V(f` zdsIkwY}q|1jGw)orMZ7+QHSGUSV#dm|bq(M1+iG zK#lr1k4JoIESU059M4iXj*q^fN34DWnml*>&=!~c3mO8L!Am_HEE12O0kl1;%^Usu z|9;^2o+72>x^Y%o@_vYLELsgPHOAyJry`fx8mRlvn)wa-ZAzq)=O9QrgHnW5C5}{2 zSn9OPizo5C?Q*Ui~#*_NJCB5EBaq(zRy^KvmlqsKM5l?W`Gox0;}qk9jt zIEoS-Q2hFzmqpx0b%?*I&>V(rhgefTpxT|=Oq7xJvi3i0AWdL)wq&NwmrIoq5&Ni_ zzmu&WRxYxRvI&k)8AnR#zUgT4Z%rFhg1XtC!73?-vczz?{r0G_*o}p4zUr3$p78&n zl3a_v{_q=+MxHEh6XYH%E9zK*R=(!WZKi%liz9;XTlDVFlM^CW{ltjA5QYj!9!I{4 zdJO^bCR(XGVw5PVA{t)6_AX_zKsC1r3X^*qhCvEUhrf{d0@h*@#z@jPh`egiSk=fB zRCGSfzf*Dy_8B=CRhMO2s+BhrL{E25VEVNlj7-9#3;gjv} zKQQ;cbRE|SIgB+ttMmNqZjAQ^Tjmwx311<}8r5`Rx8XuosD#jdA9XP>e|8)DWb~I8 zKnv_j%thsyv)!xzl-j>0B51A-x^r8MK>{~H9U8MSe2{ltk>i3mF=TND-t78EFD2n< zJ+Ip)kbJt2T^O};us;%-W`?2={K)|oMU&0B(DaYRO5za|lCGLv2Ccoonn=(1hAJP@ z0*akdrC|5=7mt|Ev^Zh7qel+9`^7Pbx zS&$oxP-mQs%clF}C*^c9Uhwg;`J=%;H)IZN7DDrwLdR_(alqXD^VGdz67{Oap-`6uIq zBKqXb~Yi(?SMKN^_h>R-8ml8*pDrPLtkZ{YabBq%^47FcS;3 z`4{stbV`7eCuuhKj!T6~7%;kMd+bT#Y$OG!lG0(1>T1z$DT^{c3ndtW*bbC-wCtwC z;=2>$HKOZ`S%G*73@?NI(tITcpJShJ-mCB`Olj>5M42dy(4kMj{%AC;cF&a$r(HjG z#If{kRK=&He7;X|?oYII%#!Jg4z3`F^v@Y$P26zy%Q0z&?WXbBF&)`ASbg^Sel)_a zb#08rEct?TXbN^7Ss+9{lKsWp?!S!S{`Y!^4p$qsVe(#OFPUzzIb0psj#+(S82hnj zxS$(P3q3m0+b>Z*F9JoCCS-&kf==|K^0|;i+L6iq?`t$Ej~B-iEtR6p*dk|*t{JfV zVzQ~?!%)mn5%Hg5i;3CGaZz6i4_ipk2dew5H{52JW$H7OU88wW!W6NwDuYL_lTG7} zaDBgvt(VS4?K2+H7fhJ<3}-fxjFKBJwH@_a+`R<5o#%dCf4pIZUAUPoK>igsGJ7vJ zGrlxL796p^Q5cGr0lMOL;rYr(8#410UcIx^F)XaXd93t;Y!X$cv*+|~$6$Fqxxw|U zc=D!Oh0N3b0p9Z)X)&-GzDk0JkWl~7A07zAi>R^Vex3ch#K)u8~ z)oZM-IGt{Ppg?#;X<$D0XRhQ+5DPwjTVOzVIjy;6Mpyz3) zPkC~ql6C+6slf)~a_(QUvHvag;CuI#6A4){X+WW`S95u`O#VwN^lzBR4l-At%WHCN zTc4Qt99P%pVJsi;nDq}h49_QIhbxOVY>6kmI2MNXIN{=pBuyq@a-4iXNa#8pSI`RF z#^f)J;MC7CMWZUj-@e$Vn(G7<6V1LCveRwXN9FE4xDyjl{6c)2klF&3MXk>1oy1G9 zTP+)ODFgQLlB7=}vf5AzDJQB97C@!}4hMnk6=1A98U+LR3ql6Q&?=|+WLMg9p($l- z`Iu-G&9+^_a5LmOAtw1mk&ksw@E9o}DFF+DS79`F$J!y^QPR5MkzEWi{KC?5*C0`N zO=#9>PwGo2S>7@>h7T}oR+upom(dZQvF>uS31Wo<=Y0+o+x4VK&&p=;S(+@WEHUw8 z7NUX84fhD55EAS_IyiAwLlHXA`!_meBKV)8cnEsXg_f`w(YyT4m0v_W}2uifUl7miHtu z=Cp!`q3zEsz9X;o4#Cx=-^=IccJujK5Al7P0M)Aq@NXJ}`$U|m%e;wta`d<1LV%0& zBVJMs&P_dIIZ`(MGUSjkcROb>wd^ekexigcTf zD1-2>3n{fJKgJBMP@eu{v2;1@f}{j$=@itkwDq@-UTl}OH7Xt zc4%1ACz8b%3@OPQAp~}*ssU;-)Z60N3#nDqu_FzR%W@lhS~(Z5#Q2R4?$QvI8&jJ;vn7>qDTMdWtr0 z&Srz%v_t_~%efG3yKxDtR}!|c(9+nA-)?C7AM3ti=;_dmTIV}SMytI=GobWim#pF$ ziTSb&s~l?>>R&I~4yb`#VVNA`$$^X&=Uy(U?SU}GV0Z;hXXfGfOSK{d@Vos4|AuE3 z?8T46d|Z3!mc^pp2f$&FhSnS~1PzNHMo=0~I5SnYoIkfRi|p%O>&fJQ!R{$Y9UA`r zf9^9w6bg`}WZDoOZkSDbZnZ@1T{|1!a)j(%+K)dnRh*6rOst>LY+IW_ytGx$vaN5Jo zc!pcj=UATk@)*oe8o-43`O${KO_RbSr7|~DsPO-tOU&wneOkUad$j3E#VP>%potf{ z0wiFJk%#~##%9JDCiSp}xvueo2}KkP8nYFLR=jE8)f)R+mPOVC6pQ2YU$V!9*~|*@ z$&aD_QwNvEG*LsU^#~srI1BSXyt9FFV{Oc$pYY5h(bb7S!xVQGgcIlpULAh7-8q7| zkbm@y8%!=bFGtRsNeCQ$L$oeH1R0%W*cuAc*G>HXp-8ILygw$#|MQ2-GOyi$-MRvd zm6b$+Zo5u&(}6SS1o%#W@&XR6VNA$+#}^=RLgNU;ySREPY%3t2qu-9OX948TA~t+c z|M5>R9Z!HY=SZT9RznHIFog}$ExlOfU$^s)1-8fl(N=wT1!X@K0m))p;s-Yn@KeeK z{HCoSil8eM!}pn}*Rm4G_U?l>Z&#Wh^6RHdle(&-dYa|UL6*L#9IF}qr9XdIgVudh z!N;Zw9$9;SfV8A*yzonrk3y*#J}~>dv73`H4^vt~-Xz*d_qa)+#^U9MSutYF*+3FVa3t z0Z>-Qfg!op79h6{VOf3Gl$!uINHbvWd_rRjSHX+SeRm8IhT)d6>LyAg7k_2oi{t4I7NQ}P*-Wm zN@z^f-4VcTXbVjgf3>H1xg3zb5Kt@;AW665BI$^I1-`(wd>~pj(o2os!2jwfk^Zox zdYExbbq7iy*d@X+GRSE^6Ka6%-uOdA4v3k17E@L;DrdX%df```|K;+2rjAJrXHgI) zUqK>Ig|LD@e7SrUvhZHgvU%tfG&62LV}HEzM)@f`=b(wbO%`ck0XTGrd~_-Cx;zGg zr0E>LRdjG!hc2ZSWGjC7ZLdI-ZsQGTodY|U{?}{%a=c^pSr>C_kvF1g*P9l?#pWPI zCecHi6!6FG_Q;)wIJIP*Y-S-ov=80FF+{g4aHGXDzYIqX_rbW!liTn5poC=6nm(Ae zW&EBimEP)|_{Ug(+L6p)#7T;jIQpcC`oBFB0OTlbP+z1;01gCbn1Sao0`HgCaH5mF<% zFJ-J`8bpgIE~%2EbdJZszy=+)#UmV|#n%!-KVRSBTh>3{4k;-MdjzEosG_`q!qt)v zKsT-d^a$2#I39>T=$3%dW?PE0YEzYxNYvtwUI4FY2D9*xn52l)vQGE6P_!DL?W^?R z(^Q%!q2w3lXB1_Ccr-LoDA}_Ge$5;*c1`gDPEtEZeD={l$pr`u4DwomhD`p|&Pm%z ztJr)2zRvactm_)s21>rAcj?q+8cGfB?MSnB+~A$N_%FZKRbAP2tIPx9ZSfAU>NQ)E zCJ4NyO4j9^v+uL7w9`~ZiE;$>#*OKoP#_L!G{JH6(K$rb^DD+4z<(u=YdspC<-7@T z?kSZCM~@N3DH2_YNR)gb+vzH4B|H!jbnir#p{=fBcCY0O@405w?57{yKSq zJ{BmpCrGCJ?EWBiR?lbfU{uIGvMOy|fc004I^izU$YP^C_ z!VqF4JO=TjP?FRA)b^KsXhxjzRO&Y2c&6eoso0CLPeK|fShFxQ5XfTqm@?M}A+T~= zjPTn~!D45U=okFZ50xuKs0WZ~cERl|kcX2f5jh&8)9DMsbGT_=9Fn32y~dH~Jmp$mC>ff%BFnmt=+CjpK3MV9-mBF+#_u6~iP8XKmC-9Jq*rq}h z)%~m9cCvCX)7C-LC(;KzLH$-&DkwX)`NxLmS%?`qxO@!jm0 zj#K4d;?3pL&3}Gyj~R*WYurgs=nNUl1sp$R5ItS8JBl@*9bK~8gc(Q%3BBlXZeKkpfk|rL`T@Tedkp~$49Z(k@$@YdBR?Y z>+B3QARPd=sx$#+J3;r5LB0IZN#`RKF*AZ*+z?|mrw zPE!>wLCooFLY};nv926Hn>3(4rD?m{J@YxPhBpal^ z7YHu2y%(AHOn;o7fS~|yy!N_N&VyQL&NTmv(n*}u1*qM+T&j_AAi&Sj-S6LfnZM=% zIw(_9;i-$;A2k*iQXj(|f6B*@vQ23eDWEIZi!~m95~q^FGv%}^$z{xVSW+K3AmFVC z4s%5Zl9?=LU~1&h-Xk~HPBhApuaz{u0I^^ScA?K0wLiXscq&^=RI>6jiU5azOMQ^8uk&TK%A;cR>r1uM=g8Ld z@0Z`2@Av@Ezg+@qJ`~Msg2K7kjl~uz1I?4kp_#7@4}M2)mJyTGsOE@VMY5l*%OLgb zP}k7j52oha2l^v5&CF*-xd}h|<4@Tj(DJ{f2%y2B&EIW3o<4xuHW3sB2%40o<0=U7 zf-#}sGx8u8Hx#EZQzvyxrU*ngrA1IOep7oFEy_iyO*5a{ruLLdQYNB_(v)Ub+*~_W zs7zevC3mG#0x6U>=zHLi^-kVVX3HX-chyO6T;b>!!9ab;W&_X)F%5JD%@LGWV6~%6 zV;k|qDFk;r?#Ro)r#ESL%vM8ESHwa+)ml?#~1a4^i?#DVoVaJ zA=@d7?&J9AS!yh~+sZc5fl){DpJyi1M*0-td8c2*A|!D5iXRok5O2ip?CINos+tGu zAOy%*U|N(xzzeNA@pbM7T-uwrf&K75*FHaP;rPMy8?+CzFXjK~w}tSNa<^-Vc$$bR_;j3}DX+vhw}@Ly({9aJKD-XIqT?>Ru^^y#-GP>9#%CmwIp=SqoNsytwiG={U*5*`^7 zjK5VOFgAKo6lWuXG=^%>`&@&{9X8pAwn|MI*ik9)l2Gi$GmhR@cZ>(wt<5N`Y99B0 zWjUf6tPyP{n#DF#lZH}ELYTE;*_n@|ttg`7x#zLxzfEkz*i`-69wXg(aQkK%N8|h* z+Oh-C9pdJUBR?-*kZr~CyMJZWzbYLcj#Ik@9@aR>)X=mAc{>jkHV^atRwu85cP>%L ze|BHiojqzltB`u0tQ=3F%+6mlw;NR9{2rClbSLZj@YD0)El7RH>9#pVUp1!I%htax z@ZrmSTaJKFSfY#vsbk-Kj0q&0w3vi77Rv08c2uQWE(}z&B04pDb@Z0_I5Yf|H*daN z(@(D4uF})d{4%!3wir>93TOYn$2W3y(R-_U4QiHdVWT8J#R-Jm=lJ>~ELG>N+D8oWBnmuc z;(7(r#*p=*%qvl$f(-z;7HR?r-3k;Srm(_0XGY}XwW$)y*&fy9`ckbnk)o8shveBM zF)4ZFbu(6ygfeF(3!Nt6gp6M_;`xr80K1Qs0Q*BpGD)m4-q|bME)Zg-^Qiu6I!mgZ zB6}TV_-On2%RGO`OP2=sd!L5joFQ!A+r_QBD0%uuiY^^aj~7SkSc+N9TJm=HBIWfX zPln5T{;-FN;ku?LP(Z?E>_~rUaozZ0_s=i_00h}a&Abpi=LYvf)k2n~wT(wD}Ik58+lgo#}D3=k%l#93?2?!N@0x3_kMN7toUGUf-{&KAa#@l~_8>8t8^{k>>iY4fMzsN-?V$GY|9vz6Q&>7s2nMMc z;f!|A;Kc#g5YVRXn-WiL!QB4Ip^jXYBvRNEhGPtpl%7aZmWl1*Bijk?y(8#b5}>Ap z`$55PwcxeIPGUrMQ&5aO=_&9SHtN){6gIxkCgE60Y6P-yoNK|P#!X8*7Io_da6U)( z3@G^%`1y)dBI+8Yo)VLumJ6wcE#Go1c_*U7P`u-&aiId0y8Qsk(SbG5sZw1k@?QkU z=ZQRUa)uDU_DKq@Qq~X1QqSGO-bUB`4oij|EznWzOADW??%8UZkN_K^aY$GuqjI!Q zEp{qH$LJCiPvN)bBYSz>ZGxvHy&gplQa)(+NLFp&Xqr#Sajaf!{h}se3FW-ufI@On znQd3gPpR7&2PJ0Tdv8zceA=Qrf|Hb)yq=RJiqb0=@{_-U#u>`?ghfbOWihz9EC}j@dic2||1BqcnVRlrYMSZb3|OoM6u4Fa%Fh z@6edTaLh+7A!^%#V}vZG*mVM^T?T6Kj>?T$7f`;nPgfJp(I$j6n19A z(%NC1=e{&tR4sOw-amRLPtFE!>}tMA(Y6WQSnogCeh||;(eA$bW}|J25igsEzWN^+ zSSUA=EHl>5hOniV@*Z_h7VY&Th5xLkI~+uBc}7~|+DRoUunj;m+njq`pPy^ZC^0Go zm&KbZ&t?$1mPRo2|F~uyxr>moj=e=&?=f<%4DYdXeV38-!>d^P8yye*H|(kZ{LX&? zU0uWhzj6Z>V`SsJZlFOWEkDsJq>}|L{`D^~s59>g7fOzL#dSb=V}ZG})jtS7zF=qk zMWtcEe757eY{lP9z|5%JQ%b^pMR%ov;mZwcd^Wt%`PNAWOSh07>MTN=v z01P3v@{v=z!!)R26jFv;l>GiBeQZ-4Pb0H>jq+u*I%VbCf2UIj(7JOQgalrA;6j*1 z6^V*5-rgD&Te5_v@rUQp+M(|!xRIHYlUWOzk*|QBR*lrDkCHaCktgUs9~0>RMR-uz zBFY6}J3idcwI4 z!Nt8dcOs{tnIU=^B+0tTQiyZ908k=j>I2Tp@o@o`mR+$g5>KxexItbR&J1P7Zu`we zyQB`z^pLH4nTKEH-0s57wL6G}Q%N>wZjy0xF&=kfnx=8EuR??zL2e$pyPnbq-2fs94}{#qhLw4g_V%lBjMG4>F! zYcVjMlKmPe0$F@Sb#g7;rk3iKXaN`&+A9c%trjcU2Fu%b5w@l?P1l1Z1`2p@?I9 z%9L)|7DQ1o8Y(ko)aEWErk0I8f}9V=Hb{`m0yY7)MLT>Ac=_bRx=ngxpTNs^HUTnN z4*4F)g~KYZ;=w&$tK|wVYhc_0#Xm=kcz`=5**R8Vzi*VBhm*+I3(6&hLdL};)Pm%h zgKe$>RQv)}wo{3BHK}R~QZD~=0Sf74g$-F|ZmNvGy0K6+q#M9aVV~bsX-u1r`}>$D zVF;rHD0$}76dr#7j@ha*Qrkm{VWsYJM)(V74n|F{aA6_Zg?9RuVA0m1+9QXaVQ>1Qmt@L0%(stH5stl{N(wKM*}Unq5j86Xhulphl2`kdg~;DqWy3rxwp zm<~OF%Arpy2r86D`%G{LdlMvA3Juti{nB;~DQquBmcTjU=|yLF8p>G$8w89UO;u~~ z4E0t?QNiHDE1rPd`47bDe?aO#C#vRtz>SqMn+_T>o{nikPKxA*Vc-X{8~}yQC$YjH z*PUslBc?8XS5^)7+&0M?Dmy~w$QBRvJDGd^aWu_nm8fQCzQiCCxI{iTvQ6*zk z3s)tDMQa$8HaNZ}bkdmkNV!qWk)qvK%9J|j9hC9vT4x(dXindI10arQW3=fF^r~rI zD9_fz7iBcPs-I~F=dMiuBr}H8rn^vJhNrX_bu!^#L4C+)Ls9L?3mvzWtbe@Le;R77 za{$O?nYQ1o0fS z4N$3-OeaBR+W!;vgL*$eU9t=^kkHeVIDjk2V6JV0o!C2gDHr4Y+a*tJE!7{&M?Rjr z=iGAjX!6l$rzK?G@h-UTs?%SlV67UT>Ro?hy;LnJ9^BJsJ&E4exIYYrq{w!Q#J zEFY@jY-{`&&hJ)WIic!Pzc4NgKu!d(HbRu>>h(+FQ3n&UH+&=M0y|eob*GA@W~27h zT5D693Zf;AD{u^{*U476FUN4Fj0j$-^;Ujb`?dGa>hssV^Y7#Il^gusyce3o6+*i7 z5kT@?8vmtFZ!ZRlpGE*S6C+zp00&sqCsp8NE7d8cp++vN;6`-;3l0utk)NT)r^E}V zQnD@5*$Sl_lB8FF^p^DXVW-$7z^R|e8Lo0vzUk)Ilw!J=sBhC);zTFLUZsjQ0CsXt zWMVp&sIsVC@k@{+OrGK(+t>hve%6B0mtq@}EfD`13TEca34$M=14|Y@{pPWSA763% z5k<;GhW@aHJkc}Az5Kr;@;{G}4Dw7MAhcefP*a_N#ZOs^zSr;l$R(N|Zxo;f6O$1e z-hT`jWCLTpnylezZMko$P3~9B?ke_i-N&)M z6YUj{2LQPH+QwuRdfj$nw(O+D(D89rm4PZd@9MlAcz3CP%lAq@gG_n;`Bcha6cv?J z$!Rj{oe)cCogDf4qWz{h!}oYvem)PjaP$`&@*&hTgwu^z27Bq+RCasN`u^g`D#R4n z?LdGo=Lr^7pKkCju(8nE{Rsc}t9oLj)f{2p>pJ@oEd zacJ-Xxmb?0hj1nSE%n$+@-wDTwyJbFPq5=Dk%}SGz}cG~3C`696_Y9AsERj>||p6J4YcZ9XiTq~-&Na7r%(4Z~+_&so` z7cvcUnR=$NQXs6&&+8ULiBp7T;^MVZs>T-s?7@}uge|{T;{y8>@|pSkEMnEX;MYIk zMDTztLvFDRLF+J_GWlnAEo%7dHGC}f5Yj(_&06LUh=xo|jj7tk5mZIh{eOD&dt9Im zJ=r^la&JR+Z8Zl0v+yVfPs)W|f-xsmPK*9NoJ~BCDv)}@X?ki;8mAqMvqEht?nYek z4P))Y_83PLNq5C&{q_=g*P32+Z8z`eFQ^Ntq3wY6Qi%F-#aLPamSb@nWN|eE>;&oP zz0=K73R@6#crI!2gkbTo=7D9bKDUc*t!@pDhm7f$yLSe_g;M`Uz0SZJ>Q~64D02Yg zVb;l~#{^S-ACgP`{g^Zb0g)|a?4y}93{-k%0*T9!+Z3r_f!Hc7!ZQTMw(_dyGmJK! z+%0l{*qtvS7Q}MxD;m2@+{x2hqcSsonC7pwiLZ8|B;|Ci}It$ULKQ18_%bDiLb~QMbj=^7_iaaRU0Utzr~!PL9y(7F}_c zbo5wOM#g#NSR^A+jn=QdpeD^!h6GO%rb z=u7`ZnRF9HM#e5A9~OKhu^iNDFnujy$VzF*F0GB>nb8wVs=F`rAph7x_hG1K;{nP0GuD6sH(1jz5(P&geHx? z+UBzV>Nf5MKn_jGs|^6J@*`Y_`Z!t=MVd<+d0HKrKbHzQ)h^f-<7>=ANz94p7uWqv z2hCPO;H1C)K=YjS#{G( z<&giHBC}c{eEW9rEsZ(o8m}Vv2lbEPW0h#kVBftuNaYst8cc~DkOvt8{!kezU*pdx ztq!W4tie+V*MnTH8u@^|6I#F*EZMY!A3J{a^j2qds6MN@Q()0DaJ(3p5j+5y9}|wb zeHsBQZ&BC%FORh#;DB-^^PPC14{**@he!{f_aW%fZvz-NAw0fBoce!>gkrPB_Q`>` zU>uAEv$D*y{-E2%H9lLCc*=Y)iVrv8B})F6K}AeRFlL8f}+QQ0~-2d+|)0 zDp^-xvxe8{2M@;%aRF#X<70ghGPVM2R-^BXY^NW#wYh|_3E(Iz5+f9C9@B@Eap3rg zU*lNZ2glE_f?^k1F7jQUE~7hEgHUwbyBTm?V83JkXOBGNzTjI7;WX?&^K4Amc2Sdw zagb4076%*$-B-1LU4Yfr$}!a7r!cSKI8W54zTvyRyjZv?i>C>XnKIBCE96HUok7dv ze%?yOC1qEx43CihY>`u75hFNn$M*EWdd}AJ*5&R1gk2&)YOFkE2aN5!WDpw8n!x>C z3_!wW7~jp2!HvdwX)Ls{Hp|R&fu>qkAtb-zBV6n@YC14+cJ6!Ecy*3CAQM+@L9Fc* zuT=6S@6+I2biZ=d)P<%iy3rOj)O|u%NxPacq3ZzQ$idzI8bwc4y7un1J?YA!6NrO& zDrq)(^_=O3;HVQRfuIcyPw2qF=RsoHiz#>8>|?*(&-aT#ux#n+ka^^DJ5x7G~sv8IDo!ij@lx> z6t*%eIvRM|TtYwCeq39g%u47-{hx6iLM1TVK{H1X%8xUB^QT>Ad}nELpz24~)uzSxv+oLOzZl7f^V-6Elcv`BZ?cU~-?wbp$<@Av+AfBA!L!(pzO^E{3{zl%j{9n=9qw$rE^ zkU6SD0at#l4?k$|+TDb|(E>Jm>C;NFl>AL-9YpL=$G(IV$_3D<&?>!~hPMN5G!}^u z2ls1c-blg;B_a-30+`Fcrbe*V?vLtVz7JKXmdHp}_ITnN_-Y!w$xA!OKsZ$J3mnXd zz;&Q8xjEf#x9bM}UWGvK={uL+o!mb2l8@@Z@Jb+g9|&!W@zc*U*xZq?aN{ivBaSB51aVZe2h78ZCcc+Z~T0-`yB2$R$si z7srlxS%{FE&S2N=L8c9oD~KG`K@4eR2{2}8Nv^wrT69h5VC;FYFA_Tr#hc^1Aq=*B z+&S^Ik1%315X$#}jl;wt=zy|$-x64y3ZNWzSKBrxYDOaPRYixrc2?}&OKM(#(yTo& zRew0r?&E-ugay=hUSp~AbQ;dVv@8r{7Nqf~K}S8XUlixRrA_d1Hy;|K|9iN{dW_2H zGCfmo{bL0@d}2cw<#XISuozSSdy=MoH2_a!6p%sb0M>KHJb{d$jH-j=!q2zKm(KGmw?2*B+rxO zp3TcX-f7kXLz8D9?Y!;KMSAWeP3^oKj05lMk0^u9yH%RZPT>QwO~aiAu>%lDM)fLc z9wA8?aLny#Bq7arW1;kfB%}5-3g(>_{_gyy6p1WCsbDVrr}R^eK$Jv;GQo_$9erF5 z948G&()cFs3?p_~=A;TM_%60sLk%pxBJ-z^-sR0aD^O81Ga=&LXEF6UTkY{Fza3(i z6nE(zlHp_1KTxc$Wa-M7R?uB){OH(%cT#tTZrRJ`4%1s$tRR|iI@x{7u=77p4sgV8 zR~f#`jszF|waplWdmnv{w^I97#ks=htLYm}iBC;vpEY#++E`o?F-zcQ|^lhB8toNj|t zI90S97$RL8<0bTEGNJDE$gd~t{`t+CTxt;>Fe=(dh(I~uyr`I_RMhbZi1AdTm#RyN zOPK((;@eYLYik60;RdlDZSRfp7}>|Jz>O3;UEuNjtpBcMk;=g?4!|Jnlg>CvXl>JE ztF~+*`Sd=dG2t{vriO8LcaeFuOdt1CBp%I0I%ghe$T233q86Iiwx{qje{;rWlhqtsgZrz1@@G~S<{Hu+OqAuE=j3d_0&%7%!Ng& zXU*C5gg34yycEA0dO*bof--0^(?O_$7rJ9);2cN#&#+%$qrtn-0vs&wMJhjlF1-89 z4aB1S9U{P$=?UU3sspru&U}7$OMxi?qvgX95Xoz99=+&3~ z(niK0J1dCDg+ReEvDYfkJnNLRt$t_qaMN-0TM_H`r?QKOYnMNeQL;0c)+cOvs7*An z7+#BBU$RfYv(!otgAy)x1ooR24p$bvnrll`&M&>EZOPW{Q_Bs#UPdg*bTEGN?2tUR zbzdt@craWleZcB9Og-3GHC&RlA_4aj0)FMG-sV>9w=BlcM-17xulwM2y)9(E>fFWRlrTvh~Z zBB<4fXyS2uHQ1G%cHBHaiVaC=m-X3bP96kMc-G(=fRs%2Z57za(KEHc9Vf%7ooDW3 zdb57sziu7#&$=AZ?eA9DdJg}XI^5Ep5^CJ8`K>dhXCC6XYRPp;Ve(m3qzDb(*qKd6 z{d({BSKChKO;}dt2Gz`6=jL*Onw!msP`vLTYd?XePCg-qx2-nyIp)Xth?P6%Nj;etkhCW^)*v&P|zGs}z>55M~?sTr%B zW;hh@Y0#};EyC`s68a~%N5busnKtgOX3Av0l2A3LQBQ0PbYN;X!F~8d0GhA{xlqqM z=Xmd!QFE?9lE`?18=Vy!XQpW(xbSxBIczo7U0X=kiuoRiTW0vq`V3W1eDN?u@9dod zV^ClJ5toU?ghKSTVl`EI2Dr*Nms@cl1WmF^enj9MO*N-Dsw!^#v567y1?uu#{n6xz zdGQ(Ubf7+wU8YJIiCjxbcbE~bWb~(CojwZc)Gw7vWUp-Mb8QtGd8OZuI9LkaHJ8o| z&3{%;)A9M3EXZU^^VC8{vMFezIxBC#cA9zmG@JVzucZewDU|QwBg3K2%k6CIf$TN6 z;YFwAN4<5^B6_qE5vvAu%4X^Nrpe~HI}?kmNcwqkzngaTi5uxe@NYYIkhqaf&#$#0 zed6eGYx#7;2;Es8!HYA(OR@)xBjy>GdJ+{ob@OBI*#7~phvCFtLJl5Eo_~4-5{+TX zLn@QnD0Kk8CopV{Ru4+2{haj<(XU!M%!bCiZzW9XtXvKwG7$9%<=}geuLZ7p%paCr z#eDArudgynJOIaj73+`6jQ5%@VWy;YTEGvcBDI%+eK7x3vbM_jMfpi1mYRv zSCvikJ4{1K*Tdm3;|n?&4HGJ*qmNsPD`D!y^ZW>NN)!s0g($=es@bT-#_;nDG7lL#)65+!oF1#pwj$|uJdYO( zA#D}zVERbv1RquA^MU6-lLl;4gHFH_{PAp>pZ#xU`Zp#D)9MPQtBdv3m1rg5jfgmD z#rp~|eqsSW*Zd~HA@fZ3sXFfs>}?DN9!AlAN-iwM@3#fkl;gumQ;BjlUfHVKDEZ|5WI83R@wCj3!@aqj`Z9DtI9Ci=d_dATYj%`u-qp!UW) zsZcxY8r-=s)KBNJ-#Zh539L{*%i1`4$D?}qXAh^|x+M36h%(yH*A90jRJ6M&flraZ zG-mKJl04eTKZwS1nSaPvZzY^5A_Mn^_V>H^qMi{5ZOU+8;$Ln>qi?TCItMmeh-6SR z-NlodqMwlhX`;if5CEJ+S;*p071X4bSFTu849rn}on=_MB5@sg)K!eGRq!M$1Y75Z z>vW|LKL>qNepVI*jFh%wgt+_3Xy9#=%8M;E`cL_FtGSPRW~0Q)ENF*QPsX}IAn}M1 zmw+Rvmt{t+Mt^u}2J)3xM#9mBBwV>f#tY6Se?CN^m+aqErlYy_j2AU?HGR|#^{h$f zE0XfzqoKr}%tJbydaiR%MZRsgI}621nzQ%xHWvPcua_vbfIm(hKwWxj>AxzbCv9=P zZ@x?vEw^KlF@D4u+lEuU^UXb(b7WO_9mGNW0S7^;?V%K!$9t-QD`6A>k9kng;KRzp zt!TH=o_9vN3NE-B7~cMPSFqJq22QI$+rgE{2k4^^)q%IIqHRMx9E(&LOy*d*Y$L<| zpMttrkHf`eiA}zH9FtndR8M{jlV0!qDRr9mWi9fe5`Sw3#_ zAyu+0*ux(%ipStPEy%&87WpLO*y8@^jT@|7-i^rdYr|V_xNb%fy0ip_H&1nL<&434b|c@qYe$Q zoSQI}J~wSBI_foZd&o6*O>Bwobe{+E@U2%S=ve_J8&fWpJk3%Xc#B0ArR1#Q9`@IU6TFypkI%< zN4RV*Ekd_iky@C&1Dy=gfH_d(FA7+L1(C^W@b<(%Dw;-MAhXjOEKFPdb>BAFMA0xn zbx20Rzu zn)AMMs7X5N*eWc{JPp1+QmZUCrG5N$?34faaUfrI`IhRP%DM9h;x`5)Xe$mCZ@MjL zX33Ewcjf$L2=$I3h6%%f*}w>%U5=WH_fD!4<6;K52JTzTL9kxrmuMC>R?Gyd-kT=8 zcG@J6EKv4^g5OKLfg}1(OA}Sj)BebT_J@dQ72(tHdh0x#yK-Y}r+ zBKDfpnGnvc;Yab77r%I$n1X}=9F!hyHTlwhd_mHiT4qwRVt1fB=HyZ2c!>Gj3ZsEl=#ie7zcc6-&j|c_D3qqV? zLghYc{;&*xyt2^m1m8U3)HRrh6hsuWT}Vh>Z^GBSl-*r|f*}#;&gD@S#d&^Yugshz zp?3CJBXD_swYwyk1+sYrngwpJ%`cddnm31AE5oH00KOplyIZ`EiJja z&WI7P*93kR_%}>FWv1*R&54JcJ&mOf$ z|0Esh(%>ip&MA{R56HRkXuvG@r4hMCY1Yfmf691pa68}130*7vkqMKP7a9YeEObYC zEE>1Uwdr20U8q*(W&JI*o(AI`!gR4Wq&>+{{(ba|=52_Fr1BIZPE^kghU~PM+bhk7 zz=kCYQ6#TT?GnnKmJ{|IM)t*P0WFHPAGiAREGk7hXLv}D@2&D909i5>JjY?|TLVe+ zOxyKqr;w*8-m(vH5OgZ2bDHn)ksPY$z?T9@d=>apa*E3fI(Trh0xi$2O(AiL1Eh5^c@b#Q)1{BG1W2U%nHpf@ z(g;5tA8XX;bik>lM<37ZwiwNw{QHymhX(_o^h)qVCh{iASWVUiVuL5T7GccSe!y3~ zO}x}5ym+_tnB3Tw?BjPLBmNF<^1QQl{uPsjznrHK<|F{6HwiF0*!Ie^H#{-T)L}C# z>L`wWeci`W8^1;M%%qDsKbr0IDG0Oa8Onngdfe_79_2l1b0Kc$nQ=h%2UBatF#16T z=M^Ax@&HooakC&D!`u`U;v|rZ9`ZOcRm>$`R$Gn$1H0@UUCdTwX1&xmYYRhA9Yn3B?8RInq{*zV6Wxxm(()x#Jn`yg| zl*gcuXx9PGmI&oeSvT&x;SR$H^cfxBde>#`dzoa|1o2Ol z<^pVlCS@YzCqxkUbl*d@j>X@EX>~velhH4XAh%21OHEIq(16C4fH^IM_&WXyje@E; zk|&xk&_sfdplWvmyJFp>WmH2?YMEg6gzFxF`p3y!e~CV%s(F&J0k1a3dJcSPH=*C*nrK6OY0sQyN1^yq2&(3UruSvwAS6awIdY?D6 zHh4qmQ-d#}KX;9?tbGB_KJBpIGC#e!rCwmzP-*K_Q^pEe5lPa!U5-xy%(sgI(b_|TU8l&b zK@khX2id%nuf7cB{furFW3^P%%za$?-wgVHi*Al!J_4yw$5cj(b}JC40)xd%SDI5G zcqw1aIRHv;VD!l1QW8Ek4r;sS(0*_t(8i&vRfEyG)jB*jUh6E)YGS}nyK1yj{cLic z<2)-m{AK63=oA?tl~^l}>8t#h8kjliE5`h&dGP1k$YwLNO797Df4h~5K$0wX4~vsM zD=qx7y)w$MnERh*;eQ_FpJ@lc1KEbhG_0=svMr1!7F_c6{!-07D-;hH07idrzkL_Ze+$ z@q>?l2SJjTaiEpKKo9B63C-Oh7)5b$8x*@0Mnq1-AFL&rOb&D>Ic#&JYJwqU_X_6t zcz#Bei~Y6+TBZ?b!A2NSHZVoB$&X4|jcCqt;dYH9F!{kh9yQ)2P}*^xzP0^4+|?Vn~ku0qgBn)A2v`n?X+F+zJu-% z|L_wz#rVbl{rT(H0GE;-X~|hASHG4agW7!XWysq!;AO@9!GdNF(chZSfRc*tarrtV z0-%zILcO8`m42fKFH$;qOauBjBv@;05h|3RofB__{K_M9WCaF6>$u-ydt%$8lyRtn zCxyT%Bc~PeLj2qVsGFI$L)%!SR;azB=Jd|yh*kr_4oS=fK#gCl)t!+mKB^g#Z{Z~y zf<>B%_89btokq{#pp*OKrh``3f?MRyZ*j*FuawOKsD`J(lS5e3bdCX*4l%68PZI|} zJh@X~wIpjz+=cIV?-AH+J0>Vh+%f>4iD@2&ny2MoW#2-(iJwc0@Gkn$g5g&qJ@dUR<}A)5|s<)T^s2}+Gzpmrn}G+i?ce84Y1Q`b-3S$D;&h{yQ%!7 z)@z8YbwGUdbU){+dPx0=foDwDKFrD49g4G(p9+Lb<4*NPD|*O=z(Jz@b>WcGwUJ)r z_>0Madr~t2wP>+Z#aNHnU&?A3xxiLVJW=4ST_<*7nRXiK1#0e2TRyI= z%LlQEIsf_cXi>!ReV|6i^6>{5nE}7{`<`Qyqi%5nzTC8Ho!j|o8k-`jKM}x-opf!e z2wF+VdvkHXeYb7A+5&_jnh-=2Q+!cW^AP390$lUczDn)?mJm{UYn22{%0B@QN`Hrn z1L&-~ncqMkdt%U3S2k(;tZ^@gT^*c93!m!|KMEw?M!@R9NJ>}o&<+T}5{Xfw)i)qR z7T|OB3_~|TIs)DHA{fK@%hc?>z&nnmikc2;Oy!22bqhYiUO+}lI6->aP2WnL`G*s4 zW82)0qyK8gc;WLIL`{rX06^BfjF%SzD6=JIAhA&id19=$*|Q)~94H0o#s@G}l(wQl zvl}xN8Ia&-B0mG=h*mKu&k=tw|0BUu;bl}T&ud# z$4Ud~eIO&418|9J>Vc__Imn~o;;2JJ1LUaZ--c$V9=!{@Q|1&2IyjafBo78NZQ1YXuhCBvX8bd;WU$Kvyj)32@gaq$^%d0;Z}VWr$rHC*ahXKUW^qD- z=_sgOPuOESaEwu{f!yI8LIQ&o*T#wh?~dZ|NV9axHC$N-imVXrnuvaK#^I5UV9)Z zC7$0SB1k*NXywv=M%-sGjtb?f6iA03shBb?9I&$ zP#ZAr=I>+4;Bu0`+KD5^iod*mV-s2=piPCj%oe+535zd__&nZRe%v4t)4OlBC z%4n5%3uST&iJhOT^<<5$$@>#1eMM!FDz6kAYyFqkkqgg>Q8_j zQPX@+k$39J`2vH;`*807$drjrP`Wi5!VJ0P&UPnHHqg+#|dG$VO29UtutxXAqPGJyolc zBeG)l;1<=K!&coRQBb}KW@_dsB(V74!lM}-?gOuz^+*!-fW%{DBO}AuMgFa*q25$86f}b`37$YslAj+9l~=Do0gx(}kEDt;9NK48 zNI{p~vZ>^iQaMoqMrjXkfC@~hoX>^*(zU>JgV}ty?*ra-1JXhgh1Lj=n2AiAu~*PP z?yI}?plKbO-4{0Do^08G6n~6rS3UL^qx|W zWL7oWJCyIx6w*iuHvQ85mBySr{iG4~8DQHSx+*fy6()pkVT4eXWe(nz*#$|h6DF6C zG4?DMS46}8>P?=;ozW?R{lg*P`84~1c}KB?$RRwzC+<3YuALH$NTAP`n2}V5)IASd z7?p8}@fepV{w0^^5{O%6m#Z_T@tA5at`o#T3DvfbFQPWXdzx~eDnL&QN@LEyLoXr{eH-CDRbSHF! z@w7Xm=K(dD7iSZisK*|K&yJ1<+<$R-u-*SF;ak5Gnze}%M$0!zOcOIhXzVnv&YN|y z&tEu(TC+9I4N|&sj;Xl)f^M|lw&VFJwCCz~Tyzg9lW4Vl9?Vk0c;h3ajlq2+L$%Nc zzPcmHD8-$jIZA-qIqG*6&tQ5q&9;mI z9Rf37*v~NSz9Z{#@xTh>m8bX4|3Gk&c%L#HFdhAPp3*PUAtl2RHomcY%K2IJpfKV| zV8fcTv4p^R;K5dw!MH}o(T>pg2AAq}s^@y>l^`fLj(|i(3fSL+L^t6awI-@v-2qyD zBd0_3(@FHHv;)rpLJ{))iyRh9+mUo5vh);`kLqZ=Y+V>#uw2hBO;U0afp6ps5Ds*7 z{?_n+0yKnag%3xyvI6hVtY4tm%-%n?85rGAEJGQzui|*6(WA9aWO@prjvF{vQ7M9Dk)c}sc-N>C8zMR8m@q30j%z-xNIX`WNbi9Du1l)H-V6z9BP48BfY-Y; zC6WNDFQt;lnkkOV5BMl{XUyxc`$M^uooJ>fW4vDw5wY>$C{ z_>+CO5uDiJo3$}o)!lM~lG7y#_0+8C|^AYT*0sXooDBO*A=k<+i6-T5` zN8Nj(Mb_BgD)jD~eN-G?sbdi(K88#<)~r8rzbyG>4Y2!vkaKr;N*7S%Ox`P+*1TI* zKBVMKGn+JN55YU-D_S*l(?UxawGvx1mzI#F;zH+**6iFHtzX}0l)9jh4w+>rUQlAZ zr5Bwj?hhi!K?MeLr9fG0SqSmbkEZcO64(}IyOFaHLyTF5xcR+Tki*T-g;C1e z8E1EkyaVRq)9C_2x4Xp~ayDQFzGR#I#TlD|OI)-O0k2wlRr9UmKS2(O5jmFPC+I%S z`I51g+V8~hhh$q=S8$CL8`531uM9EtY$&rdM`$-ZSB$c6*&*L32f`-Kt&62_g#%VF zAFyVUNph*a03auO*9ou!HNNBgWhMo1KE&Y~xao4#RuFU4+O1~4NMrZGT<`Q)xQl=T zP)&ANs!7}CvmNeBAxF3cv!?!cmV9YZvY!-YPNdI%D2Z`o`dB#Vj;O0m`0O`LBqd8S9&$~CUXpkE z6bQ-ViQ;%?-$crW<+5+w!YgX8$Z^X2UQ~n5Wh>*rnhnng3;fkXM*7REpEh@%`uNdW z(T=#BTl>1j{^Qt~znrk38y$RMtThEsQ^0w91MfO2s{`_u5o&RO{X+PHx=gahuj^x9 z920LDw-z^}aSd|3ddp~hr!_kE;eqAaf|As z5hHY9@L?HNw=GER-?P&U(V)YH*fO@hgc5ir;ftAQQsf70Zhd^gH^j_BRMs{Tz%r6Y_9k_>&jo@>*e zFMx-M)$`hWpI1DCn(Pi4{B7>H#dTkpvWXC zC{N~|z3!g7-bq3mIX}_>l&G;E?t#{9w?|Ui@y{^7UEM+J;@ z%DwFf2!=azKekIq7qv$4oE;~g%?%uBFu%-3dg62(p+C-d?+7E+ zq_R5Zj`4Dz2BClI!(XBPTq+Gfh@M&iM81U9R%#A&S5*J=tZA|JmC!86B>aoMN zgOj=gwT8-aespz)u%~1h6F`;u_7c8zT6*eTVj*#VSKt|wLlj0|;LU7b0s@04P6nOR z91HeY+5{?k{cKdDt%1byAB~P38|tN+%qgY`Xg_Ys1W8SIfjBJ@maCW(*KqIYce1ZA zRPZO$P0kM9u&yaZlg#En?>ao05R6EA!K*z&7UH=pnVxyX+sGvW1IaGWhX-fBxkG8k zJs5cS9(M*#KV_*$!97W zu}iKyt1{O690mcnH5}-AR*N!RS%#yx@zWjD2wRegQKG_Fi5$iGszH2W&XFT6|CwJJ ze!N5ze7iUlcOF0!tR0f4I%Fx(TLBO!Yk)WjPL??uZ@1$ABB(Kr$>E{Da<2;3*vDAl?&_Kd5K8*yBaKB-w8?d6Cg3KIj{ETp> zVG*OHecgBfjdd9a#r^2xqw+v}|!9Dn@ytA>?kqtTvH(K3+gy9*ll zd32gQh>O~cow*coJG`DNtFn$=UwU{~Sw$=~pH+-A-}sI(o$mspjMf|DE)ry1DxH}@ zRI0Cp*c%B+J6vVXH_@Sq8x7OvzcgLjfww3r?MGTt+N=KEy}kM=g3GCA4l8^YB-)DP^0K8*Jnv9=cn#@SHvl72fwHpka+Yc9jmcGimno z9U*|UKMYaha^2;ErY50+Lcr!0JYZ7z7jRJL4(K~VR#R2wvgA! zB;|;8YWBJZEabS8<$qd^fXydp(H;K}rhN4eaSMzR8!KD;=*LWnNUQg!JPn8QD6iZk z*d7B4>{D#BkGJBRU;1Lo(o^E#7crb{S?{0=NO5fkz zeP$EhhjQ0Pq->9RN)Q^4sX3x?6P-guq6a%aUCEaIK-C7seP- zcWXgi9{#oBoQePhd;n^$aAJ=lFXrmMCi3ZpTs!y6r9P4`nv z0N|~OAT`C0Mrh-++?fP-P%tJ&O%=vv=LgTVvJQS(eFH*3W14~m&I()jr%m=l)|!@l zKTIrA>6W`m3R*r;3O!vZ|I3SvznF|ICDb7TsYdjF1WEvKw?)->YM%28a8fUz{lyf3 zv&3^%U2`B^Ex^04lhsAov6Xf%n$iV=68neh ze&Q41rojumDtB*Z7jaWZz~*@6pGlNqpX1h7(Fr5m0FmBig-3)JsQo6@v|;rro6I%{ zdHN7Tn_-@tgh67>=`SCie@moq$B?bBLE5r*g?kKK>5qq;ffmH(9&9@jiYm>)39(%H z`YgjAX&P6&SrL`VA4^!#Ix+l2BY2U3RZExY+4i=vg_FdP4DBYcjqm? z^gvk(?hG_!DNNd47v4e%?4H{pYURXgtTql!GjA}1S%MvDndg4cd*Rc>R~@d;DU}6d zE4LTb)PAV}lt~J}nVJUdO#J%pLd8zj@!(PxmgmKnyV_4{K-SF8E4O#r|B5RiE`x3H znrG1%{{V3@KLK~iV)88qjwz!d2+zmmXnvDDuj2@6-(HS_UV@;fF&bZYr#%rfAmD@T zKKz8~SS(`=ih|HcR>VUcw4Q1NRs2ag27q+CD#m?L^_p$#a6K>w)VUYWOX8@><5^`41|T9o`Z3r#mdKSNAs z`SRp7vy>m$T&O2so(kyNV{zq|^I!euJtlCX95SUQY5jF?{>5?wu=9o?t^HqjsV~X( zMnB7@R^Qqp?SF+N5L5VgS!)VhRGs~w@{Rue+phkj*FoUj<|L~&YP{NPE zlN|`Q{crN`-yd%1XP}X!Y?6-Kh34P){GS==zy5hk2L9HM;&i3|O}+g0?*#wt|NF~T z!}S4cUfmDSDVq#-C?|~gcbDZ*^3nJiplnu}us9e0>vjDtpZM*BdQmuS---3-J#r2G ze0er-$qjH{^Iec$Lb&4qO2$BpQj@=?ng^gL9)b!b(_lOg)05b{Qng9DO^TqU; zZPUQI|FVMn>gRiReE?`$;&QT_7t*!^ImjU&N*}=K9zEv=bd5+dV81GlfyaCDZ2IzC zZ@0v$p)d(>Bqket7f|HE#Ktg1ER<1%{!c{Zg+f z5Jtn@chA1}t2;=9Sgqg80GC6V3pmr0aX_mL-8zoPZ}G(oaG8ulf<`(;^N%qQE!7vJ zB>V&LgI+Ikf#C}80F;8flHCO8@{8PLi-KPOKW7^A0`NNzB>G8){M2w8;A>j+tb4ut zzdtgetf&|BA{R!+>U@?dFf1zQn}on&2}uTT*B1&OmeTt2BoNJ=0tHUif|rp3U2Z6b zKsN=bHeQP3PU++b&%LZZC@`#Z5rP>qUy}jreIL|=MfrYuH~ld7v;=Z?^kH%J4nnl0 zIh5THI1h1csh5XdmmeoDCzpgZMH?5Q<&z=rHd6W^9WWn#KnpR}3ntM%pywH(Y>2BO zD{}{iFpiQ zrmodJhhddI;P@I(1#f6yp78$rUmzWUm2eQW9StNyxk5DsqEZx~R)FptvMx@VsklSI z1$KNpMFX9$ki48v-Oa(#soQqm2Ik(M0O`&!Zv-y)hrliBgz@OHcI*;h)hALxNM2h@ z?PK=K|E(K~3i2*%0pWX-MPLvMYj^?Oj==JFv1Y`cMQV}Ep=aH=>z(MuOAe0 zBW+Wt0DSJ8bv!YBp)si>2!_HwV5I)03)q;pIJC=t_$9dNtaw1D6@nFdd^VFt*i(-q zJ9Ql>Kg5lME`d?>Sy9?zn@50Mk?y@*$r8?3R!j;TzXAfLC@hQ2O{`IWEKW= zlk}K+@65W9bk&1IgSPc{2Z;(3(+y0eAk6pYTpd*<{ow0lw_7)TUQ)Bo2h80e0$~s( ztYtWc>fD;3WHS`u?DEG3cJ*O};!ZX(3O~f_+I9I0a5UKfDOLGSNTbnoFd#r{6{=4~ zO!VR30m+#H=}n2{_h^?me!j?Sk~#yAx9|s;%~Ptzp4S=Nvx5?^gv48m+jh;k4Hthx zsimQO#BYXoAU*Z(*&fyk1#Q_*+?;#*moVAzz zh`D@hHZij2c>xt)UYVgH*8Q1Mlp<$(C`8BMt0Ub9v(B9!_UT$N$2tyO?nDXP@P~Vl z*6{Un4X>)sT@Wi`(Umgmcdl$sUOErY?t?_QP5n7%g=dj1r4H{+5I50RDYcwJqu&SV2s11SU1KpFKa2u=CD|~QF z66J%Tfvyi=36mc_!{p~6W7m;66jvWY=U2Zl!B6~dPdnLEO_X%U<6<|1y#vHr3^Crw zNkOuNe(H5_+5Ia9kreOgE)OweRX2Pq*E?8<)e%$OPf6^ma!r% zuBgi&1D@4dcB3W4xHfxbAF3By6dtu;Bi(lFDHjZ5=*NJ%qph3)jmCEwIKTvtmV+jR zkaQ*7WRTQ1&w=zZmB%W6G(UXAp(^9CThQR8@IhHb-0S6<78;f1?28Ca$@bSO`#uJp zSK-TE*3_*IGHQG-sK3@Z)XDc9A|4kD>h^r~o!#wH@+=>o_(}JA`6|~gqRJ@{`-4uK zL<=Yy(dNmIFLiah2-Gj!9}g0Y%N)&wU_uR6a**QL2bw~kzI$K6T@!C4re!pEe=5qc z&wk0?mdGdv2Q6YVXtg{wJ*p5l5B zEt|&#&_>Y9V8LHLy60yP>T1|}n2vSb0G*!

+%9Eg}CnsBKmzALcjTh5LNHgo`J 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 pANs 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 E23QN~}=w95PLlfv(oL2@H4)r6Ip;k#b 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 C?S^}iMX{f!;TM7{fq3WnC03ZB#c8oPk#H=41 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%0D10Ab9COk03*Q9SQ#+_2PPj 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