Padrao de modulos

Todo modulo de negocio que entrar no framework segue o contrato em @govon/module-standard. Ver modules/govon-core/ como referencia.

Modulos registrados

ModuloVersaoEstadoManifestoPagina dedicada
govon-core0.1.0runtimemodules/govon-core/
protocolo0.1.0runtimemodules/protocolo//modulos/protocolo

module.json (obrigatorio)

{
  "name": "protocolo",
  "version": "0.1.0",
  "openapiTag": "protocolo",
  "permissions": [
    "protocolo.criar",
    "protocolo.ler",
    "protocolo.movimentar",
    "protocolo.anexar"
  ],
  "auditableEntities": ["Protocolo", "Movimentacao", "Anexo"],
  "lgpd": {
    "sensitiveFields": [
      { "entity": "Protocolo", "field": "cpfRequerente", "purpose": "identificacao", "retentionDays": 1825 }
    ]
  }
}

Estrutura sugerida

modules/<nome>/
├── module.json                 # contrato (R1)
├── audit.json                  # politica detalhada de auditoria
├── openapi.yaml                # contrato HTTP (R3)
└── README.md

apps/api/src/modules/<nome>/
├── <nome>.module.ts            # NestJS module
├── <nome>.controller.ts        # rotas com @RequirePermission (R5/R7/R21)
├── <nome>.service.ts           # regras (usa @govon/data, sem Prisma direto)
├── <nome>.service.test.ts
└── dto/*.ts                    # zod schemas + @ApiProperty

Checklist obrigatorio antes de mergear

  • module.json valido (validateModule)
  • Toda rota com @RequirePermission('dominio.recurso.acao')
  • Toda rota com @ApiTags/@ApiOperation
  • Entidades novas via Prisma migration
  • Toda entidade nova em auditableEntities
  • Services usam scopedWhere/scopedData (R10)
  • Integracoes externas via BaseConnector (R13/R25)
  • IA via GovernedAI (R12/R26)
  • Campos sensiveis em module.json#lgpd + uso de @govon/mask (R22/R16)
  • Cobertura: pelo menos 1 teste unit por service + 1 E2E happy-path
  • typecheck + lint + test + build verdes