From 64234a373c5226f562d5f4e16dc087eae441f9f6 Mon Sep 17 00:00:00 2001 From: DanliaQwerty20 Date: Fri, 25 Sep 2026 01:33:43 +0300 Subject: [PATCH] docs: record completed telegram adapter --- docs/architecture/REPOSITORY_MODEL.md | 4 ++-- docs/delivery/CURRENT_STATUS.md | 20 ++++++++++++-------- docs/delivery/ROADMAP.md | 5 +++-- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/docs/architecture/REPOSITORY_MODEL.md b/docs/architecture/REPOSITORY_MODEL.md index 0d14944..ee36cbc 100644 --- a/docs/architecture/REPOSITORY_MODEL.md +++ b/docs/architecture/REPOSITORY_MODEL.md @@ -8,7 +8,7 @@ Portable Agent использует GitHub Organization и отдельную р |---|---|---| | `.github` | Общие шаблоны, правила и CI/CD | Создан, развивается | | `platform` | Архитектура, ADR, карта и публичная документация | Создан, сайт опубликован | -| `contracts` | OpenAPI, AsyncAPI, JSON Schema и примеры | Локальный bundle `2.5.0` используется сервисами | +| `contracts` | OpenAPI, AsyncAPI, JSON Schema и примеры | Release `2.5.0` опубликован и используется сервисами | | `action-service` | Java-сервис действий | jOOQ, MVC, outbox и Temporal worker работают в backend-срезе | | `agent-runtime` | Python-сервис агента | MVC, JWT и предложение календарного действия работают в backend-срезе | | `deploy` | Compose, Helm charts и тестовые окружения | Локальный backend-срез и GitHub acceptance проходят одной командой | @@ -19,7 +19,7 @@ Portable Agent использует GitHub Organization и отдельную р | `channel-gateway` | Единый вход независимых каналов | Текстовый API, JWT и вызов Agent Runtime работают в общем сценарии | | `conversation-service` | Состояние диалога | PostgreSQL, защита повторов и цепочка Agent → Action работают в общем сценарии | | `widget-sdk` | Независимая от канала модель виджета | Карточка подтверждения и decision command проверяются без UI-фреймворка | -| `telegram-adapter` | Тонкая граница Telegram | Локальная репа, защищённый webhook и начало Device Flow проверены тестами и Docker build | +| `telegram-adapter` | Тонкая граница Telegram | Публичная репа: Device Flow, Gateway, confirmation-кнопки, PostgreSQL и container CI проверены | Каркас означает, что настроены структура и инженерные проверки. Это не означает, что правила бизнеса уже спроектированы или реализованы. diff --git a/docs/delivery/CURRENT_STATUS.md b/docs/delivery/CURRENT_STATUS.md index 1871aa3..2ea3695 100644 --- a/docs/delivery/CURRENT_STATUS.md +++ b/docs/delivery/CURRENT_STATUS.md @@ -6,17 +6,17 @@ | Репа | Что меняем или добавляем | Ожидаемый результат | Фактический результат | Следующий шаг | |---|---|---|---|---| | `.github` | Общие workflows и правила | Одинаковый CI/CD для всех сервисов | Java, Python, Node, docs, security и container workflows работают; чистый Trivy runner исправлен | Подключать правила к каждой новой репе | -| `contracts` | Версионируемые внешние и внутренние API | Один проверяемый источник сетевых DTO | Локальный bundle `2.5.0`: сообщения, confirmation card и решение через Gateway | Выпустить после восстановления GitHub | +| `contracts` | Версионируемые внешние и внутренние API | Один проверяемый источник сетевых DTO | Release `2.5.0` опубликован с checksum и provenance; общий MessageContext устраняет циклические OpenAPI-ссылки | Использовать release во всех новых адаптерах | | `action-service` | Подтверждение и надёжное выполнение | `AWAITING_APPROVAL → APPROVED → EXECUTING → SUCCEEDED/FAILED` | jOOQ, outbox, Temporal worker и вызов MCP Gateway работают; решение приходит через Channel Gateway | Оставить источником истины для решения и статуса | | `calendar-mcp` | `create_event` | Идемпотентное создание fake-события | Fake Calendar, OIDC и защита от дублей работают в общем сценарии | Оставить эталонным fake-коннектором | | `mcp-gateway` | OIDC, allowlist и MCP client | Безопасный stateless-маршрутизатор | Foundation смержен и проверен вызовом Calendar MCP | Добавлять коннекторы только по контракту | -| `deploy` | Приложения в локальном Compose | Одна команда поднимает вертикальный backend-срез | Чистый срез поднят и проверен; Gateway связан с Conversation и Action | Подключить Telegram adapter после решения по identity | -| `test-lab` | Календарный acceptance-тест | Один JWT и один контракт на всём пути | 19/19: карточка, решение через Gateway, Temporal, offset и отсутствие дубля | Добавить первый адаптер канала | +| `deploy` | Приложения в локальном Compose | Одна команда поднимает вертикальный backend-срез | GitHub acceptance зелёный; Gateway связан с Conversation и Action | Добавить Telegram Adapter и fake Telegram API | +| `test-lab` | Календарный acceptance-тест | Один JWT и один контракт на всём пути | Карточка, решение через Gateway, Temporal, offset и отсутствие дубля проверены | Добавить black-box сценарий Telegram-канала | | `agent-runtime` | Текст в предложение действия | Детерминированное предложение встречи без скрытого выполнения | API `2.1.0`, проверка JWT и календарное предложение работают в общем сценарии | Вызывать через Channel Gateway, AI-модель пока не выбирать | -| `channel-gateway` | Общий вход каналов | Web и Telegram используют один контракт | Сообщение идёт через Conversation; команда Widget SDK — через Gateway в Action | Подключить первый адаптер | +| `channel-gateway` | Общий вход каналов | Web и Telegram используют один контракт | Сообщение идёт через Conversation; решение канала — через Gateway в Action | Проверить Telegram в общем Compose-сценарии | | `conversation-service` | Состояние диалога и прикладная оркестрация | Повтор сообщения не создаёт второе действие | PostgreSQL, lease, Agent → Action, карточка и сохранение offset проверены общим E2E | Оставить владельцем диалога при подключении адаптера | -| `widget-sdk` | Карточка подтверждения | Один UI-контракт для разных каналов | Renderer-neutral core создаёт проверенную decision command | Подключить к Telegram adapter | -| `telegram-adapter` | Telegram как сменный канал | Telegram identity привязывается только после входа через Keycloak | Webhook и полный Device Flow: lease, AES-256-GCM, PostgreSQL, 25/25 unit, repository integration и Docker build | Обновлять access token и передавать сообщение в Gateway | +| `widget-sdk` | Карточка подтверждения | Один UI-контракт для разных каналов | Renderer-neutral core создаёт проверенную decision command; Telegram использует тот же сетевой контракт | Добавить готовые helpers для следующих UI-каналов | +| `telegram-adapter` | Telegram как сменный канал | Telegram identity привязывается только после входа через Keycloak | Публичная репа: Device Flow, зашифрованный refresh token, сообщения через Gateway и одноразовые confirmation-кнопки; 42 теста, PostgreSQL 18 и container CI зелёные | Подключить к локальному Compose и fake Telegram API | ## Что уже проверено @@ -33,7 +33,8 @@ ``` Проверка запускает реальные контейнеры отдельных репозиториев по закреплённым commit SHA. Последний -локальный зелёный запуск: `deploy` `3e67663`, 19 из 19 проверок прошли 23 сентября 2026 года. +GitHub acceptance для `deploy` прошёл 25 сентября 2026 года после явного checkout Conversation Service. +Telegram Adapter отдельно проверен unit-, contract- и PostgreSQL integration-тестами и production build. ## Текущий порядок @@ -54,7 +55,10 @@ -> [готово] решение виджета через Channel Gateway -> [решено] Telegram identity привязывается через OAuth Device Flow -> [готово] Telegram adapter: webhook, `/link`, polling и зашифрованная связь - -> [следом] refresh access token и сообщение через Gateway + -> [готово] refresh access token и сообщение через Gateway + -> [готово] confirmation-кнопки с одноразовым callback и lease + -> [готово] публичная репа, CI и container image + -> [следом] Keycloak client, fake Telegram API и Compose E2E ``` ## Правило результата diff --git a/docs/delivery/ROADMAP.md b/docs/delivery/ROADMAP.md index db071da..81785c2 100644 --- a/docs/delivery/ROADMAP.md +++ b/docs/delivery/ROADMAP.md @@ -17,8 +17,9 @@ ## Фаза 1 — Первый вертикальный срез -Состояние: backend-путь от независимого Channel Gateway до fake-календаря готов. Следующий пакет — -контракт карточки подтверждения, Widget SDK и первый адаптер. +Состояние: backend-путь от независимого Channel Gateway до fake-календаря готов. Первый Telegram +Adapter умеет безопасно связывать identity, отправлять сообщения и подтверждать карточки. Следующий +пакет — включение адаптера в общий Compose и black-box сценарий без настоящего Telegram-токена. - Channel Gateway и Telegram adapter. - Conversation Service и Agent Runtime.