This commit is contained in:
144
docs/overview.md
Normal file
144
docs/overview.md
Normal 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) для деталей.
|
||||
Reference in New Issue
Block a user