feat: track settings changes and enforce Chinese UI copy

This commit is contained in:
chengma
2026-07-06 11:32:02 +08:00
parent 26e59c8cea
commit 19eaa794cf
10 changed files with 430 additions and 19 deletions
+20 -1
View File
@@ -1156,4 +1156,23 @@
- 背景:Claude Code 已在任务看板新增 T-531,用于解决⑤设置页填写 cmhub Base URL/API Key 后没有未保存提示、切 Tab/关闭窗口会静默丢输入的问题。
- 修正:认可“显式保存 + 脏状态追踪 + 离开确认”方案,不做自动保存;补充 `save_app_settings()` 成功/失败返回语义、放弃必须重新从 `config.json` 与 `config/cmhub.json` 回填、程序化回填不置脏、`currentChanged` 回退需 guard 防递归、刷新别名/测试连接成功只提醒保存不落盘。
- 文档:同步 `docs/06-tasks.md`、`docs/current-state.md`、`docs/routes.md`、`docs/api.md`;下一个可领取任务改为 T-531,T-525 ruff 顺延。
- 验证:文档-only 更新,未运行单元测试。
- 验证:文档-only 更新,未运行单元测试。
## 【2026-07-06】T-531 完成 · ⑤设置未保存状态追踪 + 离开确认
- 状态:DONE
- 代码:⑤设置页新增 dirty 状态、保存按钮旁“● 未保存更改”提示、`is_dirty()`、`discard_unsaved_changes()`,`save_app_settings()` 改为返回成功/失败;保存成功清除 dirty,保存失败保留 dirty;放弃会重新读取 `config.json` 与 `config/cmhub.json` 并回填控件。
- 主窗口:`MainWindow` 在切 Tab 和关闭窗口时检查⑤设置页未保存状态,弹保存/放弃/取消;保存失败或取消会回到⑤设置页;`currentChanged` 回退使用 guard 防止递归。
- cmhub:刷新别名/测试连接继续使用输入框实时值,但不自动保存 URL/API Key;成功文案提醒“记得点『保存设置』持久化”。程序化回填和别名下拉刷新不触发 dirty。
- 边界:未改配置 schema、AI HTTP 协议、DB schema、Excel、Shopee/CDP 流程。
- 测试:新增 GUI 单测覆盖 dirty 置位/清除、程序化刷新不置脏、放弃还原 URL/Key、切 Tab 取消、保存失败、放弃分支、关闭窗口取消。
- 验证:`python -m py_compile app\gui\tabs\settings.py app\gui\main_window.py tests\test_gui.py` 通过;`python -m unittest discover -s tests -p test_gui.py` 通过(86 tests)。
- 下一步:T-525「引入 ruff(lint + format)+ 可选 pre-commit」。
## 【2026-07-06】文档规则 · 用户可见文本统一中文
- 规则:所有用户可见文本必须使用中文,覆盖弹窗标题/正文/按钮、窗口标题、按钮、菜单、label、placeholder、tooltip、状态栏、空状态、确认框、运行日志、错误提示和成功提示等。
- 边界:URL、配置键、API 字段、模型别名、第三方/Shopee 原始错误可保留原文,但外围必须给中文解释;不得直接把英文技术报错裸露给用户。
- 文档:同步 `AGENTS.md`、`docs/05-coding-rules.md`、`docs/current-state.md`。
- 代码:同步修正 T-531 设置未保存离开确认框,改用自定义中文按钮“保存 / 放弃 / 取消”,避免系统默认按钮显示英文。
- 验证:`python -m py_compile app\gui\main_window.py tests\test_gui.py` 通过;`python -m unittest discover -s tests -p test_gui.py` 通过(86 tests);`python -m compileall app main.py` 通过;`python -m unittest discover -s tests` 通过(195 tests);`git diff --check` 通过,仅有本机 LF/CRLF 提示。