import React from 'react'; import type { ReportData, ComplianceItem } from '../types'; interface ReportDisplayProps { report: ReportData; } const statusClass = (status: 'OK' | 'FALHA' | 'CONFORME' | 'NÃO CONFORME') => { switch (status) { case 'OK': case 'CONFORME': return 'text-emerald-700 bg-emerald-50 dark:bg-emerald-900/30 dark:text-emerald-400'; case 'FALHA': case 'NÃO CONFORME': return 'text-rose-700 bg-rose-50 dark:bg-rose-900/30 dark:text-rose-400'; default: return 'text-slate-600 bg-slate-50 dark:bg-slate-800/50 dark:text-slate-400'; } }; const statusIcon = (status: 'OK' | 'FALHA') => { return status === 'OK' ? ( ) : ( ); }; export const ReportDisplay: React.FC = ({ report }) => { const identification = report?.identification || {}; const compliance = report?.compliance || { status: 'NÃO CONFORME', mechanical: [], chemical: [], otherTests: [] }; const equivalents = report?.equivalents || []; const confidence = report?.confidence || 0; return (
{/* Cabeçalho (Header) */}
{/* Logo SteelCheck com visual geométrico */}
STEEL CHECK IA Quality Report

Relatório Técnico de Qualidade

Análise de conformidade normativa assistida por inteligência artificial

{/* Status Global de Conformidade */}
Status Geral
{compliance.status}
{/* Score de Confiança da IA */}
Confiança
{confidence}% IA-Score
{report.analysisSource && ( {report.analysisSource === 'Banco Local' ? '🏦 Banco Local' : '🧠 Rede Neural'} )}
{/* Conteúdo Principal */}
{/* Seção 1: Dados de Identificação */}

1. Identificação do Produto e Lote

Produto {identification.product || '-'}
Norma de Referência {identification.standards || '-'}
Fabricante {identification.manufacturer || '-'}
Nº do Certificado #{identification.certificateNumber || '-'}
Data de Emissão {identification.certificateDate || '-'}
Lote analisado {identification.batches || '-'}
Corrida (Heat) {identification.heats || '-'}
Massa Total {identification.quantity || '-'}
{/* Banner de Não Conformidade se aplicável */} {compliance.status === 'NÃO CONFORME' && compliance.nonComplianceReason && (

Motivo da Não Conformidade Normativa

{compliance.nonComplianceReason}

)} {/* Seções 2 e 3: Propriedades (Lado a Lado no Desktop) */}
{/* Propriedades Mecânicas (Esquerda) */}

2. Propriedades Mecânicas

{compliance.mechanical.map((item, i) => { const isPositive = item.differencePercentage?.startsWith('+'); const diffColor = isPositive ? 'text-emerald-600 dark:text-emerald-400' : 'text-rose-600 dark:text-rose-400'; return ( ); })} {compliance.mechanical.length === 0 && ( )}
Propriedade Certificado % Rel. Status
{item.property} {item.certificate} {item.differencePercentage ? ( {item.differencePercentage} ) : -} {statusIcon(item.status)} {item.status}
Nenhum dado mecânico identificado
* Limites de conformidade validados conforme parâmetros da norma {identification.standards || '-'}.
{/* Composição Química (Direita) */}

3. Composição Química (%)

{compliance.chemical.map((item, i) => ( ))} {compliance.chemical.length === 0 && ( )}
Elem. Norma de Referência Valor Certificado Status
{item.element} {item.norm} {item.certificate} {item.status}
Nenhum dado químico identificado
{/* Seção 3: Equivalências Internacionais */}

4. Matriz de Equivalências Internacionais

{equivalents.length > 0 ? ( equivalents.map((item, i) => (
{item.system} {item.norm}
)) ) : (
Nenhuma equivalência normativa identificada no documento.
)}
{/* Nota de Inteligência Artificial */}

Laudo Assistido por Inteligência Artificial

Os dados certificados deste lote foram analisados em tempo real contra as bibliotecas normativas globais de siderurgia. O status global é classificado como {compliance.status}.

{/* Rodapé (Footer) */}
); };