You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
orquestrador/docs/architecture/shared-contracts-and-access...

96 lines
2.2 KiB
Markdown

# Contratos Compartilhados E Hierarquia De Acesso
Este documento define os primeiros contratos compartilhados entre `orquestrador-product`
e `orquestrador-admin`, com foco especial na hierarquia de acesso do runtime administrativo.
## Objetivo
Criar uma base comum para:
- autenticacao e autorizacao administrativa
- publicacao de tools do `admin` para o `product`
- evolucao independente dos dois servicos sem acoplamento indevido
## Hierarquia inicial de acesso
Os papeis administrativos ficam centralizados em `shared/contracts/access_control.py`.
Hierarquia:
1. `viewer`
2. `staff`
3. `admin`
### `viewer`
Responsavel por leitura operacional.
Permissoes iniciais:
- `view_system`
- `view_reports`
- `view_audit_logs`
### `staff`
Responsavel por operacao interna e governanca de drafts.
Permissoes iniciais:
- todas as de `viewer`
- `manage_tool_drafts`
- `review_tool_generations`
### `admin`
Responsavel por configuracao, publicacao e gestao de acesso.
Permissoes iniciais:
- todas as de `staff`
- `publish_tools`
- `manage_settings`
- `manage_staff_accounts`
## Regras de desenho
1. Os papeis nascem em contrato compartilhado para que `admin` e `product` falem a mesma lingua.
2. O `product` nao usa essa hierarquia para atendimento ao cliente final.
3. O `admin` usa essa hierarquia para autenticacao, autorizacao e auditoria.
4. Toda evolucao deve ser additive-first para nao bloquear deploy independente.
## Contrato de publicacao de tool
O contrato inicial fica em `shared/contracts/tool_publication.py`.
Ele cobre:
- `ServiceName`
- `ToolLifecycleStatus`
- `ToolParameterType`
- `ToolParameterContract`
- `PublishedToolContract`
- `ToolPublicationEnvelope`
## Como isso sera usado depois
### No `orquestrador-admin`
- criar `StaffAccount`
- associar `StaffAccount.role`
- controlar acesso a UI, as rotas e a aprovacao de tools
- emitir `ToolPublicationEnvelope` quando uma tool for publicada
### No `orquestrador-product`
- consumir apenas tools publicadas
- validar status e versao do contrato recebido
- evitar dependencia do runtime do admin no hot path
## Proximos passos naturais
- criar a entidade `StaffAccount`
- plugar a role do usuario interno ao contrato compartilhado
- modelar a persistencia de drafts/publicacoes de tool