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

6.8 KiB
Raw Permalink Blame History

📋 Обзор проекта 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 для деталей.