[待验收] 退出 cmsp 前安全关闭淘宝专属 Chrome #36

Open
opened 2026-10-06 15:29:38 +08:00 by ila · 1 comment
Owner

来源与目标

2026-10-06 用户要求:关闭 cmsp 前检查用于淘宝下载的专属 Chrome;若仍在运行,先关闭浏览器再退出。用户明确指令“建工单,做”。

当前事实

Wails 目前只在 OnShutdown 关闭 SQLite。仓库已有 CloseBrowser,可通过状态文件 PID 和进程命令行的专属 Profile 校验后关闭,但当前使用 taskkill /F;OnBeforeClose 可阻止本次窗口关闭。取视频 Runner.Stop 会请求停止,当前下载可能仍需完成。

实施范围与方案

  • 在 OnBeforeClose 中处理退出前清理;无专属浏览器时直接退出。只读取本程序专属状态文件并验证 PID、进程命令行、配置 Profile 和 CDP 目标的归属,不按 chrome.exe 进程名遍历或关闭其他浏览器。
  • 对已确认归属的浏览器先尝试正常关闭并限时等待;仍存活时再次核对同一进程归属后才强制关闭。归属无法确认时保留浏览器并记录原因,cmsp 仍可退出。
  • 取视频任务运行时先请求停止并阻止当次退出,待当前下载结束后再次关闭,避免中途关闭 Chrome/SQLite 破坏断点。
  • 保留用户的 Chrome Profile 和登录态文件;不读取 Cookie。

非目标

不改变淘宝登录判定、MTOP 请求、视频采集算法或 erpgo 上传流程;不删除 Chrome Profile。

风险与回退

属于浏览器进程归属与全局停止门高风险变更。误关普通 Chrome 和退出时写库竞态为重点风险。回退本次 OnBeforeClose/关闭逻辑即可恢复原退出行为;不涉及 SQLite 迁移。

验收

  • 无状态文件/进程已退出时 cmsp 正常退出;有已验证的专属 Chrome 时先关闭该浏览器再退出,普通 Chrome 保留。
  • PID 复用、Profile 不匹配、CDP 不可验证时不发送终止命令;正常关闭超时后的强制关闭前再次验证归属。
  • 取视频任务进行中时先请求停止并保留断点,不在写库期间直接关闭浏览器或数据库。
  • 归属判断与超时路径单元测试、Go 测试/竞态检查、Windows 生产构建通过;真实 Chrome 与窗口退出由使用者验收。

文档影响

实施后更新 Local-Development-and-Verification 与 Business-Rules-and-Glossary Wiki,在线回读并同步核心镜像。

工具说明

项目未提供 Gitea MCP 工具,本单使用 Gitea API 回退。

## 来源与目标 2026-10-06 用户要求:关闭 cmsp 前检查用于淘宝下载的专属 Chrome;若仍在运行,先关闭浏览器再退出。用户明确指令“建工单,做”。 ## 当前事实 Wails 目前只在 OnShutdown 关闭 SQLite。仓库已有 CloseBrowser,可通过状态文件 PID 和进程命令行的专属 Profile 校验后关闭,但当前使用 taskkill /F;OnBeforeClose 可阻止本次窗口关闭。取视频 Runner.Stop 会请求停止,当前下载可能仍需完成。 ## 实施范围与方案 - 在 OnBeforeClose 中处理退出前清理;无专属浏览器时直接退出。只读取本程序专属状态文件并验证 PID、进程命令行、配置 Profile 和 CDP 目标的归属,不按 chrome.exe 进程名遍历或关闭其他浏览器。 - 对已确认归属的浏览器先尝试正常关闭并限时等待;仍存活时再次核对同一进程归属后才强制关闭。归属无法确认时保留浏览器并记录原因,cmsp 仍可退出。 - 取视频任务运行时先请求停止并阻止当次退出,待当前下载结束后再次关闭,避免中途关闭 Chrome/SQLite 破坏断点。 - 保留用户的 Chrome Profile 和登录态文件;不读取 Cookie。 ## 非目标 不改变淘宝登录判定、MTOP 请求、视频采集算法或 erpgo 上传流程;不删除 Chrome Profile。 ## 风险与回退 属于浏览器进程归属与全局停止门高风险变更。误关普通 Chrome 和退出时写库竞态为重点风险。回退本次 OnBeforeClose/关闭逻辑即可恢复原退出行为;不涉及 SQLite 迁移。 ## 验收 - 无状态文件/进程已退出时 cmsp 正常退出;有已验证的专属 Chrome 时先关闭该浏览器再退出,普通 Chrome 保留。 - PID 复用、Profile 不匹配、CDP 不可验证时不发送终止命令;正常关闭超时后的强制关闭前再次验证归属。 - 取视频任务进行中时先请求停止并保留断点,不在写库期间直接关闭浏览器或数据库。 - 归属判断与超时路径单元测试、Go 测试/竞态检查、Windows 生产构建通过;真实 Chrome 与窗口退出由使用者验收。 ## 文档影响 实施后更新 Local-Development-and-Verification 与 Business-Rules-and-Glossary Wiki,在线回读并同步核心镜像。 ## 工具说明 项目未提供 Gitea MCP 工具,本单使用 Gitea API 回退。
Author
Owner

