Files
platforms/docs/操作日志_移动端登录密码必填校验_20260904.md
2026-09-04 23:00:55 +08:00

55 lines
3.8 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.
# 移动端登录密码必填校验操作日志
操作时间2026-09-04 22:50:49
操作类型:修改、扩展
影响模块:用户端 Flutter App 登录页、工作人员端 Flutter App 登录页及组件测试
## 操作前状态
两个 App 的手机号密码登录页只校验手机号格式。输入合法手机号并将密码留空后,页面仍调用会话登录方法并向后端发送空密码;后端执行认证比对后统一返回密码错误,页面因此显示“手机号或密码错误”,无法准确指出密码未填写。工作人员端密码框同时缺少回车提交行为。
## 具体操作
1. 两端提交函数同时计算手机号格式和密码必填状态,任一字段无效时立即返回,不调用会话登录方法。
2. 密码字段增加“请输入密码”错误提示,手机号与密码错误可同时显示。
3. 校验失败后聚焦首个无效字段;手机号错误优先于密码错误。
4. 修改对应字段时清除字段错误,修改任一凭据时清除旧的接口级错误。
5. 工作人员端密码框增加回车提交,与按钮共用同一校验函数。
6. 密码仅判断是否为空,非空密码保持原样,不裁剪空格、不执行注册阶段的最短长度校验。
7. 两端测试引入记录型会话替身,覆盖空密码不调用登录、双字段错误、焦点、清错、回车提交和密码原样传递。
8. 同步用户端、工作人员端需求说明及独立项目文档。
## 操作后状态
用户端和工作人员端在空密码时均显示字段级中文提示,不再向后端发送登录请求。手机号和密码同时无效时会完整展示两项问题并定位首个错误;输入修正后提示按字段清除。按钮和密码框回车执行相同校验,合法非空密码仍按原值交给既有会话层。
## 代码变更
- `apps/user_app/lib/ui/features/auth/login_page.dart`+32/-5当前 244 行):密码必填、双字段校验、焦点和清错行为。
- `apps/service_app/lib/ui/features/auth/login_page.dart`+33/-5当前 217 行):同等校验能力及回车提交。
- `apps/user_app/test/ui/login_page_test.dart`+66/-4当前 101 行):用户端登录页回归测试。
- `apps/service_app/test/ui/login_page_test.dart`+61/-4当前 96 行):工作人员端登录页回归测试。
- `docs/03-用户端App需求.md``docs/04-服务端App需求.md`:同步登录校验验收口径。
- `docs/项目文档_移动端登录密码必填校验_v1.0.md`(新增 68 行):记录结构、行为、维护方法和边界。
## 验证结果
- 用户端 `flutter analyze --no-pub`:通过,无问题。
- 工作人员端 `flutter analyze --no-pub`:通过,无问题。
- 用户端 `flutter test --no-pub`:通过,共 29 项测试。
- 工作人员端 `flutter test --no-pub`:通过,共 7 项测试。
- 两端登录页定向测试:各 5 项通过;明确验证空密码时登录调用次数为 0。
- 两端 `flutter build web --release --no-pub --dart-define=API_BASE_URL=http://127.0.0.1:12426`:通过。
- `git diff --check`:通过,仅提示仓库既有的 LF/CRLF 转换策略,无空白错误。
- 本地 Release 静态服务已恢复:用户端 `5180`、工作人员端 `5181` 均返回 HTTP 200。
- 本地后端已按开发配置恢复监听 `12426`,平台健康接口返回 HTTP 200。
## 风险评估
- 变更只发生在两个登录页面,不修改后端、会话公共接口、路由或数据库,兼容既有调用方。
- 密码不裁剪、不转换、不提前校验长度,避免改变既有合法凭据的认证结果。
- 空密码仍可由绕过客户端的调用方直接请求后端;后端继续使用现有统一认证失败语义,这是本次确认的范围边界。
- 错误提示增加后会使输入框纵向高度变化,但页面位于可滚动容器内,小屏幕不会被固定高度截断。