feat: 完善 Face 一级关系编辑和稳定性校验

This commit is contained in:
2026-08-04 18:15:29 +08:00
parent 5799d5d813
commit a76282d7dd
28 changed files with 6872 additions and 270 deletions
+72 -2
View File
@@ -49,6 +49,25 @@ INFO_GROUPS: list[tuple[str, list[str]]] = [
"curve",
"adjacent_face_ids",
"adjacent_face_count",
"first_level_fact_model",
"first_level_fact_status",
"first_level_fact_relation_depth",
"first_level_fact_relation_boundary",
"first_level_fact_scope",
"first_level_fact_source_model",
"first_level_fact_subject_role",
"first_level_fact_subject_face_ids",
"first_level_fact_subject_face_count",
"first_level_fact_boundary_edge_ids",
"first_level_fact_boundary_edge_count",
"first_level_fact_boundary_vertex_count",
"first_level_fact_adjacent_face_ids",
"first_level_fact_adjacent_face_count",
"first_level_fact_included_face_ids",
"first_level_fact_included_face_count",
"first_level_fact_role_groups",
"first_level_fact_ignored_relation_depths",
"first_level_fact_summary",
],
),
(
@@ -160,6 +179,7 @@ INFO_GROUPS: list[tuple[str, list[str]]] = [
"push_pull_message",
"push_pull_scope_face_ids",
"push_pull_scope_face_count",
"push_pull_scope_area",
"push_pull_scope_note",
"shell_region_kind",
"shell_region_status",
@@ -193,6 +213,18 @@ INFO_GROUPS: list[tuple[str, list[str]]] = [
(
"特征判断",
[
"recognition_summary",
"recognition_candidate",
"recognition_confidence",
"recognition_risk",
"recognition_score",
"recognition_decision",
"recognition_evidence",
"recognition_evidence_keys",
"recognition_ready_actions",
"recognition_limited_actions",
"recognition_blockers",
"recognition_limitations",
"feature_guess",
"confidence",
"material_vote_summary",
@@ -372,6 +404,18 @@ INFO_LABELS = {
"feature_mode": "特征模式说明",
"feature_type": "特征类型",
"feature_source_face_id": "特征来源 Face",
"recognition_summary": "识别摘要",
"recognition_candidate": "识别候选",
"recognition_confidence": "识别置信度",
"recognition_risk": "识别风险",
"recognition_score": "识别评分",
"recognition_decision": "识别结论",
"recognition_evidence": "识别依据",
"recognition_evidence_keys": "识别依据项",
"recognition_ready_actions": "当前可改",
"recognition_limited_actions": "当前受限修改",
"recognition_blockers": "识别限制",
"recognition_limitations": "受限能力",
"parts": "零件数",
"solids": "Solid 数",
"faces": "Face 数",
@@ -389,6 +433,25 @@ INFO_LABELS = {
"curve": "曲线类型",
"adjacent_face_ids": "相邻 Face",
"adjacent_face_count": "相邻 Face 数",
"first_level_fact_model": "一级事实模型",
"first_level_fact_status": "一级事实状态",
"first_level_fact_relation_depth": "一级事实深度",
"first_level_fact_relation_boundary": "一级事实边界",
"first_level_fact_scope": "一级事实范围",
"first_level_fact_source_model": "一级事实来源",
"first_level_fact_subject_role": "一级事实主体",
"first_level_fact_subject_face_ids": "一级主体 Face",
"first_level_fact_subject_face_count": "一级主体 Face 数",
"first_level_fact_boundary_edge_ids": "一级边界 Edge",
"first_level_fact_boundary_edge_count": "一级边界 Edge 数",
"first_level_fact_boundary_vertex_count": "一级边界 Vertex 数",
"first_level_fact_adjacent_face_ids": "一级相邻 Face",
"first_level_fact_adjacent_face_count": "一级相邻 Face 数",
"first_level_fact_included_face_ids": "一级范围 Face",
"first_level_fact_included_face_count": "一级范围 Face 数",
"first_level_fact_role_groups": "一级角色分组",
"first_level_fact_ignored_relation_depths": "暂不传播层级",
"first_level_fact_summary": "一级事实摘要",
"volume": "体积",
"surface_area": "表面积",
"area": "面积",
@@ -533,6 +596,7 @@ INFO_LABELS = {
"push_pull_message": "推拉说明",
"push_pull_scope_face_ids": "推拉共面区域 Face",
"push_pull_scope_face_count": "推拉共面区域 Face 数",
"push_pull_scope_area": "推拉共面区域面积",
"push_pull_scope_note": "推拉共面区域说明",
"shell_region_kind": "壳体/薄壁候选类型",
"shell_region_status": "壳体/薄壁识别状态",
@@ -905,8 +969,14 @@ def _export_quality_text(info: dict[str, object]) -> str:
def _format_value(value: object) -> str:
if isinstance(value, float):
return _format_float(value)
if isinstance(value, tuple):
return "(" + ", ".join(_format_float(float(v)) for v in value) + ")"
if isinstance(value, (tuple, list)):
parts: list[str] = []
for item in value:
try:
parts.append(_format_float(float(item)))
except (TypeError, ValueError):
parts.append(str(item))
return "(" + ", ".join(parts) + ")"
return str(value)