import os
from reportlab.lib.pagesizes import letter
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import inch

pdf_path = "/home/magdalena/eee/alunos/alberico-de-carvalho-santiago/Caso_de_Uso_Lobster_8_5m_30CV.pdf"

doc = SimpleDocTemplate(
    pdf_path,
    pagesize=letter,
    rightMargin=36,
    leftMargin=36,
    topMargin=36,
    bottomMargin=36
)

styles = getSampleStyleSheet()

primary_color = colors.HexColor("#0F2B48")
secondary_color = colors.HexColor("#B45309")
dark_neutral = colors.HexColor("#1E293B")
light_neutral = colors.HexColor("#F8FAFC")
border_color = colors.HexColor("#CBD5E1")

title_style = ParagraphStyle(
    'DocTitle',
    parent=styles['Heading1'],
    fontName='Helvetica-Bold',
    fontSize=16,
    leading=20,
    textColor=primary_color,
    alignment=1,
    spaceAfter=3
)

subtitle_style = ParagraphStyle(
    'DocSubtitle',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=9.5,
    leading=13,
    textColor=secondary_color,
    alignment=1,
    spaceAfter=8
)

section_heading = ParagraphStyle(
    'SectionHeading',
    parent=styles['Heading2'],
    fontName='Helvetica-Bold',
    fontSize=10.5,
    leading=13,
    textColor=primary_color,
    spaceBefore=6,
    spaceAfter=3
)

body_style = ParagraphStyle(
    'BodyDark',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8.2,
    leading=11.5,
    textColor=dark_neutral,
    spaceAfter=3
)

bullet_style = ParagraphStyle(
    'BulletDark',
    parent=body_style,
    leftIndent=10,
    firstLineIndent=-7,
    spaceAfter=2
)

table_header_style = ParagraphStyle(
    'TableHeader',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=7.8,
    leading=9.5,
    textColor=colors.white
)

table_body_style = ParagraphStyle(
    'TableBody',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=7.5,
    leading=9.5,
    textColor=dark_neutral
)

table_body_bold = ParagraphStyle(
    'TableBodyBold',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=7.5,
    leading=9.5,
    textColor=primary_color
)

story = []

# Cabeçalho
story.append(Paragraph("CASO DE USO E PERFIL OPERACIONAL (REQUISITOS)", title_style))
story.append(Paragraph("<b>Lobster Boat Pesqueiro Monocasco — 8,50 m | Motor Diesel 30 CV</b><br/><b>Aluno:</b> Alberico de Carvalho Santiago | <b>Instituição:</b> Brana / Estaleiro Escola Embrião (EEE)", subtitle_style))
story.append(HRFlowable(width="100%", thickness=1.5, color=secondary_color, spaceAfter=6))

# 1. Missão
story.append(Paragraph("1. Declaração de Missão", section_heading))
story.append(Paragraph(
    "Embarcação pesqueira monocasco clássica tipo <b>Lobster Boat (Downeast)</b> com <b>8,50 m de comprimento</b>, projetada para faina de pesca profissional (espinhel e armadilhas/covos) em mar aberto na costa da Bahia (porto-base em Salvador), com autonomia contínua de <b>3 a 5 dias</b>, tripulação de <b>4 pescadores</b>, capacidade de carga fria para <b>1.000 kg de peixe + gelo</b> e propulsão <b>Diesel de Centro de 30 CV</b> com foco em máxima economia operacional e segurança de quilha protegida.",
    body_style
))

# 2. Resumo em Tabela
story.append(Paragraph("2. Resumo Executivo dos Requisitos de Projeto", section_heading))

