389 lines
8.7 KiB
Markdown
389 lines
8.7 KiB
Markdown
---
|
|
trigger: always_on
|
|
---
|
|
|
|
# AGENTS.md
|
|
|
|
## Workbloom ERP — Diretrizes para Agentes de IA
|
|
|
|
Este documento define as regras obrigatórias para qualquer agente que analise, altere, refatore ou implemente código no Workbloom ERP.
|
|
|
|
## 1. Regra principal: planejar antes de implementar
|
|
|
|
**Nunca altere o projeto diretamente.**
|
|
|
|
Antes de modificar qualquer arquivo, código, banco, endpoint, classe, serviço ou estrutura:
|
|
|
|
1. Analise o código existente.
|
|
2. Identifique arquivos, componentes, dependências e impactos.
|
|
3. Crie um plano objetivo.
|
|
4. Apresente o plano ao usuário.
|
|
5. Solicite autorização explícita.
|
|
6. Só implemente após a autorização.
|
|
|
|
Consultas, análises, diagnósticos, explicações e sugestões que não alterem arquivos podem ser realizadas normalmente.
|
|
|
|
Para bugs, primeiro identifique causa e sintoma, analise o fluxo e apresente o plano de correção. Não faça tentativas de correção diretamente.
|
|
|
|
Formato:
|
|
|
|
```text
|
|
Análise concluída.
|
|
|
|
Plano:
|
|
1. ...
|
|
2. ...
|
|
3. ...
|
|
|
|
Arquivos que serão alterados:
|
|
- ...
|
|
|
|
Impacto:
|
|
- ...
|
|
|
|
Posso implementar?
|
|
```
|
|
|
|
Após autorização:
|
|
|
|
```text
|
|
Implementado.
|
|
|
|
Alterações:
|
|
- ...
|
|
|
|
Validações realizadas:
|
|
- ...
|
|
|
|
Possíveis pontos de atenção:
|
|
- ...
|
|
```
|
|
|
|
## 2. Stack e arquitetura
|
|
|
|
O backend **não utiliza Laravel nem CodeIgniter**.
|
|
|
|
A API utiliza:
|
|
|
|
```text
|
|
claudecio/krothiumapi v1.0
|
|
```
|
|
|
|
Respeite a arquitetura e as abstrações existentes no `claudecio/krothiumapi`. Não introduza outro framework, padrão ou arquitetura sem necessidade e autorização.
|
|
|
|
Antes de criar qualquer classe, serviço, repository, DTO, controller ou estrutura:
|
|
|
|
1. Procure uma estrutura equivalente.
|
|
2. Identifique o padrão existente.
|
|
3. Reutilize-o quando possível.
|
|
4. Crie uma nova abordagem somente quando justificado.
|
|
|
|
Não replique funcionalidades já fornecidas pelo `krothiumapi`.
|
|
|
|
## 3. Banco de dados
|
|
|
|
O banco utilizado é **PostgreSQL**.
|
|
|
|
O sistema possui múltiplos domínios, incluindo autenticação, multi-tenant, empresas, configurações fiscais, clientes, fornecedores, produtos, serviços, documentos fiscais, pagamentos e administração.
|
|
|
|
Antes de qualquer alteração estrutural, analise o modelo atual, dependências e impacto nos dados.
|
|
|
|
Alterações em tabelas, colunas, índices, constraints, foreign keys, enums, funções, triggers, views ou migrations exigem:
|
|
|
|
1. análise;
|
|
2. plano;
|
|
3. autorização;
|
|
4. implementação.
|
|
|
|
Nunca altere o banco diretamente sem autorização.
|
|
|
|
## 4. Regra absoluta de SQL
|
|
|
|
**É proibido utilizar `SELECT *` ou qualquer variação.**
|
|
|
|
Proibido:
|
|
|
|
```sql
|
|
SELECT * FROM produto;
|
|
|
|
SELECT p.* FROM produto p;
|
|
|
|
SELECT COUNT(*) FROM produto;
|
|
```
|
|
|
|
Prefira:
|
|
|
|
```sql
|
|
SELECT
|
|
id,
|
|
uuid,
|
|
nome,
|
|
ncm
|
|
FROM produto;
|
|
```
|
|
|
|
Para contagem:
|
|
|
|
```sql
|
|
SELECT COUNT(id)
|
|
FROM produto;
|
|
```
|
|
|
|
ou:
|
|
|
|
```sql
|
|
SELECT COUNT(1)
|
|
FROM produto;
|
|
```
|
|
|
|
Toda consulta deve selecionar **somente as colunas necessárias**.
|
|
|
|
Isso vale para repositories, queries, services, endpoints, relatórios, JOINs, subqueries e views.
|
|
|
|
Nunca concatene valores fornecidos pelo usuário no SQL. Utilize parâmetros conforme o mecanismo existente no projeto.
|
|
|
|
## 5. JOINs
|
|
|
|
Sempre informe explicitamente as colunas e utilize aliases quando necessário.
|
|
|
|
```sql
|
|
SELECT
|
|
df.id,
|
|
df.uuid,
|
|
df.numero,
|
|
c.id AS cliente_id,
|
|
c.nome AS cliente_nome
|
|
FROM documento_fiscal df
|
|
INNER JOIN cliente c
|
|
ON c.id = df.cliente_id;
|
|
```
|
|
|
|
## 6. UUID
|
|
|
|
As entidades principais utilizam UUID.
|
|
|
|
A estratégia recomendada é UUID v7 gerado pela aplicação antes do `INSERT`, quando essa for a convenção da tabela.
|
|
|
|
Não altere a estratégia existente sem analisar primeiro sua implementação atual.
|
|
|
|
## 7. Transações e integridade
|
|
|
|
Operações que modificam múltiplos registros relacionados devem respeitar o padrão transacional existente.
|
|
|
|
Exemplo:
|
|
|
|
```text
|
|
Documento fiscal
|
|
├── Itens
|
|
├── Pagamentos
|
|
├── Duplicatas
|
|
└── Série
|
|
```
|
|
|
|
Operações fiscais relacionadas devem manter consistência e, quando aplicável, atomicidade.
|
|
|
|
Nunca:
|
|
|
|
* desabilite foreign keys;
|
|
* ignore constraints;
|
|
* insira dados inconsistentes;
|
|
* utilize valores mágicos para contornar regras;
|
|
* duplique dados para contornar relacionamentos.
|
|
|
|
## 8. Precisão numérica
|
|
|
|
Respeite a precisão definida pelo domínio:
|
|
|
|
```text
|
|
Valores monetários: NUMERIC(15,2)
|
|
Quantidades, pesos, alíquotas e fatores: NUMERIC(15,4)
|
|
```
|
|
|
|
Não altere a precisão sem justificativa e autorização.
|
|
|
|
## 9. Backend e API
|
|
|
|
Ao implementar endpoints:
|
|
|
|
1. Valide as entradas.
|
|
2. Utilize DTOs quando esse for o padrão existente.
|
|
3. Mantenha regras de negócio fora de controllers excessivamente grandes.
|
|
4. Utilize repositories quando esse for o padrão.
|
|
5. Não espalhe SQL pela aplicação.
|
|
6. Trate erros conforme o padrão existente.
|
|
7. Preserve contratos da API.
|
|
|
|
Não altere contratos existentes sem avaliar seus consumidores.
|
|
|
|
## 10. Alterações mínimas
|
|
|
|
Altere somente o necessário para atender à tarefa.
|
|
|
|
Não faça:
|
|
|
|
* refatorações fora do escopo;
|
|
* reorganização desnecessária;
|
|
* renomeações por preferência pessoal;
|
|
* alterações de estilo sem motivo;
|
|
* atualizações de dependências sem necessidade;
|
|
* mudanças em contratos não relacionados.
|
|
|
|
Quanto menor o escopo, melhor.
|
|
|
|
## 11. Remoção de código
|
|
|
|
Não remova métodos, classes, endpoints, tabelas, colunas, validações ou testes sem verificar seus consumidores e dependências.
|
|
|
|
Qualquer remoção deve ter justificativa.
|
|
|
|
## 12. Testes e validação
|
|
|
|
Toda alteração que modifique comportamento deve considerar testes.
|
|
|
|
Antes de finalizar:
|
|
|
|
1. Execute os testes relacionados.
|
|
2. Valide o comportamento alterado.
|
|
3. Verifique possíveis regressões.
|
|
4. Informe o que foi testado.
|
|
|
|
Não crie uma infraestrutura de testes inteira sem necessidade quando ela não existir.
|
|
|
|
## 13. Documentação
|
|
|
|
Quando uma alteração modificar contrato de API, comportamento importante, banco, fluxo fiscal, configuração ou integração externa, avalie a necessidade de atualizar a documentação correspondente.
|
|
|
|
## 14. Segurança
|
|
|
|
Nunca:
|
|
|
|
* exponha senhas;
|
|
* exponha tokens;
|
|
* exponha certificados;
|
|
* exponha chaves privadas;
|
|
* exponha credenciais;
|
|
* coloque secrets diretamente no código;
|
|
* faça commit de credenciais;
|
|
* registre dados sensíveis desnecessários.
|
|
|
|
Utilize o mecanismo de segurança já existente no projeto.
|
|
|
|
## 15. Logs
|
|
|
|
Logs devem auxiliar no diagnóstico sem expor informações sensíveis.
|
|
|
|
Nunca registre:
|
|
|
|
```text
|
|
senhas
|
|
tokens
|
|
certificados
|
|
chaves privadas
|
|
credenciais
|
|
dados sensíveis desnecessários
|
|
```
|
|
|
|
Siga o padrão de logging existente e utilize o nível adequado.
|
|
|
|
## 16. Integrações fiscais
|
|
|
|
O sistema possui integrações com:
|
|
|
|
* NF-e Modelo 55;
|
|
* NFC-e Modelo 65;
|
|
* NFS-e;
|
|
* CT-e Modelo 57;
|
|
* MDF-e Modelo 58;
|
|
* eventos fiscais e serviços relacionados.
|
|
|
|
Não simplifique regras fiscais apenas para facilitar uma implementação.
|
|
|
|
Alterações devem considerar os fluxos e relacionamentos existentes.
|
|
|
|
## 17. Fluxos críticos
|
|
|
|
Tenha atenção especial a operações com múltiplas etapas, como:
|
|
|
|
```text
|
|
Produto
|
|
↓
|
|
Documento Fiscal
|
|
↓
|
|
Itens
|
|
↓
|
|
Pagamentos
|
|
↓
|
|
Duplicatas
|
|
↓
|
|
Assinatura
|
|
↓
|
|
Transmissão
|
|
↓
|
|
Autorização
|
|
↓
|
|
Atualização do documento
|
|
↓
|
|
Numeração da série
|
|
```
|
|
|
|
Alterações em uma etapa podem afetar as demais.
|
|
|
|
## 18. Não assumir
|
|
|
|
Quando algo não estiver claro:
|
|
|
|
* procure no código;
|
|
* procure configurações;
|
|
* procure migrations;
|
|
* procure classes relacionadas;
|
|
* procure documentação;
|
|
* verifique contratos existentes.
|
|
|
|
Não invente comportamento.
|
|
|
|
Se permanecer uma ambiguidade relevante, informe a dúvida ao usuário antes de implementar.
|
|
|
|
## 19. Regra de escopo
|
|
|
|
Não faça alterações silenciosas.
|
|
|
|
Não implemente melhorias não solicitadas.
|
|
|
|
Não introduza arquitetura nova sem necessidade.
|
|
|
|
Não altere banco sem planejamento e autorização.
|
|
|
|
Não comprometa integridade ou segurança para "fazer funcionar".
|
|
|
|
## 20. Checklist obrigatório
|
|
|
|
Antes de finalizar uma implementação:
|
|
|
|
* [ ] Plano apresentado antes da implementação.
|
|
* [ ] Autorização explícita recebida.
|
|
* [ ] Alteração dentro do escopo solicitado.
|
|
* [ ] Arquitetura existente respeitada.
|
|
* [ ] Nenhum Laravel utilizado.
|
|
* [ ] Nenhum CodeIgniter utilizado.
|
|
* [ ] `claudecio/krothiumapi v1.0` respeitado.
|
|
* [ ] Nenhum `SELECT *` utilizado.
|
|
* [ ] Colunas SQL explicitamente definidas.
|
|
* [ ] SQL parametrizado.
|
|
* [ ] Alterações de banco avaliadas.
|
|
* [ ] Testes/validações executados.
|
|
* [ ] Nenhuma refatoração desnecessária.
|
|
* [ ] Nenhum segredo ou credencial exposto.
|
|
* [ ] Resultado informado ao usuário.
|
|
|
|
## Regra de ouro
|
|
|
|
**Planeje antes de implementar.
|
|
Peça autorização antes de alterar.
|
|
Nunca utilize `SELECT *`.
|
|
Respeite a arquitetura existente.
|
|
Não utilize Laravel ou CodeIgniter.
|
|
Respeite `claudecio/krothiumapi v1.0`.
|
|
Não altere banco sem planejamento e autorização.
|
|
Não faça alterações fora do escopo.
|
|
Preserve segurança e integridade dos dados.**
|