Files
StellarX-kaifa/开发记录/功能变更/Feature-20251220-0002-TextBox密码模式.md
T

67 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 功能变更 ID: Feature-20251220-0002
> 适用场景:记录小到中等规模的功能、接口、行为、默认值或配置变化。
> 不适用场景:新增核心模块、重大模块重构、架构级设计,请使用“新增功能模块”模板。
## 基本信息
- ID: Feature-20251220-0002
- 标题: TextBox 密码模式
- 状态:已完成(历史记录;本次仅归档,未重新验证)
- 类型:新增
- 级别:L2 中等
- 模块: TextBox / CoreTypes
- 版本 / 分支: v2.3.2 / master
- 环境: Windows / Visual Studio 2022 / Debug、Release / EasyX
- 负责人: Ysm-04(历史实现)
## 变更背景
- 背景: TextBox 原有输入模式会直接绘制用户输入,不适合密码等需要隐藏显示内容的场景。
- 目标: 保存真实输入值,但在界面上使用掩码字符显示,并允许调用方通过 `getText()` 获取原始文本。
- 不做什么:[可选]
- 不提供密码加密、散列、数据库校验或安全存储能力。
- 不改变既有输入模式的行为。
## 变更内容
- 变更摘要: 为 `TextBoxmode` 增加 `PASSWORD_MODE`,并在 TextBox 输入和绘制路径中处理该模式。
- 新增项:[可选]
- `StellarX::TextBoxmode::PASSWORD_MODE`
- 修改项:[可选]
- `TextBox::draw()` 在密码模式下构造掩码文本并绘制掩码,不直接绘制真实内容。
- `TextBox::handleEvent()` 在密码模式下获取输入并保存真实文本。
- 删除 / 废弃项:[可选]
- 无。
- 受影响的文件 / 类 / 函数:
- 历史路径:`include/StellarX/CoreTypes.h`
- 历史路径:`src/textBox.cpp`
- `TextBoxmode`、`TextBox::draw()`、`TextBox::handleEvent()`、`TextBox::getText()`
- 对外 API / 属性变化:[可选]
- `TextBoxmode` 新增枚举值 `PASSWORD_MODE`。
## 行为对照
- 变更前: TextBox 只能按普通输入或只读模式展示文本,输入内容会直接显示。
- 变更后: 设置为 `PASSWORD_MODE` 后,真实内容仍保存在 TextBox 中,绘制层使用 `*` 作为掩码,`getText()` 返回真实内容。
- 兼容性说明:兼容
- 迁移说明:[可选]
- 原有模式无需迁移;密码输入场景显式选择 `PASSWORD_MODE`。
- 此功能只隐藏界面显示,不应被视为密码安全存储方案。
## 验证与落地
- 验证方式:
- 创建密码模式 TextBox,输入内容,确认界面显示掩码且 `getText()` 返回原始文本。
- 将 `getText()` 结果交给业务层进行密码比对。
- 验证结果:
- PDF 历史记录将普通密码输入和业务比对两个手工场景记为通过。
- 历史实现按 `std::string::size()` 生成掩码,即按字节而非明确按多字节逻辑字符计数;中文等 MBCS 输入的掩码数量不能据此认定为已正确验证。
- 本次归档未构建 v2.3.2,也未重新运行 GUI 用例。
- 关联 BUG / Fix:[可选]
- Commit: `0c1cf2938f0d6c5684eeb318f17a8443e0c8cf5a`
- PR:[可选]
- 发布版本:[可选] v2.3.2
- 备注:[可选]
- 资料来源:`StellarX功能_模块变更.pdf` 第 22-23 页,并以对应提交和历史 `CHANGELOG.md` 交叉核对。