Files
ChatBot/docs/overview.md
Leonid Pershin e5e69470f8
All checks were successful
SonarQube / Build and analyze (push) Successful in 3m22s
add docs
2025-10-21 05:08:40 +03:00

145 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 📋 Обзор проекта 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) для деталей.