# Документация модуля администрирования (Admin Module)

Модуль администрирования предназначен для управления глобальными настройками системы, пользователями и интеграциями мессенджера ForkMessager.

## Обзор архитектуры

Модуль построен на принципах чистой архитектуры и использует паттерн CQRS (через MediatR). 

### Связь с модулем Settings
**Важное изменение:** Модуль Admin больше не является владельцем (Owner) системных настроек. Все настройки вынесены в отдельный инфраструктурный модуль **Settings**.
*   **Чтение настроек:** Модуль Admin использует интерфейс `ISystemSettings` для получения актуальной конфигурации.
*   **Изменение настроек:** Команды обновления настроек в Admin-панели делегируют выполнение соответствующим сервисам модуля Settings. Это позволяет другим модулям (Auth, Stories, Profiles) зависеть только от модуля Settings, не создавая циклической зависимости от Admin-модуля.

---

## Глобальные настройки системы

Настройки управляются централизованно через модуль Settings и разделены на логические блоки:

### 1. Системные настройки (System)
*   **DomainUrl**: Базовый URL домена сервера.
*   **EnableRegistration**: Переключатель возможности регистрации новых пользователей.
*   **AdminRoute**: Маршрут к панели администратора (по умолчанию `admin`).

### 2. Настройки историй (Stories)
*   **Enabled**: Общий переключатель функционала историй.
*   **MaxStoriesPerPeriod**: Максимальное количество историй за период жизни (1-10).
*   **StoryLifetimeHours**: Время жизни истории (4-48 часов).
*   **TextStoriesEnabled**: Разрешить текстовые истории.
*   **MaxMediaSizeBytes**: Лимит размера файлов для медиа-историй.

### 3. Настройки чатов (Chats)
*   **SupportGroups**: Включить поддержку групповых чатов.
*   **MaxGroupParticipants**: Лимит участников в одной группе.
*   **EnableFolders**: Включить функционал папок для группировки чатов.

### 4. Настройки сообщений (Messages)
*   **AllowPolls**: Разрешить создание опросов (аналог Telegram).
*   **AllowMedia**: Разрешить отправку файлов/фото/видео.
*   **AllowVoiceMessages**: Разрешить отправку голосовых сообщений.
*   **AllowForwarding**: Разрешить пересылку сообщений в другие чаты.
*   **ForbidCopying**: Запрет копирования текста и сохранения медиафайлов.
*   **MaxMediaSizeBytes**: Глобальный лимит на размер вложения.

### 5. Настройки WebRTC (Голос/Видео)
*   **Enabled**: Общий переключатель звонков.
*   **Voice/Video Calls**: Разрешить аудио и видео звонки отдельно.
*   **ScreenSharing**: Разрешить демонстрацию экрана.
*   **TURN Configuration**: Данные для TURN-сервера (IP, логин, пароль).

### 6. Интеграция Klipy
*   **Enabled**: Включить сервис GIF и стикеров Klipy.
*   **AppName / Token**: Параметры аутентификации в API Klipy.

### 7. Федерация (Confederation)
*   **Enabled**: Позволяет серверу взаимодействовать с другими серверами.
*   **ServerDescription**: Описание сервера (20-120 символов).
*   **AllowedDomains**: Список доверенных доменов.

---

## Административные команды

### Модерация пользователей
*   **Полное удаление пользователя**: Операция, инициирующая каскадное удаление данных во всех модулях (Auth, Conversations, Profiles, Storage).
*   **Сброс пароля**: Позволяет администратору принудительно изменить пароль любого пользователя.
*   **Блокировка (Ban)**: Ограничение доступа пользователя к системе.

---

## API Эндпоинты
Все запросы требуют прав администратора (`AdminPolicy`).

*   `GET /api/admin/settings` — Получение текущих настроек (через модуль Settings).
*   `PUT /api/admin/settings` — Обновление конфигурации (делегируется модулю Settings).
*   `DELETE /api/admin/users/{userId}` — Полное удаление пользователя и его контента.
*   `POST /api/admin/users/{userId}/reset-password` — Сброс пароля.
