task-4.3.1

This commit is contained in:
phaichayon
2026-06-29 11:57:37 +07:00
parent 0c0450b152
commit 94fe19c658
17 changed files with 836 additions and 174 deletions

View File

@@ -1,13 +1,13 @@
{
"audit": "payload-parity",
"overallStatus": "PASS",
"quotationCode": "QT-H5-AUDIT",
"previewHash": "1914aaab07b562d967c63d9f3bdea6d44b583e4aac39ea590d08e49975391675",
"generationHash": "1914aaab07b562d967c63d9f3bdea6d44b583e4aac39ea590d08e49975391675",
"snapshotHash": "1914aaab07b562d967c63d9f3bdea6d44b583e4aac39ea590d08e49975391675",
"quotationCode": "QT2606-1122",
"previewHash": "8ab32cb3cf38b76f6bbc4c5704f89fca6a3d1bbaeed0b1d0488cf33217f0f39a",
"generationHash": "8ab32cb3cf38b76f6bbc4c5704f89fca6a3d1bbaeed0b1d0488cf33217f0f39a",
"snapshotHash": "8ab32cb3cf38b76f6bbc4c5704f89fca6a3d1bbaeed0b1d0488cf33217f0f39a",
"mismatches": [],
"comparableFieldCount": 35,
"topicInputKeyCount": 10,
"comparableFieldCount": 33,
"topicInputKeyCount": 6,
"signatureParity": true,
"priceTableParity": true,
"priceTableRowCount": 1,

View File

@@ -1,30 +1,34 @@
{
"audit": "placeholder-integrity",
"overallStatus": "PASS",
"overallStatus": "FAIL",
"results": [
{
"templateName": "ALLA Quotation Standard",
"organizationId": "2330c067-2737-4443-bd6e-ccb8a6cf856b",
"version": "1.1",
"templateName": "ONVALLA Quotation Standard",
"organizationId": "6bf90327-2ce9-4831-93bb-e8d026699ff2",
"version": "1.0",
"duplicateFieldNames": [],
"typoFields": [],
"unmappedPlaceholders": [],
"deadMappings": [],
"deadMappings": [
"exclusion_data"
],
"invalidReservedMappings": [],
"missingReservedFields": [],
"status": "PASS"
"status": "FAIL"
},
{
"templateName": "ONVALLA Quotation Standard",
"organizationId": "8cd23975-e199-4ed0-85a9-8cbd01c810d2",
"version": "1.1",
"templateName": "ALLA Quotation Standard",
"organizationId": "d5c46139-9af4-421b-9395-d83620c62f9b",
"version": "1.0",
"duplicateFieldNames": [],
"typoFields": [],
"unmappedPlaceholders": [],
"deadMappings": [],
"deadMappings": [
"exclusion_data"
],
"invalidReservedMappings": [],
"missingReservedFields": [],
"status": "PASS"
"status": "FAIL"
}
]
}

View File

@@ -1,11 +1,11 @@
{
"audit": "runtime-payload",
"overallStatus": "FAIL",
"staticLabelsStatus": "FAIL",
"quotationCode": "QT2606-1126",
"overallStatus": "PASS",
"staticLabelsStatus": "PASS",
"quotationCode": "QT2606-1122",
"templateName": "ALLA Quotation Standard",
"templateVersion": "1.0",
"findingCount": 165,
"findingCount": 170,
"findings": [
{
"field": "documentData.company.id",
@@ -25,28 +25,28 @@
"field": "documentData.customer.id",
"source": "documentData",
"status": "PASS",
"value": "ba10e844-997e-45ed-8696-7ca96730a859",
"value": "56f1f9a3-6204-4ccc-af0f-5dbf866d5a56",
"message": "String is populated"
},
{
"field": "documentData.customer.name",
"source": "documentData",
"status": "PASS",
"value": "มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ",
"value": "บริษัท นอร์ธเทิร์น แมชชีนเนอรี่ ดีลเลอร์ จำกัด",
"message": "String is populated"
},
{
"field": "documentData.customer.address",
"source": "documentData",
"status": "PASS",
"value": "Bang Sue, Bangkok",
"value": "Mueang Chiang Mai, Chiang Mai",
"message": "String is populated"
},
{
"field": "documentData.customer.phone",
"source": "documentData",
"status": "PASS",
"value": "02-400827",
"value": "02-400824",
"message": "String is populated"
},
{
@@ -60,14 +60,14 @@
"field": "documentData.contact.id",
"source": "documentData",
"status": "PASS",
"value": "2591dec2-b7c9-486a-9810-8ab9bf0f4926",
"value": "93843e06-65db-492f-9229-066e6dfdec5d",
"message": "String is populated"
},
{
"field": "documentData.contact.name",
"source": "documentData",
"status": "PASS",
"value": "คุณวราภรณ์ เกษมศรี",
"value": "คุณกิตติพงศ์ สุวรรณ",
"message": "String is populated"
},
{
@@ -81,56 +81,56 @@
"field": "documentData.contact.mobile",
"source": "documentData",
"status": "PASS",
"value": "0810000250",
"value": "0810000220",
"message": "String is populated"
},
{
"field": "documentData.contact.position",
"source": "documentData",
"status": "PASS",
"value": "Procurement Manager",
"value": "Plant Manager",
"message": "String is populated"
},
{
"field": "documentData.quotation.id",
"source": "documentData",
"status": "PASS",
"value": "c964ec57-c036-404b-93c5-6826d6539d1e",
"value": "7dc0630b-e27d-4696-803a-d93f51bb9804",
"message": "String is populated"
},
{
"field": "documentData.quotation.code",
"source": "documentData",
"status": "PASS",
"value": "QT2606-1126",
"value": "QT2606-1122",
"message": "String is populated"
},
{
"field": "documentData.quotation.projectName",
"source": "documentData",
"status": "PASS",
"value": "Material Handling Lab Crane",
"value": "Dealer Stock Crane Package",
"message": "String is populated"
},
{
"field": "documentData.quotation.projectLocation",
"source": "documentData",
"status": "PASS",
"value": "Bang Sue Engineering Faculty",
"value": "Chiang Mai Service Warehouse",
"message": "String is populated"
},
{
"field": "documentData.quotation.attention",
"source": "documentData",
"status": "PASS",
"value": "คุณวราภรณ์ เกษมศรี",
"value": "คุณกิตติพงศ์ สุวรรณ",
"message": "String is populated"
},
{
"field": "documentData.quotation.reference",
"source": "documentData",
"status": "PASS",
"value": "crm-uat-seed-v1:university-lab-crane-approved",
"value": "crm-uat-seed-v1:dealer-channel-approved",
"message": "String is populated"
},
{
@@ -151,14 +151,14 @@
"field": "documentData.quotation.subtotal",
"source": "documentData",
"status": "PASS",
"value": 3008000,
"value": 4418000,
"message": "Scalar value is populated"
},
{
"field": "documentData.quotation.totalAmount",
"source": "documentData",
"status": "PASS",
"value": 3122003,
"value": 4585442,
"message": "Scalar value is populated"
},
{
@@ -172,7 +172,7 @@
"field": "documentData.items[0].id",
"source": "documentData",
"status": "PASS",
"value": "4b151f4b-ff48-4dcc-b092-d891ff6f5a29",
"value": "7b2a99ab-5106-4ab1-b611-cd63957aa38f",
"message": "String is populated"
},
{
@@ -186,7 +186,7 @@
"field": "documentData.items[0].description",
"source": "documentData",
"status": "PASS",
"value": "Main equipment supply for Material Handling Lab Crane",
"value": "Main equipment supply for Dealer Stock Crane Package",
"message": "String is populated"
},
{
@@ -207,7 +207,7 @@
"field": "documentData.items[0].unitPrice",
"source": "documentData",
"status": "PASS",
"value": 1717102,
"value": 2521993,
"message": "Scalar value is populated"
},
{
@@ -221,14 +221,14 @@
"field": "documentData.items[0].totalPrice",
"source": "documentData",
"status": "PASS",
"value": 1717102,
"value": 2521993,
"message": "Scalar value is populated"
},
{
"field": "documentData.items[1].id",
"source": "documentData",
"status": "PASS",
"value": "43c6d8c7-4af3-4e35-80af-5bb1beeffdc7",
"value": "cc058b8e-2ce1-4e66-a72c-6c40474cf962",
"message": "String is populated"
},
{
@@ -242,7 +242,7 @@
"field": "documentData.items[1].description",
"source": "documentData",
"status": "PASS",
"value": "Installation and commissioning for Material Handling Lab Crane",
"value": "Installation and commissioning for Dealer Stock Crane Package",
"message": "String is populated"
},
{
@@ -263,7 +263,7 @@
"field": "documentData.items[1].unitPrice",
"source": "documentData",
"status": "PASS",
"value": 874161,
"value": 1283924,
"message": "Scalar value is populated"
},
{
@@ -277,14 +277,14 @@
"field": "documentData.items[1].totalPrice",
"source": "documentData",
"status": "PASS",
"value": 874161,
"value": 1283924,
"message": "Scalar value is populated"
},
{
"field": "documentData.items[2].id",
"source": "documentData",
"status": "PASS",
"value": "b2aca42a-0592-4725-9ecd-89c8287b4b44",
"value": "9436e5e6-6dc7-4fa6-bf8a-da2727992680",
"message": "String is populated"
},
{
@@ -298,7 +298,7 @@
"field": "documentData.items[2].description",
"source": "documentData",
"status": "PASS",
"value": "Operator training and documentation for Material Handling Lab Crane",
"value": "Operator training and documentation for Dealer Stock Crane Package",
"message": "String is populated"
},
{
@@ -319,7 +319,7 @@
"field": "documentData.items[2].unitPrice",
"source": "documentData",
"status": "PASS",
"value": 312200,
"value": 458544,
"message": "Scalar value is populated"
},
{
@@ -333,14 +333,14 @@
"field": "documentData.items[2].totalPrice",
"source": "documentData",
"status": "PASS",
"value": 312200,
"value": 458544,
"message": "Scalar value is populated"
},
{
"field": "documentData.items[3].id",
"source": "documentData",
"status": "PASS",
"value": "bb721763-f87f-4a92-8899-36e690eede66",
"value": "63d82897-1660-4f49-b0d1-fddb9712922f",
"message": "String is populated"
},
{
@@ -354,7 +354,7 @@
"field": "documentData.items[3].description",
"source": "documentData",
"status": "PASS",
"value": "Project management and testing for Material Handling Lab Crane",
"value": "Project management and testing for Dealer Stock Crane Package",
"message": "String is populated"
},
{
@@ -375,7 +375,7 @@
"field": "documentData.items[3].unitPrice",
"source": "documentData",
"status": "PASS",
"value": 218540,
"value": 320981,
"message": "Scalar value is populated"
},
{
@@ -389,7 +389,7 @@
"field": "documentData.items[3].totalPrice",
"source": "documentData",
"status": "PASS",
"value": 218540,
"value": 320981,
"message": "Scalar value is populated"
},
{
@@ -403,14 +403,14 @@
"field": "documentData.quotationCustomers[0].id",
"source": "documentData",
"status": "PASS",
"value": "8de4be97-45d0-48f7-b6a6-962077b63389",
"value": "7a20818a-48a1-4eed-a779-ac5ec9d6159b",
"message": "String is populated"
},
{
"field": "documentData.quotationCustomers[0].customerId",
"source": "documentData",
"status": "PASS",
"value": "ba10e844-997e-45ed-8696-7ca96730a859",
"value": "56f1f9a3-6204-4ccc-af0f-5dbf866d5a56",
"message": "String is populated"
},
{
@@ -438,7 +438,7 @@
"field": "documentData.topics.all[0].id",
"source": "documentData",
"status": "PASS",
"value": "1c97eb84-131e-49ad-97ca-a59547223c8d",
"value": "ef076be2-fbef-444a-b7cf-cc2523e8b7dc",
"message": "String is populated"
},
{
@@ -473,7 +473,7 @@
"field": "documentData.topics.all[0].items[0].content",
"source": "documentData",
"status": "PASS",
"value": "Supply and execute material handling lab crane according to approved drawing.",
"value": "Supply and execute dealer stock crane package according to approved drawing.",
"message": "String is populated"
},
{
@@ -501,7 +501,7 @@
"field": "documentData.topics.all[1].id",
"source": "documentData",
"status": "PASS",
"value": "49935121-792a-405c-8a6f-fbdbc8bdda65",
"value": "14f41b98-f9d8-463b-9880-8e96d258a6ba",
"message": "String is populated"
},
{
@@ -564,7 +564,7 @@
"field": "documentData.topics.all[2].id",
"source": "documentData",
"status": "PASS",
"value": "5685dff7-add1-407e-9e6a-e16d6ea8d1be",
"value": "54500c11-5f51-49d6-947e-db2f4d689959",
"message": "String is populated"
},
{
@@ -634,7 +634,7 @@
"field": "documentData.topics.exclusion[0].id",
"source": "documentData",
"status": "PASS",
"value": "49935121-792a-405c-8a6f-fbdbc8bdda65",
"value": "14f41b98-f9d8-463b-9880-8e96d258a6ba",
"message": "String is populated"
},
{
@@ -732,14 +732,14 @@
"field": "documentData.pdfme.quotation_date",
"source": "documentData",
"status": "PASS",
"value": "Jun 15, 2026",
"value": "Jun 3, 2026",
"message": "String is populated"
},
{
"field": "documentData.pdfme.quotation_price",
"source": "documentData",
"status": "PASS",
"value": "THB 3,008,000.00",
"value": "THB 4,418,000.00",
"message": "String is populated"
},
{
@@ -816,29 +816,29 @@
"field": "documentData.signatures.preparedBy.actedAt",
"source": "documentData",
"status": "PASS",
"value": "2026-06-15T09:00:00.000Z",
"value": "2026-06-03T09:00:00.000Z",
"message": "String is populated"
},
{
"field": "documentData.signatures.approvedBy.name",
"source": "documentData",
"status": "PASS",
"value": "-",
"value": "Super Admin",
"message": "String is populated"
},
{
"field": "documentData.signatures.approvedBy.position",
"source": "documentData",
"status": "PASS",
"value": "-",
"value": "Sales Manager",
"message": "String is populated"
},
{
"field": "documentData.signatures.approvedBy.actedAt",
"source": "documentData",
"status": "WARNING",
"value": null,
"message": "Value is null"
"status": "PASS",
"value": "2026-06-06T10:00:00.000Z",
"message": "String is populated"
},
{
"field": "documentData.signatures.authorizedBy.name",
@@ -858,28 +858,28 @@
"field": "documentData.signatures.authorizedBy.actedAt",
"source": "documentData",
"status": "PASS",
"value": "2026-06-17T11:00:00.000Z",
"value": "2026-06-07T09:00:00.000Z",
"message": "String is populated"
},
{
"field": "templateInput.customer_name",
"source": "templateInput",
"status": "PASS",
"value": "มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ",
"value": "บริษัท นอร์ธเทิร์น แมชชีนเนอรี่ ดีลเลอร์ จำกัด",
"message": "String is populated"
},
{
"field": "templateInput.customer_addr",
"source": "templateInput",
"status": "PASS",
"value": "Bang Sue, Bangkok",
"value": "Mueang Chiang Mai, Chiang Mai",
"message": "String is populated"
},
{
"field": "templateInput.customer_tel",
"source": "templateInput",
"status": "PASS",
"value": "02-400827",
"value": "02-400824",
"message": "String is populated"
},
{
@@ -893,35 +893,35 @@
"field": "templateInput.customer_att",
"source": "templateInput",
"status": "PASS",
"value": "คุณวราภรณ์ เกษมศรี",
"value": "คุณกิตติพงศ์ สุวรรณ",
"message": "String is populated"
},
{
"field": "templateInput.project_name",
"source": "templateInput",
"status": "PASS",
"value": "Material Handling Lab Crane",
"value": "Dealer Stock Crane Package",
"message": "String is populated"
},
{
"field": "templateInput.site_location",
"source": "templateInput",
"status": "PASS",
"value": "Bang Sue Engineering Faculty",
"value": "Chiang Mai Service Warehouse",
"message": "String is populated"
},
{
"field": "templateInput.quotation_date",
"source": "templateInput",
"status": "PASS",
"value": "Jun 15, 2026",
"value": "Jun 3, 2026",
"message": "String is populated"
},
{
"field": "templateInput.quotation_code",
"source": "templateInput",
"status": "PASS",
"value": "QT2606-1126",
"value": "QT2606-1122",
"message": "String is populated"
},
{
@@ -935,7 +935,7 @@
"field": "templateInput.quotation_price",
"source": "templateInput",
"status": "PASS",
"value": "THB 3,008,000.00",
"value": "THB 4,418,000.00",
"message": "String is populated"
},
{
@@ -970,14 +970,14 @@
"field": "templateInput.app2",
"source": "templateInput",
"status": "PASS",
"value": "-",
"value": "Super Admin",
"message": "String is populated"
},
{
"field": "templateInput.app2_position",
"source": "templateInput",
"status": "PASS",
"value": "-",
"value": "Sales Manager",
"message": "String is populated"
},
{
@@ -1001,6 +1001,41 @@
"value": "rows:4",
"message": "Array shape is valid"
},
{
"field": "templateInput.tel_label",
"source": "templateInput",
"status": "PASS",
"value": "Tel",
"message": "String is populated"
},
{
"field": "templateInput.email_label",
"source": "templateInput",
"status": "PASS",
"value": "Email",
"message": "String is populated"
},
{
"field": "templateInput.att_label",
"source": "templateInput",
"status": "PASS",
"value": "Att",
"message": "String is populated"
},
{
"field": "templateInput.project_label",
"source": "templateInput",
"status": "PASS",
"value": "Project",
"message": "String is populated"
},
{
"field": "templateInput.site_label",
"source": "templateInput",
"status": "PASS",
"value": "Location",
"message": "String is populated"
},
{
"field": "templateInput.topic_1_0",
"source": "templateInput",
@@ -1047,14 +1082,14 @@
"field": "templateInput.quotation_date_data",
"source": "templateInput",
"status": "PASS",
"value": "Jun 15, 2026",
"value": "Jun 3, 2026",
"message": "String is populated"
},
{
"field": "templateInput.quotation_code_data",
"source": "templateInput",
"status": "PASS",
"value": "QT2606-1126",
"value": "QT2606-1122",
"message": "String is populated"
},
{
@@ -1117,7 +1152,7 @@
"field": "templateInput.quotation_price_data[0][1]",
"source": "templateInput",
"status": "PASS",
"value": "฿3,008,000.00",
"value": "฿4,418,000.00",
"message": "Price table amount cell is formatted"
},
{
@@ -1130,37 +1165,37 @@
{
"field": "templateInput.tel_label",
"source": "templateInput",
"status": "FAIL",
"value": null,
"message": "Static label is empty"
"status": "PASS",
"value": "Tel",
"message": "Static label is populated"
},
{
"field": "templateInput.email_label",
"source": "templateInput",
"status": "FAIL",
"value": null,
"message": "Static label is empty"
"status": "PASS",
"value": "Email",
"message": "Static label is populated"
},
{
"field": "templateInput.att_label",
"source": "templateInput",
"status": "FAIL",
"value": null,
"message": "Static label is empty"
"status": "PASS",
"value": "Att",
"message": "Static label is populated"
},
{
"field": "templateInput.project_label",
"source": "templateInput",
"status": "FAIL",
"value": null,
"message": "Static label is empty"
"status": "PASS",
"value": "Project",
"message": "Static label is populated"
},
{
"field": "templateInput.site_label",
"source": "templateInput",
"status": "FAIL",
"value": null,
"message": "Static label is empty"
"status": "PASS",
"value": "Location",
"message": "Static label is populated"
}
]
}

View File

@@ -1,13 +1,22 @@
{
"audit": "approved-snapshot-parity",
"overallStatus": "PASS",
"quotationCode": "QT-H5-AUDIT",
"overallStatus": "FAIL",
"quotationCode": "QT2606-1122",
"approvedSnapshotAvailable": true,
"approvedTemplateVersionId": "bd6713d5-a731-482f-a5bb-0dea9d766301",
"computedTemplateVersionId": "bd6713d5-a731-482f-a5bb-0dea9d766301",
"inconsistentTemplateKeys": [],
"computedSignatureHash": "39e2c42458c8b08b4299dc3136c9812c311ae7886df91078f4c9ae6e87bdcc00",
"storedSignatureHash": "39e2c42458c8b08b4299dc3136c9812c311ae7886df91078f4c9ae6e87bdcc00",
"approvedArtifactReference": "artifact:a1fd951d-f0b4-4e5b-be88-073596b3829d",
"approvedTemplateVersionId": null,
"computedTemplateVersionId": "6c375f16-3f89-4987-88b0-c8ebe48aeb89",
"inconsistentTemplateKeys": [
"quotation_date",
"topic_1_0",
"item_topic_1_0",
"topic_1_1",
"item_topic_1_1",
"topic_1_2",
"item_topic_1_2",
"quotation_date_data"
],
"computedSignatureHash": "72c05979b9a0b0666a06cce5b80dc67fe9c5493eced4366a4cf63785dc415269",
"storedSignatureHash": "933007a4f0e782b88e3d3049527a25b5bcd744d4a483282050fbfc1b7f06a362",
"approvedArtifactReference": "artifact:ec300b87-3710-43a4-a63c-a72168fe3933",
"refreshedFixtureSnapshot": false
}

View File

@@ -1,7 +1,7 @@
{
"generatedAt": "2026-06-19T10:12:54.977Z",
"overallStatus": "PASS",
"quotationCode": "QT-H5-AUDIT",
"generatedAt": "2026-06-29T04:38:30.133Z",
"overallStatus": "FAIL",
"quotationCode": "QT2606-1122",
"artifacts": {
"templateVersionReport": "template-version-report.json",
"placeholderIntegrityReport": "placeholder-integrity-report.json",
@@ -12,11 +12,11 @@
},
"statuses": {
"templateVersion": "PASS",
"placeholderIntegrity": "PASS",
"placeholderIntegrity": "FAIL",
"runtimePayload": "PASS",
"payloadParity": "PASS",
"topicRuntime": "PASS",
"approvedSnapshotParity": "PASS",
"approvedSnapshotParity": "FAIL",
"staticLabels": "PASS"
},
"priceTable": {

View File

@@ -1,17 +1,17 @@
# PDF Integrity Summary
- Generated At: 2026-06-19T10:12:54.977Z
- Overall Status: PASS
- Quotation Code: QT-H5-AUDIT
- Generated At: 2026-06-29T04:38:30.133Z
- Overall Status: FAIL
- Quotation Code: QT2606-1122
## Statuses
- Template Version Integrity: PASS
- Placeholder Integrity: PASS
- Placeholder Integrity: FAIL
- Runtime Payload: PASS
- Payload Parity: PASS
- Topic Runtime: PASS
- Approved Snapshot Parity: PASS
- Approved Snapshot Parity: FAIL
- Static Labels: PASS
- Price Table Present: Yes
- Price Table Status: PASS

View File

@@ -2,8 +2,8 @@
"audit": "template-version-integrity",
"overallStatus": "PASS",
"activeTemplateCount": 2,
"quotationCode": "QT-H5-AUDIT",
"approvedTemplateVersionId": "bd6713d5-a731-482f-a5bb-0dea9d766301",
"approvedTemplateVersionIsActive": true,
"quotationCode": "QT2606-1122",
"approvedTemplateVersionId": null,
"approvedTemplateVersionIsActive": false,
"issues": []
}

View File

@@ -1,21 +1,17 @@
{
"audit": "topic-runtime",
"overallStatus": "PASS",
"quotationCode": "QT-H5-AUDIT",
"topicCount": 5,
"quotationCode": "QT2606-1122",
"topicCount": 3,
"topicInputKeys": [
"topic_1_0",
"topic_1_1",
"topic_1_2",
"topic_1_3",
"topic_1_4"
"topic_1_2"
],
"itemTopicInputKeys": [
"item_topic_1_0",
"item_topic_1_1",
"item_topic_1_2",
"item_topic_1_3",
"item_topic_1_4"
"item_topic_1_2"
],
"duplicateKeys": [],
"emptySections": []