实施完成,提交并推送:05003da(main)。

最终差异:Wails OnBeforeClose 在取视频任务运行时先请求停止并阻止本次退出;任务结束后再次关闭。无运行任务时,只对状态文件、进程命令行、Profile、Chrome 路径、调试端口和 CDP 页面均可验证的专属 Chrome 发送 Browser.close;超时后重查 PID 归属才强制关闭。归属不明时保留浏览器,避免误关日常 Chrome;不读写 Cookie 或 Profile。

验证:go test ./... -count=1、go test -race ./...、go vet ./...、python dev_scripts/harness.py check --strict、python dev_scripts/harness.py sync --check 均通过;Wails v2.16.0 Windows/amd64 构建成功,build/bin/cmsp.exe 已生成。单元测试覆盖任务停止、正常关闭、PID 复用、Profile/端口/CDP 不匹配及外部 WebSocket 拒绝。未执行真实 Chrome 进程退出与 Wails 窗口交互真机验收,需使用者在目标机器验证专属 Chrome 关闭、日常 Chrome 保留、Profile 保留及运行中任务退出提示。

长期文档:Business-Rules-and-Glossary revision 6deec49c2ba48aaf96a5842b4d525352afd6cf87;Local-Development-and-Verification revision 697d2e353c3b4b3f6648b7a08e4752235c42c7e7。已在线回读、同步本地镜像并通过一致性检查;镜像随 05003da 提交。Gitea MCP 当前不可用,按仓库规则回退 Gitea API。

实施完成,提交并推送:05003da(main)。 最终差异:Wails OnBeforeClose 在取视频任务运行时先请求停止并阻止本次退出;任务结束后再次关闭。无运行任务时,只对状态文件、进程命令行、Profile、Chrome 路径、调试端口和 CDP 页面均可验证的专属 Chrome 发送 Browser.close;超时后重查 PID 归属才强制关闭。归属不明时保留浏览器,避免误关日常 Chrome;不读写 Cookie 或 Profile。 验证:go test ./... -count=1、go test -race ./...、go vet ./...、python dev_scripts/harness.py check --strict、python dev_scripts/harness.py sync --check 均通过;Wails v2.16.0 Windows/amd64 构建成功,build/bin/cmsp.exe 已生成。单元测试覆盖任务停止、正常关闭、PID 复用、Profile/端口/CDP 不匹配及外部 WebSocket 拒绝。未执行真实 Chrome 进程退出与 Wails 窗口交互真机验收,需使用者在目标机器验证专属 Chrome 关闭、日常 Chrome 保留、Profile 保留及运行中任务退出提示。 长期文档:Business-Rules-and-Glossary revision 6deec49c2ba48aaf96a5842b4d525352afd6cf87;Local-Development-and-Verification revision 697d2e353c3b4b3f6648b7a08e4752235c42c7e7。已在线回读、同步本地镜像并通过一致性检查;镜像随 05003da 提交。Gitea MCP 当前不可用,按仓库规则回退 Gitea API。
ila changed title from [进行中] 退出 cmsp 前安全关闭淘宝专属 Chrome to [待验收] 退出 cmsp 前安全关闭淘宝专属 Chrome 2026-10-06 15:39:27 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmsp#36