• Data Governance Dev's avatar
    refactor(web): 「字段长度检查」按字段类型拆 7 个独立 step + 3 层嵌套 · 53f6205d
    Data Governance Dev authored
    后端:
      - step6_length_check.py: LENGTH_RULES 扁平列表 → 7 个 _BUILTIN_CATEGORIES
        (len_id_card / len_uscc / len_mobile / len_xzqh / len_postal / len_email / len_bank_card)
        每个分类独立 rules + UI 元数据 + expected_length + standard
      - orchestrator.py: 单 length_check step → 7 个 len_* 独立 step
        (工厂函数 _run_length_check_category(cat_id));旧的 length_check 保留为 hidden
      - match_config.py: 新增 get_length_categories_rules(cat_id);旧 get_length_rules() 保留为兜底
      - standards_match.yaml: step6_length.rules → step6_length.categories.<cat_id>.rules
        每分类 1 个 name_pattern + 1 个 comment_keyword(区划留 2 个)
      - routes.py /api/analysis-tree: 加递归 3 层嵌套(group → subgroup → leaf)
        新增 is_subgroup: True 显式标记(避免靠 step_id 缺失推断)
        /api/match-config: 给每个 len_* 单独返回 names/comments 默认值
    
    前端:
      - analysis_tree.json: 「字段长度检查」从 leaf 改为 subgroup
        (key=length_check_group, 含 7 个 len_* 子 step)
      - index.html: flatCheckRows + flatResultRows 支持 3 层(_level 0/1/2)
        toggleGroupCheck / setAllChecks / setAllGroupsExpanded 改为递归处理子组叶子
        flatResultRows fallback 分支抽出 _push_leaf_row(item, level) 助手
      - style.css: 加 .tree-row--subgroup / .subgroup-title / .subgroup-count / .subgroup-description
    
    Bug fix:
      - step_id vs tab_key 混用导致 displayedTabs 过滤掉 7 个 length tab
        section_key='length_len_id_card' / tab_key='length_len_id_card' / step_id='len_id_card' 三者分离
        _wrap() 加 step_id 参数(默认沿用 tab_key,向后兼容旧 length_check)
    
    WORKLOG 记录所有改动 + 5 个踩坑(subgroup 识别 / YAML 关键词精简 / fallback 分支复用 /
    CSS .tree-row--subgroup / LengthRule.__dict__ 转 dict 抛错 / step_id 与 tab_key 混用)
    53f6205d
style.css 13.8 KB