Compare commits
No commits in common. "f91200ed529e0fd382daaa431305f6b9f16a28e5" and "573cfe4742a1950f0673443f3f552ad5f71aaec3" have entirely different histories.
f91200ed52
...
573cfe4742
2 changed files with 12 additions and 52 deletions
|
|
@ -1,39 +0,0 @@
|
||||||
# Registro de Otimizações da Sessão — Aprimoramento da IA
|
|
||||||
|
|
||||||
**Data:** 10/08/2026
|
|
||||||
**Sessão / Contexto:** Resolução de inconsistências de histórico de eventos, consultas SQL de banco e formatação visual no módulo Qualifica (Empresa / Formulários / Avaliação).
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📌 Principais Aprendizados e Regras Consolidadas
|
|
||||||
|
|
||||||
### 1. Escopo e Filtragem de Histórico (Avaliação Pai vs Formulário)
|
|
||||||
- O histórico da **Avaliação Pai** deve exibir estritamente eventos cujo `tabela_origem === 'avaliacoes'`.
|
|
||||||
- O histórico de um **Formulário específico** deve exibir eventos do próprio formulário E de todos os seus campos associados (`ev.codigo_origem === formId || ev.codigo_resposta_formulario === formId`).
|
|
||||||
|
|
||||||
### 2. Esquema do Banco PostgreSQL (`respostas_avaliacao`)
|
|
||||||
- A tabela `respostas_avaliacao` **não possui** a coluna `codigo_resposta_formulario`.
|
|
||||||
- Consultas Knex não devem selecionar nem filtrar diretamente por `codigo_resposta_formulario` nessa tabela (evita erro SQL `42703` `errorMissingColumn`).
|
|
||||||
- O relacionamento entre respostas de campo e formulários deve ser resolvido via `codigo_avaliacao` e mapeado em memória usando a hierarquia de seções/perguntas de `todasPerguntas`.
|
|
||||||
|
|
||||||
### 3. Cores Dinâmicas e Identidade Visual dos Status
|
|
||||||
- Os badges e ícones de status em linhas do tempo devem consumir as propriedades de cores dinâmicas (`cor`, `textoCor`, `corVuetify`) exportadas por `qualifica-comuns` (`statusFormularioDetalhes`, `statusAvaliacaoMacroDetalhes`, `classificacaoRespostaDetalhes`).
|
|
||||||
- Cores estáticas ou *hardcoded* (como fundo azul fixo `#EBF8FF` ou verde fallback `#688C00`) são proibidas para status com cores do domínio.
|
|
||||||
|
|
||||||
### 4. Formatação de Textos de Eventos (Quebras de Linha e Nomes)
|
|
||||||
- Textos de descrição e justificativa em cartões e timelines de eventos devem conter explicitamente as regras CSS:
|
|
||||||
`white-space: pre-wrap; word-break: break-word; line-height: 1.5;`
|
|
||||||
- Nomes de autores devem ser sanitizados para remover marcas repetidas (ex: `(Sistema)` prefixado indevidamente).
|
|
||||||
|
|
||||||
### 5. Botão de Histórico Universal por Campo
|
|
||||||
- O componente `CampoRespostaBase.vue` (invocado por todos os tipos de entrada de campo) contém um botão universal `<History />` com tooltip `"Ver histórico do campo"`.
|
|
||||||
- O modal `ModalHistoricoEventos.vue` aceita `:eventos-direct` para renderizar o histórico diretamente da memória do componente quando pre-carregado.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔍 Checklist de Verificação de Artefatos
|
|
||||||
|
|
||||||
- [x] Artefatos dependentes revisados
|
|
||||||
- [x] Nenhuma regra ficou implícita
|
|
||||||
- [x] Referências cruzadas e linters validados (`pnpm run biome`, `tsc --noEmit`)
|
|
||||||
- [x] Nomes de funções e variáveis mantidos conforme contratos
|
|
||||||
|
|
@ -19,14 +19,13 @@ Essa rota é exclusiva para desenvolvimento e **nunca deve ser usada em produç
|
||||||
## Rota
|
## Rota
|
||||||
|
|
||||||
```
|
```
|
||||||
GET http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia → retorna documentação da rota (texto plano)
|
GET http://127.0.0.1:<porta-back>/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
|
POST http://127.0.0.1:<porta-back>/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:5260/qualifica/query-ia`). Antes de usar a rota:
|
> **`<porta-back>` é subjetiva** — cada módulo do ecossistema usa uma porta diferente. Antes de usar a rota, descobrir a porta correta do projeto atual:
|
||||||
> - O acesso **GET** retorna a documentação do endpoint.
|
> - Verificar `package.json` do `*-back` (campo `scripts.dev` ou `scripts.start`)
|
||||||
> - O acesso **POST** executa a consulta SQL e retorna os dados em JSON.
|
> - Ou verificar a variável `PORT` no `.env` do módulo
|
||||||
> - Verificar `package.json` do `*-back` (campo `scripts.dev` ou `scripts.start`) ou o arquivo `.env` do módulo.
|
|
||||||
|
|
||||||
## Como usar
|
## Como usar
|
||||||
|
|
||||||
|
|
@ -37,13 +36,13 @@ POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia → executa consulta
|
||||||
cat package.json | jq '.scripts.dev'
|
cat package.json | jq '.scripts.dev'
|
||||||
|
|
||||||
# Consultar a documentação da rota (substitua <porta-back> pela porta real)
|
# Consultar a documentação da rota (substitua <porta-back> pela porta real)
|
||||||
curl http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia
|
curl http://127.0.0.1:<porta-back>/query-ia
|
||||||
```
|
```
|
||||||
|
|
||||||
### Executar uma consulta SQL
|
### Executar uma consulta SQL
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
curl -s -X POST http://127.0.0.1:<porta-back>/query-ia \
|
||||||
-H 'Content-Type: application/json' \
|
-H 'Content-Type: application/json' \
|
||||||
-d '{
|
-d '{
|
||||||
"sql": "SELECT * FROM empresas LIMIT 10",
|
"sql": "SELECT * FROM empresas LIMIT 10",
|
||||||
|
|
@ -54,7 +53,7 @@ curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
||||||
### Consulta com parâmetros (binding seguro)
|
### Consulta com parâmetros (binding seguro)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
curl -s -X POST http://127.0.0.1:<porta-back>/query-ia \
|
||||||
-H 'Content-Type: application/json' \
|
-H 'Content-Type: application/json' \
|
||||||
-d '{
|
-d '{
|
||||||
"sql": "SELECT * FROM avaliacoes WHERE empresa_id = ? AND status = ?",
|
"sql": "SELECT * FROM avaliacoes WHERE empresa_id = ? AND status = ?",
|
||||||
|
|
@ -108,7 +107,7 @@ O agente **NUNCA** deve:
|
||||||
### ✅ Correto — inspecionar registros via query-ia
|
### ✅ Correto — inspecionar registros via query-ia
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
curl -s -X POST http://127.0.0.1:<porta-back>/query-ia \
|
||||||
-d '{"sql": "SELECT codigo, nome, status FROM empresas ORDER BY criado_em DESC LIMIT 20"}' \
|
-d '{"sql": "SELECT codigo, nome, status FROM empresas ORDER BY criado_em DESC LIMIT 20"}' \
|
||||||
-H 'Content-Type: application/json' | jq '.rows'
|
-H 'Content-Type: application/json' | jq '.rows'
|
||||||
```
|
```
|
||||||
|
|
@ -116,7 +115,7 @@ curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
||||||
### ✅ Correto — verificar schemas PostgreSQL disponíveis
|
### ✅ Correto — verificar schemas PostgreSQL disponíveis
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
curl -s -X POST http://127.0.0.1:<porta-back>/query-ia \
|
||||||
-d '{"sql": "SELECT schema_name FROM information_schema.schemata ORDER BY schema_name"}' \
|
-d '{"sql": "SELECT schema_name FROM information_schema.schemata ORDER BY schema_name"}' \
|
||||||
-H 'Content-Type: application/json' | jq '.rows'
|
-H 'Content-Type: application/json' | jq '.rows'
|
||||||
```
|
```
|
||||||
|
|
@ -124,7 +123,7 @@ curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
||||||
### ✅ Correto — contar registros por inquilino
|
### ✅ Correto — contar registros por inquilino
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
curl -s -X POST http://127.0.0.1:<porta-back>/query-ia \
|
||||||
-d '{"sql": "SELECT inquilino, COUNT(*) as total FROM empresas GROUP BY inquilino"}' \
|
-d '{"sql": "SELECT inquilino, COUNT(*) as total FROM empresas GROUP BY inquilino"}' \
|
||||||
-H 'Content-Type: application/json' | jq '.rows'
|
-H 'Content-Type: application/json' | jq '.rows'
|
||||||
```
|
```
|
||||||
|
|
@ -133,7 +132,7 @@ curl -s -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Será bloqueado com status 400
|
# Será bloqueado com status 400
|
||||||
curl -X POST http://127.0.0.1:<porta-back>/<nome_modulo>/query-ia \
|
curl -X POST http://127.0.0.1:<porta-back>/query-ia \
|
||||||
-d '{"sql": "UPDATE empresas SET status = ?", "parametros": ["ativo"]}'`
|
-d '{"sql": "UPDATE empresas SET status = ?", "parametros": ["ativo"]}'`
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue