145 lines
6.8 KiB
Markdown
145 lines
6.8 KiB
Markdown
# 📋 Обзор проекта 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) для деталей.
|