# 📋 Обзор проекта ChatBot ## 🎯 Что такое ChatBot? **ChatBot** — это интеллектуальный Telegram-бот, использующий локальные AI модели через Ollama для создания естественных диалогов. Бот имитирует общение реального человека с индивидуальным характером и стилем общения. ## ✨ Основные возможности ### 🤖 AI-функциональность - **Интеграция с Ollama** - Использование локальных LLM моделей - **Контекстное общение** - Бот помнит историю диалога - **Сжатие истории** - Автоматическая оптимизация длинных диалогов - **Настраиваемый промпт** - Гибкая настройка личности бота - **Множественные модели** - Поддержка различных AI моделей ### 💬 Telegram функции - **Команды бота** - `/start`, `/help`, `/clear`, `/settings`, `/status` - **Групповые чаты** - Работа в приватных чатах и группах - **Обработка ошибок** - Устойчивость к сбоям - **Retry механизм** - Автоматические повторные попытки - **Health checks** - Мониторинг состояния сервисов ### 💾 Управление данными - **PostgreSQL** - Хранение сессий и истории - **Entity Framework Core** - ORM для работы с БД - **Миграции** - Автоматическое обновление схемы БД - **In-Memory опция** - Альтернативное хранилище для тестов ### 🛠️ Технические особенности - **.NET 9.0** - Современная платформа - **Dependency Injection** - Управление зависимостями - **Serilog** - Структурированное логирование - **FluentValidation** - Валидация конфигурации - **Health Checks** - Проверка работоспособности ## 🏗️ Архитектура Проект построен на принципах: - **Clean Architecture** - Разделение на слои - **SOLID принципы** - Качественный дизайн кода - **Dependency Inversion** - Зависимость от абстракций - **Repository Pattern** - Абстракция доступа к данным - **Service Layer** - Бизнес-логика в сервисах ### Основные слои: ``` ┌─────────────────────────────────────┐ │ Telegram Bot Layer │ │ (TelegramBotService, Commands) │ ├─────────────────────────────────────┤ │ Service Layer │ │ (ChatService, AIService, etc.) │ ├─────────────────────────────────────┤ │ Data Access Layer │ │ (Repositories, DbContext) │ ├─────────────────────────────────────┤ │ Infrastructure │ │ (PostgreSQL, Ollama) │ └─────────────────────────────────────┘ ``` ## 🔧 Технологический стек ### Backend - **Runtime**: .NET 9.0 - **Language**: C# 13 - **Архитектура**: Worker Service ### Библиотеки - **Telegram.Bot** 22.7.2 - Telegram Bot API - **OllamaSharp** 5.4.7 - Ollama клиент - **Entity Framework Core** 9.0.10 - ORM - **Npgsql** 9.0.4 - PostgreSQL провайдер - **Serilog** 4.3.0 - Логирование - **FluentValidation** 12.0.0 - Валидация ### База данных - **PostgreSQL** - Основное хранилище - **In-Memory** - Опция для разработки ### Тестирование - **xUnit** 2.9.3 - Тестовый фреймворк - **Moq** 4.20.72 - Моки - **FluentAssertions** 8.7.1 - Assertions - **Coverlet** 6.0.4 - Code coverage ### DevOps - **Docker** - Контейнеризация - **Gitea Actions** - CI/CD - **SonarQube** - Анализ кода ## 📊 Статистика проекта - **Языки**: C# - **Файлов кода**: ~100+ - **Тестов**: 50+ test classes - **Покрытие кода**: ~80%+ - **Target Framework**: .NET 9.0 ## 🎭 Особенности реализации ### Умная обработка сообщений Бот использует специальные маркеры в ответах AI: - `{empty}` - Игнорировать сообщение (не для него) - Контекстная обработка групповых чатов - Распознавание обращений по имени ### Оптимизация памяти - Автоматическое сжатие длинной истории - Сохранение системного промпта - Настраиваемые лимиты сообщений ### Отказоустойчивость - Retry механизм с экспоненциальным backoff - Обработка таймаутов - Health checks для мониторинга ## 🔐 Безопасность - Переменные окружения для секретов - User Secrets для разработки - Валидация конфигурации при старте - Безопасное хранение токенов ## 🌟 Преимущества 1. **Модульность** - Легко расширяемая архитектура 2. **Тестируемость** - Высокое покрытие тестами 3. **Производительность** - Асинхронная обработка 4. **Надежность** - Retry механизмы и обработка ошибок 5. **Масштабируемость** - Готовность к росту нагрузки ## 📈 Планы развития - [ ] Поддержка мультимодальных моделей - [ ] Веб-интерфейс для управления - [ ] Метрики и аналитика - [ ] Kubernetes deployment - [ ] Дополнительные команды - [ ] Плагинная система ## 🤝 Вклад в проект Проект открыт для contributions! См. [Contributing Guide](./contributing.md) для деталей.