cdsl新增一些笼统的指标集

This commit is contained in:
2026-09-16 14:06:44 +08:00
parent 09a25cdc6b
commit 273b4b5c7b
5 changed files with 232 additions and 3 deletions
+10 -1
View File
@@ -15,6 +15,7 @@ from app.cad_agent.domain.operation_contract import (
validate_operation_contract,
)
from app.cad_agent.ports import AdapterUnavailable
from app.services.derived_metrics import derive_metrics, make_prefix_runner
from app.services.engine_service import load_engine, topology_snapshot, validate_cdsl, validate_cdsl_shape
from app.services.render_bundle import RenderBundleError, render_checkpoint
from app.settings import Settings
@@ -102,7 +103,6 @@ class ProfileCadRuntime:
cdsl_copy = deepcopy(cdsl)
cdsl_copy["part_id"] = task_id
step_path = root / "model.step"
self._write_json(root / "model.cdsl.json", cdsl_copy)
try:
self._validate_finite_tree(cdsl_copy)
validate_cdsl(cdsl_copy, self.engine)
@@ -112,6 +112,15 @@ class ProfileCadRuntime:
health = self._health(engine_result, step_path)
topology = topology_snapshot(engine_result, task_id=task_id, revision_id=revision_id)
self._write_json(root / "model.topology.json", topology)
# Derived metrics are backfilled after validation, so they can
# never influence acceptance; the persisted document carries them
# for training while rebuild behavior stays untouched.
derived = derive_metrics(
cdsl_copy, engine_result, topology,
prefix_runner=make_prefix_runner(self.engine.run_cdsl_only),
)
cdsl_copy.setdefault("meta", {})["derived_metrics"] = derived
self._write_json(root / "model.cdsl.json", cdsl_copy)
report = {"engine_result": engine_result, "preview": {}, "health": health, "render_manifest": {}}
self._write_json(root / "rebuild-report.json", report)
return {"health": health, "topology": topology, "report": report, "render_manifest": {}, "paths": {"cdsl": "model.cdsl.json", "step": "model.step", "topology": "model.topology.json", "report": "rebuild-report.json"}}