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

67 KiB
Raw Blame History

📘 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
  2. Fluxo Principal de Uso (A até D)
  3. Banco de Dados Expandido
  4. Módulo A: Criação de Templates com CRUD
  5. Módulo B: Dados Mestres e Capa Personalizável
  6. Módulo C: Configurações e Gerenciamento de Pastas
  7. Módulo D: Pré-visualização e Montagem com IA
  8. Integração com IA (LLM)
  9. Estrutura de Pastas Recomendada
  10. 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:

  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