feat: show nonComplianceReason detail banner under identification section when report is NÃO CONFORME

This commit is contained in:
2026-06-23 16:55:39 +00:00
parent 94a41e6a6e
commit 0d90e3d5ae
3 changed files with 16 additions and 0 deletions
+13
View File
@@ -114,6 +114,19 @@ export const ReportDisplay: React.FC<ReportDisplayProps> = ({ report }) => {
</div>
</section>
{/* Banner de Não Conformidade se aplicável */}
{compliance.status === 'NÃO CONFORME' && compliance.nonComplianceReason && (
<div className="mb-4 bg-rose-50 dark:bg-rose-950/20 border border-rose-200 dark:border-rose-800/50 rounded-lg p-3 text-[10px] text-rose-800 dark:text-rose-300 leading-normal flex gap-2.5 items-start">
<svg className="w-4 h-4 shrink-0 text-rose-600 dark:text-rose-400 mt-0.5" fill="none" viewBox="0 0 24 24" strokeWidth="2.5" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
</svg>
<div>
<h4 className="font-black uppercase tracking-wider text-[9px] text-rose-900 dark:text-rose-200 mb-0.5">Motivo da Não Conformidade Normativa</h4>
<p className="font-medium">{compliance.nonComplianceReason}</p>
</div>
</div>
)}
{/* Seções 2 e 3: Propriedades (Lado a Lado no Desktop) */}
<section className="grid grid-cols-1 md:grid-cols-12 gap-2 mb-3 flex-grow">
+2
View File
@@ -75,6 +75,7 @@ const reportSchema = {
type: Type.OBJECT,
properties: {
status: { type: Type.STRING, enum: ["CONFORME", "NÃO CONFORME"], description: "Status geral de conformidade." },
nonComplianceReason: { type: Type.STRING, description: "Se o status for 'NÃO CONFORME', explique detalhadamente o motivo da não conformidade, citando quais propriedades ou elementos químicos falharam e quais eram os limites da norma técnica analisada. Se for 'CONFORME', retorne uma string vazia." },
mechanical: {
type: Type.ARRAY,
items: {
@@ -196,6 +197,7 @@ FORMATO DO RETORNO:
},
"compliance": {
"status": "CONFORME",
"nonComplianceReason": "",
"mechanical": [
{ "property": "Yield Strength (Limite de Escoamento)", "norm": "Min: 345 MPa", "certificate": "415 MPa", "status": "OK", "differencePercentage": "+20.3%" }
],
+1
View File
@@ -22,6 +22,7 @@ export interface ComplianceItem {
export interface ComplianceData {
status: 'CONFORME' | 'NÃO CONFORME';
nonComplianceReason?: string;
mechanical: ComplianceItem[];
chemical: ComplianceItem[];
otherTests: ComplianceItem[];