• Data Governance Dev's avatar
    feat(web3): 规则设置弹窗 · 从其他任务导入规则 + 字段中文标签 · 5f6fe045
    Data Governance Dev authored
    动机
    1) 每建一个新任务都要从零手写规则,重复劳动严重。
       任务间的规则往往通用(手机号格式、身份证校验、年龄范围),希望能从已有任务复制。
    2) 导入弹框只显示 ZJHM 这种英文列名,业务人员看不懂字段是啥意思。
       需要在字段标题后补字段中文标签(数据库列注释)。
    
    改动
    src/components/ImportRulesDialog.vue (新)
    - 左右两栏布局(960px 宽):
      · 左列:所有非自身的任务列表(listTasks(),过滤掉 currentTaskId)
      · 右列:选中任务的所有字段+规则(getTask(id) 拿详情,按字段分组),每条规则 checkbox
    - 字段标题:field_key + field_comment 横排显示(comment 为空时「(无字段注释)」灰斜体兜底)
    - 顶部「全选 / 反选」;底部「已选 N 条 + 取消 + 导入 N 条」
    
    src/components/RuleModal.vue
    - 在 + 添加规则 下方加「📥 从其他任务导入规则」按钮(绿色边区分)
    - 新增 taskId prop + importOpen ref + onImportRules()
    - 去掉后端 id(避免保存时按 id 当 update 走错路径),用 Date.now()+count 生成临时占位 id
    - 清空 testVal/testResult(让用户在新字段下重新测试)
    
    src/components/TaskModal.vue
    - <RuleModal> 加 :task-id="props.task?.id || 0"
    
    backend/routers/tasks.py
    - FieldOut 加 comment: Optional[str] = None
    - 新增 _fetch_field_comments(t, conn):用任务自身的 conn_json 连一次数据源,
      调 db_adapter.list_columns() 拿 {field_key: column_comment}
      · 连接信息不全 / 连不上 / 表不存在 → 降级返回空 dict,不报错(comment 是辅助信息)
      · 复用既有 db_adapter,无新依赖;schema/table_name 走绑定参数无 SQL 注入
    - _row_to_out(include_field_list=True) 时拉一次 comment_map 注入每个 FieldOut
    
    关键决策
    - 后端主动拉 comment 而非前端:前端拿不到密码
    - 失败不报错:comment 缺失不影响主流程
    - 不持久化到 Field 表:跟 plan §4 决策一致——数据字典不存,每次按 task 重新拉
    
    Bug 修复
    第一次实现时 computed 返 {fieldKey, fieldComment, rules},但模板里写了 v-if="group.comment",
    comment 没定义 → 永远 falsy → 显示「(无字段注释」兜底。不报错只静默渲染空。
    改成 v-if="group.fieldComment"。已记到 memory(vue-computed-template-prop-name-mismatch)。
    
    验证
    - 后端 TestClient: GET /api/tasks/24 → field_list[ZJHM].comment = '证件号码 | 数据标准: 01010007' ✓
    - npx vite build → ✓ built in 7.09s(1640 modules,无报错)
    
    注
    - 4 个 web3/tests/*.png modified 未提交(与本功能无关)
    - 后端有改动需用户重启进程
    5f6fe045
ImportRulesDialog.vue 15 KB