Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/architecture/REPOSITORY_MODEL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 проходят одной командой |
Expand All @@ -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 проверены |

Каркас означает, что настроены структура и инженерные проверки. Это не означает, что правила бизнеса уже
спроектированы или реализованы.
Expand Down
20 changes: 12 additions & 8 deletions docs/delivery/CURRENT_STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |

## Что уже проверено

Expand All @@ -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.

## Текущий порядок

Expand All @@ -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
```

## Правило результата
Expand Down
5 changes: 3 additions & 2 deletions docs/delivery/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Loading