Delete page "%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0"

2026-05-21 18:46:27 +03:00
parent c2b985241d
commit abaaf04f88
@@ -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:<sessionId>`, `leave_session:<sessionId>`, `cancel_session:<sessionId>`
- `reschedule_session:<sessionId>`, `reschedule_vote:<optionId>`, `rsvp:<confirm|decline>:<sessionId>`
## Рендеринг батчей (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`.