122 lines
4.5 KiB
Markdown
122 lines
4.5 KiB
Markdown
---
|
|
type: rule
|
|
name: regras-negocio-md
|
|
description: O conteúdo de regras de negócio deve ficar em <base_projeto>/../wiki/dev/<modulo>/.
|
|
scope: global
|
|
trigger: always_on
|
|
updatedAt: "2026-09-01"
|
|
---
|
|
|
|
# Regra: Conteúdo de Regras de Negócio em `<base_projeto>/../wiki/dev/<modulo>/`
|
|
|
|
> **Escopo global** — aplica-se a todos os projetos do ecossistema Azteca.
|
|
|
|
## Contexto
|
|
|
|
Toda lógica de negócio não-trivial — regras de decisão, critérios de bloqueio, estratégias de processamento, priorizações e fluxos de dados — deve ter seu conteúdo documentado em linguagem natural na **Wiki de Desenvolvimento** em `<base_projeto>/../wiki/dev/<modulo>/`.
|
|
|
|
> 💡 **Aplicação VitePress (`<base_projeto>/../wiki`) e Resolução do Módulo**:
|
|
> - O diretório `<base_projeto>/../wiki` é uma aplicação VitePress na qual `<base_projeto>/../wiki/<modulo-id>/` é voltado ao acesso dos **usuários**, e `<base_projeto>/../wiki/dev/<modulo-id>/` é reservado ao **acesso interno exclusivo da equipe de desenvolvimento**.
|
|
> - O identificador `<modulo-id>` (ou `<modulo>`) **DEVE** ser obtido obrigatoriamente do campo `modulo-id` em `memorias-ia/modulo.yml` na raiz do projeto (ex: `e-licencie.sigma`).
|
|
|
|
Isso garante centralização, governança técnica e facilidade de consulta por desenvolvedores, arquitetos e agentes de IA.
|
|
|
|
---
|
|
|
|
## Regra
|
|
|
|
**Todo o conteúdo detalhado de regras de negócio DEVE ficar em `<base_projeto>/../wiki/dev/<modulo>/`.**
|
|
|
|
Considera-se lógica não-trivial qualquer módulo que:
|
|
- Possui 3 ou mais critérios de decisão distintos
|
|
- Realiza eleição/priorização entre registros
|
|
- Aplica diferentes estratégias por tipo de dado
|
|
- Pode resultar em revisão manual (caminho alternativo ao fluxo automático)
|
|
- É consumido por CRON, worker ou importador automático
|
|
|
|
O módulo TypeScript deve conter, na primeira linha útil do arquivo, a referência:
|
|
|
|
```typescript
|
|
// Regras de negócio: ver <base_projeto>/../wiki/dev/<modulo>/{modulo}.regras-negocio.md
|
|
```
|
|
|
|
A documentação na **Wiki de Desenvolvimento** é a **fonte de verdade da lógica operacional**. Os comentários JSDoc no código explicam a aplicação prática da função e apontam para a wiki para o detalhamento dos critérios.
|
|
|
|
---
|
|
|
|
## Estrutura do Documento de Regras na Wiki de Desenvolvimento
|
|
|
|
**Localização:** `<base_projeto>/../wiki/dev/<modulo>/` (ex.: `<base_projeto>/../wiki/dev/e-licencie.sigma/regras-negocio/` ou `<base_projeto>/../wiki/dev/e-licencie.sigma/{modulo}.regras-negocio.md`)
|
|
|
|
```markdown
|
|
# Regras de Negócio — [Nome do Módulo / Serviço]
|
|
|
|
Módulo TypeScript: `_arquivo.ts`
|
|
Localização no Código: `caminho/relativo/ao/arquivo`
|
|
|
|
---
|
|
|
|
## Contexto
|
|
Por que este módulo existe, qual problema operacional resolve.
|
|
|
|
## Critérios de Entrada / Identificação
|
|
O que aciona o módulo, quais dados recebe, filtros aplicados.
|
|
|
|
## Regras de Processamento
|
|
As regras numeradas em ordem estrita de avaliação.
|
|
|
|
## Casos de Revisão Manual (quando aplicável)
|
|
Quando o processamento automático não pode prosseguir.
|
|
|
|
## Estratégia de Fusão / Persistência (quando aplicável)
|
|
O que o módulo produz, como campos são combinados ou persistidos.
|
|
|
|
## Dependências Externas
|
|
Tabelas, filas BullMQ, rotas e serviços externos tocados pelo módulo.
|
|
```
|
|
|
|
---
|
|
|
|
## Exemplos
|
|
|
|
✅ **Correto** — referência no topo do módulo apontando para a Wiki de Desenvolvimento:
|
|
```typescript
|
|
// Regras de negócio: ver <base_projeto>/../wiki/dev/e-licencie.sigma/juntar_execucoes.regras-negocio.md
|
|
|
|
import { ... } from "..."
|
|
|
|
/**
|
|
* Consolida execuções de condicionantes com base nas datas de vencimento.
|
|
* Aplicação: Processamento noturno de auditoria e saneamento de agenda.
|
|
*/
|
|
export const compilarJuntarExecucoes = async (...) => {
|
|
// implementação conforme a Wiki de Desenvolvimento
|
|
}
|
|
```
|
|
|
|
❌ **Errado** — regras embutidas no código como comentário gigante ou arquivos soltos fora da wiki:
|
|
```typescript
|
|
/**
|
|
* Regras de negócio:
|
|
* [x] Pode ter apenas uma execução por data de vencimento.
|
|
* [x] Se tiver apenas uma execução consolidada → ela é a principal.
|
|
*/
|
|
```
|
|
|
|
---
|
|
|
|
## Impacto
|
|
|
|
- Centralização de todo o conhecimento técnico e operacional na Wiki de Desenvolvimento.
|
|
- Regras de negócio claras para humanos e IAs sem poluir o código-fonte.
|
|
- Mudanças de regras são auditáveis e versionadas na documentação do repositório.
|
|
|
|
---
|
|
|
|
## Referências
|
|
|
|
- Rule: `rules/ddd-documentacao-primeiro.md`
|
|
- Rule: `rules/jsdoc-padrao.md`
|
|
- Skill: `skills/documentar-regras-negocio/SKILL.md`
|
|
- Workflow: `global/workflows/documentar-regras-negocio.md`
|
|
- Wiki de Desenvolvimento: `<base_projeto>/../wiki/dev/<modulo>/`
|