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/admin-operational-data-scop...

300 lines
5.7 KiB
Markdown

# Escopo De Dados Operacionais Do Product Visiveis No Admin
## Objetivo
Definir, de forma explicita, quais dados operacionais do `orquestrador-product` podem ser consultados pelo `orquestrador-admin` na fase inicial de relatorios e configuracao.
Esta definicao cobre o **que** o admin pode ler.
A estrategia de leitura desses dados sem acoplar o hot path do atendimento fica detalhada em `docs/architecture/admin-report-reading-strategy.md`.
A materializacao concreta desses relatorios fica detalhada em `docs/architecture/admin-report-materialization-strategy.md`.
## Principios obrigatorios
1. O `product` continua sendo a fonte operacional primaria.
2. O `admin` nasce com acesso de leitura orientado a relatorios, nunca como escritor direto dessas tabelas.
3. O hot path do atendimento nao deve depender de consulta online ao `admin`.
4. Dados de identidade do cliente final, texto livre e segredos operacionais nao entram automaticamente na fronteira administrativa.
5. Sempre que um indicador puder ser atendido por agregado, o agregado deve ser preferido a leitura detalhada.
## Datasets permitidos nesta fase
O contrato compartilhado correspondente fica em `shared/contracts/product_operational_data.py`.
### 1. Estoque comercial
Fonte atual:
- `vehicles`
Uso administrativo esperado:
- disponibilidade comercial
- distribuicao por categoria
- faixa de preco
- entrada de novos itens no estoque
Campos permitidos:
- `id`
- `modelo`
- `categoria`
- `preco`
- `created_at`
### 2. Pedidos de venda
Fonte atual:
- `orders`
Uso administrativo esperado:
- volume de pedidos
- pedidos ativos e cancelados
- ticket medio
- cancelamentos por periodo
Campos permitidos:
- `numero_pedido`
- `vehicle_id`
- `modelo_veiculo`
- `valor_veiculo`
- `status`
- `motivo_cancelamento`
- `data_cancelamento`
- `created_at`
- `updated_at`
Campos bloqueados:
- `user_id`
- `cpf`
### 3. Agenda de revisoes
Fonte atual:
- `review_schedules`
Uso administrativo esperado:
- ocupacao de slots
- revisoes agendadas por periodo
- taxa de cancelamento
- fila operacional da oficina
Campos permitidos:
- `protocolo`
- `placa`
- `data_hora`
- `status`
- `created_at`
Campos bloqueados:
- `user_id`
### 4. Frota de locacao
Fonte atual:
- `rental_vehicles`
Uso administrativo esperado:
- disponibilidade da frota
- status operacional por categoria
- tarifa diaria vigente
Campos permitidos:
- `id`
- `placa`
- `modelo`
- `categoria`
- `ano`
- `valor_diaria`
- `status`
- `created_at`
### 5. Contratos de locacao
Fonte atual:
- `rental_contracts`
Uso administrativo esperado:
- contratos ativos e encerrados
- devolucoes em atraso
- receita prevista versus receita final
- ocupacao da frota no tempo
Campos permitidos:
- `contrato_numero`
- `rental_vehicle_id`
- `placa`
- `modelo_veiculo`
- `categoria`
- `data_inicio`
- `data_fim_prevista`
- `data_devolucao`
- `valor_diaria`
- `valor_previsto`
- `valor_final`
- `status`
- `created_at`
- `updated_at`
Campos bloqueados:
- `user_id`
- `cpf`
- `observacoes`
### 6. Pagamentos de locacao
Fonte atual:
- `rental_payments`
Uso administrativo esperado:
- arrecadacao por periodo
- pagamentos conciliados por contrato
- inadimplencia operacional
Campos permitidos:
- `protocolo`
- `contrato_numero`
- `placa`
- `valor`
- `data_pagamento`
- `created_at`
Campos bloqueados:
- `user_id`
- `rental_contract_id`
- `favorecido`
- `identificador_comprovante`
- `observacoes`
### 7. Telemetria conversacional
Fonte atual:
- `conversation_turns`
Uso administrativo esperado:
- volume de atendimento
- latencia por turno
- distribuicao por dominio
- uso de tools
- falhas operacionais por status
Campos permitidos:
- `request_id`
- `conversation_id`
- `channel`
- `turn_status`
- `intent`
- `domain`
- `action`
- `tool_name`
- `elapsed_ms`
- `started_at`
- `completed_at`
Campos bloqueados:
- `user_id`
- `external_id`
- `username`
- `user_message`
- `assistant_response`
- `tool_arguments`
- `error_detail`
### 8. Entregas de integracao
Fonte atual:
- `integration_deliveries`
Uso administrativo esperado:
- taxa de sucesso por provedor
- volume de eventos entregues
- entregas pendentes ou com falha
- tentativas de reenvio
Campos permitidos:
- `route_id`
- `event_type`
- `provider`
- `status`
- `attempts`
- `dispatched_at`
- `created_at`
- `updated_at`
Campos bloqueados:
- `payload_json`
- `recipient_email`
- `recipient_name`
- `rendered_subject`
- `rendered_body`
- `provider_message_id`
- `last_error`
## Fontes fora do escopo administrativo nesta fase
O admin **nao** deve consultar diretamente, nesta fase:
- `customers`
- `users`
- stores de estado conversacional de hot path
- payloads brutos de tools e mensagens do usuario
- comprovantes e identificadores sensiveis de pagamento
- configuracoes internas de provedor e credenciais
## Regra de autorizacao
A leitura desses dados nasce amarrada a `view_reports`.
Consequencia pratica:
- `colaborador` pode consultar os dados operacionais liberados para relatorio
- `diretor` herda essa leitura e acumula as etapas de aprovacao e configuracao
- permissao adicional sera exigida apenas quando a consulta implicar governanca, aprovacao ou configuracao
## Decisao tomada nesta etapa
O `admin` pode consultar apenas datasets operacionais explicitamente declarados em contrato compartilhado e sempre em modo somente leitura.
A fronteira inicial favorece relatorios de:
- vendas
- arrecadacao
- operacao
- telemetria de atendimento
- entregas de integracao
## Decisao de materializacao relacionada
Para esses datasets, a fase inicial escolhe:
- `etl_incremental` como estrategia de sincronizacao
- `snapshot_table` no lado administrativo como persistencia de leitura
- `dedicated_view` sobre os snapshots como superficie de consulta para APIs e UI
- nenhuma replica operacional do banco do produto no dashboard administrativo