import React from 'react';
import type { ReportData, ComplianceItem } from '../types';
import { CheckCircleIcon, XCircleIcon, InfoIcon } from './Icons';
interface ReportDisplayProps {
report: ReportData;
}
const statusClass = (status: 'OK' | 'FALHA' | 'CONFORME' | 'NÃO CONFORME') => {
switch (status) {
case 'OK':
case 'CONFORME':
return 'text-emerald-600 bg-emerald-50 dark:bg-emerald-900/20 dark:text-emerald-400 border border-emerald-200 dark:border-emerald-800';
case 'FALHA':
case 'NÃO CONFORME':
return 'text-red-600 bg-red-50 dark:bg-red-900/20 dark:text-red-400 border border-red-200 dark:border-red-800';
default:
return 'text-slate-600 bg-slate-50 dark:bg-slate-800/50 dark:text-slate-400 border border-slate-200 dark:border-slate-700';
}
};
const statusIcon = (status: 'OK' | 'FALHA') => {
return status === 'OK'
?
: ;
};
const ComplianceTableRow: React.FC<{ item: ComplianceItem; headerLabel: string }> = ({ item, headerLabel }) => (
|
{headerLabel}
{item.property || item.element || item.test}
|
Norma
{item.norm}
|
Certificado
{item.certificate}
|
Status
{statusIcon(item.status)}
{item.status}
|
);
export const ReportDisplay: React.FC = ({ report }) => {
const identification = report?.identification || {};
const compliance = report?.compliance || { status: 'NÃO CONFORME', mechanical: [], chemical: [], otherTests: [] };
const overPerformance = report?.overPerformance || [];
const equivalents = report?.equivalents || [];
const confidence = report?.confidence || 0;
return (
Relatório Técnico de Qualidade
Análise de conformidade normativa assistida por IA
Grau de Confiança da Análise
{confidence}
%
{/* Identification Section */}
1. Dados de Identificação
{Object.entries(identification).map(([key, value]) => (
-
{key.replace(/([A-Z])/g, ' $1')}
{value}
))}
{/* Compliance Section */}
2. Verificação de Conformidade
{compliance.status}
Análise de Propriedades Mecânicas
| Propriedade |
Norma |
Certificado |
Status |
{compliance.mechanical.map((item, i) => )}
Análise de Composição Química (%)
| Elemento |
Norma |
Certificado |
Status |
{compliance.chemical.map((item, i) => )}
{compliance.otherTests.length > 0 && (
Outros Testes
| Teste |
Norma |
Certificado |
Status |
{compliance.otherTests.map((item, i) => )}
)}
{/* Over-Performance Section */}
{compliance.status === 'CONFORME' && overPerformance.length > 0 && (
3. Destaques de Desempenho
Este material excede os requisitos mínimos normativos nos seguintes aspectos:
{overPerformance.map((item, i) => (
{item.property}
{item.value} superior ao mínimo.
))}
)}
{/* Equivalents Section */}
4. Normas Equivalentes
Equivalências internacionais para {identification.standards}:
{equivalents.map((item, i) => (
{item.system}
{item.norm}
))}
);
};