req_table = [
    [Paragraph("Parâmetro de Projeto", table_header_style), Paragraph("Especificação", table_header_style), Paragraph("Impacto no Projeto / Justificativa Técnica", table_header_style)],
    [Paragraph("Atividade / Missão", table_body_bold), Paragraph("Pesca Profissional (Espinhel/Covos)", table_body_style), Paragraph("Praça de popa desimpedida, guincho no bordo e porão isolado.", table_body_style)],
    [Paragraph("Comprimento Total (LOA)", table_body_bold), Paragraph("8,50 m (27,9 pés)", table_body_style), Paragraph("Porte ágil, marinheiro e de baixo custo de construção/manutenção.", table_body_style)],
    [Paragraph("Boca Máxima (B)", table_body_bold), Paragraph("2,85 m a 2,90 m", table_body_style), Paragraph("Proporção 1:3 clássica: estabilidade inicial alta e convés amplo.", table_body_style)],
    [Paragraph("Calado de Projeto (T)", table_body_bold), Paragraph("0,70 m a 0,75 m", table_body_style), Paragraph("Proteção de hélice e leme por falso quilhão/skeg em linha reta.", table_body_style)],
    [Paragraph("Duração da Viagem", table_body_bold), Paragraph("3 a 5 dias contínuos", table_body_style), Paragraph("Autonomia de água potável, diesel, rancho e gelo para 5 dias.", table_body_style)],
    [Paragraph("Tripulação", table_body_bold), Paragraph("4 pessoas (Mestre + 3 Pescadores)", table_body_style), Paragraph("Acomodação com 4 beliches, sanitário e bancada de preparo.", table_body_style)],
    [Paragraph("Capacidade de Pescado", table_body_bold), Paragraph("1.000 kg útil (1,0 ton)", table_body_style), Paragraph("Porão térmico isolado (PUR 80 mm) com ~3,5 m³ para peixe + gelo.", table_body_style)],
    [Paragraph("Gelo Necessário", table_body_bold), Paragraph("1.100 a 1.200 kg em escama", table_body_style), Paragraph("Razão 1,1:1 a 1,2:1 (gelo:peixe) para conservação de 5 dias.", table_body_style)],
    [Paragraph("Motorização", table_body_bold), Paragraph("Diesel Marítimo 30 CV (Centro)", table_body_style), Paragraph("Regime de deslocamento econômico (~2,8 a 3,2 L/h de consumo).", table_body_style)]
]

t_table = Table(req_table, colWidths=[1.6*inch, 2.2*inch, 3.4*inch])
t_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,0), primary_color),
    ('ALIGN', (0,0), (-1,-1), 'LEFT'),
    ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ('GRID', (0,0), (-1,-1), 0.5, border_color),
    ('ROWBACKGROUNDS', (0,1), (-1,-1), [light_neutral, colors.white]),
    ('TOPPADDING', (0,0), (-1,-1), 2),
    ('BOTTOMPADDING', (0,0), (-1,-1), 2),
]))
story.append(t_table)
story.append(Spacer(1, 4))

# 3. Análise Hidrodinâmica com Motor de 30 CV
story.append(Paragraph("3. Análise de Propulsão, Consumo e Desempenho (30 CV)", section_heading))
story.append(Paragraph("• <b>Regime de Deslocamento Puro:</b> Com comprimento de linha d'água de <b>LWL = 7,80 m</b>, a velocidade crítica de casco é de ~6,8 a 7,2 nós. O motor de 30 CV é perfeito para empurrar as ~5 toneladas de deslocamento carregado a <b>6,5 a 7,0 nós de velocidade de cruzeiro</b> com eficiência máxima.", bullet_style))
story.append(Paragraph("• <b>Consumo de Combustível:</b> Média de <b>2,8 a 3,2 Litros/hora</b> em cruzeiro e menos de 1,5 L/h durante a faina de espinhel em marcha lenta.", bullet_style))
story.append(Paragraph("• <b>Tanque de Diesel:</b> Tanque de <b>300 Litros</b> garante cerca de <b>90 a 100 horas de funcionamento</b>, cobrindo com folga a ida, volta, deslocamento nos pesqueiros e margem de segurança de 30%.", bullet_style))
story.append(Paragraph("• <b>Tanque de Água Doce:</b> <b>250 a 300 Litros</b> (dimensionado para 15 L/dia/homem durante 5 dias).", bullet_style))
story.append(Spacer(1, 4))

# 4. Ergonomia e Arranjo de Convés
story.append(Paragraph("4. Distribuição dos Espaços e Ergonomia de Pesca", section_heading))
story.append(Paragraph("• <b>Cabine de Vante (Cuddy Cabin):</b> Proa alta e lançada com beliches em V para descanso dos 4 tripulantes em turnos, sanitário e paiol de mantimentos.", bullet_style))
story.append(Paragraph("• <b>Posto de Comando (Boreste):</b> Console à meia-nau protegido por para-brisa frontal e teto rígido, com acesso direto à manete e comando do guincho hidráulico.", bullet_style))
story.append(Paragraph("• <b>Porão Central de Pescado:</b> Instalado no centro de gravidade longitudinal (LCG) para não alterar o trim (inclinação de proa/popa) do barco conforme o porão vai enchendo.", bullet_style))
story.append(Paragraph("• <b>Praça de Trabalho de Popa:</b> Convés aberto (>10 m²) com borda na altura de 0,75 m, mesa de corte e evisceração na popa e rolete de recolhimento no bordo.", bullet_style))

doc.build(story)
print("PDF Caso de Uso 30CV gerado com sucesso!")
