-
Data Governance Dev authored
背景: cn / type 故意不持久化(plan §4),编辑时按 source_table 重新从数据源拉。 但用户每次都得手动点「测试连接」走 loadColumns,体验差。 改动(只动 web3/src/components/TaskModal.vue): 1. 新增 refreshColumnsForEdit(): - 用存储的 conn_json(含匹配的预设密码或后端返回的密码)+ source_table 直接调 listColumns API - 按 field_key 索引 merge 进现有 fieldList(不动 stored rules,只覆盖 cn/type/isNullable) - DB 中已不存在的字段 → 保留 stored 状态 + 顶部 warning - DB 中新出现的字段(无 stored rules)→ 不主动加,避免污染用户视角 - API 失败(密码空/DB 不通/表被删)→ 静默退化,不弹错误 2. form.password 回填优先级:task 自带 > 预设 > 用户手输 (旧版只靠预设匹配回填,手动建的任务没匹配预设就拿不到密码) 3. 触发时机:编辑场景打开弹窗后,props.task.field_list 异步到位时 (不能挂 open watch:父组件 openEdit 是「同步 set row + 异步 getTask」 两步,同步阶段 field_list 还是 [],refreshColumnsForEdit 会 no-op) 4. 字段表头部「↻ 重新同步字段」按钮:DB 中途变更后手动刷新 v-if=props.task && form.table && fieldList.length > 0 5. preset 加载用 props.task.db_type(不再用 form.dbType 默认 'MySQL'): 编辑 Oracle 任务时,open watch 同步阶段 preset 匹配拿的是 MySQL 预设, 永远匹配不上;watch(form.dbType) 异步重载又来不及。 改为先用 targetDbType=props.task?.db_type||form.dbType 加载。 踩坑:见 work-logs/2026-08-21.md(同步/异步时序类 + 密码可见性)。1dffa7f9