67 KiB
📘 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
- Resumo Executivo - Novas Funcionalidades
- Fluxo Principal de Uso (A até D)
- Banco de Dados Expandido
- Módulo A: Criação de Templates com CRUD
- Módulo B: Dados Mestres e Capa Personalizável
- Módulo C: Configurações e Gerenciamento de Pastas
- Módulo D: Pré-visualização e Montagem com IA
- Integração com IA (LLM)
- Estrutura de Pastas Recomendada
- 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)
-- ============================================
-- 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)
// 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:
- Criar Template (escolher tópicos)
- Preencher Dados Mestres (cliente, produto)
- Customizar Capa (logo, cores, marca d'água)
- Configurar Pastas (onde estão os docs)
- IA Faz o Resto: Lê, analisa, ordena, monta
- Visualizar Pré-visualização
- 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