• Data Governance Dev's avatar
    feat(web3): rule 表加「规则名称」列 → 前端展示「违反哪条规则」 · 69eea339
    Data Governance Dev authored
    数据明细(不合规行)当前只展示「哪个字段不合规」,没有「哪条规则被违反」。
    desc 是给 LLM 看的自然语言(含「必须 18 位」指令式描述),
    不适合直接给用户看。加独立字段 name 给前端展示,desc 继续喂 LLM。
    
    【schema 变更】
    - rule.name TEXT NOT NULL DEFAULT ''(老规则保持空串,迁移不破坏存量)
    - _migrate_rule_name():ALTER TABLE ADD COLUMN name(幂等,123 条老规则验证保留)
    
    【API 校验】
    - RulePayload.name: str = PydField(..., min_length=1) —— 必填
    - RuleOut.name: str = "" —— 老规则空串兜底
    
    【检测引擎链路】
    - CompiledFieldRules.rules 5 元 → 6 元(追加 name)
    - _load_task_compiled snapshot / rule_list 都带 name
    - _evaluate_row 返回 issues: {field, name, desc}
      → bad_rows 透传到前端「数据明细」备注列
    
    【前端 UI】
    - RuleModal:在「规则说明」上方加「规则名称」输入框(红星必填)
      - hasValidRules 加 name.trim() 校验
      - onSave 序列化带 name
      - namePlaceholder 按 rule_type 给不同示例
      - scoped .required 红星样式(不污染全局)
    - ResultTable:ruleHint / errTip / 备注列 issues 优先展示 name
    - FieldConfigDrawer:ruleHint 同步升级「name(desc)」格式
    
    【兼容策略】
    - 老规则 name=空串,UI 三处自动回退 desc 显示
    - 编辑老规则保存时强制补 name(避免历史脏数据持续累积)
    
    【测试】
    - test_rule_types_e2e 6 处 rule payload 补 name(Pydantic 必填后端会拒 422)
    - pytest tests/ → 123 passed
    - vite build → ✓ built in 9.64s
    - 冒烟:init_db() 对线上 DB 跑迁移,老规则全保留默认 ''
    69eea339
ResultTable.vue 13.2 KB