.
This commit is contained in:
parent
f5abcec365
commit
e7adba8fd8
84 changed files with 4222 additions and 2182 deletions
|
|
@ -1,155 +0,0 @@
|
|||
---
|
||||
type: rule
|
||||
name: consultar-banco-query-ia
|
||||
description: Define como agentes devem consultar o banco de dados via rota dedicada /query-ia — proibindo acesso direto ao banco fora deste protocolo
|
||||
scope: global
|
||||
trigger: context_match
|
||||
priority: alta
|
||||
updatedAt: "2026-07-01"
|
||||
---
|
||||
|
||||
# Regra: Consultar Banco de Dados via `/query-ia`
|
||||
|
||||
## Contexto
|
||||
|
||||
Quando um agente precisa inspecionar dados reais do banco de dados — para diagnóstico, auditoria, validação de registros ou investigação de bugs — existe uma rota dedicada e segura para isso no backend do projeto.
|
||||
|
||||
Essa rota é exclusiva para desenvolvimento e **nunca deve ser usada em produção**. Ela bloqueia automaticamente comandos destrutivos.
|
||||
|
||||
## Rota
|
||||
|
||||
```
|
||||
GET http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia → retorna documentação da rota (texto plano)
|
||||
POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia → executa consulta SQL e retorna JSON
|
||||
```
|
||||
|
||||
> **`<porta-back>` e `<nome_modulo>` são definidos por módulo** — cada módulo do ecossistema usa uma porta e prefixo de rota específicos (ex: `http://127.0.0.1:5360/qualifica/query-ia`). Antes de usar a rota:
|
||||
> - O acesso **GET** retorna a documentação do endpoint.
|
||||
> - O acesso **POST** executa a consulta SQL e retorna os dados em JSON.
|
||||
> - Verificar `package.json` do `*-back` (campo `scripts.dev` ou `scripts.start`) ou o arquivo `.env` do módulo.
|
||||
|
||||
## Como usar
|
||||
|
||||
### Descobrir a porta e consultar a documentação
|
||||
|
||||
```bash
|
||||
# Verificar a porta no package.json do módulo back
|
||||
cat package.json | jq '.scripts.dev'
|
||||
|
||||
# Consultar a documentação da rota (substitua <porta-back> pela porta real)
|
||||
curl http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia
|
||||
```
|
||||
|
||||
### Executar uma consulta SQL
|
||||
|
||||
```bash
|
||||
curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"sql": "SELECT * FROM empresas LIMIT 10",
|
||||
"parametros": []
|
||||
}' | jq .
|
||||
```
|
||||
|
||||
### Consulta com parâmetros (binding seguro)
|
||||
|
||||
```bash
|
||||
curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"sql": "SELECT * FROM avaliacoes WHERE empresa_id = ? AND status = ?",
|
||||
"parametros": ["uuid-da-empresa", "aprovado"]
|
||||
}' | jq .
|
||||
```
|
||||
|
||||
## Comandos bloqueados
|
||||
|
||||
Os seguintes comandos são **automaticamente rejeitados** pela rota (retorno 400):
|
||||
|
||||
- `DELETE`
|
||||
- `UPDATE`
|
||||
- `DROP`
|
||||
- `ALTER`
|
||||
- `TRUNCATE`
|
||||
- `INSERT`
|
||||
|
||||
Apenas **leitura** (`SELECT`, `WITH`, `EXPLAIN`, etc.) é permitida.
|
||||
|
||||
## Retorno
|
||||
|
||||
```json
|
||||
{
|
||||
"rows": [...],
|
||||
"rowCount": 42
|
||||
}
|
||||
```
|
||||
|
||||
Em caso de erro SQL:
|
||||
|
||||
```json
|
||||
{
|
||||
"erro": "mensagem de erro",
|
||||
"stack": "stack trace (apenas em desenvolvimento)"
|
||||
}
|
||||
```
|
||||
|
||||
## Regra
|
||||
|
||||
O agente **DEVE** usar esta rota sempre que precisar de dados reais do banco — diagnóstico, contagem de registros, verificação de estado, auditoria de dados.
|
||||
|
||||
O agente **NUNCA** deve:
|
||||
|
||||
- Tentar acessar o banco diretamente via código (modificar arquivos para adicionar logs de DB)
|
||||
- Inventar dados ou assumir estado sem verificar
|
||||
- Usar esta rota para comandos de escrita — use as APIs REST do módulo para isso
|
||||
|
||||
## Exemplos
|
||||
|
||||
### ✅ Correto — inspecionar registros via query-ia
|
||||
|
||||
```bash
|
||||
curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
||||
-d '{"sql": "SELECT codigo, nome, status FROM empresas ORDER BY criado_em DESC LIMIT 20"}' \
|
||||
-H 'Content-Type: application/json' | jq '.rows'
|
||||
```
|
||||
|
||||
### ✅ Correto — verificar schemas PostgreSQL disponíveis
|
||||
|
||||
```bash
|
||||
curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
||||
-d '{"sql": "SELECT schema_name FROM information_schema.schemata ORDER BY schema_name"}' \
|
||||
-H 'Content-Type: application/json' | jq '.rows'
|
||||
```
|
||||
|
||||
### ✅ Correto — contar registros por inquilino
|
||||
|
||||
```bash
|
||||
curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
||||
-d '{"sql": "SELECT inquilino, COUNT(*) as total FROM empresas GROUP BY inquilino"}' \
|
||||
-H 'Content-Type: application/json' | jq '.rows'
|
||||
```
|
||||
|
||||
### ❌ Errado — tentar escrever via query-ia
|
||||
|
||||
```bash
|
||||
# Será bloqueado com status 400
|
||||
curl -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
||||
-d '{"sql": "UPDATE empresas SET status = ?", "parametros": ["ativo"]}'`
|
||||
```
|
||||
|
||||
### ❌ Errado — modificar código para adicionar log de banco
|
||||
|
||||
```typescript
|
||||
// NÃO fazer isso para "ver os dados" — usar a rota query-ia
|
||||
const debug = await dbKnex('empresas').select('*').limit(10)
|
||||
console.log(debug)
|
||||
```
|
||||
|
||||
## Impacto
|
||||
|
||||
Sem esta regra, agentes podem modificar código de produção apenas para inspecionar dados, ou assumir estados do banco sem verificação — gerando diagnósticos incorretos e alterações desnecessárias.
|
||||
|
||||
## Referências
|
||||
|
||||
- Implementação de referência: `qualifica-back/src/utilitarios-IA/query-ia.ts`
|
||||
- Rule: `global/rules/autonomia-agente` (ações autônomas sem aprovação)
|
||||
|
|
@ -1,7 +1,10 @@
|
|||
---
|
||||
type: rule
|
||||
name: copywriting-landing
|
||||
description: Diretrizes de Copywriting, Design Visual, Formulários, SEO Técnico e CRO para Landing Pages de Alta Conversão
|
||||
scope: [landing-pages, CRO, copywriting, SEO]
|
||||
trigger: model_decision
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Diretrizes de Copywriting, Design e CRO para Landing Pages (@land)
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ type: rule
|
|||
name: css-global-betha
|
||||
description: Define o padrão de CSS global com variáveis --bth-* para todos os frontends do ecossistema GOV (QUIPO-FRONT, QUIPO-PORTAL3, AUTENTICACAO-FRONT, QUIPO-CONSOLE)
|
||||
scope: global
|
||||
trigger: context_match
|
||||
trigger: model_decision
|
||||
priority: alta
|
||||
updatedAt: "2026-07-02"
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: CSS Global Betha — Variáveis `--bth-*`
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ type: rule
|
|||
name: design-patterns-pragmatico
|
||||
description: Aplicar Design Patterns GoF apenas quando há problema concreto que o justifique
|
||||
scope: local
|
||||
trigger: context_match
|
||||
updatedAt: "2026-06-19"
|
||||
trigger: model_decision
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: Design Patterns Pragmático
|
||||
|
|
|
|||
|
|
@ -1,3 +1,12 @@
|
|||
---
|
||||
type: rule
|
||||
name: drive-entidades-internas
|
||||
description: Consultar entidades do e-licencie (empreendedor, empreendimento, usuário) via eLicencieDrive com token interno
|
||||
scope: local
|
||||
trigger: model_decision
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: Consultar Entidades do e-licencie via Drive Interno
|
||||
|
||||
## Contexto
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
---
|
||||
type: rule
|
||||
name: escrita-natural
|
||||
trigger: context_match
|
||||
trigger: model_decision
|
||||
description: Garantir escrita natural, fluida e humana em textos comerciais e de comunicação, evitando linguagem robótica ou excessivamente genérica.
|
||||
scope: global
|
||||
updatedAt: "2026-06-01"
|
||||
updatedAt: "2026-09-28"
|
||||
ativacao: >
|
||||
Aplicar quando o agente estiver produzindo textos comerciais, de marketing,
|
||||
orçamentos, propostas, reels ou qualquer comunicação voltada ao público externo.
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ type: rule
|
|||
name: estilos-design-system
|
||||
description: Define os dois design systems do ecossistema e-licencie — Floreta (iniciativa privada) e Betha (governo) — e quando usar cada um
|
||||
scope: global
|
||||
trigger: always
|
||||
updatedAt: "2026-07-02"
|
||||
trigger: always_on
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: Estilos e Design Systems do Ecossistema
|
||||
|
|
|
|||
|
|
@ -3,10 +3,9 @@ type: rule
|
|||
name: estrutura-vue
|
||||
description: Padrões obrigatórios de estrutura para componentes Vue 3 (defineComponent, setup, CSS, dispatch)
|
||||
scope: local
|
||||
trigger: file_match
|
||||
globs:
|
||||
- "**/*.vue"
|
||||
updatedAt: "2026-06-01"
|
||||
trigger: glob
|
||||
globs: "**/*.vue"
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: Estrutura de Componentes Vue
|
||||
|
|
|
|||
|
|
@ -3,13 +3,9 @@ type: rule
|
|||
name: jsdoc-padrao
|
||||
description: Padrões de documentação em código-fonte (comentários claros e coerentes quanto à aplicação, JSDoc, casts e TODOs).
|
||||
scope: global
|
||||
trigger: file_match
|
||||
globs:
|
||||
- "**/*.ts"
|
||||
- "**/*.tsx"
|
||||
- "**/*.vue"
|
||||
- "**/*.js"
|
||||
updatedAt: "2026-09-01"
|
||||
trigger: glob
|
||||
globs: "**/*.ts, **/*.tsx, **/*.vue, **/*.js"
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: Documentação e Comentários no Código-Fonte
|
||||
|
|
|
|||
|
|
@ -3,13 +3,9 @@ type: rule
|
|||
name: limite-linhas
|
||||
description: Nenhum arquivo de código pode ultrapassar 250 linhas
|
||||
scope: global
|
||||
trigger: file_match
|
||||
globs:
|
||||
- "**/*.ts"
|
||||
- "**/*.tsx"
|
||||
- "**/*.vue"
|
||||
- "**/*.css"
|
||||
updatedAt: "2026-06-01"
|
||||
trigger: glob
|
||||
globs: "**/*.ts, **/*.tsx, **/*.vue, **/*.css"
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: Limite de 250 Linhas por Arquivo
|
||||
|
|
|
|||
|
|
@ -3,12 +3,9 @@ type: rule
|
|||
name: mensagens-usuario
|
||||
description: Toda mensagem visível ao usuário final deve ser escrita em linguagem do domínio, sem termos técnicos de TI
|
||||
scope: global
|
||||
trigger: file_match
|
||||
globs:
|
||||
- "**/*.vue"
|
||||
- "**/*.ts"
|
||||
- "**/*.tsx"
|
||||
updatedAt: "2026-06-01"
|
||||
trigger: glob
|
||||
globs: "**/*.vue, **/*.ts, **/*.tsx"
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: Mensagens Orientadas ao Domínio
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ type: rule
|
|||
name: modal-dialog-padrao-betha
|
||||
description: Define a estrutura obrigatória de modais e dialogs MUI no padrão Betha — header escuro, body branco, footer cinza — para os frontends React do ecossistema GOV
|
||||
scope: global
|
||||
trigger: context_match
|
||||
trigger: model_decision
|
||||
priority: alta
|
||||
updatedAt: "2026-07-02"
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: Padrão Modal/Dialog MUI — Estrutura Betha
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ type: rule
|
|||
name: solid-compliance
|
||||
description: Todo código deve aderir aos 5 princípios SOLID do Refactoring.Guru
|
||||
scope: local
|
||||
trigger: context_match
|
||||
updatedAt: "2026-06-19"
|
||||
trigger: model_decision
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: Conformidade SOLID
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ type: rule
|
|||
name: theme-provider-mui-betha
|
||||
description: Define a arquitetura centralizada do ThemeProvider MUI Betha nos frontends React do ecossistema GOV (AUTENTICACAO-FRONT, QUIPO-FRONT, QUIPO-PORTAL3)
|
||||
scope: global
|
||||
trigger: context_match
|
||||
trigger: model_decision
|
||||
priority: alta
|
||||
updatedAt: "2026-07-02"
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: ThemeProvider MUI Centralizado — Arquitetura Betha
|
||||
|
|
|
|||
|
|
@ -3,10 +3,9 @@ type: rule
|
|||
name: tsconfig-ignore-deprecations
|
||||
description: Workaround obrigatório para tsup v8.5.0 que injeta baseUrl depreciado no TS 6.0
|
||||
scope: global
|
||||
trigger: file_match
|
||||
globs:
|
||||
- "**/tsconfig.json"
|
||||
updatedAt: "2026-07-01"
|
||||
trigger: glob
|
||||
globs: "**/tsconfig*.json"
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: ignoreDeprecations no tsconfig.json
|
||||
|
|
|
|||
|
|
@ -3,11 +3,10 @@ type: rule
|
|||
name: typescript-module-resolution
|
||||
description: Padrão obrigatório de moduleResolution para todos os pacotes do monorepo Azteca
|
||||
scope: global
|
||||
trigger: file_match
|
||||
globs:
|
||||
- "**/tsconfig.json"
|
||||
trigger: glob
|
||||
globs: "**/tsconfig*.json"
|
||||
priority: alta
|
||||
updatedAt: "2026-07-01"
|
||||
updatedAt: "2026-09-28"
|
||||
---
|
||||
|
||||
# Regra: moduleResolution Padrão do Monorepo
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue