import os
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, Image as RLImage, HRFlowable

pdf_path = "/home/magdalena/eee/alunos/ricardo-teixeira/Relatorio_Regressao_Linear_Ricardo_Teixeira.pdf"

doc = SimpleDocTemplate(
    pdf_path,
    pagesize=A4,
    leftMargin=30,
    rightMargin=30,
    topMargin=30,
    bottomMargin=30
)

styles = getSampleStyleSheet()

azul_escuro = colors.HexColor("#1A365D")
azul_medio = colors.HexColor("#2B6CB0")
dark_neutral = colors.HexColor("#2D3748")
light_bg = colors.HexColor("#F7FAFC")
border_color = colors.HexColor("#CBD5E0")

title_style = ParagraphStyle(
    'Title',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=13,
    leading=16,
    textColor=colors.white,
    alignment=1
)

sub_style = ParagraphStyle(
    'Sub',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8.5,
    leading=11,
    textColor=colors.white,
    alignment=1
)

sec_title = ParagraphStyle(
    'SecTitle',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=10.5,
    leading=13.5,
    textColor=azul_escuro,
    spaceBefore=5,
    spaceAfter=2
)

body_text = ParagraphStyle(
    'Body',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8,
    leading=11,
    textColor=dark_neutral
)

caption_style = ParagraphStyle(
    'Caption',
    parent=styles['Normal'],
    fontName='Helvetica-Oblique',
    fontSize=7.2,
    leading=9.5,
    textColor=colors.HexColor("#4A5568"),
    alignment=1
)

elements = []

# Header
header_data = [
    [Paragraph("<b>CURSO DE DESIGN PROFISSIONAL DE EMBARCAÇÕES</b> — BRANA & EEE", sub_style)],
    [Paragraph("RELATÓRIO DE ANÁLISE PARAMÉTRICA E REGRESSÃO LINEAR", title_style)]
]
h_table = Table(header_data, colWidths=[535])
h_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,-1), azul_escuro),
    ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ('TOPPADDING', (0,0), (-1,-1), 4),
    ('BOTTOMPADDING', (0,0), (-1,-1), 4),
]))
elements.append(h_table)
elements.append(Spacer(1, 4))

# Meta
meta_data = [
    [Paragraph("<b>Projeto:</b> Saveiro Tradicional de Carga (7,50 m × 2,50 m)", body_text), Paragraph("<b>Projetista:</b> Ricardo Teixeira", body_text), Paragraph("<b>Data:</b> 15/10/2026", body_text)],
    [Paragraph("<b>Amostra Paramétrica:</b> 6 embarcações reais consolidadas", body_text), Paragraph("<b>Coef. Determinação:</b> R² entre 0,93 e 0,98", body_text), Paragraph("<b>Status:</b> Validado estatisticamente", body_text)]
]
m_table = Table(meta_data, colWidths=[235, 170, 130])
m_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,-1), light_bg),
    ('BOX', (0,0), (-1,-1), 0.5, border_color),
    ('INNERGRID', (0,0), (-1,-1), 0.5, border_color),
    ('TOPPADDING', (0,0), (-1,-1), 2.5),
    ('BOTTOMPADDING', (0,0), (-1,-1), 2.5),
    ('LEFTPADDING', (0,0), (-1,-1), 5),
    ('RIGHTPADDING', (0,0), (-1,-1), 5),
]))
elements.append(m_table)
elements.append(Spacer(1, 4))

# Imagem dos Gráficos
img_path = "/home/magdalena/eee/alunos/ricardo-teixeira/Regressao_Linear_Similares_Ricardo_Teixeira.png"
elements.append(RLImage(img_path, width=535, height=420))
elements.append(Spacer(1, 4))

# Leitura Paramétrica
elements.append(Paragraph("Interpretação Naval das Curvas de Regressão", sec_title))
elements.append(HRFlowable(width="100%", thickness=1, color=azul_medio, spaceAfter=3, spaceBefore=1))

p_concl = (
    "<b>1. Regressão LOA × Boca (R² = 0,9796):</b> A equação da amostra é <i>BOA = 0,356·LOA - 0,455</i>. Para o comprimento de 7,50 m, a reta indica uma boca média de 2,22 m. A escolha de <b>BOA = 2,50 m</b> para o projeto de Ricardo Teixeira posiciona o barco propositalmente no limite superior da boca, conferindo maior estabilidade transversal de forma para transportar as 1,5 t de carga e operar os 6 estivadores sem adernamento excessivo.<br/>"
    "<b>2. Regressão LOA × Deslocamento (R² = 0,9649):</b> A curva de massa a plena carga espelha o crescimento volumétrico da amostra. O deslocamento de projeto de <b>~2.510 kg</b> está rigorosamente aderente à faixa histórica de pequenos saveiros e botes de carga (Joia Rara com 2.230 kg).<br/>"
    "<b>3. Regressão LOA × Área Vélica (R² = 0,9765):</b> A equação <i>Área = 5,29·LOA - 20,28</i> projeta uma área média de <b>19,4 m²</b> para 7,50 m. A especificação de <b>22 a 24 m²</b> na vela de içar garante reserva de potência para tracionar o casco carregado em brisas suaves do Rio Paraguaçu.<br/>"
    "<b>4. Regressão LOA × Calado (R² = 0,9337):</b> A reta indica calado de ~0,39 m para 7,50 m, chancelando com exatidão o calado de projeto de <b>0,38 m</b> adotado."
)
elements.append(Paragraph(p_concl, body_text))
elements.append(Spacer(1, 4))

elements.append(Paragraph("<i>Documento técnico de apoio ao dimensionamento naval — Curso de Design Profissional de Embarcações — Brana & EEE.</i>", caption_style))

doc.build(elements)
print("PDF do relatório de regressão linear gerado com sucesso!")
