chore(agent): remover permissoes de commit da IA no projeto e wiki (apenas sugerir texto) e manter push automatico exclusivo no .agent

This commit is contained in:
Luiz Silva 2026-10-14 17:53:33 -03:00
parent 212d2578f4
commit 26a4f98dab
116 changed files with 1162 additions and 1315 deletions

View file

@ -1,8 +1,17 @@
---
type: rule
name: caminho-arquivos-minio
description: Padronização obrigatória de caminhos de arquivos persistidos no MinIO em quatro segmentos ({inquilino}/{tabela_origem}/{codigo_origem}/{id})
scope: global
trigger: model_decision
updatedAt: "2026-10-14"
---
# Regra: Padronização Obrigatória de Caminhos de Arquivos no MinIO
## Contexto
Todos os arquivos persistidos e referenciados no MinIO dentro do ecossistema GOV/Quipo devem seguir uma estrutura canônica hierárquica e determinística composta por **exatamente quatro segmentos**:
Todos os arquivos persistidos e referenciados no MinIO dentro dos módulos do ecossistema (identificados via `modulo-id` em `memorias-ia/modulo.yml`) devem seguir uma estrutura canônica hierárquica e determinística composta por **exatamente quatro segmentos**:
```
{inquilino}/{tabela_origem}/{codigo_origem}/{id}
@ -14,7 +23,7 @@ Essa padronização evita colisão de arquivos entre inquilinos ou entidades, pe
## 1. Regra de Formato e Validação Canônica
Todo caminho de arquivo enviado para o MinIO deve ser construído via função canônica `caminhoMinio` exportada por `quipo-comuns` e validado por `regexCamninhoMinio`:
Todo caminho de arquivo enviado para o MinIO deve ser construído via função canônica `caminhoMinio` exportada pelo pacote `<modulo>-comuns` (onde `<modulo>` é extraído de `memorias-ia/modulo.yml`) e validado por `regexCamninhoMinio`:
```typescript
/** Valida quatro segmentos e exige extensão no id. */
@ -45,9 +54,9 @@ export const caminhoMinio = ({
```
### Regras dos Quatro Segmentos
1. **`inquilino`**: Identificador do município / tenant (ex.: `padrao-rs`). Não pode conter barras.
1. **`inquilino`**: Identificador do município / cliente / tenant (ex.: `padrao-rs`). Não pode conter barras.
2. **`tabela_origem`**: Nome canônico da tabela no banco de dados (ex.: `tabelas.licenciamentos`, `tabelas.denuncias`, `tabelas.oficios`).
3. **`codigo_origem`**: UUID ou identificador único do registro na tabela de origem (ou identificador de escopo como `sistema` para brasões globais do tenant).
3. **`codigo_origem`**: UUID ou identificador único do registro na tabela de origem (ou identificador de escopo como `sistema` para brasões/ativos globais do tenant).
4. **`id`**: Identificador único do arquivo acompanhado obrigatoriamente de sua extensão (ex.: `01J...pdf`, `brasao.png`, `oficio_123.pdf`).
---
@ -72,7 +81,7 @@ Exemplos de colunas que armazenam o caminho completo:
## 3. Upload e Integração com Plugins MinIO
No backend (`QUIPO-BACK`):
No backend (`<modulo>-back`):
- O plugin `enviarArquivoMiniO` valida o `codigoArquivo` recebido contra `regexCamninhoMinio`.
- Caso `codigoArquivo` já contenha barras, o plugin reconhece que o inquilino já está incorporado no primeiro segmento e faz o upload direto para essa chave, sem duplicar o prefixo do inquilino.
- No download ou cache temporário (`baixarArquivoMiniO`), caso a chave possua barras, o nome do arquivo temporário local em disco deve substituir as barras por underscores (`replace(/\//g, "_")`) para evitar erros de diretórios inexistentes em `/tmp`.
@ -84,13 +93,13 @@ No backend (`QUIPO-BACK`):
No caso de imagens que possuem geração de miniaturas (thumbnails via Sharp):
- A miniatura adiciona o sufixo `_y{tamanho}` **antes da extensão no 4º segmento**:
`{inquilino}/{tabela_origem}/{codigo_origem}/{id_base}_y200.{ext}`
- No frontend, helpers como `urlArquivoBaixar` devem utilizar `lastIndexOf(".")` para formatar a URL da miniatura mantendo a hierarquia intacta.
- No frontend (`<modulo>-front`), helpers como `urlArquivoBaixar` devem utilizar `lastIndexOf(".")` para formatar a URL da miniatura mantendo a hierarquia intacta.
---
## 5. Compatibilidade Legada
O helper `bucket().caminho` em `quipo-comuns` é retrocompatível:
O helper `bucket().caminho` em `<modulo>-comuns` é retrocompatível:
- Se `id` contém barras (`/`), ele já representa o caminho estruturado completo e é retornado sem alteração.
- Se `id` não contém barras, ele trata como registro legado de 1 segmento e compõe `{inquilino}/{id}`.
@ -98,8 +107,8 @@ O helper `bucket().caminho` em `quipo-comuns` é retrocompatível:
## Referências
- `QUIPO-COMUNS/src/minio.ts`
- `QUIPO-BACK/src/plugins/MiniO/enviarArquivoMiniO.ts`
- `QUIPO-BACK/src/plugins/MiniO/baixarArquivoMiniO.ts`
- `QUIPO-FRONT/src/api/recursos/arquivos.ts`
- `QUIPO-PORTAL3/src/utilitarios/arquivos.ts`
- Identidade do Módulo: `memorias-ia/modulo.yml`
- `<modulo>-comuns/src/minio.ts`
- `<modulo>-back/src/plugins/MiniO/enviarArquivoMiniO.ts`
- `<modulo>-back/src/plugins/MiniO/baixarArquivoMiniO.ts`
- `<modulo>-front/src/api/recursos/arquivos.ts`