Extensões e módulos do produto
O COBRES registra seus módulos em api/app/product/manifest.py. Esse arquivo é o ponto de entrada do produto para adicionar rotas, listagens, mensagens e trabalhos sem espalhar condições de negócio pela camada de plataforma.
O que o manifesto registra
| Campo | Uso |
|---|---|
api_routers | Rotas do produto e prefixos dos planos correspondentes |
openapi_tags | Agrupamento e descrição dos recursos |
locale_messages | Mensagens de erro em pt-BR |
error_status | Status HTTP dos códigos de erro do produto |
listings | Recursos de listagem sujeitos às regras da camada de plataforma |
worker_install | Registro de handlers de outbox |
worker_ticks | Trabalhos periódicos de manutenção |
platform_role_grants | Chaves platform.* adicionais para cada papel fixo da plataforma |
request_body_limits | Limite de corpo por rota, em bytes |
idempotency_refused_prefixes | Prefixos que recusam o header Idempotency-Key |
requests_* | O que o produto acopla à capacidade de solicitações: assuntos, relações com registros, operações e biblioteca de modelos |
O manifesto do COBRES inclui as áreas de cadastro, dívidas, carteiras, cobrança, negociação, documentos, portal do credor e financeiro, além dos pontos de acoplamento da capacidade de solicitações. O worker registra os handlers do produto e a varredura financeira finance.sweep, executada a cada 30 segundos.
Validação na inicialização
A camada de plataforma valida o manifesto antes de montar as rotas. Colisões com caminhos, códigos de erro, nomes de listagem, permissões ou schemas dela não devem modificar silenciosamente o contrato existente. Um manifesto inválido interrompe o boot e a verificação de saúde usada na publicação.
Acrescentar um recurso
- Defina o contrato de comportamento no PRD correspondente.
- Crie as tabelas, funções e grants de produto necessários.
- Registre permissões e use a mesma dependência
require_permissiondas rotas existentes. - Defina schemas próprios e nomes que não colidam com schemas da camada de plataforma.
- Crie a listagem com campos e operadores permitidos explicitamente.
- Registre rotas, erros e trabalhos no manifesto.
- Preencha os testes de fronteira do produto e as telas nos slots previstos.
No plano Audience, use require_relationship() e projeções por relationship. Não reutilize o catálogo de permissões de equipe como porta de entrada do usuário externo.
Extensões de interface
Cada SPA possui slots em src/product/. O shell, as páginas genéricas e os contratos de navegação continuam pertencendo à superfície. Prefira um ponto de extensão existente a uma alteração na camada de plataforma que conheça o nome de um cliente ou um caso particular do produto.
Configurações do produto ficam em classes próprias. A validação deve ocultar valores de entrada em erros. Não coloque configuração operacional sensível em VITE_*, pois variáveis frontend são públicas no bundle.
Consulte mapa do repositório e permissões.