280 lines
9.4 KiB
Python
280 lines
9.4 KiB
Python
|
|
# Criar um guia JSON estruturado do template para integração na plataforma
|
|
|
|
template_guide = {
|
|
"metadata": {
|
|
"nome": "Template SteelBook Databook",
|
|
"versao": "1.0",
|
|
"base": "DB-B97-01 (SAIPEM)",
|
|
"tipo": "Vendor Databook Técnico"
|
|
},
|
|
|
|
"componentes": {
|
|
"1_capa_frontal": {
|
|
"nome": "Capa Frontal",
|
|
"campos_editaveis": [
|
|
{
|
|
"campo": "logo_cliente",
|
|
"tipo": "imagem",
|
|
"dimensoes": "200x100px",
|
|
"formato": "PNG, SVG preferencial"
|
|
},
|
|
{
|
|
"campo": "titulo_projeto",
|
|
"tipo": "texto",
|
|
"max_caracteres": 100,
|
|
"exemplo": "BUZIOS 7 PRODUCTION SYSTEM DEVELOPMENT"
|
|
},
|
|
{
|
|
"campo": "subtitulo",
|
|
"tipo": "texto",
|
|
"max_caracteres": 80,
|
|
"exemplo": "AR HEAD FABRICATION LONG"
|
|
},
|
|
{
|
|
"campo": "numero_documento",
|
|
"tipo": "texto",
|
|
"padrao": "DB-XXX-YY_SZ_VENDOR_DATABOOK",
|
|
"exemplo": "DB-B97-01_S1_VENDOR_DATABOOK"
|
|
},
|
|
{
|
|
"campo": "numero_contrato",
|
|
"tipo": "texto",
|
|
"exemplo": "OC 1472739"
|
|
},
|
|
{
|
|
"campo": "data_emissao",
|
|
"tipo": "data",
|
|
"formato": "DD/MM/YYYY"
|
|
},
|
|
{
|
|
"campo": "logo_fornecedor",
|
|
"tipo": "imagem",
|
|
"dimensoes": "150x75px",
|
|
"posicao": "rodape"
|
|
}
|
|
],
|
|
"cores": {
|
|
"cor_primaria": "#1a365d",
|
|
"cor_secundaria": "#2b6cb0",
|
|
"cor_texto": "#2d3748"
|
|
}
|
|
},
|
|
|
|
"2_indice_geral": {
|
|
"nome": "Índice Geral / Table of Contents",
|
|
"estrutura": "hierarquica",
|
|
"niveis_suportados": 3,
|
|
"campos_editaveis": [
|
|
{
|
|
"campo": "titulo_secao",
|
|
"tipo": "texto_bilingue",
|
|
"linguas": ["pt", "en"]
|
|
}
|
|
],
|
|
"formato_numeracao": {
|
|
"nivel_1": "X",
|
|
"nivel_2": "X.Y",
|
|
"nivel_3": "X.Y.Z"
|
|
},
|
|
"exemplo_estrutura": [
|
|
"1 - Identificação | Identification",
|
|
"2 - Materiais | Materials",
|
|
" 2.1 - Certificados | Certificates",
|
|
" 2.2 - Consumíveis | Consumables"
|
|
]
|
|
},
|
|
|
|
"3_divisoras_secao": {
|
|
"nome": "Capas Divisoras de Seção",
|
|
"estilos_disponiveis": [
|
|
{
|
|
"estilo": "minimalista",
|
|
"descricao": "Número grande em marca d'água, título centralizado",
|
|
"uso_recomendado": "Seções principais (1, 2, 3, 4)"
|
|
},
|
|
{
|
|
"estilo": "lateral",
|
|
"descricao": "Barra colorida lateral com número, título à direita",
|
|
"uso_recomendado": "Subseções importantes (2.1, 3.1)"
|
|
},
|
|
{
|
|
"estilo": "corporativo",
|
|
"descricao": "Header com degradê, logo e caixa de informações",
|
|
"uso_recomendado": "Seções de certificação e conformidade"
|
|
}
|
|
],
|
|
"campos_editaveis": [
|
|
{
|
|
"campo": "numero_secao",
|
|
"tipo": "texto",
|
|
"exemplo": "2"
|
|
},
|
|
{
|
|
"campo": "titulo_pt",
|
|
"tipo": "texto",
|
|
"exemplo": "Materiais"
|
|
},
|
|
{
|
|
"campo": "titulo_en",
|
|
"tipo": "texto",
|
|
"exemplo": "Materials"
|
|
},
|
|
{
|
|
"campo": "subtitulo_pt",
|
|
"tipo": "texto",
|
|
"opcional": True
|
|
},
|
|
{
|
|
"campo": "icone_secao",
|
|
"tipo": "emoji_svg",
|
|
"exemplo": "🔩"
|
|
}
|
|
]
|
|
},
|
|
|
|
"4_cabecalho_rodape": {
|
|
"nome": "Cabeçalhos e Rodapés",
|
|
"opcoes": [
|
|
{
|
|
"tipo": "header_padrao",
|
|
"elementos": ["logo_mini", "nome_projeto", "numero_documento"]
|
|
},
|
|
{
|
|
"tipo": "footer_padrao",
|
|
"elementos": ["numero_pagina", "revisao", "data"]
|
|
}
|
|
],
|
|
"altura_header": "60px",
|
|
"altura_footer": "40px"
|
|
}
|
|
},
|
|
|
|
"integração_steelbook": {
|
|
"endpoints_sugeridos": [
|
|
{
|
|
"nome": "GET /api/templates",
|
|
"descricao": "Lista todos os templates disponíveis"
|
|
},
|
|
{
|
|
"nome": "GET /api/templates/:id",
|
|
"descricao": "Retorna configuração específica de um template"
|
|
},
|
|
{
|
|
"nome": "POST /api/templates",
|
|
"descricao": "Cria novo template customizado"
|
|
},
|
|
{
|
|
"nome": "PUT /api/templates/:id",
|
|
"descricao": "Atualiza template existente"
|
|
},
|
|
{
|
|
"nome": "POST /api/databooks/:id/apply-template",
|
|
"descricao": "Aplica template a um databook"
|
|
}
|
|
],
|
|
|
|
"estrutura_dados": {
|
|
"template_config": {
|
|
"id": "string",
|
|
"nome": "string",
|
|
"capa": {
|
|
"titulo": "string",
|
|
"subtitulo": "string",
|
|
"logo_cliente_url": "string",
|
|
"logo_fornecedor_url": "string",
|
|
"cores": {
|
|
"primaria": "hex",
|
|
"secundaria": "hex"
|
|
}
|
|
},
|
|
"indice": {
|
|
"bilingue": "boolean",
|
|
"estrutura": "array"
|
|
},
|
|
"divisoras": {
|
|
"estilo_padrao": "string",
|
|
"cor_destaque": "hex"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
"workflow_uso": [
|
|
{
|
|
"passo": 1,
|
|
"acao": "Usuário acessa 'Gestão de Templates' no SteelBook",
|
|
"interface": "Lista templates existentes + botão 'Novo Template'"
|
|
},
|
|
{
|
|
"passo": 2,
|
|
"acao": "Clica 'Novo Template' ou 'Editar' em template existente",
|
|
"interface": "Abre editor visual (similar ao app criado)"
|
|
},
|
|
{
|
|
"passo": 3,
|
|
"acao": "Customiza elementos: cores, textos, logos, estrutura",
|
|
"interface": "Painéis de configuração + preview em tempo real"
|
|
},
|
|
{
|
|
"passo": 4,
|
|
"acao": "Salva template com nome descritivo",
|
|
"interface": "Modal de salvamento com campos: nome, descrição, tags"
|
|
},
|
|
{
|
|
"passo": 5,
|
|
"acao": "Ao criar novo Databook, seleciona template",
|
|
"interface": "Dropdown de templates na tela de criação"
|
|
},
|
|
{
|
|
"passo": 6,
|
|
"acao": "Sistema gera estrutura com capas e índices automáticos",
|
|
"interface": "Databook criado com template aplicado"
|
|
}
|
|
],
|
|
|
|
"recomendacoes_implementacao": {
|
|
"armazenamento": "Supabase tabela 'templates' com campos JSON para configurações",
|
|
"renderizacao": "Server-side com Puppeteer/wkhtmltopdf para gerar PDFs",
|
|
"preview": "Client-side com React/Vue renderizando HTML dinâmico",
|
|
"versionamento": "Histórico de revisões de templates",
|
|
"compartilhamento": "Templates públicos/privados por organização"
|
|
}
|
|
}
|
|
|
|
# Salvar como JSON
|
|
import json
|
|
|
|
json_output = json.dumps(template_guide, indent=2, ensure_ascii=False)
|
|
|
|
print("GUIA DE INTEGRAÇÃO - TEMPLATE DATABOOK")
|
|
print("=" * 80)
|
|
print("\n📋 COMPONENTES DO TEMPLATE IDENTIFICADOS:")
|
|
print("-" * 80)
|
|
|
|
for key, comp in template_guide["componentes"].items():
|
|
print(f"\n{comp['nome'].upper()}")
|
|
print(f" Campos editáveis: {len(comp['campos_editaveis'])}")
|
|
|
|
print("\n\n🔌 INTEGRAÇÃO COM STEELBOOK:")
|
|
print("-" * 80)
|
|
print(f"Endpoints sugeridos: {len(template_guide['integração_steelbook']['endpoints_sugeridos'])}")
|
|
for endpoint in template_guide['integração_steelbook']['endpoints_sugeridos']:
|
|
print(f" • {endpoint['nome']}: {endpoint['descricao']}")
|
|
|
|
print("\n\n📝 WORKFLOW DE USO:")
|
|
print("-" * 80)
|
|
for step in template_guide['workflow_uso']:
|
|
print(f"{step['passo']}. {step['acao']}")
|
|
|
|
print("\n\n💡 RECOMENDAÇÕES:")
|
|
print("-" * 80)
|
|
for chave, valor in template_guide['recomendacoes_implementacao'].items():
|
|
print(f" • {chave.title()}: {valor}")
|
|
|
|
# Salvar arquivo
|
|
with open('template_integration_guide.json', 'w', encoding='utf-8') as f:
|
|
f.write(json_output)
|
|
|
|
print("\n\n✅ Arquivo 'template_integration_guide.json' criado com sucesso!")
|