Что работает внутри.
Один процесс ревью, явные границы ответственности.
Схема служб
Размещение и границы доверия
Маршруты и исходник Mermaid
- Команда → Кабинет: HTTPS.
- Кабинет → Identity: Авторизация.
- Identity → OIDC / Keycloak: OIDC.
- MCP-клиенты → ContextForge: MCP.
- ContextForge → Получатель read: Разрешенный read.
- Получатель read → Identity: Актуальные права.
- Identity → Приватные службы: Область организации.
- ContextForge → PostgreSQL ContextForge: Своя база.
- Приватные службы → PostgreSQL служб: Свои базы.
flowchart LR
team["Команда / Браузер"]
bff["Кабинет / Защищенный вход"]
identity["Identity / Организация и роли"]
oidc["OIDC / Keycloak / Корпоративный вход"]
agents["MCP-клиенты / Разрешенные инструменты"]
cf["ContextForge / Шлюз и согласие"]
receiver["Получатель read / Проверка доступа"]
roles["Приватные службы / Control / Worker / Context"]
cfpg["PostgreSQL ContextForge / Отдельный владелец"]
pg["PostgreSQL служб / Отдельные БД и роли"]
team -->|HTTPS| bff
bff -->|Авторизация| identity
identity -->|OIDC| oidc
agents -->|MCP| cf
cf -->|Разрешенный read| receiver
receiver -->|Актуальные права| identity
identity -->|Область организации| roles
cf -->|Своя база| cfpg
roles -->|Свои базы| pgКуда идет выбранный контекст
Маршруты и исходник Mermaid
- Ваш GitLab → Connector: Разрешенное чтение.
- Connector → Context: Точная версия.
- Context → Worker / PR-Agent: Выбранный контекст.
- Worker / PR-Agent → Согласованная модель: Согласованные данные.
- Worker / PR-Agent → Control: Черновик замечаний.
- Control → Connector: Действия по политике.
- Control → PostgreSQL служб: Сохраненная история.
flowchart LR
gitlab["Ваш GitLab / MR / исходники / CI"]
connector["Connector / Credentials GitLab"]
context["Context / Выбранные исходники"]
worker["Worker / PR-Agent / Контекст ревью"]
model["Согласованная модель / API или официальный CLI"]
control["Control / Очередь и отчеты"]
pg["PostgreSQL служб / История и владельцы"]
gitlab -->|Разрешенное чтение| connector
connector -->|Точная версия| context
context -->|Выбранный контекст| worker
worker -->|Согласованные данные| model
worker -->|Черновик замечаний| control
control -->|Действия по политике| connector
control -->|Сохраненная история| pgОт изменения к решению команды
Маршруты и исходник Mermaid
- Измененный MR → Подготовка контекста: Выбрать.
- Подготовка контекста → Черновик замечаний: Ревью.
- Черновик замечаний → Команда правит код: Рассмотреть.
- Команда правит код → Повторное ревью: Проверить заново.
- Повторное ревью → CI и критерии: Сверить доказательства.
- CI и критерии → Решение команды: Принять решение.
flowchart LR
change["Измененный MR / Актуальный SHA"]
prepare["Подготовка контекста / Diff / задача / правила"]
draft["Черновик замечаний / Основание и исправление"]
fix["Команда правит код / Новый SHA"]
recheck["Повторное ревью / Актуальные исходники"]
ci["CI и критерии / Отдельные доказательства"]
decision["Решение команды / Политика и права"]
change -->|Выбрать| prepare
prepare -->|Ревью| draft
draft -->|Рассмотреть| fix
fix -->|Проверить заново| recheck
recheck -->|Сверить доказательства| ci
ci -->|Принять решение| decisionКто за что отвечает
| Служба | Ответственность |
|---|---|
| Identity | Пользователи, tenant, роли, OIDC и авторизация. |
| Control | Очередь, актуальный SHA, правила, журнал решений и публикация по политике. |
| Connector | Единственный путь чтения и записи GitLab, включая CI. |
| Worker / PR-Agent | Вызов выбранной модели и черновик findings. Нет самостоятельного publisher. |
| Context | Выбранные исходники и контекст задачи в разрешенной области. |
| ContextForge | Общий MCP gateway. Собственная авторизация и отдельный отзыв доступа. |
Данные не смешиваются в общей таблице
PostgreSQL обязателен. У служб свои базы, учетные записи и версии миграций; у ContextForge отдельный обычный владелец. Tenant определяется доверенной авторизацией, а не полем из запроса. Модельные credentials принадлежат конкретной организации и профилю. Общий MCP gateway не дает агенту глобальные права.
Что открыть в сети
Опубликуйте только защищенный ingress кабинета и согласованные MCP endpoints. API служб остаются приватными. Разрешите исходящие соединения к утвержденным GitLab, OIDC и модели. Docker bridge дает связность, но не фильтрует все исходящие запросы. Firewall, корпоративная CA и проверка имен серверов входят в план внедрения.