Files
alla-allaos-fullstack/docs/implementation/task-h5-pdf-mapping-audit-visual-parity.md
phaichayon 51d67ef7c2 task-h.5.3
2026-06-19 17:15:28 +07:00

43 lines
1.9 KiB
Markdown

# Task H.5: PDF Mapping Audit & Visual Parity
## Files Added
- `scripts/pdf-audit-utils.ts`
- `scripts/audit-pdf-template-inventory.ts`
- `scripts/audit-pdf-mapping-coverage.ts`
- `scripts/audit-pdf-runtime-payload.ts`
- `scripts/generate-pdf-audit-report.ts`
- `docs/implementation/pdf-parity-checklist.md`
- `docs/business/pdf-mapping-registry.md`
- `docs/adr/0013-pdf-visual-parity-strategy.md`
- `docs/implementation/task-h5-pdf-mapping-audit-visual-parity.md`
## Files Modified
- `package.json`
- `scripts/seed-task-h1-fixture.js`
## Audit Coverage
- template inventory audit scans active template versions, schema field names, table fields, dynamic topic fields, duplicates, missing mappings, and orphan mappings
- mapping coverage audit compares placeholder tokens with DB mappings and table-column metadata
- runtime payload audit inspects resolved `documentData`, `templateInput`, and `pdfme.topic_inputs`
- report generator writes JSON and Markdown summary artifacts for regression review
## Fixture Strategy
- `seed-task-h1-fixture.js` now also provisions `QT-H5-AUDIT`
- the audit fixture is intended to carry richer topic/item/party coverage than the original H.1 smoke dataset
## Remaining Risks
- approved snapshot parity remains a warning when the target quotation has never generated an approved PDF artifact
- the audit suite validates business payload parity, not pixel-perfect PDF screenshots
- manual review is still needed when template designers move static labels or brand blocks
## H.5.3 Follow-up
- template JSON revisions now flow through a dedicated version-remap step instead of patching `1.0` in place
- static labels such as `tel_label`, `email_label`, `att_label`, `project_label`, and `site_label` are now runtime-mapped rather than tolerated as blank designer placeholders
- deleted fields from the previous version, notably `exclusion_data` and `exclusion_label`, are explicitly classified and removed from the active mapping set