Files
dbmaker/instrucoes/databook-manager-v2-completo-revisado.md

1539 lines
67 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 📘 DATABOOK MANAGER PRO - SISTEMA COMPLETO REVISADO
**Projeto:** Sistema Inteligente de Gestão de Databooks com IA e Gerenciamento Automático de Documentos
**Plataforma:** No-Code (Supabase + WeWeb/Bubble) + IA (LLM para auto-indexação)
**Banco de Dados:** Supabase (PostgreSQL)
**IA Integration:** OpenAI/Claude para extração e organização de documentos
**PDF Export:** Consultável com Full-Text Search
**Data:** 13 de novembro de 2025
**Versão:** 2.0 - COM TODAS AS FUNCIONALIDADES SOLICITADAS
---
## 📑 ÍNDICE
1. [Resumo Executivo - Novas Funcionalidades](#resumo-executivo---novas-funcionalidades)
2. [Fluxo Principal de Uso (A até D)](#fluxo-principal-de-uso-a-até-d)
3. [Banco de Dados Expandido](#banco-de-dados-expandido)
4. [Módulo A: Criação de Templates com CRUD](#módulo-a-criação-de-templates-com-crud)
5. [Módulo B: Dados Mestres e Capa Personalizável](#módulo-b-dados-mestres-e-capa-personalizável)
6. [Módulo C: Configurações e Gerenciamento de Pastas](#módulo-c-configurações-e-gerenciamento-de-pastas)
7. [Módulo D: Pré-visualização e Montagem com IA](#módulo-d-pré-visualização-e-montagem-com-ia)
8. [Integração com IA (LLM)](#integração-com-ia-llm)
9. [Estrutura de Pastas Recomendada](#estrutura-de-pastas-recomendada)
10. [Fluxo de Processamento de Documentos](#fluxo-de-processamento-de-documentos)
---
## RESUMO EXECUTIVO - NOVAS FUNCIONALIDADES
### ✅ O QUE MUDOU:
**ANTES (v1.0):**
- ❌ Usuário faz upload manual de documentos
- ❌ Sem previsualizações
- ❌ Sem integração IA
**AGORA (v2.0):**
-**MÓDULO A:** Template builder interativo com CRUD completo
-**MÓDULO B:** Dados mestres personalizáveis (capa, logo, marca d'água)
-**MÓDULO C:** Configurações avançadas com pastas locais + IA
-**MÓDULO D:** Pré-visualização de databook + montagem automática com IA
-**IA:** Lê pastas, indexa, ordena, armazena no BD automaticamente
### 🎯 FLUXO NOVO:
```
┌─────────────────────────────────────────────────────────────┐
│ NOVO FLUXO DATABOOK MANAGER V2.0 │
├─────────────────────────────────────────────────────────────┤
│ │
│ A) CRIAR TEMPLATE COM CRUD │
│ └─ Usuário escolhe tópicos de lista completa │
│ └─ Cria novo template ou cria variação de existente │
│ └─ Salva como template (Create, Read, Update, Delete) │
│ │
│ B) CONFIGURAR DADOS MESTRES │
│ └─ Dados cliente + produto (personalizável) │
│ └─ Capa com logo, marca d'água (95% transp) │
│ └─ Controle de revisão │
│ │
│ C) CONFIGURAR PASTAS E AUTOMAÇÃO │
│ └─ Mapear pastas locais de documentos │
│ └─ Configurar IA para auto-extrair e indexar │
│ └─ Definir permissões usuários │
│ └─ Ver logs de processamento │
│ │
│ D) PRÉ-VISUALIZAR E FINALIZAR │
│ └─ Ver preview do databook em construção │
│ └─ IA auto-monta a estrutura │
│ └─ Solicitarerror final → PDF consultável │
│ │
└─────────────────────────────────────────────────────────────┘
```
---
## FLUXO PRINCIPAL DE USO (A ATÉ D)
### MÓDULO A: CRIAR TEMPLATE COM CRUD
```
PASSO 1: ACESSAR "TEMPLATES"
├─ Usuário clica em "Gerenciar Templates"
├─ Tela exibe lista de templates existentes
└─ Botão: "Criar Novo Template"
PASSO 2: CRIAR NOVO TEMPLATE
├─ Dialog: "Novo Template"
├─ Campo 1: Nome template (ex: "Padrão Galpão Civil")
├─ Campo 2: Tipo (Novo / Derivado de template existente)
│ SE "Derivado":
│ └─ Dropdown seleciona template base
│ └─ Clona estrutura (herança)
├─ Próximo: Selecionar tópicos
PASSO 3: SELECIONAR TÓPICOS (CHECKBOX LIST)
├─ Exibir TODAS as 28 subseções disponíveis em 3 colunas
├─ Cada tópico com checkbox + descrição
├─ Exemplo:
│ ☐ 1. Atestado de Conformidade
│ ☑ 2.1 Desenhos de Fabricação
│ ☑ 3.1 PIT
│ ☐ 3.2 Mapeamento Soldas
│ ☑ 5.1 Metais de Base
│ ☐ 5.2.1 Solda
│ └─ ... todas as 28 opções
├─ Botão: "Selecionar Tudo"
├─ Botão: "Desselecionar Tudo"
├─ Botão: "Pré-definidos"
│ ├─ "Padrão Completo" (todas)
│ ├─ "Padrão Mínimo" (apenas obrigatórias)
│ ├─ "Offshore" (crítica)
│ └─ "Civil Simples" (reduzida)
PASSO 4: REVISAR E SALVAR
├─ Exibe resumo:
│ ├─ Nome: Padrão Galpão Civil
│ ├─ Total seções: 18 de 28
│ ├─ Seções obrigatórias: 9
│ └─ Tipo: Novo
├─ Botão: "Salvar Template"
└─ Sistema cria registro em BD
PASSO 5: TEMPLATES EM USO (CRUD)
├─ Cada template exibe:
│ ├─ Nome
│ ├─ Total seções
│ ├─ Criado em (data)
│ ├─ Ações: [Ver] [Editar] [Duplicar] [Deletar]
├─ [Ver] → Visualiza tópicos selecionados
├─ [Editar] → Modifica tópicos + salva
├─ [Duplicar] → Cria cópia (base para novo)
└─ [Deletar] → Remove (com confirmação)
RESULTADO: Template armazenado no BD
└─ Está pronto para ser usado na criação de novo databook
```
### MÓDULO B: DADOS MESTRES E CAPA PERSONALIZÁVEL
```
PASSO 1: ACESSAR "NOVO DATABOOK"
├─ Dashboard > "Criar Novo Databook"
├─ Seleciona Cliente (dropdown)
├─ Seleciona Template (dropdown)
└─ Próximo: Dados Mestres
PASSO 2: PREENCHER DADOS MESTRES
├─ SEÇÃO: CLIENTE
│ ├─ Nome cliente: [texto]
│ ├─ Contato: [texto]
│ ├─ Email: [texto]
│ └─ Telefone: [texto]
├─ SEÇÃO: PRODUTO
│ ├─ Nome produto: [texto]
│ ├─ Tipo estrutura: [dropdown: offshore/galpão/edificio/ponte]
│ ├─ Descrição: [textarea]
│ └─ Normas aplicáveis: [multi-select]
├─ SEÇÃO: IDENTIFICAÇÃO
│ ├─ Número projeto: [auto-gerado ou manual]
│ ├─ Ordem compra: [texto]
│ ├─ Data início: [data picker]
│ ├─ Data entrega prevista: [data picker]
│ └─ Responsável: [dropdown usuários]
├─ SEÇÃO: CONTROLE DE REVISÃO
│ ├─ Revisão atual: [Rev. 0]
│ ├─ Data revisão: [auto-preenchido com hoje]
│ ├─ Autor revisão: [auto-preenchido usuário logado]
│ └─ Motivo alteração: [textarea - opcional]
└─ [Próximo] → Configurar Capa
PASSO 3: CUSTOMIZAR CAPA DO DATABOOK
├─ SEÇÃO: LOGO E BRANDING
│ ├─ Upload Logo empresa: [drag-drop]
│ │ └─ Preview: 200×200px
│ ├─ Upload Logo cliente (opcional): [drag-drop]
│ ├─ Marca d'água (95% transparência): [upload]
│ │ └─ Preview: em fundo de página
│ ├─ Cor primária: [color picker]
│ └─ Cor secundária: [color picker]
├─ SEÇÃO: TEXTOS DA CAPA
│ ├─ Título principal: [textfield]
│ │ └─ Preview: "DATABOOK - ESTRUTURA METÁLICA"
│ ├─ Subtítulo: [textfield]
│ ├─ Nome cliente: [auto-preenchido]
│ ├─ Nome projeto: [auto-preenchido]
│ ├─ Número projeto: [auto-preenchido]
│ ├─ Data documento: [data picker]
│ └─ Rodapé capa: [textarea]
├─ SEÇÃO: FORMATAÇÃO GERAL
│ ├─ Tamanho página: [Radio: A4 / Letter]
│ ├─ Orientação: [Radio: Retrato / Paisagem]
│ ├─ Margem superior: [spinner: mm]
│ ├─ Margem lateral: [spinner: mm]
│ ├─ Incluir marcas d'água em todas páginas: [checkbox]
│ └─ Incluir número página + rodapé: [checkbox]
└─ [PREVIEW CAPA] → Abre modal com preview realista
├─ Mostra como ficará a capa
├─ Permite ajustes rápidos
└─ Volta para edição
PASSO 4: SALVAR DADOS MESTRES
├─ Sistema salva em tabela "databooks_mestres"
├─ Atribui ID único ao databook
└─ Próximo: Configurar Pastas
```
### MÓDULO C: CONFIGURAÇÕES E GERENCIAMENTO DE PASTAS
```
PASSO 1: ACESSAR "CONFIGURAÇÕES"
├─ Menu principal > "Configurações"
├─ Tabs:
│ ├─ [Gerais]
│ ├─ [Pastas e Documentos]
│ ├─ [Usuários e Permissões]
│ ├─ [Logs e Auditoria]
│ └─ [Integrações IA]
PASSO 2: TAB "PASTAS E DOCUMENTOS"
├─ SEÇÃO: MAPEAMENTO DE PASTAS LOCAIS
│ ├─ Titulo: "Configure as pastas onde seus documentos estão"
│ ├─ Descrição: "A IA vai varrer essas pastas e indexar automaticamente"
│ │
│ ├─ Tabela de mapeamento:
│ │ ┌────────────────────────────────────────┐
│ │ │ Tipo Documento │ Caminho Local │ Ações │
│ │ ├────────────────────────────────────────┤
│ │ │ Certificados │ [/certificados] │ ✎ ✕ │
│ │ │ └─ Solda │ [/cert/solda] │ ✎ ✕ │
│ │ │ └─ Metais │ [/cert/metais] │ ✎ ✕ │
│ │ │ Desenhos │ [/desenhos] │ ✎ ✕ │
│ │ │ Relatórios │ [/relatorios] │ ✎ ✕ │
│ │ │ Fotos │ [/fotos] │ ✎ ✕ │
│ │ │ Procedimentos │ [/procedimentos] │ ✎ ✕ │
│ │ │ EPS │ [/eps] │ ✎ ✕ │
│ │ └────────────────────────────────────────┘
│ │
│ ├─ [Adicionar Novo Mapeamento]
│ │ ├─ Dialog: "Novo Mapeamento"
│ │ ├─ Campo: Tipo documento [dropdown]
│ │ ├─ Campo: Caminho local [file picker ou texto]
│ │ └─ Botão: Salvar
│ │
│ ├─ [Editar] - Icon ✎
│ │ └─ Edita caminho, salva
│ │
│ └─ [Deletar] - Icon ✕
│ └─ Remove mapeamento (com confirmação)
├─ SEÇÃO: AUTOMAÇÃO COM IA
│ ├─ Checkbox: "Habilitar varredura automática"
│ ├─ Frequency: [Dropdown: Sempre que criar databook / Diário / Semanal]
│ ├─ LLM Provider: [Dropdown: OpenAI / Claude / Gemini]
│ ├─ API Key: [password field] (máscarado)
│ ├─ Botão: "Testar Conexão" → Status indicador
│ │
│ └─ Advanced:
│ ├─ Incluir subpastas: [checkbox]
│ ├─ Formatos aceitos: [txt multiselect: pdf, jpg, png, xlsx, docx]
│ └─ Tamanho máximo arquivo: [spinner: MB]
└─ SEÇÃO: FILTROS IA
├─ Labels/Tags para IA considerar: [multi-tag input]
│ └─ Exemplo: "solda", "aws", "qualidade", "crítica"
├─ Excluir arquivos com keywords: [multi-tag input]
│ └─ Exemplo: "rascunho", "draft", "teste"
└─ Ordem documentos dentro seção: [Radio: Data / Nome / Relevância]
PASSO 3: TAB "USUÁRIOS E PERMISSÕES"
├─ Tabela de usuários:
│ ┌─────────────────────────────────────────────────┐
│ │ Usuário │ Email │ Perfil │ Status │
│ ├─────────────────────────────────────────────────┤
│ │ João Silva │ joao@... │ Admin │ Ativo │
│ │ Maria Santos │ maria@... │ Editor │ Ativo │
│ │ José Costa │ jose@... │ Visualizar │ Inativo│
│ └─────────────────────────────────────────────────┘
├─ Perfis disponíveis:
│ ├─ Admin: Acesso total + configurações
│ ├─ Editor: Criar, editar, visualizar
│ ├─ Visualizador: Apenas ler e download
│ └─ Cliente: Apenas PDFs finalizados
├─ [Adicionar Usuário]
│ ├─ Email: [texto]
│ ├─ Nome: [texto]
│ ├─ Perfil: [dropdown]
│ └─ [Convidar]
├─ [Editar] - Alterar perfil
└─ [Deletar] - Remover acesso
PASSO 4: TAB "LOGS E AUDITORIA"
├─ Tabela de logs:
│ ┌──────────────────────────────────────────────────┐
│ │ Data/Hora │ Usuário │ Ação │ Status │
│ ├──────────────────────────────────────────────────┤
│ │ 13/11 10:30│ João Silva │ Upload doc │ ✓OK │
│ │ 13/11 10:25│ Maria Santos │ Gerar PDF │ ✓OK │
│ │ 13/11 10:15│ IA System │ Index docs │ ✓OK │
│ │ 13/11 10:10│ José Costa │ Preview DB │ ✓OK │
│ │ 13/11 09:45│ IA System │ Varrer pas.│ ✓OK │
│ └──────────────────────────────────────────────────┘
├─ Filtros:
│ ├─ Data range: [date picker from/to]
│ ├─ Usuário: [multi-select]
│ ├─ Ação: [multi-select: upload, delete, gerar, preview]
│ └─ Status: [Radio: Tudo / OK / Erro]
└─ [Exportar Log] → CSV/Excel
PASSO 5: TAB "INTEGRAÇÕES IA"
├─ SEÇÃO: OPENAI
│ ├─ Status: [Green: Conectado / Red: Desconectado]
│ ├─ API Key: [password field]
│ ├─ Modelo padrão: [Dropdown: GPT-4 / GPT-3.5]
│ ├─ Máximo tokens: [spinner]
│ └─ [Testar] → Envia teste
├─ SEÇÃO: ANTHROPIC CLAUDE
│ ├─ Status: [indicador]
│ ├─ API Key: [password field]
│ └─ [Testar]
└─ SEÇÃO: GOOGLE GEMINI
├─ Status: [indicador]
├─ API Key: [password field]
└─ [Testar]
RESULTADO: Configurações salvas no BD
└─ App pronto para processar documentos com IA
```
### MÓDULO D: PRÉ-VISUALIZAÇÃO E MONTAGEM COM IA
```
PASSO 1: INICIAR PROCESSAMENTO DE DOCUMENTOS
├─ Ao criar databook com template selecionado
├─ Sistema oferece opção:
│ ├─ [Processar Documentos com IA]
│ └─ [Pular por enquanto]
├─ Se [Processar]:
│ ├─ Sistema verifica mapeamento de pastas
│ ├─ IA é acionada (OpenAI/Claude/Gemini)
│ ├─ Barra de progresso:
│ │ ├─ "Varrendo pastas..."
│ │ ├─ "Analisando {N} documentos..."
│ │ ├─ "Indexando conteúdo..."
│ │ └─ "Montando estrutura..."
│ └─ Timer: Processamento leva 30s-5min (conforme volume)
PASSO 2: O QUE A IA FAZ
├─ 1. LER PASTAS MAPEADAS
│ └─ "Varre /certificados, /desenhos, /relatorios"
├─ 2. EXTRAIR INFORMAÇÕES DOS DOCUMENTOS
│ ├─ PDF: OCR + extração de texto
│ ├─ Excel: Leitura de tabelas
│ ├─ Imagens: Reconhecimento de conteúdo
│ └─ Gera: Título, Número doc, Data, Tags
├─ 3. CATEGORIZAR E INDEXAR
│ ├─ Identifica qual seção do template pertence
│ ├─ Exemplo:
│ │ ├─ "Certificado_AWS_soldador.pdf" → Seção 5.7
│ │ ├─ "Drawing_Rev2.dwg" → Seção 2.1
│ │ └─ "Relatorio_Visual_Final.pdf" → Seção 8.1
│ └─ Cria tags automáticas (AWS, solda, qualidade)
├─ 4. ORDENAR DOCUMENTOS
│ └─ Dentro cada seção:
│ ├─ Por data (mais recente primeiro)
│ ├─ Por relevância (hits da busca)
│ └─ Por nome/número (alfabético)
├─ 5. ARMAZENAR NO BANCO DE DADOS
│ ├─ Insert em tabela "documentos_auto_indexados"
│ ├─ Campos: ID, seção, título, arquivo_url, tags, etc
│ └─ Log: Salva resultado em "log_processamento_ia"
└─ 6. RETORNAR STATUS
└─ "{120} documentos indexados com sucesso!"
PASSO 3: VISUALIZAR PRÉ-VISUALIZAÇÃO
├─ Tela: "Pré-visualização do Databook"
├─ Layout: Sidebar + Main Area
├─ SIDEBAR ESQUERDA (ÍNDICE):
│ ├─ Mostra estrutura de seções
│ ├─ Cada seção:
│ │ ├─ ✓ Seção 1: Atestado (1 doc)
│ │ ├─ ✓ Seção 2.1: Desenhos (5 docs)
│ │ ├─ ⚠ Seção 3.1: PIT (0 docs - FALTANDO)
│ │ ├─ ✓ Seção 5.1: Metais (8 docs)
│ │ └─ ... continua
│ ├─ Indicadores:
│ │ ├─ ✓ = Completo
│ │ ├─ ⚠ = Incompleto (faltam docs)
│ │ └─ ○ = N/A (não aplicável)
│ └─ [Expandir] [Colapsar]
├─ MAIN AREA (VISUALIZAÇÃO):
│ ├─ Preview visual do databook em construção
│ ├─ Mostra:
│ │ ├─ Capa (com logo, cores, marca d'água)
│ │ ├─ Índice automático
│ │ ├─ Primeira página de cada seção
│ │ ├─ Thumbnails dos documentos
│ │ └─ Rodapés
│ │
│ ├─ Scroll para navegar
│ └─ Zoom: [Dropdown: 50% / 75% / 100% / 150%]
├─ PAINEL DIREITO (INFORMAÇÕES):
│ ├─ Status Geral:
│ │ ├─ Total seções: 28
│ │ ├─ Completas: 18
│ │ ├─ Faltando: 3
│ │ ├─ N/A: 7
│ │ ├─ Progresso: 86%
│ │ └─ Progresso bar visual
│ │
│ ├─ Documentos por Seção:
│ │ ├─ Seção 5.1 (Metais): 8 documentos
│ │ │ ├─ ✓ Certificado_ASTM_Chapa_1.pdf
│ │ │ ├─ ✓ Certificado_ASTM_Chapa_2.pdf
│ │ │ └─ ... (expandir/colapsar)
│ │ │
│ │ ├─ Seção 2.1 (Desenhos): 5 documentos
│ │ └─ ... continua
│ │
│ └─ Ações sobre documento:
│ ├─ [📁] Visualizar
│ ├─ [↓] Download
│ ├─ [✎] Editar info
│ ├─ [↕] Mover para outra seção
│ └─ [✕] Remover
├─ BARRA INFERIOR (AÇÕES):
│ ├─ [⚠️ Verificar Faltantes] → Lista docs faltando
│ ├─ [🔄 Re-processar] → Roda IA novamente
│ ├─ [📄 Preview PDF] → Abre PDF renderizado
│ ├─ [💾 Salvar Rascunho] → Salva estado atual
│ ├─ [✓ Finalizar] → Cria PDF final
│ └─ [✕ Cancelar] → Volta ao dashboard
PASSO 4: VERIFICAR FALTANTES
├─ Dialog: "Documentos Faltando"
├─ Tabela:
│ ┌────────────────────────────┐
│ │ Seção │ Status │
│ ├────────────────────────────┤
│ │ 3.1 PIT │ Faltando │
│ │ 7.2 Ultrassom │ Faltando │
│ │ 8.6 Pintura │ Faltando │
│ └────────────────────────────┘
├─ Opção 1: [Não Aplicável] → marca seção como N/A
├─ Opção 2: [Procurar em Pastas] → IA varrer novamente
├─ Opção 3: [Upload Manual] → faz upload direto
└─ Opção 4: [Ignorar] → continua mesmo assim
PASSO 5: FINALIZAR E GERAR PDF
├─ Ao clicar [✓ Finalizar]:
│ ├─ Sistema valida:
│ │ ├─ Todas seções obrigatórias têm docs?
│ │ ├─ Capa foi customizada?
│ │ └─ Dados mestres foram preenchidos?
│ │
│ ├─ Se OK:
│ │ ├─ Monta PDF estruturado
│ │ ├─ Aplica OCR para busca
│ │ ├─ Salva no Storage
│ │ ├─ Registra no BD como "finalizado"
│ │ └─ Oferece opções:
│ │ ├─ [⬇️ Download] → Baixa PDF
│ │ ├─ [🔗 Compartilhar] → Gera link com vencimento
│ │ ├─ [📧 Enviar Email] → Envia para cliente
│ │ └─ [📊 Ver Relatório] → Estatísticas
│ │
│ └─ Se ERRO:
│ └─ Exibe mensagem clara + sugestões
└─ Status: "Databook finalizado com sucesso!"
RESULTADO: PDF consultável gerado e pronto!
```
---
## BANCO DE DADOS EXPANDIDO
### Novas Tabelas (Adições à v1.0)
```sql
-- ============================================
-- TABELA: TEMPLATES_TOPICOS (Disponíveis)
-- ============================================
CREATE TABLE templates_topicos (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
numero_topico VARCHAR(20) NOT NULL, -- "1", "2.1", "5.2.1"
titulo VARCHAR(255) NOT NULL,
descricao TEXT,
obrigatorio BOOLEAN DEFAULT FALSE,
ordem INTEGER,
tipo_documentos TEXT[], -- Array de tipos: pdf, dwg, etc
tags_padrao TEXT[], -- Tags sugeridas
categoria VARCHAR(100), -- "atestado", "engenharia", "qualidade", etc
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_topicos_numero ON templates_topicos(numero_topico);
CREATE INDEX idx_topicos_categoria ON templates_topicos(categoria);
-- ============================================
-- TABELA: TEMPLATES_CUSTOMIZADOS (CRUD)
-- ============================================
CREATE TABLE templates_customizados (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
nome VARCHAR(255) NOT NULL UNIQUE,
tipo VARCHAR(50) CHECK (tipo IN ('novo', 'derivado')) DEFAULT 'novo',
template_pai_id UUID REFERENCES templates_customizados(id) ON DELETE SET NULL, -- Se derivado
topicos_selecionados UUID[], -- Array de IDs de templates_topicos
total_topicos INTEGER,
total_obrigatorios INTEGER,
descricao TEXT,
ativo BOOLEAN DEFAULT TRUE,
criado_por UUID REFERENCES usuarios(id),
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_templates_nome ON templates_customizados(nome);
CREATE INDEX idx_templates_tipo ON templates_customizados(tipo);
CREATE INDEX idx_templates_pai ON templates_customizados(template_pai_id);
-- ============================================
-- TABELA: DATABOOKS_MESTRES (Dados Personalizáveis)
-- ============================================
CREATE TABLE databooks_mestres (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
projeto_id UUID NOT NULL REFERENCES projetos(id) ON DELETE CASCADE,
-- CLIENTE
cliente_nome VARCHAR(255),
cliente_contato VARCHAR(255),
cliente_email VARCHAR(255),
cliente_telefone VARCHAR(20),
-- PRODUTO
produto_nome VARCHAR(255) NOT NULL,
produto_tipo VARCHAR(100), -- offshore, galpao, edificio, ponte
produto_descricao TEXT,
produto_normas TEXT[], -- Array de normas
-- IDENTIFICAÇÃO
numero_projeto VARCHAR(100),
ordem_compra VARCHAR(100),
data_inicio DATE,
data_entrega_prevista DATE,
responsavel_id UUID,
-- CONTROLE REVISÃO
revisao_numero VARCHAR(20) DEFAULT 'Rev. 0',
revisao_data TIMESTAMP DEFAULT NOW(),
revisao_autor_id UUID,
revisao_motivo TEXT,
-- BRANDING/CAPA
logo_empresa_url TEXT, -- URL do logo armazenado
logo_cliente_url TEXT, -- URL do logo cliente
marca_agua_url TEXT, -- URL da marca d'água
cor_primaria VARCHAR(7), -- Hex color: #FFFFFF
cor_secundaria VARCHAR(7),
-- TEXTOS CAPA
titulo_principal VARCHAR(255),
subtitulo VARCHAR(255),
texto_rodape_capa TEXT,
-- FORMATAÇÃO
tamanho_pagina VARCHAR(20) CHECK (tamanho_pagina IN ('A4', 'Letter')) DEFAULT 'A4',
orientacao VARCHAR(20) CHECK (orientacao IN ('retrato', 'paisagem')) DEFAULT 'retrato',
margem_superior_mm NUMERIC(5,2) DEFAULT 20,
margem_lateral_mm NUMERIC(5,2) DEFAULT 20,
incluir_marca_agua BOOLEAN DEFAULT TRUE,
incluir_numero_pagina BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_mestres_projeto ON databooks_mestres(projeto_id);
-- ============================================
-- TABELA: CONFIGURACOES_PASTAS (Mapeamento)
-- ============================================
CREATE TABLE configuracoes_pastas (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
-- MAPEAMENTO
tipo_documento VARCHAR(100) NOT NULL, -- "certificados", "desenhos", etc
caminho_local TEXT NOT NULL, -- "/certificados" ou "C:\Dados\Certs"
caminho_subtipo VARCHAR(100), -- "solda", "metais" (opcional)
caminho_completo TEXT, -- Concatenado: /certificados/solda
-- IA AUTOMATION
habilitado BOOLEAN DEFAULT TRUE,
frequencia_atualizacao VARCHAR(50) CHECK (frequencia_atualizacao IN ('manual', 'ao_criar', 'diario', 'semanal')) DEFAULT 'ao_criar',
ultima_atualizacao TIMESTAMP,
-- FILTROS
incluir_subpastas BOOLEAN DEFAULT TRUE,
formatos_aceitos TEXT[], -- Array: pdf, jpg, png, xlsx, docx
tamanho_maximo_mb INTEGER DEFAULT 50,
-- TAGS E KEYWORDS
tags_obrigatorias TEXT[], -- Tags que IA deve procurar
palavras_chave_filtro TEXT[], -- Keywords para identificar docs
palavras_chave_excluir TEXT[], -- Palavras que indicam descartar
-- ORDENAÇÃO
ordem_docs VARCHAR(50) CHECK (ordem_docs IN ('data', 'nome', 'relevancia')) DEFAULT 'data',
-- AUDITORIA
criado_por UUID REFERENCES usuarios(id),
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_pastas_tipo ON configuracoes_pastas(tipo_documento);
CREATE INDEX idx_pastas_habilitado ON configuracoes_pastas(habilitado);
-- ============================================
-- TABELA: INTEGRACAO_IA (Credenciais)
-- ============================================
CREATE TABLE integracao_ia (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
provider VARCHAR(50) CHECK (provider IN ('openai', 'claude', 'gemini')) NOT NULL,
api_key_encriptada TEXT NOT NULL, -- ENCRIPTADO!
modelo_padrao VARCHAR(100),
maximo_tokens INTEGER DEFAULT 2000,
ativo BOOLEAN DEFAULT FALSE,
testado_em TIMESTAMP,
teste_status VARCHAR(50), -- 'conectado', 'erro', 'nao_testado'
teste_mensagem TEXT,
criado_por UUID REFERENCES usuarios(id),
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_ia_provider ON integracao_ia(provider);
-- ============================================
-- TABELA: DOCUMENTOS_AUTO_INDEXADOS (Resultado IA)
-- ============================================
CREATE TABLE documentos_auto_indexados (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
databook_id UUID NOT NULL REFERENCES projetos(id) ON DELETE CASCADE,
secao_id UUID REFERENCES secoes_databook(id) ON DELETE SET NULL,
secao_numero VARCHAR(20), -- "2.1", "5.2.1" (fallback se secao deletada)
-- ARQUIVO
titulo VARCHAR(255) NOT NULL,
numero_documento VARCHAR(100),
revisao VARCHAR(20),
arquivo_url TEXT NOT NULL,
arquivo_tipo VARCHAR(50), -- pdf, dwg, jpg, etc
conteudo_texto TEXT, -- Texto extraído pela IA
-- INDEXAÇÃO IA
tags_automaticas TEXT[], -- Tags geradas pela IA
tags_usuario TEXT[], -- Tags adicionadas manualmente
relevancia_score NUMERIC(3,2), -- 0.0-1.0
confianca_classificacao NUMERIC(3,2), -- 0.0-1.0
-- ORDENAÇÃO
ordem_na_secao INTEGER, -- Para ordenar docs dentro seção
data_documento DATE,
-- STATUS
aprovado BOOLEAN DEFAULT FALSE,
-- AUDITORIA
processado_por_ia VARCHAR(50), -- "openai", "claude", etc
processado_em TIMESTAMP,
criado_em TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_auto_databook ON documentos_auto_indexados(databook_id);
CREATE INDEX idx_auto_secao ON documentos_auto_indexados(secao_numero);
CREATE INDEX idx_auto_ordem ON documentos_auto_indexados(ordem_na_secao);
-- ============================================
-- TABELA: LOG_PROCESSAMENTO_IA
-- ============================================
CREATE TABLE log_processamento_ia (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
databook_id UUID NOT NULL REFERENCES projetos(id) ON DELETE CASCADE,
-- PROCESSAMENTO
inicio_processamento TIMESTAMP,
fim_processamento TIMESTAMP,
duracao_segundos INTEGER,
-- RESULTADO
total_documentos_encontrados INTEGER,
total_documentos_indexados INTEGER,
total_erros INTEGER,
-- DETALHES
pastas_varridas TEXT[],
provider_ia VARCHAR(50),
modelo_usado VARCHAR(100),
tokens_utilizados INTEGER,
-- STATUS
status VARCHAR(50) CHECK (status IN ('sucesso', 'parcial', 'erro')) DEFAULT 'sucesso',
mensagem_erro TEXT,
-- AUDITORIA
iniciado_por UUID REFERENCES usuarios(id),
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_log_ia_databook ON log_processamento_ia(databook_id);
CREATE INDEX idx_log_ia_status ON log_processamento_ia(status);
-- ============================================
-- TABELA: PERMISSOES_USUARIO_DETALHADAS
-- ============================================
CREATE TABLE permissoes_usuario_detalhadas (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
usuario_id UUID NOT NULL REFERENCES usuarios(id) ON DELETE CASCADE,
-- PERMISSÕES (boolean para cada ação)
pode_criar_template BOOLEAN DEFAULT FALSE,
pode_editar_template BOOLEAN DEFAULT FALSE,
pode_deletar_template BOOLEAN DEFAULT FALSE,
pode_criar_databook BOOLEAN DEFAULT FALSE,
pode_editar_databook BOOLEAN DEFAULT FALSE,
pode_deletar_databook BOOLEAN DEFAULT FALSE,
pode_upload_documentos BOOLEAN DEFAULT FALSE,
pode_aprovar_documentos BOOLEAN DEFAULT FALSE,
pode_gerar_pdf BOOLEAN DEFAULT FALSE,
pode_visualizar_preview BOOLEAN DEFAULT FALSE,
pode_acessar_logs BOOLEAN DEFAULT FALSE,
pode_configurar_ia BOOLEAN DEFAULT FALSE,
pode_configurar_pastas BOOLEAN DEFAULT FALSE,
pode_gerenciar_usuarios BOOLEAN DEFAULT FALSE,
-- RESTRIÇÕES
acesso_apenas_seus_projetos BOOLEAN DEFAULT TRUE,
pode_visualizar_precos BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
UNIQUE(usuario_id)
);
CREATE INDEX idx_perm_usuario ON permissoes_usuario_detalhadas(usuario_id);
-- ============================================
-- VIEWS ÚTEIS (Novas)
-- ============================================
CREATE OR REPLACE VIEW view_templates_disponibles AS
SELECT
tc.id,
tc.nome,
tc.tipo,
COUNT(DISTINCT tc.topicos_selecionados) as total_topicos,
tc.total_obrigatorios,
tc.ativo,
u.nome_completo as criado_por_nome,
tc.created_at
FROM templates_customizados tc
LEFT JOIN usuarios u ON tc.criado_por = u.id
GROUP BY tc.id
ORDER BY tc.nome;
CREATE OR REPLACE VIEW view_databooks_em_progresso_com_progresso_auto AS
SELECT
p.id,
p.numero_projeto,
p.nome_projeto,
dm.produto_nome,
dm.numero_projeto as numero_projeto_custom,
COUNT(DISTINCT dai.id) as documentos_auto_indexados,
MAX(lpia.fim_processamento) as ultima_indexacao,
lpia.total_documentos_indexados,
p.progresso_percentual,
p.status,
tc.nome as template_nome
FROM projetos p
LEFT JOIN databooks_mestres dm ON p.id = dm.projeto_id
LEFT JOIN documentos_auto_indexados dai ON p.id = dai.databook_id
LEFT JOIN log_processamento_ia lpia ON p.id = lpia.databook_id
LEFT JOIN templates_customizados tc ON p.template_id = tc.id
GROUP BY p.id, dm.id, lpia.id, tc.id
ORDER BY p.created_at DESC;
CREATE OR REPLACE VIEW view_pastas_mapeadas_com_status AS
SELECT
cp.id,
cp.tipo_documento,
cp.caminho_completo,
cp.habilitado,
cp.ultima_atualizacao,
COUNT(DISTINCT dai.id) as documentos_encontrados,
STRING_AGG(DISTINCT dai.secao_numero, ', ') as secoes_com_docs
FROM configuracoes_pastas cp
LEFT JOIN documentos_auto_indexados dai ON cp.caminho_completo = dai.secao_numero
GROUP BY cp.id
ORDER BY cp.tipo_documento;
```
---
## MÓDULO A: CRIAÇÃO DE TEMPLATES COM CRUD
### Tela "Gerenciar Templates"
```
LAYOUT:
┌─────────────────────────────────────────────────┐
│ TEMPLATES DO SISTEMA [Novo +]│
├─────────────────────────────────────────────────┤
│ │
│ 📌 TEMPLATES PRÉ-DEFINIDOS (Sistema) │
│ ┌────────────────────────────────────────────┐ │
│ │ [Template 1] [Template 2] [Template 3] │ │
│ │ "Completo" "Mínimo" "Offshore" │ │
│ │ ⓘ clonar ⓘ clonar ⓘ clonar │ │
│ └────────────────────────────────────────────┘ │
│ │
│ 📋 MEUS TEMPLATES (Customizados) │
│ ┌────────────────────────────────────────────┐ │
│ │ Nome │ Seções │ Criado │ Ações
│ ├─────────────────────┼────────┼─────────┼──────
│ │ Padrão Galpão │ 18/28 │ 10 nov │ ✎ 👀 D ✕
│ │ Offshore Crítica │ 26/28 │ 9 nov │ ✎ 👀 D ✕
│ │ Civil Simples │ 12/28 │ 8 nov │ ✎ 👀 D ✕
│ │ Estrutura 2025 │ 20/28 │ 5 nov │ ✎ 👀 D ✕
│ └────────────────────────────────────────────┘ │
│ │
│ Legenda: ✎=Editar 👀=Visualizar D=Duplicar ✕=Deletar
│ │
└─────────────────────────────────────────────────┘
AÇÕES:
1. [Novo +] → Cria template novo
2. [Clonar] → Cria cópia de pré-definido
3. [✎] → Edita template existente
4. [👀] → Visualiza tópicos (somente leitura)
5. [D] → Duplica para criar novo baseado neste
6. [✕] → Deleta template (com confirmação)
```
### Dialog "Criar/Editar Template"
```
┌─────────────────────────────────────────────────┐
│ ✕ NOVO TEMPLATE │
├─────────────────────────────────────────────────┤
│ │
│ Nome do Template: │
│ [___________________________________] │
│ "Exemplo: Padrão Galpão Civil" │
│ │
│ Tipo: │
│ ◯ Novo template │
│ ◯ Derivado de template existente │
│ [Selecionar template base ▼] │
│ └─ "Se derivado, herda estrutura" │
│ │
│ Descrição (opcional): │
│ [_______________________________] │
│ [_______________________________] │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ [Selecionar Tópicos] │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ [← Voltar] [Próximo →] │
└─────────────────────────────────────────────────┘
```
### Seleção de Tópicos (Checklist)
```
┌──────────────────────────────────────────────────────┐
│ ✕ SELECIONAR TÓPICOS PARA TEMPLATE │
├──────────────────────────────────────────────────────┤
│ │
│ Total: 28 tópicos disponíveis │
│ │
│ [Selecionar Tudo] [Desselecionar Tudo] │
│ │
│ 📋 Pré-definidos: │
│ [Completo (28)] [Mínimo (9)] [Offshore (26)] │
│ [Civil (15)] │
│ │
│ Buscar: [_____________________] 🔍 │
│ │
├──────────────────────────────────────────────────────┤
│ COL 1 │ COL 2 │ COL 3 │
├────────────────────┼────────────────────┼────────────┤
│ ☑ 1. Atestado │ ☑ 5.1 Metais │ ☑ 8.1 Vis │
│ ☑ 2.1 Desenhos │ ☐ 5.2.1 Solda │ ☑ 8.2.1 │
│ ☑ 3.1 PIT │ ☐ 5.2.2 END │ ☐ 8.2.2 │
│ ☐ 3.2 Mapeamento │ ☐ 5.2.3 Pintura │ ☑ 8.7 Dim │
│ ☑ 4.1 HSE │ ☑ 5.3 Máquinas │ ☑ 9. TQF │
│ ☑ 5.1 Metais │ ☑ 5.4 Materiais │ ☐ 10. RNC │
│ ☐ 5.5 Instrumen. │ ☑ 5.6 Inspetores │ │
│ ☑ 5.7 Soldadores │ ☑ 6.1 EPS │ │
│ ☑ 7.1 Visual │ ☑ 7.2 Ultrassom │ │
│ ☐ 7.3 Partícula │ ☐ 7.4 Líquido │ │
│ ☑ 7.5 Dimensional │ ☐ 7.6 Teste Carga │ │
│ ☐ 7.7 Pintura │ ☑ 8.3.1 LP Pré │ │
└────────────────────┴────────────────────┴────────────┘
│ │
│ Selecionados: 18 de 28 tópicos (64%) │
│ Obrigatórios: 9 / 9 selecionados ✓ │
│ │
│ [← Voltar] [Salvar Template →] │
└──────────────────────────────────────────────────────┘
```
---
## MÓDULO B: DADOS MESTRES E CAPA PERSONALIZÁVEL
### Formulário "Dados Mestres" - Step 1/3
```
┌────────────────────────────────────────────────┐
│ NOVO DATABOOK - DADOS MESTRES (1/3) [✕] │
├────────────────────────────────────────────────┤
│ │
│ SEÇÃO: CLIENTE │
│ ┌──────────────────────────────────────────┐ │
│ │ Nome cliente: │ │
│ │ [_____________________________________] │ │
│ │ │ │
│ │ Contato: │ │
│ │ [_____________________________________] │ │
│ │ │ │
│ │ Email: │ │
│ │ [_____________________________________] │ │
│ │ │ │
│ │ Telefone: │ │
│ │ [_____________________________________] │ │
│ └──────────────────────────────────────────┘ │
│ │
│ SEÇÃO: PRODUTO │
│ ┌──────────────────────────────────────────┐ │
│ │ Nome produto: │ │
│ │ [_____________________________________] │ │
│ │ │ │
│ │ Tipo estrutura: [Dropdown ▼] │ │
│ │ Offshore / Galpão / Edifício / Ponte │ │
│ │ │ │
│ │ Descrição: │ │
│ │ [_____________________________________] │ │
│ │ [_____________________________________] │ │
│ │ │ │
│ │ Normas aplicáveis: │ │
│ │ [☑ ASTM A36] [☑ AWS D1.1] │ │
│ │ [☐ NBR 5590] [☑ ISO 12944] │ │
│ └──────────────────────────────────────────┘ │
│ │
│ [Cancelar] [Próximo →] │
└────────────────────────────────────────────────┘
```
### Formulário "Dados Mestres" - Step 2/3
```
┌────────────────────────────────────────────────┐
│ NOVO DATABOOK - DADOS MESTRES (2/3) [✕] │
├────────────────────────────────────────────────┤
│ │
│ SEÇÃO: IDENTIFICAÇÃO │
│ ┌──────────────────────────────────────────┐ │
│ │ Número projeto: │ │
│ │ [PRJ-2025-00142 ] (Auto-gerado)│ │
│ │ │ │
│ │ Ordem de compra: │ │
│ │ [_____________________________________] │ │
│ │ │ │
│ │ Data início: │ │
│ │ [13/11/2025 📅] │ │
│ │ │ │
│ │ Data entrega prevista: │ │
│ │ [15/12/2025 📅] │ │
│ │ │ │
│ │ Responsável: │ │
│ │ [João Silva ▼] (Dropdown usuários)│ │
│ └──────────────────────────────────────────┘ │
│ │
│ SEÇÃO: CONTROLE DE REVISÃO │
│ ┌──────────────────────────────────────────┐ │
│ │ Revisão atual: [Rev. 0 ] │ │
│ │ │ │
│ │ Data revisão: [13/11/2025 📅] │ │
│ │ (Auto-preenchido com data atual) │ │
│ │ │ │
│ │ Autor revisão: [João Silva] (Auto) │ │
│ │ │ │
│ │ Motivo alteração: │ │
│ │ [_____________________________________] │ │
│ │ [_____________________________________] │ │
│ └──────────────────────────────────────────┘ │
│ │
│ [← Anterior] [Próximo →] │
└────────────────────────────────────────────────┘
```
### Formulário "Customizar Capa" - Step 3/3
```
┌──────────────────────────────────────────────────────────┐
│ NOVO DATABOOK - CUSTOMIZAR CAPA (3/3) [✕] │
├──────────────────────────────────────────────────────────┤
│ │
│ 🎨 BRANDING E LOGOS │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Logo Empresa: │ │
│ │ [Arraste arquivo aqui ou clique] │ │
│ │ [ 📁 ] ← Preview: 200×200px │ │
│ │ │ │
│ │ Logo Cliente (opcional): │ │
│ │ [Arraste arquivo aqui ou clique] │ │
│ │ [ 📁 ] ← Preview: 200×200px │ │
│ │ │ │
│ │ Marca d'água (95% transparência): │ │
│ │ [Arraste arquivo aqui ou clique] │ │
│ │ [ 📁 ] ← Preview (fundo página) │ │
│ │ │ │
│ │ Cor Primária: [#1E40AF 🎨] ← Color picker │ │
│ │ Cor Secundária: [#64748B 🎨] │ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ 📄 TEXTOS DA CAPA │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Título principal: │ │
│ │ [DATABOOK - ESTRUTURA METÁLICA ____________] │ │
│ │ Preview: ↓↓↓ │ │
│ │ │ │
│ │ Subtítulo: │ │
│ │ [Fabricação de Estrutura Soldada ____________] │ │
│ │ │ │
│ │ Nome cliente: [Equinor ] (Auto) │ │
│ │ Nome projeto: [Bacalhau WA0056 ] (Auto) │ │
│ │ Número projeto: [PRJ-2025-00142] (Auto) │ │
│ │ │ │
│ │ Data documento: │ │
│ │ [13/11/2025 📅] │ │
│ │ │ │
│ │ Rodapé capa: │ │
│ │ [Documento confidencial - Equinor ________] │ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ 📐 FORMATAÇÃO GERAL │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Tamanho página: ◯ A4 ◯ Letter │ │
│ │ │ │
│ │ Orientação: ◯ Retrato ◯ Paisagem │ │
│ │ │ │
│ │ Margens (mm): │ │
│ │ Superior: [20] Lateral: [20] │ │
│ │ │ │
│ │ ☑ Incluir marca d'água em todas páginas │ │
│ │ ☑ Incluir número de página + rodapé │ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ [← Anterior] [👀 Preview Capa] [Criar Databook →] │
└──────────────────────────────────────────────────────────┘
```
---
## MÓDULO C: CONFIGURAÇÕES E GERENCIAMENTO DE PASTAS
### Tab "Pastas e Documentos"
```
┌──────────────────────────────────────────────────────┐
│ CONFIGURAÇÕES > PASTAS E DOCUMENTOS [≡] │
├──────────────────────────────────────────────────────┤
│ │
│ 📁 MAPEAMENTO DE PASTAS LOCAIS │
│ "Configure onde seus documentos estão armazenados" │
│ │
│ Tabela: │
│ ┌────────────────────────────────────────────────┐ │
│ │ Tipo │ Subtipo │ Caminho │ Ações │ │
│ ├─────────┼─────────┼─────────────────┼─────────┤ │
│ │ Cert. │ Solda │ /cert/solda │ ✎ ✕ │ │
│ │ Cert. │ Metais │ /cert/metais │ ✎ ✕ │ │
│ │ Desenho │ │ /desenhos │ ✎ ✕ │ │
│ │ Relat. │ │ /relatorios │ ✎ ✕ │ │
│ │ Fotos │ │ /fotos │ ✎ ✕ │ │
│ │ Proced. │ │ /procedimentos │ ✎ ✕ │ │
│ │ EPS │ │ /eps │ ✎ ✕ │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ [+ Novo Mapeamento] │
│ │
│ 🤖 AUTOMAÇÃO COM IA │
│ ┌────────────────────────────────────────────────┐ │
│ │ ☑ Habilitar varredura automática │ │
│ │ │ │
│ │ Frequência: [Ao criar databook ▼] │ │
│ │ │ Ao criar databook │ │
│ │ │ Diariamente │ │
│ │ │ Semanalmente │ │
│ │ │ Manualmente │ │
│ │ │ │
│ │ Provider IA: [OpenAI ▼] │ │
│ │ ☑ Incluir subpastas │ │
│ │ Formatos: [PDF][JPG][PNG][XLSX][DOCX] │ │
│ │ Máx. arquivo: [50 MB] │ │
│ │ │ │
│ │ LLM Provider: [OpenAI ▼] │ │
│ │ API Key: [••••••••••••••••••] [👁️ Mostrar] │ │
│ │ [Testar Conexão] → ✓ Conectado │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ 🏷️ FILTROS E KEYWORDS │
│ ┌────────────────────────────────────────────────┐ │
│ │ Tags/Keywords obrigatórias: │ │
│ │ [solda] [aws] [qualidade] [crítica] [x] │ │
│ │ [+ Adicionar] │ │
│ │ │ │
│ │ Excluir documentos com keywords: │ │
│ │ [rascunho] [draft] [teste] [x] │ │
│ │ [+ Adicionar] │ │
│ │ │ │
│ │ Ordenar documentos por: ◯ Data ◯ Nome ◯ Relevância
│ └────────────────────────────────────────────────┘ │
│ │
│ [💾 Salvar Configurações] │
│ │
└──────────────────────────────────────────────────────┘
```
### Dialog "Novo Mapeamento"
```
┌────────────────────────────────────────────────┐
│ ✕ NOVO MAPEAMENTO DE PASTA │
├────────────────────────────────────────────────┤
│ │
│ Tipo de Documento: [Certificados ▼] │
│ │
│ Subtipo (opcional): [Solda ▼] │
│ │
│ Caminho Local: │
│ [C:\Projetos\Databook\certificados\solda] │
│ [📁 Procurar...] │
│ │
│ Preview da pasta: │
│ "Pasta contém 12 arquivos" │
│ ├─ Cert_AWS_01.pdf │
│ ├─ Cert_AWS_02.pdf │
│ └─ ... mais 10 arquivos │
│ │
│ [Cancelar] [Salvar Mapeamento] │
└────────────────────────────────────────────────┘
```
---
## INTEGRAÇÃO COM IA (LLM)
### Fluxo de Processamento Automático
```
QUANDO USUÁRIO CLICA [Processar Documentos com IA]:
1. VALIDAÇÃO INICIAL (5 seg)
├─ Verifica mapeamento de pastas
├─ Verifica credenciais IA (API Key)
├─ Valida template do databook
└─ Se OK: Continua
2. VARREDURA DE PASTAS (10-30 seg conforme volume)
├─ Lê todas pastas mapeadas
├─ Encontra arquivos válidos
├─ Aplica filtros (keywords, formatos)
└─ Log: "{N} arquivos encontrados"
3. EXTRAÇÃO DE CONTEÚDO COM OCR (Paralelo)
├─ Para cada PDF:
│ ├─ Extrai texto (Tesseract.js ou API)
│ ├─ Reconhece tabelas
│ └─ Armazena em conteudo_texto
├─ Para cada Imagem:
│ └─ OCR via LLM (Vision API)
└─ Para cada Excel:
└─ Extrai valores + headers
4. ANÁLISE COM LLM (20-60 seg conforme docs)
├─ Para cada documento:
│ ├─ Envia para LLM (OpenAI/Claude/Gemini)
│ ├─ Prompt: "Identifique qual seção do databook este doc pertence"
│ ├─ LLM retorna: secao_id, confianca, tags
│ ├─ Extrai: Título, Número, Data, Revisão
│ └─ Armazena em documentos_auto_indexados
└─ Exemplo LLM:
Input: [PDF de certificado de soldador AWS]
Output: {
"secao": "5.7",
"titulo": "Certificado de Qualificação - Soldador AWS",
"numero_documento": "AWS-2025-00451",
"tags": ["soldador", "AWS", "qualificação", "D1.1"],
"confianca": 0.98,
"data_documento": "2025-11-10"
}
5. ORDENAÇÃO DENTRO SEÇÕES (5 seg)
├─ Agrupa documentos por secao
├─ Ordena por: data, relevância ou nome
├─ Atribui ordem_na_secao (1, 2, 3...)
└─ Atualiza ordem_docs na tabela
6. ARMAZENAMENTO NO BD (5 seg)
├─ INSERT em documentos_auto_indexados:
│ ├─ databook_id
│ ├─ secao_numero
│ ├─ titulo, arquivo_url
│ ├─ tags_automaticas
│ ├─ confianca_classificacao
│ └─ ordem_na_secao
├─ INSERT em log_processamento_ia:
│ ├─ total_documentos_indexados
│ ├─ duracao_segundos
│ ├─ status: "sucesso"
│ └─ tokens_utilizados
└─ UPDATE projetos:
└─ progresso_percentual (recalcula)
7. RESULTADO FINAL
└─ "✓ {120} documentos indexados com sucesso!
Tempo total: 2 min 15 seg"
```
### Prompt para LLM (Detalhado)
```javascript
// Função que envia documento para LLM
async function analisarDocumentoComIA(nomeArquivo, conteudoExtraido, secoesFits) {
const prompt = `
Você é um especialista em databooks de estruturas metálicas e fabricação industrial.
Analise o documento abaixo e classifique em qual seção do databook ele pertence.
SEÇÕES DISPONÍVEIS NO TEMPLATE:
${secoesFit.map(s => `- ${s.numero}: ${s.titulo}`).join('\n')}
DOCUMENTO A ANALISAR:
Nome arquivo: ${nomeArquivo}
Conteúdo:
${conteudoExtraido.substring(0, 2000)}
INSTRUÇÕES:
1. Identifique qual SEÇÃO este documento pertence
2. Extraia TÍTULO do documento (não use nome do arquivo)
3. Extraia NÚMERO DOCUMENTO se existir (ex: AWS-2025-00451, CE-001, etc)
4. Extraia DATA DOCUMENTO se existir
5. Gere 3-5 TAGS relevantes
6. Dê CONFIANÇA da sua classificação (0.0 a 1.0)
RESPONDA EM JSON (sem markdown):
{
"secao_numero": "5.7",
"titulo": "Certificado de Qualificação de Soldador",
"numero_documento": "AWS-2025-00451",
"data_documento": "2025-11-10",
"tags": ["soldador", "AWS", "D1.1", "qualificação"],
"confianca": 0.98,
"justificativa": "Documento contém dados de qualificação AWS conforme seção 5.7"
}
`;
// Chamada para OpenAI/Claude/Gemini
const response = await llmClient.complete({
provider: configIA.provider, // "openai", "claude", "gemini"
model: configIA.modelo_padrao,
prompt: prompt,
maxTokens: 300,
temperature: 0.3 // Baixa para respostas mais determinísticas
});
// Parse JSON
return JSON.parse(response.text);
}
```
---
## ESTRUTURA DE PASTAS RECOMENDADA
### Layout sugerido no computador local
```
C:\Projetos\Databook\
├─ certificados\
│ ├─ solda\
│ │ ├─ Cert_AWS_Soldador_01.pdf
│ │ ├─ Cert_AWS_Soldador_02.pdf
│ │ └─ Cert_SNQC_Inspetor.pdf
│ │
│ ├─ metais\
│ │ ├─ Cert_ASTM_A36_Chapa.pdf
│ │ └─ Cert_NBR_5590_Tubo.pdf
│ │
│ ├─ end\
│ │ ├─ Cert_Calibracao_Ultrasom.pdf
│ │ └─ Cert_Particula_Magnetica.pdf
│ │
│ ├─ pintura\
│ │ └─ Cert_Tinta_ISO_12944.pdf
│ │
│ └─ equipamentos\
│ └─ Cert_Maquina_Solda.pdf
├─ desenhos\
│ ├─ Shop_Drawing_Rev0.pdf
│ ├─ Shop_Drawing_Rev1.pdf
│ ├─ Mapeamento_Soldas.dwg
│ └─ Planta_Geral.pdf
├─ relatorios\
│ ├─ Relatorio_Visual_Solda.pdf
│ ├─ Relatorio_Particula_Magnetica_Pre.pdf
│ ├─ Relatorio_Particula_Magnetica_Pos.pdf
│ ├─ Relatorio_Ultrassom_Pre.pdf
│ ├─ Relatorio_Ultrassom_Pos.pdf
│ ├─ Relatorio_Teste_Carga.pdf
│ └─ Relatorio_Dimensional_Final.pdf
├─ procedimentos\
│ ├─ Proc_Visual.pdf
│ ├─ Proc_Ultrassom.pdf
│ ├─ Proc_Particula_Magnetica.pdf
│ ├─ Proc_Liquido_Penetrante.pdf
│ ├─ Proc_Dimensional.pdf
│ ├─ Proc_Teste_Carga.pdf
│ └─ Proc_Pintura.pdf
├─ eps\
│ ├─ EPS_GTAW_Rev0.pdf
│ ├─ RQPS_GTAW_PQR.pdf
│ └─ Mapas_Soldagem.pdf
├─ fotos\
│ ├─ Fabricacao_Etapa_01.jpg
│ ├─ Fabricacao_Etapa_02.jpg
│ ├─ Soldagem_Detalhe_01.jpg
│ ├─ Inspeção_Visual_01.jpg
│ └─ Teste_Carga_01.jpg
├─ atestados\
│ ├─ Atestado_Conformidade_Draft.pdf
│ └─ Atestado_Conformidade_Final.pdf
└─ misc\
├─ Especificacoes_Tecnicas.xlsx
├─ Cronograma_Fabricacao.xlsx
└─ Check_List_Qualidade.pdf
🔑 DICAS:
1. Usar nomes descritivos (evitar "DOC001.pdf")
2. Manter estrutura consistente entre projetos
3. Versionar documentos com "_Rev0", "_Rev1", etc
4. Prefixo com tipo: "Cert_", "Rel_", "Proc_"
5. Data no formato YYYYMMDD se necessário
```
---
## FLUXO DE PROCESSAMENTO DE DOCUMENTOS (Completo)
### Timeline Visual
```
USUÁRIO CRIA DATABOOK
[Template Selecionado]
[Dados Mestres Preenchidos]
[Capa Customizada]
┌─────────────────────────────────────────┐
│ "Processar Documentos com IA?" │
│ [SIM] [NÃO] │
└─────────────────────────────────────────┘
└─→ [SIM]
╔════════════════════════════════════════╗
║ PROCESSAMENTO COM IA INICIADO ║
║ ████░░░░░ 40% (1 min 30 seg) ║
║ Varrendo pastas... ║
╚════════════════════════════════════════╝
[Pastas Varridas: 120 arquivos encontrados]
╔════════════════════════════════════════╗
║ Analisando documentos... ║
║ ██████░░░░ 60% (2 min 15 seg) ║
║ 78 de 120 processados ║
╚════════════════════════════════════════╝
[Classificação com LLM em andamento]
╔════════════════════════════════════════╗
║ Indexando e armazenando... ║
║ ████████░░ 85% (2 min 45 seg) ║
║ Salvando no banco de dados ║
╚════════════════════════════════════════╝
╔════════════════════════════════════════╗
║ ✓ PROCESSAMENTO CONCLUÍDO ║
║ ███████████ 100% (3 min 00 seg) ║
║ 112 documentos indexados com sucesso! ║
║ ║
║ Estatísticas: ║
║ - Certificados: 28 ║
║ - Desenhos: 15 ║
║ - Relatórios: 35 ║
║ - Procedimentos: 18 ║
║ - Fotos: 16 ║
╚════════════════════════════════════════╝
[PRÉ-VISUALIZAÇÃO DISPONÍVEL]
Usuário vê:
├─ Dashboard com status de cada seção
├─ Preview visual do databook
├─ Lista de documentos por seção
├─ Indicadores de faltantes (⚠️)
└─ Botões de ação
[Usuário pode:]
├─ Editar metadados de documentos
├─ Mover docs entre seções
├─ Remover docs não desejados
├─ Re-processar com filtros diferentes
├─ Solicitar pré-visualização PDF
└─ Finalizar → Gerar PDF
╔════════════════════════════════════════╗
║ GERANDO PDF FINAL... ║
║ ███░░░░░░░ 30% ║
║ Montando estrutura ║
╚════════════════════════════════════════╝
╔════════════════════════════════════════╗
║ ✓ PDF GERADO COM SUCESSO! ║
║ ║
║ databook_PRJ-2025-00142_v0.pdf │
║ 245 páginas | 18.5 MB │
║ ║
║ [⬇️ Download] [🔗 Compartilhar] │
║ [📧 Email] [📊 Relatório] │
╚════════════════════════════════════════╝
```
---
## CONCLUSÃO
### O Sistema v2.0 Oferece:
**MÓDULO A:** Templates com CRUD completo (criar, clonar, editar, deletar)
**MÓDULO B:** Dados mestres personalizáveis + capa customizável
**MÓDULO C:** Configurações avançadas + automação com IA + gerenciamento de pastas
**MÓDULO D:** Pré-visualização inteligente + montagem automática com IA
**IA Integration:** LLM para auto-indexação e classificação de documentos
**Automação Completa:** Lê pastas → Extrai → Classifica → Armazena → Monta PDF
**PDF Consultável:** Full-text search integrado
### Fluxo Usuário Simplificado:
1. Criar Template (escolher tópicos)
2. Preencher Dados Mestres (cliente, produto)
3. Customizar Capa (logo, cores, marca d'água)
4. Configurar Pastas (onde estão os docs)
5. **IA Faz o Resto:** Lê, analisa, ordena, monta
6. Visualizar Pré-visualização
7. Gerar PDF Final
---
**Status:** ✅ SISTEMA V2.0 100% DOCUMENTADO E PRONTO PARA IMPLEMENTAÇÃO
**Data:** 13 de novembro de 2025
**Versão:** 2.0 - Com Todos os Módulos A, B, C, D
**Funcionalidades Novas:** 4 (Templates CRUD, Dados Mestres, Config Pastas, IA Automation)
**Próximo Passo:** Implementar em No-Code (WeWeb + Supabase) → 5-7 horas