import json, os
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak, HRFlowable
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm

def gerar_relatorio_auditoria_grupo2(pdf_path):
    doc = SimpleDocTemplate(
        pdf_path,
        pagesize=A4,
        leftMargin=1.5*cm,
        rightMargin=1.5*cm,
        topMargin=1.5*cm,
        bottomMargin=1.5*cm
    )
    
    styles = getSampleStyleSheet()
    azul_brana = colors.HexColor('#002B49')
    cinza_fundo = colors.HexColor('#F4F6F8')
    cinza_borda = colors.HexColor('#D1D5DB')
    texto_escuro = colors.HexColor('#1F2937')
    vermelho = colors.HexColor('#9A3231')
    verde = colors.HexColor('#166534')
    
    title_style = ParagraphStyle(
        'DocTitle', parent=styles['Heading1'],
        fontName='Helvetica-Bold', fontSize=17, leading=21,
        textColor=azul_brana, spaceAfter=2
    )
    sub_style = ParagraphStyle(
        'DocSub', parent=styles['Normal'],
        fontName='Helvetica', fontSize=9, leading=13,
        textColor=colors.HexColor('#4B5563')
    )
    h2_style = ParagraphStyle(
        'DocH2', parent=styles['Heading2'],
        fontName='Helvetica-Bold', fontSize=12, leading=15,
        textColor=azul_brana, spaceBefore=10, spaceAfter=4
    )
    body_style = ParagraphStyle(
        'DocBody', parent=styles['Normal'],
        fontName='Helvetica', fontSize=8.5, leading=12,
        textColor=texto_escuro
    )
    table_hdr = ParagraphStyle(
        'TableHdr', parent=styles['Normal'],
        fontName='Helvetica-Bold', fontSize=7.5, leading=9.5,
        textColor=colors.white, alignment=1
    )
    table_cell = ParagraphStyle(
        'TableCell', parent=styles['Normal'],
        fontName='Helvetica', fontSize=7.5, leading=9.5,
        textColor=texto_escuro
    )
    table_cell_center = ParagraphStyle(
        'TableCellCenter', parent=styles['Normal'],
        fontName='Helvetica', fontSize=7.5, leading=9.5,
        textColor=texto_escuro, alignment=1
    )

    story = []
    
    # Cabeçalho
    story.append(Paragraph("AUDITORIA TÉCNICA E MEMÓRIA DE AÇÕES — GRUPO 2", title_style))
    story.append(Paragraph("<b>Embarcação:</b> Saveiro Tesouro da Baía (12,00 m) | <b>Equipe:</b> Carlos Silva, Cauã e Alessandra Feitosa", sub_style))
    story.append(Paragraph("<b>Instituição:</b> Estaleiro Escola Embrião (EEE) / Brana Projetos Navais | <b>Data do Relatório:</b> 15/10/2026", sub_style))
    story.append(Spacer(1, 0.2*cm))
    story.append(HRFlowable(width="100%", thickness=1.5, color=azul_brana, spaceBefore=2, spaceAfter=8))
    
    # 1. Comparativo e Etapas que Faltam Consolidar
    story.append(Paragraph("1. Diagnóstico Comparativo: Grupo 2 × Grupo 3 (O Que Deixamos de Fazer?)", h2_style))
    diag_txt = (
        "Ao comparar o acervo técnico do Grupo 2 com o Grupo 3 (*Saveiro Mestre da Cana*), observa-se que o Grupo 2 gerou praticamente "
        "todas as ferramentas interativas (HTMLs de linhas, 3D, estrutura, velocidade e plano vélico), porém <b>não formalizou os relatórios textuais e memoriais descritivos finais em PDF/DOCX</b> que o Grupo 3 produziu.<br/><br/>"
        "<b>As 4 principais lacunas documentais do Grupo 2 que precisam ser fechadas:</b><br/>"
        "• <b>1. Caso de Uso Oficial em DOCX/PDF:</b> O Grupo 3 tem o <i>Caso_de_Uso_Saveiro_Mestre_da_Cana.pdf</i>. O Grupo 2 tem croquis e tabelas, mas falta o formulário formal preenchido com a missão e requisitos assinados.<br/>"
        "• <b>2. Área de Navegação Oficial em PDF:</b> O Grupo 3 possui o documento <i>Area_de_Navegacao_Saveiro_Mestre_da_Cana_Grupo_3.pdf</i>. O Grupo 2 ainda não rodou o relatório oficial de derrota e cartas náuticas da Marinha para o Tesouro da Baía.<br/>"
        "• <b>3. Memória de Cálculo Completa de Pesos e Centros (PDF):</b> O Grupo 3 consolidou o documento <i>Memoria_Calculo_Pesos_Arranjo_Propulsao_Mestre_da_Cana.pdf</i>. O Grupo 2 tem o painel interativo (HTML), mas não havia impresso a memória consolidada de pesos de cada componente.<br/>"
        "• <b>4. Prancha 3D do Casco e Modelo Exportado (.OBJ / .STL):</b> O Grupo 3 gerou pranchas de corte do convés, casaria e malha 3D aberta. O Grupo 2 tem o .PART do DELFTship, mas não compilou a prancha gráfica de arranjo geral."
    )
    story.append(Paragraph(diag_txt, body_style))
    story.append(Spacer(1, 0.3*cm))
    
    # 2. Cronologia e Memória de Ações do Grupo 2
    story.append(Paragraph("2. Memória Cronológica de Ações do Grupo 2 (Histórico do Repositório)", h2_style))
    story.append(Paragraph("Registro exato de criação, modificação e avanço dos arquivos no diretório <code>~/eee/grupos/grupo-2/</code>:", body_style))
    story.append(Spacer(1, 0.2*cm))
    
    history_data = [
        [Paragraph("<b>Data / Hora</b>", table_hdr), Paragraph("<b>Ação / Evento</b>", table_hdr), Paragraph("<b>Arquivo Gerado / Modificado</b>", table_hdr), Paragraph("<b>Tamanho</b>", table_hdr), Paragraph("<b>Etapa do Projeto</b>", table_hdr)],
        [Paragraph("17/09/2026 19:38", table_cell), Paragraph("Inclusão de Tabela Manuscrita", table_cell), Paragraph("tabela_estudo_similares_original.jpg", table_cell), Paragraph("127 KB", table_cell_center), Paragraph("Estudo de Similares", table_cell)],
        [Paragraph("17/09/2026 19:38", table_cell), Paragraph("Geração do PDF Paramétrico", table_cell), Paragraph("estudo_similares_grupo_2.pdf", table_cell), Paragraph("6,5 KB", table_cell_center), Paragraph("Estudo de Similares", table_cell)],
        [Paragraph("22/09/2026 20:24", table_cell), Paragraph("Digitalização de Croqui Inicial", table_cell), Paragraph("Plano-de-Linhas-Redondo-Alessandra.html", table_cell), Paragraph("98 KB", table_cell_center), Paragraph("Plano de Linhas 2D", table_cell)],
        [Paragraph("23/09/2026 18:20", table_cell), Paragraph("Ajuste de Boca (3,50m e 3,80m)", table_cell), Paragraph("Plano-de-Linhas-Tesouro-da-Baia-12m.html", table_cell), Paragraph("98 KB", table_cell_center), Paragraph("Variação Paramétrica", table_cell)],
        [Paragraph("27/09/2026 22:43", table_cell), Paragraph("Iterações da Tabela de Cotas", table_cell), Paragraph("tabela_cotas_tesouro_da_baia_v1 a v3.txt", table_cell), Paragraph("~820 B", table_cell_center), Paragraph("Tabela de Cotas", table_cell)],
        [Paragraph("28/09/2026 09:47", table_cell), Paragraph("Fechamento Tabela V4 Oficial", table_cell), Paragraph("tabela_cotas_tesouro_da_baia_v4.txt", table_cell), Paragraph("822 B", table_cell_center), Paragraph("Offsets Definitivos", table_cell)],
        [Paragraph("28/09/2026 09:47", table_cell), Paragraph("Visualizador 3D Alessandra", table_cell), Paragraph("Casco-Redondo-3D-Alessandra-Feitosa.html", table_cell), Paragraph("98 KB", table_cell_center), Paragraph("Modelo 3D Hidrostática", table_cell)],
        [Paragraph("28/09/2026 18:08", table_cell), Paragraph("Visualizador 3D e DELFTship Cauã", table_cell), Paragraph("Casco-Redondo-3D-Caua.html / .part", table_cell), Paragraph("98 KB / 38 KB", table_cell_center), Paragraph("Exportação CAD/3D", table_cell)],
        [Paragraph("28/09/2026 18:19", table_cell), Paragraph("Prancha A3 Plano de Linhas", table_cell), Paragraph("Plano-de-Linhas-Tesouro-da-Baia-Alessandra.pdf", table_cell), Paragraph("181 KB", table_cell_center), Paragraph("Prancha Oficial A3", table_cell)],
        [Paragraph("28/09/2026 19:54", table_cell), Paragraph("Planificação de Chapas (Corte)", table_cell), Paragraph("Planificacao-Casco-Redondo-Caua.pdf / .html", table_cell), Paragraph("197 KB / 199 KB", table_cell_center), Paragraph("Planificação Naval", table_cell)],
        [Paragraph("30/09/2026 19:03", table_cell), Paragraph("Estimativa Dave Gerr / Teale", table_cell), Paragraph("Estimativa-Velocidade-Caua.html", table_cell), Paragraph("333 KB", table_cell_center), Paragraph("Propulsão e Velocidade", table_cell)],
        [Paragraph("05/10/2026 20:04", table_cell), Paragraph("Painel de Equilíbrio Trim/Banda", table_cell), Paragraph("Pesos-Trim-Banda-v2-Redondo-Caua.html", table_cell), Paragraph("165 KB", table_cell_center), Paragraph("Pesos e Centros", table_cell)],
        [Paragraph("07/10/2026 18:33", table_cell), Paragraph("Escantilhão Estrutural ABS", table_cell), Paragraph("Arranjo-Estrutural-Redondo-Caua.html", table_cell), Paragraph("449 KB", table_cell_center), Paragraph("Estrutura e Escantilhão", table_cell)],
        [Paragraph("14/10/2026 17:28", table_cell), Paragraph("Dimensionamento Vélico Completo", table_cell), Paragraph("Plano Velico - Caua.html", table_cell), Paragraph("418 KB", table_cell_center), Paragraph("Plano Vélico e Rig", table_cell)],
        [Paragraph("15/10/2026 09:15", table_cell), Paragraph("Integração do Aluno Carlos Silva", table_cell), Paragraph("Consolidação Memória de Pesos Grupo 2", table_cell), Paragraph("—", table_cell_center), Paragraph("Auditoria e Fechamento", table_cell)]
    ]
    
    t_hist = Table(history_data, colWidths=[2.8*cm, 4.3*cm, 5.4*cm, 2.1*cm, 3.4*cm])
    t_hist.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), azul_brana),
        ('ALIGN', (0,0), (-1,-1), 'LEFT'),
        ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
        ('GRID', (0,0), (-1,-1), 0.5, cinza_borda),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, cinza_fundo]),
        ('TOPPADDING', (0,0), (-1,-1), 2),
        ('BOTTOMPADDING', (0,0), (-1,-1), 2),
    ]))
    story.append(t_hist)
    story.append(Spacer(1, 0.3*cm))
    
    # 3. Plano de Ação para Equiparar ao Grupo 3
    story.append(Paragraph("3. Próximas Ações Imediatas para Equiparar e Superar o Grupo 3", h2_style))
    story.append(Paragraph("Para que o Grupo 2 tenha a entrega mais completa de todo o Estaleiro Escola Embrião, devemos gerar imediatamente:", body_style))
    story.append(Paragraph("1. <b>Memória de Cálculo Completa em PDF (Pesos, Áreas de Costado/Fundo e Propulsão):</b> Compilar os 14.500 kg, com as espessuras de 25 mm e 28 mm, centros de gravidade e áreas de superfície molhada.", body_style))
    story.append(Paragraph("2. <b>Relatório Oficial de Área de Navegação (PDF com Cartas DHN):</b> Traçar a rota histórica do saveiro na BTS (Salvador ➔ Nazaré / Cachoeira).", body_style))
    story.append(Paragraph("3. <b>Documento Oficial de Caso de Uso (.docx / .pdf):</b> Formalizar a missão de turismo cultural e carga tradicional do Tesouro da Baía.", body_style))
    story.append(Spacer(1, 0.2*cm))
    story.append(HRFlowable(width="100%", thickness=0.8, color=cinza_borda, spaceBefore=2, spaceAfter=4))
    story.append(Paragraph("<i>Relatório emitido pelo Sistema de Engenharia Naval da Brana / Estaleiro Escola Embrião.</i>", ParagraphStyle('Rod', parent=body_style, fontSize=7, textColor=colors.HexColor('#6B7280'), alignment=1)))
    
    doc.build(story)

if __name__ == '__main__':
    gerar_relatorio_auditoria_grupo2('/home/magdalena/eee/alunos/carlos-silva/grupo-2-tesouro-da-baia/Relatorio_Auditoria_e_Memoria_Grupo_2.pdf')
