43 lines
1.9 KiB
Markdown
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
|