# 🏗️ Архитектура проекта ## 📐 Общая архитектура ChatBot построен на принципах **Clean Architecture** с четким разделением ответственности. ## 🔄 Диаграмма слоев ``` ┌─────────────────────────────────────────────┐ │ Presentation Layer │ │ (Telegram Bot, Commands, Handlers) │ ├─────────────────────────────────────────────┤ │ Service Layer │ │ (ChatService, AIService, Compression) │ ├─────────────────────────────────────────────┤ │ Data Access Layer │ │ (Repositories, DbContext, Entities) │ ├─────────────────────────────────────────────┤ │ Infrastructure Layer │ │ (PostgreSQL, Ollama, Telegram) │ └─────────────────────────────────────────────┘ ``` ## 🎯 Принципы проектирования ### SOLID - **S**ingle Responsibility - Каждый класс имеет одну ответственность - **O**pen/Closed - Открыт для расширения, закрыт для модификации - **L**iskov Substitution - Интерфейсы взаимозаменяемы - **I**nterface Segregation - Мелкие специализированные интерфейсы - **D**ependency Inversion - Зависимость от абстракций ### Design Patterns - **Repository Pattern** - `IChatSessionRepository` - **Dependency Injection** - Microsoft.Extensions.DependencyInjection - **Strategy Pattern** - `ISessionStorage` (In-Memory/Database) - **Command Pattern** - Telegram команды - **Adapter Pattern** - `OllamaClientAdapter` ## 📦 Компоненты системы ### 1. Presentation Layer **Telegram Bot Integration:** - `TelegramBotService` - Основной сервис бота - `TelegramMessageHandler` - Обработка сообщений - `TelegramCommandProcessor` - Обработка команд - `TelegramErrorHandler` - Обработка ошибок - Commands: `StartCommand`, `HelpCommand`, `ClearCommand`, etc. ### 2. Service Layer **Core Services:** - `ChatService` - Управление диалогами - `AIService` - Генерация ответов AI - `HistoryCompressionService` - Сжатие истории - `SystemPromptService` - Загрузка системного промпта - `ModelService` - Управление AI моделями **Storage Services:** - `DatabaseSessionStorage` - Хранение в БД - `InMemorySessionStorage` - Хранение в памяти ### 3. Data Access Layer **Repositories:** - `ChatSessionRepository` - Работа с сессиями - `ChatBotDbContext` - EF Core контекст **Entities:** - `ChatSessionEntity` - Сессия чата - `ChatMessageEntity` - Сообщение чата ### 4. Infrastructure **External Services:** - PostgreSQL - База данных - Ollama - AI модели - Telegram Bot API - Telegram интеграция ## 🔌 Dependency Injection ```csharp // Telegram Services services.AddSingleton services.AddSingleton services.AddSingleton // Core Services services.AddSingleton services.AddScoped services.AddScoped // Data Access services.AddDbContext services.AddScoped ``` ## 🔄 Data Flow ### Обработка сообщения пользователя ``` User Message ↓ TelegramBotService (получение update) ↓ TelegramMessageHandler (валидация) ↓ TelegramCommandProcessor (проверка команды) ↓ (если не команда) ChatService (обработка сообщения) ↓ SessionStorage (получение/создание сессии) ↓ AIService (генерация ответа) ↓ OllamaClient (запрос к AI) ↓ AIService (получение ответа) ↓ ChatService (сохранение в историю) ↓ SessionStorage (сохранение сессии) ↓ TelegramMessageSender (отправка ответа) ↓ User receives response ``` ## 🗂️ Структура проекта ``` ChatBot/ ├── Common/ # Общие константы │ └── Constants/ ├── Data/ # Слой доступа к данным │ ├── Interfaces/ │ ├── Repositories/ │ └── ChatBotDbContext.cs ├── Models/ # Модели и конфигурация │ ├── Configuration/ │ ├── Dto/ │ ├── Entities/ │ └── ChatSession.cs ├── Services/ # Бизнес-логика │ ├── HealthChecks/ │ ├── Interfaces/ │ ├── Telegram/ │ └── *.cs ├── Migrations/ # EF Core миграции ├── Prompts/ # AI промпты └── Program.cs # Точка входа ``` ## 📊 Диаграмма классов (упрощенная) ``` ┌─────────────────────┐ │ ChatService │ ├─────────────────────┤ │ + ProcessMessage() │ │ + ClearHistory() │ └──────────┬──────────┘ │ ├──> IAIService ├──> ISessionStorage └──> IHistoryCompressionService ┌─────────────────────┐ │ AIService │ ├─────────────────────┤ │ + GenerateChat() │ └──────────┬──────────┘ │ └──> IOllamaClient ``` ## 🔐 Security Architecture - Секреты в переменных окружения - Валидация входных данных - SQL инъекции предотвращены (EF Core) - Безопасное логирование (без секретов) ## 📈 Scalability **Готовность к масштабированию:** - Stateless сервисы - Database session storage - Async/await везде - Connection pooling - Health checks ## 🎛️ Configuration Management ``` Environment Variables → .env ↓ appsettings.json ↓ IOptions ↓ Validation (FluentValidation) ↓ Services ```