diff --git a/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0.md b/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0.md deleted file mode 100644 index 23a7231..0000000 --- a/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0.md +++ /dev/null @@ -1,57 +0,0 @@ -# Архитектура - -GM-Relay состоит из нескольких .NET-проектов и общей PostgreSQL БД. - -## Проекты - -- `src/GmRelay.AppHost` — Aspire AppHost. Поднимает PostgreSQL с PgAdmin и запускает bot/web проекты. -- `src/GmRelay.Bot` — Worker Service с Telegram long polling, миграциями, планировщиком и вертикальными срезами бота. -- `src/GmRelay.Web` — Blazor Server UI для ГМа, включая Telegram Login Widget и Telegram Mini App. -- `src/GmRelay.Shared` — чисто нейтральные доменные типы, DTO и platform-agnostic рендеринг. **НЕ зависит от Telegram.Bot**. -- `src/GmRelay.ServiceDefaults` — Aspire defaults: OpenTelemetry, service discovery, resilience, health checks. - -## Вертикальная архитектура - -Все use-cases живут в `src/GmRelay.Bot/Features/*/`. Каждый фича-срез содержит свои handler, DTO и тесты. Зависимости идут только к `Shared`. См. `docs/adr/0001-use-vertical-slice-native-aot-and-aspire.md`. - -## Telegram updates - -`TelegramBotService` получает updates через long polling и маршрутизирует их в `UpdateRouter`. - -Команды и callback: -- `/start`, `/help`, `/newsession`, `/listsessions`, `/exportcalendar` -- `join_session:`, `leave_session:`, `cancel_session:` -- `reschedule_session:`, `reschedule_vote:`, `rsvp::` - -## Рендеринг батчей (v1.10.0+) - -Рендеринг разделён на platform-neutral View Builder и platform-specific Renderers: - -- `SessionBatchViewBuilder` (`GmRelay.Shared.Rendering`) — собирает нейтральную view model (`SessionBatchViewModel`) из доменных DTO. Не зависит от Telegram. -- `TelegramSessionBatchRenderer` (`GmRelay.Bot.Infrastructure.Telegram` / `GmRelay.Web.Services`) — рендерит HTML + `InlineKeyboardMarkup` для Telegram. -- `DiscordSessionBatchRenderer` (`GmRelay.Shared.Rendering`) — заглушка для Discord renderer (issue #26). -- `BatchMessageEditor` (`GmRelay.Bot` / `GmRelay.Web`) — редактирует batch-сообщения в Telegram (текст или caption). - -Цепочка использования: -```csharp -var view = SessionBatchViewBuilder.Build(title, sessions, participants); -var (text, markup) = TelegramSessionBatchRenderer.Render(view); -``` - -## Web UI - -Blazor Server-side с cookie auth и Telegram Login Widget. - -Ключевые endpoints: -- `/login` — Telegram Login Widget -- `/miniapp` — Telegram Mini App WebView -- `/auth/telegram-login` — callback endpoint для Telegram Login Widget -- `/auth/status` — проверка статуса аутентификации -- `/` — дашборд (только owner и co-GM) -- `/templates` — шаблоны кампаний -- `/group/{GroupId}` — сессии группы, bulk-операции -- `/session/edit/{SessionId}` — редактирование сессии - -## C4-диаграммы - -Хранятся в `docs/c4-system-context.md`. Описывают system context, container view и component view для `GmRelay.Bot`. \ No newline at end of file