| Report no. | Date | Customer | Part | Heat | Type | Result | Status | |
| {{ r.reportNo }} | {{ date(r.createdAt) }} | {{ r.customer }} |
{{ r.part?.name }} {{ r.part?.drawing }} | {{ r.part?.heat }} |
{{ r.kind==='SG' ? 'Ductile' : 'Grey' }} |
{{ r.result }} |
{{ r.status }} |
PDF |
No reports yet. Create the first one.
{{ rec.id ? rec.reportNo : 'New report' }}
{{ rec.status }}
{{ rec.result }}
Open PDF
Results
{{ f(m.nodularityAreaPct) }} %Nodularity (area)
{{ f(m.nodularityCountPct) }} %Nodularity (count)
{{ f(m.nodulesPerMm2,0) }}Nodules / mm²
{{ m.graphiteCount ?? '—' }}Graphite particles ({{ f(m.graphitePerMm2,0) }}/mm²)
{{ f(m.graphiteAreaPct) }} %Graphite area
{{ f(m.pearliteMatrixPct) }} / {{ f(m.ferriteMatrixPct) }}Pearlite / ferrite % (matrix)
{{ f(m.volume.matrix) }} %Matrix volume fraction
{{ rec.designation?.iso }}ISO 945-1 · ASTM {{ rec.designation?.astm }}
Graphite detection — field {{ i+1 }} {{ m.perField?.filter(p=>!p.etched)[i]?.mode }}, threshold {{ m.perField?.filter(p=>!p.etched)[i]?.threshold ?? 'n/a' }}
Phase map — etched field {{ i+1 }} thresholds {{ (m.perField?.filter(p=>p.etched)[i]?.thresholds || []).join(' / ') || 'n/a' }}
Findings ({{ rec.findings?.length || 0 }})
| {{ x.severity }} | {{ x.clause }} | {{ x.message }} |
Issued {{ date(rec.issue?.issuedAt) }} · reviewed by {{ rec.issue?.reviewedBy }} · approved by {{ rec.issue?.approvedBy }}
Settings
Calibrations (µm per pixel)
Grades and limits (JSON)
Keys: kind (GRAY/SG), standard, tensileMin, elongationMin, hardness [min,max], nodularityMin, nodulesMin, pearliteMin, pearliteMax, maxDE. Use null where the drawing gives no limit.
{{ gradesError }}