feat: post-run validation + integration tests for skill pipeline

- runner.mjs v0.4: --with-validation flag runs validators on real output
- postValidate config in 20 _skill.json files (maps skill → validator)
- validatePath in ~100 positive test cases
- skipValidation for 5 cross-reference cases (isolated workspace limitation)
- Integration tests: build-config (19 steps), build-epf (6), build-cfe (4)
- base-config cache from build-config for downstream tests
- Fix chart-of-calculation-types test data (DependenceOnCalculationTypes)
- 285/285 unit + 3/3 integration, all green with validation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-03-29 17:30:03 +03:00
co-authored by Claude Opus 4.6
parent 28b2765f68
commit 0778cc89ee
124 changed files with 837 additions and 62 deletions
@@ -8,5 +8,10 @@
"snapshot": {
"root": "workDir",
"normalizeUuids": true
},
"postValidate": {
"script": "skd-validate/scripts/skd-validate",
"flag": "-TemplatePath",
"pathFrom": "validatePath"
}
}
@@ -12,6 +12,7 @@
{ "dataPath": "Наценка", "title": "Наценка, %", "expression": "(Цена - Закупка) / Закупка * 100", "valueType": "decimal(10,2)" }
]
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"]
}
@@ -14,6 +14,7 @@
]
}]
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"]
}
@@ -18,6 +18,7 @@
}
}]
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"]
}
@@ -21,6 +21,7 @@
}
}]
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"]
}
@@ -7,6 +7,7 @@
"fields": ["Наименование"]
}]
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"]
}
@@ -18,6 +18,7 @@
{ "source": "Продажи", "dest": "Остатки", "sourceExpr": "Номенклатура", "destExpr": "Номенклатура" }
]
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"]
}
@@ -10,6 +10,7 @@
}
]
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"]
}
@@ -27,6 +27,7 @@
}],
"parameters": ["Период: StandardPeriod = LastMonth @autoDates"]
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"]
}
@@ -9,6 +9,7 @@
}],
"parameters": ["Период: СтандартныйПериод = LastMonth @autoDates", "Организация: CatalogRef.Организации"]
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"]
}