Skip to content

数据源表单:连接密码交互改版 #590

@LordofAvernus

Description

@LordofAvernus

需求描述(Describe)

数据源新增/编辑流程中,原先用「needUpdatePassword 开关 + 密码输入」的两步模式;改版为占位圆点 + 点击就地编辑的一步交互,并用 isPasswordEditing 统一表达「是否正在改密码」状态。

实现方案

  • DataSourceFormFieldisPasswordEditing替代needUpdatePassword;密码展示文案改为「连接密码 / Connection Password」;新增 editPasswordPlaceholder;保留 needUpdatePasswordupdatePassword` 等旧 i18n key 避免零散引用断裂。
  • 去掉开关与 changeNeedUpdatePassword;新增 isPasswordEditinghandleStartEdit / handleCancelEditPASSWORD_PLACEHOLDER、只读态圆点+铅笔图标、编辑态 BasicInput.Password+回滚图标;创建页仍为普通密码框;testDatabaseConnect 改为 useCallback,非编辑态下密码不参与表单项注册从而自然不传。
  • 数据源表单、UpdateDataSourceuseCheckConnectable 全链路字段名与条件判断切换到 isPasswordEditing
  • 按用例矩阵补齐交互与提交/连通性单测;修正 validateFields 不包含 setFieldsValue 写入字段的问题,连通性前置逻辑与 submit 均以 form.getFieldValue('isPasswordEditing') 为准。
  • 更新 DataSource 相关 Jest 快照(无开关 DOM、新标签、只读+图标默认态)。
  • submit() 内不再依赖 getFieldsValue() 读取 isPasswordEditing(该值无对应 Form.Item 时恒为 undefined),改为 getFieldValue(),使更新数据源在编辑密码时正确附带 password

变更影响面

受影响的模块或功能

  • 用户侧:数据源创建/编辑页密码录入与展示;编辑页默认不展示明文/空密码,需点击编辑才进入必填校验与提交流程。
  • 请求行为:更新数据源时是否携带 password 依赖 isPasswordEditing 与校验结果;连通性检测在默认非编辑态下跳过密码相关路径(与产品设计一致需确认)。
  • 自动化:DataSource 相关单测与快照;任何依赖旧「更新密码」开关文案或 DOM 的 E2E 需同步。

外部引用的潜在问题或风险

  • 若其他模块或脚本仍读取 needUpdatePassword 字段或依赖旧 DOM,需迁移到 isPasswordEditing 或新选择器。
  • Ant Design Form 语义:getFieldsValuegetFieldValue 差异易被忽略,同类「仅 setFieldsValue、无 Form.Item」字段需统一规范。

版本兼容性

  • 前端表单字段语义变更:与后端 API 仍应对齐(例如未改密码时是否传空串、是否省略字段);若有 OpenAPI/契约测试应核对更新数据源 payload。
  • i18n:展示文案变更;旧 key 保留降低引用风险,但产品文档若写「密码」需改为「连接密码」。

测试建议

  • 跑通 DataSource 相关单元测试与快照;重点用例:TC 5.2.x(密码 UI)、TC 5.3.x(提交与连通性)。
  • 手工:编辑数据源 → 不点编辑直接保存(应不传新密码);点编辑后改密/清空校验;创建页全流程。
  • 回归 BUG-F-001:编辑态改密后保存,抓包确认 PUT 含 password 且后端更新成功。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions