-
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