feat: 完善Face保持关系守门与大模型预判
This commit is contained in:
@@ -15,12 +15,12 @@ from scripts.verify_large_stepped_cap_push_pull import _large_multi_boundary_cap
|
||||
MODEL_PATH = PROJECT_ROOT / "assets" / "models" / "geom_extract.step"
|
||||
FACE_ID = 594
|
||||
BASE_FACE_KEYS = (
|
||||
"area",
|
||||
"local_face_width",
|
||||
"local_face_height",
|
||||
"face_center_position",
|
||||
"face_target_normal_position",
|
||||
)
|
||||
RESULT_ONLY_KEYS = ("area",)
|
||||
|
||||
|
||||
class _Probe(WindowStateMixin):
|
||||
@@ -71,6 +71,12 @@ def _assert_contains(keys: tuple[str, ...], expected: tuple[str, ...], label: st
|
||||
raise AssertionError(f"{label} missing {missing}, got {keys}")
|
||||
|
||||
|
||||
def _assert_absent(keys: tuple[str, ...], forbidden: tuple[str, ...], label: str) -> None:
|
||||
leaked = [key for key in forbidden if key in keys]
|
||||
if leaked:
|
||||
raise AssertionError(f"{label} should keep result-only values out of feature parameters: {leaked}")
|
||||
|
||||
|
||||
def _assert_face_594_stays_stable_after_remote_cap_edit() -> None:
|
||||
model = StepModel.load(MODEL_PATH)
|
||||
source_face_id = _large_stepped_cap_face(model)
|
||||
@@ -123,16 +129,19 @@ def main() -> int:
|
||||
|
||||
before_cached_rows = _feature_rows(model, FACE_ID)
|
||||
_assert_contains(before_cached_rows, BASE_FACE_KEYS, "Face 594 before full feature cache")
|
||||
_assert_absent(before_cached_rows, RESULT_ONLY_KEYS, "Face 594 before full feature cache")
|
||||
|
||||
full_info = model.feature_info(FACE_ID)
|
||||
if full_info.get("shell_region_status") == "candidate":
|
||||
dimension_keys = _feature_dimension_keys(full_info)
|
||||
_assert_contains(dimension_keys, BASE_FACE_KEYS, "shell candidate feature dimensions")
|
||||
_assert_absent(dimension_keys, RESULT_ONLY_KEYS, "shell candidate feature dimensions")
|
||||
if "shell_thickness_estimate" not in dimension_keys:
|
||||
raise AssertionError(f"shell candidate should keep shell thickness as an extra dimension: {dimension_keys}")
|
||||
|
||||
after_cached_rows = _feature_rows(model, FACE_ID)
|
||||
_assert_contains(after_cached_rows, BASE_FACE_KEYS, "Face 594 after full feature cache")
|
||||
_assert_absent(after_cached_rows, RESULT_ONLY_KEYS, "Face 594 after full feature cache")
|
||||
if before_cached_rows != after_cached_rows:
|
||||
raise AssertionError(
|
||||
"Face 594 current-only feature rows changed after full recognition cache: "
|
||||
|
||||
Reference in New Issue
Block a user