拆分虾皮店铺模块为 P1 列表与进程编排、P2 预览宫格、P3 RPA 引擎共 11 个任务, 设计依据 Obsidian 多店铺 CDP 管理方案。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
103 lines
9.3 KiB
Markdown
103 lines
9.3 KiB
Markdown
# 任务看板
|
||
|
||
> 单 agent / 小项目使用本文件。多 agent 并发时,改用 [`tasks/README.md`](tasks/README.md) 的一任务一文件规则。
|
||
|
||
## 使用规则
|
||
|
||
1. 一次只做一个任务:领取第一个状态为 `TODO` 且依赖均为 `DONE` 的任务。
|
||
2. 开始后把状态改为 `DOING`。
|
||
3. 完成并验证后把状态改为 `DONE`。
|
||
4. 任务完成必须在 [`../progress.md`](../progress.md) 写入验证命令和结果。
|
||
5. 完成后更新 [`current-state.md`](current-state.md),并过一遍 [`clean-state-checklist.md`](clean-state-checklist.md)。
|
||
|
||
## 状态图例
|
||
|
||
`TODO` 待开始 · `DOING` 进行中 · `DONE` 已完成并验收 · `BLOCKED` 受阻
|
||
|
||
## Phase 0 · 基线与定位
|
||
|
||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||
| --- | --- | --- | --- | --- |
|
||
| T-000 | 接入 Harness Coding 文档 | - | `AGENTS.md`、`docs/`、`progress.md`、`init.ps1`、`init.sh` 已创建;README 已登记入口;统一验证通过 | DONE |
|
||
| T-001 | 验证迁移后构建基线 | T-000 | `go test ./...`、`npm run build`、`go build -o bin/cmbone.exe .` 通过 | DONE |
|
||
| T-002 | 校准为可复用桌面应用模板 | T-001 | 愿景、需求、架构、API、路由、任务和当前状态文档都改为 Windows-first 可复用模板方向 | DONE |
|
||
|
||
## Phase 1 · 应用壳与基础模块
|
||
|
||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||
| --- | --- | --- | --- | --- |
|
||
| T-010 | 确定 Windows-first 窗口与布局策略 | T-002 | 主窗口默认不最大化,初始 `1280x800`,最小 `1024x720`,居中,可调整大小;页面根容器 `width: 100%`、`height: 100vh`;内部用 flex/grid 填满窗口;第二窗口保持小窗 | DONE |
|
||
| T-011 | 实现主窗口启动参数与根布局策略 | T-010 | Go 侧设置主窗口初始宽高、居中、可调整大小;前端根容器和主布局填满窗口;阅读型内容有最大宽度,列表/仪表盘/设置页可自适应拉伸 | DONE |
|
||
| T-012 | 搭建主应用路由骨架 | T-011 | `login`、`dashboard`、`image-optimizer`、`logs`、`statistics`、`settings`、`components` 路由可访问 | DONE |
|
||
| T-013 | 实现登录 provider 边界 | T-012 | 支持本地固定账号 provider;预留 remote provider;账号密码不写死在前端;登录事件写审计日志 | DONE |
|
||
| T-014 | 收敛设置模块 schema | T-012 | 主题、语言、窗口行为、快捷键、数据目录、日志策略都有统一配置定义和默认值 | DONE |
|
||
| T-015 | 持久化窗口尺寸和最大化状态 | T-014 | 保存主窗口尺寸和最大化状态;下次启动恢复用户上次选择;第二窗口不参与该逻辑 | DONE |
|
||
|
||
## Phase 2 · 业务样例与日志统计
|
||
|
||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||
| --- | --- | --- | --- | --- |
|
||
| T-020 | 建立商品图片 AI 优化任务模型 | T-013 | `image_tasks`、`image_task_results` 迁移和基础测试通过;可创建模拟任务 | DONE |
|
||
| T-021 | 实现审计日志与运行日志边界 | T-013 | 审计日志和运行日志分开;登录、设置变更、任务创建、任务失败可记录 | DONE |
|
||
| T-022 | 实现 P0 数据统计 | T-020 | 今日处理图片数、成功率、平均耗时、失败数、今日操作日志数、7 天趋势可查询 | DONE |
|
||
| T-023 | 实现商品图片 AI 优化页面 | T-020 | 上传/选择图片、任务列表、状态、结果预览、失败提示路径可用 | DONE |
|
||
|
||
## Phase 3 · 组件、质量与发布
|
||
|
||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||
| --- | --- | --- | --- | --- |
|
||
| T-030 | 建立常用组件示例页 | T-012 | 输入框、多选框、下拉框、多行文本、表格、筛选、分页、状态标签有可运行示例 | DONE |
|
||
| T-031 | 文档化 Wails bindings 生成流程 | T-012 | README 或技术栈文档说明 `wails3 generate bindings` 的使用、失败处理和版本要求 | DONE |
|
||
| T-032 | 补充 Windows 打包验证文档 | T-031 | `wails3 package` 前置条件、输出目录和常见失败处理写入 README 或 docs | DONE |
|
||
| T-033 | 完成一次模板 smoke 清单 | T-023 | 登录、设置、业务样例、日志、统计、组件示例、托盘、热键都按清单验证并记录结果 | DONE |
|
||
| T-034 | 添加 Windows Wails 快捷脚本 | T-001 | `dev.bat` 一行切到项目根目录、补 Go bin PATH、自动选择空闲端口并运行 `wails3 dev`;`build.bat` 一行切到项目根目录、补 Go bin PATH 并运行 `wails3 build`;README、技术栈、当前状态和执行流水已同步 | DONE |
|
||
| T-035 | 修复主窗口最大化黑边与布局填充 | T-011 | 点击右上角最大化后窗口占满 Windows 可用区域;主窗口背景、根容器和主布局铺满;侧边导航贴齐左边;内容区填满剩余区域;不出现左右黑边;恢复窗口后布局正常 | DONE |
|
||
| T-036 | 支持 Windows 主窗口标题栏双击最大化 | T-035 | Windows 无边框主窗口顶部拖拽区域双击可切换最大化/还原;右上角按钮区、登录入口和打开第二窗口入口双击不误触发;第二窗口不受影响;窗口状态持久化继续生效 | DONE |
|
||
|
||
## EC 分支 · 电商场景
|
||
|
||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||
| --- | --- | --- | --- | --- |
|
||
| EC-001 | 建立商品中心页面 | T-023 | `/#/products` 可访问;支持商品草稿、筛选、列表、状态标签和图片优化入口 | DONE |
|
||
| EC-002 | 建立商品后端模型 | EC-001 | 新增 `products` 表、ProductService、基础测试和 Wails bindings | TODO |
|
||
| EC-003 | 商品中心接入后端 | EC-002 | 商品中心不再使用前端本地示例数据,支持创建和查询商品 | TODO |
|
||
| EC-004 | 图片优化关联商品 | EC-002 | 图片优化任务可关联 SKU 或 product_id,商品中心能看到图片状态 | TODO |
|
||
| EC-005 | 电商统计指标 | EC-003 | 展示商品总数、待优化图片、在售商品、失败图片任务和处理趋势 | TODO |
|
||
|
||
## Phase SP · 虾皮店铺模块(CDP 多店管理)
|
||
|
||
> 设计依据:Obsidian `项目文档/Wails多店铺CDP管理方案.md`(含 UI 与数据模型第 10 节)。架构:Wails 当编排,N 个独立 Chrome(独立 user-data-dir / 端口 / 代理)并行 CDP。分三期:P1 列表与进程编排、P2 预览宫格、P3 RPA 引擎。
|
||
|
||
### P1 · 列表、凭据、进程编排
|
||
|
||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||
| --- | --- | --- | --- | --- |
|
||
| SP-001 | 凭据静态加密原语 | - | `SuiStore` 增加加密/解密工具;Windows 用 DPAPI(`CryptProtectData`,绑当前用户)或主密码派生密钥;密码等敏感字段不落明文;含单元测试 | TODO |
|
||
| SP-002 | 店铺数据模型与迁移 | SP-001 | 新增 `shopee_shops` 表:名称、账号、加密密码(可选)、user-data-dir、调试端口、代理(类型/host/port/user/pass 结构化)、状态枚举(进程未启动/未登录/在线/掉线/需人工OTP/代理失效/RPA运行中)、出口IP校验状态;迁移和基础测试通过 | TODO |
|
||
| SP-003 | ShopService CRUD 与 bindings | SP-002 | 店铺增删改查 service;user-data-dir 与端口可自动分配;密码经加密原语存取;生成 Wails bindings;含测试 | TODO |
|
||
| SP-004 | 导航入口、路由与模块页骨架 | T-012 | `navItems` 增加“虾皮店铺”;`/shopee` 路由可访问;模块页为 master-detail 布局(左店铺列表区 + 右预览区占位) | TODO |
|
||
| SP-005 | 店铺列表 CRUD 界面 | SP-003, SP-004 | 列表展示名称/账号/代理/状态;可增删改;代理为结构化表单;密码为可选项且不明文回显;空态与校验提示可用 | TODO |
|
||
| SP-006 | Chrome 进程编排器 | SP-002 | Go 侧起停/守护外部 Chrome;每进程绑定 user-data-dir + 唯一调试端口 + 代理;代理带认证走 CDP `Fetch.authRequired` 或本地转发;启动后校验出口 IP 并回写状态;打包固定版本 portable Chromium | TODO |
|
||
| SP-007 | 单店打开/关闭与状态回显(路 A) | SP-005, SP-006 | 每店“打开/关闭”按钮拉起/关闭真实 headed Chrome 窗口;状态枚举实时回显到列表;掉线/代理失效可识别并提示人工 | TODO |
|
||
|
||
### P2 · 预览宫格
|
||
|
||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||
| --- | --- | --- | --- | --- |
|
||
| SP-010 | screencast CDP 客户端 | SP-006 | 用 chromedp 连接各店调试端口;`Page.startScreencast` 拉帧;连接池管理与断连重连;帧率可配置 | TODO |
|
||
| SP-011 | 预览宫格界面 | SP-010, SP-007 | 右侧宫格按在线店铺渲染 N 格 `<img>` 实时画面;进入/离开 tab 懒启停 screencast;帧率节流;点击某格置前对应真实 Chrome 窗口(路 A) | TODO |
|
||
|
||
### P3 · RPA 引擎
|
||
|
||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||
| --- | --- | --- | --- | --- |
|
||
| SP-020 | RPA 步骤引擎与首个登录后流程 | SP-007 | 预设步骤模型(打开/导航/填充/点击等)+ 执行器;单店运行态与步骤日志;错误处理与中断;首个内置流程为“登录后流程”(在已登录 profile 上执行,如抓订单/改库存) | TODO |
|
||
| SP-021 | 登录辅助 RPA | SP-020 | 可选“自动填账密”步骤;走到 OTP/验证码即停下并通知人工接管;补登完成后可继续;密码经加密原语读取,不出现在日志 | TODO |
|
||
|
||
## Backlog
|
||
|
||
- 评估是否需要 Playwright / Vitest 覆盖前端关键页面。
|
||
- 评估是否需要平台能力降级策略。
|
||
- 评估真实 AI 后端 provider 的接口形态。
|
||
- 评估本地数据库备份、恢复和清理策略。
|