docs: 初始化 cmshopee 文档、设计与项目骨架
- docs/ 完整 harness coding 文档集(愿景/需求/技术栈/架构/编码规则/任务/api/routes/current-state) - 5 Tab 流水线设计 + UI 效果图 SVG(docs/ui/) - cdp.py CDP 底座;prototypes/ 已验证原型脚本(待 editor.py 移植后清理) - AGENTS.md/CLAUDE.md 入口、progress.md 执行流水、.gitignore(排除凭证/DB/图片) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# AI 开发入口
|
||||
|
||||
> 给 AI coding agent 的项目入口。这里负责导航和流程,硬性编码规则见 [`05-coding-rules.md`](05-coding-rules.md)。
|
||||
|
||||
## 一句话定位
|
||||
|
||||
cmshopee 是一个 Windows 本地桌面自动化工具(Tkinter,5 Tab),让运营管理多个 Shopee 账号,并用 CDP 驱动 Chrome + AI 批量改商品标题、换商品封面。
|
||||
|
||||
5 Tab 流水线(工作流优先顺序):
|
||||
**① 导入采集 → ② AI生成 → ③ 更新shopee → ④ 账号管理 → ⑤ 设置**
|
||||
|
||||
目标闭环:④ 配账号并登录 → ① 导入 Excel(按“别名”列关联账号)、采集旧标题/旧封面并回写 → ② 用提示词 AI 生成新标题/新封面(无人工确认)→ ③ 对已生成任务改标题+换封面并直接点「更新」提交(无开关)→ 结果实时存 SQLite、批量回写原 Excel。
|
||||
|
||||
存储:应用设置 `config.json`(含 AI Key)+ 业务数据 SQLite `cmshopee.db` + Excel 用 openpyxl + 图片存本地 `images/`。AI 服务商待定。
|
||||
|
||||
## 必读顺序
|
||||
|
||||
每次开始写代码前,按这个顺序建立上下文:
|
||||
|
||||
1. [`01-vision.md`](01-vision.md):为什么做、为谁做、什么不做。
|
||||
2. [`02-requirements.md`](02-requirements.md):MVP 要什么、怎么算达成。
|
||||
3. [`03-tech-stack.md`](03-tech-stack.md):既定技术选型(Python + 自研 CDP + Tkinter 待确认)。
|
||||
4. [`04-architecture.md`](04-architecture.md):模块职责、账号数据模型、**第四节 CDP 已验证事实(重点)**。
|
||||
5. [`05-coding-rules.md`](05-coding-rules.md):写代码前必须遵守的规则。
|
||||
6. [`06-tasks.md`](06-tasks.md):领取本轮唯一任务。
|
||||
7. [`../progress.md`](../progress.md):历史执行记录、验证结果、阻塞点和关键决策。
|
||||
8. [`current-state.md`](current-state.md):当前代码现实、可运行命令、下一步任务。
|
||||
|
||||
如果仓库根目录有 `AGENTS.md`、`CLAUDE.md`,也必须先读,仓库级规则优先。
|
||||
|
||||
## 当前阶段
|
||||
|
||||
当前项目处于:**单账号流程已验证,正扩展多账号管理 + GUI**。
|
||||
|
||||
优先路径:
|
||||
|
||||
1. Phase 0:把已验证流程模块化(`editor.py`),定义账号配置。
|
||||
2. Phase 1:账号绑定 user-data-dir、Chrome 启动、登录保活、加载商品页。
|
||||
3. Phase 2:GUI 跑通单账号改标题 + 换封面闭环。
|
||||
4. Phase 3:批量与多账号并行(V2)。
|
||||
|
||||
## 领取任务规则
|
||||
|
||||
从 [`06-tasks.md`](06-tasks.md) 领取任务时:
|
||||
|
||||
- 只领取第一个状态为 `TODO` 且依赖均为 `DONE` 的任务。
|
||||
- 开始前把该任务状态改为 `DOING`。
|
||||
- 本轮只完成这一个任务。
|
||||
- 验收通过后把状态改为 `DONE`。
|
||||
- 完成后把执行记录追加到 [`../progress.md`](../progress.md),覆盖更新 [`current-state.md`](current-state.md)。
|
||||
- 做完即停,汇报验证结果,等待下一步指令。
|
||||
|
||||
如果代码实际状态和任务看板冲突,先说明冲突,不要擅自跳步。
|
||||
|
||||
## MVP 边界
|
||||
|
||||
MVP 只做:
|
||||
|
||||
- 账号配置(增删改 1..N 个 Shopee 账号)。
|
||||
- 每账号绑定 `chrome_user_data_dir/<slug>` 独立配置目录。
|
||||
- 一键启动 Chrome 供首次人工登录、登录态持久化。
|
||||
- 用某账号打开指定商品详情页,改标题、换封面。
|
||||
- 显式确认后点击「更新」提交(默认不提交)。
|
||||
|
||||
MVP 不做:
|
||||
|
||||
- 自动登录 / 自动填账号密码。
|
||||
- 绕过验证码、风控、限流。
|
||||
- 批量、多账号并行、爬取、数据库(属 V2 及之后)。
|
||||
|
||||
## 事实来源
|
||||
|
||||
项目事实只信:
|
||||
|
||||
- [`04-architecture.md`](04-architecture.md) 第四节:CDP 交互已验证结论(选择器、就绪判断、上传/拖拽方式)。
|
||||
- [`04-architecture.md`](04-architecture.md) 4.1/4.2/4.3:`config.json`、SQLite schema、Excel 模板。
|
||||
- 真实页面探查结果(用 `prototypes/inspect_images.py` / `prototypes/cookies.py` 实地确认)。
|
||||
- 已验证脚本 `cdp.py`、`prototypes/demo.py`、`prototypes/set_title.py`、`prototypes/set_cover.py` 中跑通的逻辑。
|
||||
|
||||
不要把以下当事实来源:
|
||||
|
||||
- 旧脚本里可能已失效的选择器(Shopee 页面会变)。
|
||||
- 未经实测的猜测。
|
||||
- 临时探查脚本(`/tmp` 下的一次性脚本)。
|
||||
|
||||
## 常见任务该看哪里
|
||||
|
||||
做 GUI:
|
||||
|
||||
- 先看 `02-requirements.md` 的对应验收标准。
|
||||
- 再看 `routes.md` 的窗口职责与操作流程。
|
||||
- 最后看 `04-architecture.md` 的模块边界(GUI 不写业务逻辑)。
|
||||
|
||||
做 CDP / 浏览器操作:
|
||||
|
||||
- 先看 `04-architecture.md` 第四节已验证事实。
|
||||
- 再看 `api.md` 的 `cdp` / `editor` 模块合约。
|
||||
- 复用 `cdp.py`,不重写一套。
|
||||
|
||||
做账号配置 / Chrome 启动:
|
||||
|
||||
- 先看 `04-architecture.md` 3.1 数据模型与 `api.md` 的 `config` / `chrome` 合约。
|
||||
- Chrome 启动参数严格按第四节“Chrome 启动参数”一条。
|
||||
|
||||
## 验证命令
|
||||
|
||||
```bash
|
||||
python -m py_compile *.py # 语法检查
|
||||
python prototypes/demo.py # 单账号闭环验证(分步,不提交)
|
||||
```
|
||||
|
||||
说明:
|
||||
|
||||
- 改 CDP / editor 逻辑后:在测试商品(ITEM_ID 51100639510)上跑 `prototypes/demo.py` 实测。
|
||||
- 改账号配置后:验证 SQLite 账号读写与 user-data-dir 创建;改应用设置后验证 `config.json` 读写。
|
||||
- 如果命令当前不可运行(如 GUI 未建),在回复里如实说明。
|
||||
Reference in New Issue
Block a user