docs: 切换 GUI 选型为 PySide6
This commit is contained in:
+14
-3
@@ -11,7 +11,7 @@ Windows 本地桌面自动化工具,无后端服务,5 Tab GUI 驱动一条
|
||||
运营(人)
|
||||
|
|
||||
v
|
||||
GUI(Tkinter ttk.Notebook,5 Tab)
|
||||
GUI(PySide6 QTabWidget,5 Tab)
|
||||
① 导入采集 ② AI生成 ③ 更新shopee ④ 账号管理 ⑤ 设置
|
||||
|
|
||||
v
|
||||
@@ -34,7 +34,7 @@ Shopee 卖家中心页面 / 本地图片目录
|
||||
|
||||
真实组件:
|
||||
|
||||
- GUI 入口:`gui.py`(待建,Tkinter + `ttk.Notebook`,5 Tab)。
|
||||
- GUI 入口:`gui.py`(待建,PySide6 + `QMainWindow` + `QTabWidget`,5 Tab)。
|
||||
- 核心模块:`appconfig.py`、`db.py`、`excel.py`、`config.py`、`chrome.py`、`editor.py`、`ai.py`(待建);CDP 底座 `cdp.py`(已有)。
|
||||
- 已验证脚本(重构进模块):`prototypes/demo.py`、`prototypes/set_title.py`、`prototypes/set_cover.py`、`prototypes/get_title.py`、`prototypes/cookies.py`、`prototypes/inspect_images.py`、`prototypes/grab.py`。
|
||||
- 外部依赖:本机 Google Chrome;Shopee;AI 服务(文本+图像,服务商待定);`openpyxl`。
|
||||
@@ -58,7 +58,7 @@ imported → collected → generated → applied
|
||||
|
||||
## 三、职责划分
|
||||
|
||||
**GUI(5 Tab)**:见 [routes.md](routes.md)。只做交互与预览,不写业务逻辑;耗时操作走后台线程。**首次未配账号/未登录时,① ③ 执行按钮禁用并提示去 ④。**
|
||||
**GUI(5 Tab)**:见 [routes.md](routes.md)。只做交互与预览,不写业务逻辑;耗时操作走 PySide6 `QObject` worker + `QThread`,用 signal 回主线程刷新 UI。**首次未配账号/未登录时,① ③ 执行按钮禁用并提示去 ④。**
|
||||
|
||||
**核心模块**
|
||||
|
||||
@@ -226,6 +226,15 @@ images/<slug>/<item_id>_new.<ext> # AI 生成的新封面
|
||||
|
||||
## 六、关键流程细节
|
||||
|
||||
### 6.0 GUI 线程模型(PySide6)
|
||||
|
||||
- 主线程只运行 `QApplication`、窗口、表格、弹窗和状态刷新;不得在主线程执行 CDP、AI、Excel 回写、图片下载等耗时任务。
|
||||
- 每类耗时流程封装为 `QObject` worker:`CollectWorker`、`GenerateWorker`、`ApplyWorker`、`ImportWorker`、`WriteBackWorker`。
|
||||
- Worker 通过 signal 向 GUI 汇报:`progress`、`row_updated`、`log`、`failed`、`finished`、`cancelled`;GUI 槽函数只做 UI 刷新和按钮状态切换。
|
||||
- Worker 不直接操作任何 Qt widget,不弹窗;需要用户确认的动作(如 ③ 开始更新确认)必须在主线程先完成,再启动 worker。
|
||||
- `停止` 使用协作式取消:GUI 调用 worker 的 cancel 标记;worker 在任务间/重试前检查,取消未开始项,正在执行的单条任务跑到安全边界后结束。
|
||||
- SQLite connection 不跨线程共享;每个 worker/线程按需创建自己的连接,写库后发 signal 通知 UI 刷新。
|
||||
|
||||
### 6.1 采集(① Tab,只读)
|
||||
|
||||
- 用账号 Chrome 打开商品页,等就绪,读旧标题(标题输入框 value)。
|
||||
@@ -306,6 +315,7 @@ cmshopee/
|
||||
├── title_prompt.txt # 标题提示词(单文件,启动回显)
|
||||
├── prompts/cover/<名称>.txt # 封面提示词模板(多个)
|
||||
├── appconfig.py / db.py / excel.py / config.py / chrome.py / editor.py / ai.py / prompts.py / gui.py # 待建
|
||||
├── workers.py # PySide6 worker/QThread 编排(可选拆分)
|
||||
├── cdp.py # CDP 底座(正式模块,已有)
|
||||
└── prototypes/ # 已验证原型/探查脚本(demo/set_*/get_title/cookies/inspect_images/grab/1.py)
|
||||
# 逻辑待并入 editor.py 后清理;见 prototypes/README.md
|
||||
@@ -321,3 +331,4 @@ cmshopee/
|
||||
- 密码与 AI Key 加密存、不外传、不写日志;不自动登录。
|
||||
- AI 生成内容直接进入 ③ 更新候选;③ 批量确认后提交,新图本地留档 + 回写 Excel 以备追溯。
|
||||
- 高风险模块先单独验证,再接入流水线。
|
||||
- GUI 只通过 signal/slot 接收 worker 进度;禁止后台线程直接操作 Qt widget 或共享 SQLite connection。
|
||||
|
||||
Reference in New Issue
Block a user