Files
cm-over/01-system-overview.md
2026-02-22 19:30:40 +03:00

59 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# System Overview
## Назначение проекта
`DuExpBot` — это платформа VK-бота и miniapp-панели для управления чатами и расширениями (аддонами).
Основные направления:
1. чат-менеджмент (модерация, роли, события, таймеры, статистика, правила);
2. модульные команды и утилиты;
3. каталог аддонов с модерацией и установкой в чаты;
4. интеграции с внешними сервисами (whois/ip/minecraft-query/callback).
## Технологический стек
1. Backend: `Go`.
2. База данных: `PostgreSQL`.
3. ORM/миграции: `GORM` + `AutoMigrate`.
4. VK API: `vksdk`.
5. Miniapp frontend: `React + TypeScript + Vite`.
6. Router HTTP: `gorilla/mux`.
## Высокоуровневая архитектура
1. `internal/bootstrap/*`
Сборка и запуск приложения, wiring зависимостей.
2. `internal/modules/*`
Бизнес-модули (chatmanager, addons, manager API, callbacks и т.д.).
3. `internal/modules/cmd/*`
Командные модули бота.
4. `internal/domain/*`
Модели данных (ORM-сущности).
5. `internal/db/*`
Инициализация БД и миграции совместимости.
6. `miniapp/*`
UI-панель для управления.
## Ключевые подсистемы
1. `chatmanager`
Управление поведением бота в чатах, RBAC, санкции, аудит, автоматизация.
2. `addons`
Чатовые аддоны, рантайм исполнения, каталогные установки.
3. `manager`
API для miniapp (чаты, группы, настройки, каталог, модерация).
4. `callbacks`
Webhook/callback-инфраструктура.
5. `query`
Запросы к игровым серверам (Minecraft), обновление статуса.
6. `whois` + `whois-service`
WHOIS/RDAP lookup контур.
## Модель расширяемости
1. Ботовые команды регистрируются модульно.
2. Аддоны могут исполняться в sandbox/изолированном runtime.
3. Каталог аддонов имеет этапы: draft -> pending -> approved/rejected/archived.
4. Уровни аккаунта (`account_type`) применяются для глобальных прав (например, модерация каталога).