Skip to content

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

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 且后端更新成功。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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