add docs
All checks were successful
SonarQube / Build and analyze (push) Successful in 3m22s

This commit is contained in:
Leonid Pershin
2025-10-21 05:08:40 +03:00
parent bc1b3c4015
commit e5e69470f8
12 changed files with 3550 additions and 6 deletions

144
docs/overview.md Normal file
View File

@@ -0,0 +1,144 @@
# 📋 Обзор проекта 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) для деталей.