docs: 明确任务领取与导入安全规则
统一任务领取规则,current-state 只能展示按 06-tasks 顺序计算出的当前任务,当前下一个任务固定为 T-001。 明确 tests/ 与 unittest discover 的启用时机:T-006 前不因 tests 缺失判失败,T-006 后纯逻辑改动必须补测并运行。 补齐敏感文件和目录清单:config.json、config/ai_models.json、cmshopee.db、chrome_user_data_dir/、images/ 均须 gitignore 且不得提交。 定稿 Excel 导入容错策略:缺必需列拒绝整文件并记录 file_errors,单行脏数据逐行跳过并计入 invalid。
This commit is contained in:
@@ -33,7 +33,7 @@ cmshopee 是一个 **Windows 本地桌面自动化工具**:管理多个 Shopee
|
||||
## 安全红线
|
||||
|
||||
- 绝不把真实账号、密码、Cookie、token 写进代码、文档或日志;密码/API Key 可在本地配置或 DB 明文保存,但文件必须 gitignore,且不自动登录。
|
||||
- `config.json`、`cmshopee.db`、`chrome_user_data_dir/`(含密码/登录态)绝不提交版本库。
|
||||
- `config.json`、`config/ai_models.json`、`cmshopee.db`、`chrome_user_data_dir/`、`images/`(含配置、密钥、业务数据、登录态、图片)绝不提交版本库。
|
||||
- 「更新」提交线上、删除满 9 张封面等不可逆动作,必须有显式确认;③ 点击「开始更新」后必须弹窗确认,用户确认后才批量更新当前筛选结果。
|
||||
- 不绕过 Shopee 的验证码、风控、限流或权限校验。
|
||||
|
||||
@@ -41,10 +41,12 @@ cmshopee 是一个 **Windows 本地桌面自动化工具**:管理多个 Shopee
|
||||
|
||||
```bash
|
||||
python -m py_compile *.py # 语法检查
|
||||
python -m unittest discover -s tests # 纯逻辑单元测试(tests 存在后)
|
||||
python -m unittest discover -s tests # 纯逻辑单元测试(T-006 完成且 tests/ 存在后)
|
||||
python prototypes/demo.py # 单账号闭环(不提交)
|
||||
```
|
||||
|
||||
T-006 前若 `tests/` 不存在,不运行 `unittest discover`,只在回复中说明测试基座待建立;T-006 后纯逻辑改动必须跑该命令。
|
||||
|
||||
涉及 CDP 改动,在测试商品(ITEM_ID 51100639510)上实跑确认;如命令不可运行,在回复里如实说明。
|
||||
|
||||
## 风格
|
||||
|
||||
@@ -10,4 +10,4 @@ Claude Code 处理本仓库任务时:
|
||||
2. 再按 `AGENTS.md` 进入 [`docs/00-ai-start-here.md`](docs/00-ai-start-here.md) 和相关文档(重点 `docs/04-architecture.md` 第七节 CDP 已验证事实)。
|
||||
3. 不在本文重复维护任务流程、编码规则或文档清单,避免和 `AGENTS.md` 漂移。
|
||||
|
||||
安全红线(详见 `AGENTS.md`):不写真实凭证到代码/文档/日志;密码/API Key 可本地明文保存但不自动登录;不提交 `config.json`、`cmshopee.db`、`chrome_user_data_dir/`;不可逆操作需显式确认,③ 开始更新前需弹窗确认;不绕过 Shopee 风控。
|
||||
安全红线(详见 `AGENTS.md`):不写真实凭证到代码/文档/日志;密码/API Key 可本地明文保存但不自动登录;不提交 `config.json`、`config/ai_models.json`、`cmshopee.db`、`chrome_user_data_dir/`、`images/`;不可逆操作需显式确认,③ 开始更新前需弹窗确认;不绕过 Shopee 风控。
|
||||
|
||||
@@ -53,6 +53,7 @@ cmshopee 是一个 Windows 本地桌面自动化工具(PySide6,5 Tab),
|
||||
- 做完即停,汇报验证结果,等待下一步指令。
|
||||
|
||||
如果代码实际状态和任务看板冲突,先说明冲突,不要擅自跳步。
|
||||
[`current-state.md`](current-state.md) 只能展示按本规则计算出的当前快照,不能把多个无依赖任务改成“任选”;若两者冲突,以 [`06-tasks.md`](06-tasks.md) 的顺序和状态为准。
|
||||
|
||||
## 版本边界
|
||||
|
||||
@@ -116,13 +117,15 @@ cmshopee 是一个 Windows 本地桌面自动化工具(PySide6,5 Tab),
|
||||
|
||||
```bash
|
||||
python -m py_compile *.py # 语法检查
|
||||
python -m unittest discover -s tests # 纯逻辑单元测试(tests 存在后)
|
||||
python -m unittest discover -s tests # 纯逻辑单元测试(T-006 完成且 tests/ 存在后)
|
||||
python prototypes/demo.py # 单账号闭环验证(分步,不提交)
|
||||
```
|
||||
|
||||
说明:
|
||||
|
||||
- T-006 前若 `tests/` 不存在,不运行 `unittest discover`,也不把该命令失败视为当前任务失败;在回复里说明测试基座待 T-006 建立。
|
||||
- T-006 完成后,纯逻辑改动必须补/更新 `tests/` 下的 unittest,并运行 `python -m unittest discover -s tests`。
|
||||
- 改 CDP / editor 逻辑后:在测试商品(ITEM_ID 51100639510)上跑 `prototypes/demo.py` 实测。
|
||||
- 改账号配置后:验证 SQLite 账号读写与 user-data-dir 创建;改应用设置后验证 `config.json` 读写。
|
||||
- 改 DB / Excel / prompts / appconfig 纯逻辑后:补或更新 `tests/` 下的 unittest。
|
||||
- 改 DB / Excel / prompts / appconfig 纯逻辑后:T-006 前做可行的手动/临时验证并记录;T-006 后补或更新 `tests/` 下的 unittest。
|
||||
- 如果命令当前不可运行(如 GUI 未建),在回复里如实说明。
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
## 七、待确认 / 风险点
|
||||
|
||||
- **账号 / 凭证风险**:登录态存在各账号 user-data-dir,等同账号凭证;目录不得提交版本库、不得外传。
|
||||
- **密码存储风险**:Tab④ 的密码本地明文存于 SQLite,仅供人工参考,**绝不自动登录/自动填**;`cmshopee.db`、`config.json` 必须 gitignore;UI 打码、日志脱敏(见 [任务 T-503](06-tasks.md))。
|
||||
- **本地敏感文件风险**:Tab④ 的密码本地明文存于 SQLite,仅供人工参考,**绝不自动登录/自动填**;AI Key 本地明文存于 `config/ai_models.json`;`config.json`、`config/ai_models.json`、`cmshopee.db`、`chrome_user_data_dir/`、`images/` 必须 gitignore;UI 打码、日志脱敏(见 [任务 T-503](06-tasks.md))。
|
||||
- **别名匹配风险**:别名以 Excel 列为准;不匹配的行略过并最后弹窗,执行起始在日志逐条打印「文件→匹配账号」留痕,防误改。
|
||||
- **AI 主图风险(高,已知并接受)**:本设计不设逐条人工审核和常驻提交开关;AI 生成的标题/封面经 ③ 批量确认后会提交线上。主图若失真/夸大/侵权可能违反 Shopee 规则甚至下架。缓解:开始更新前弹窗确认筛选范围和任务数量,新图本地留档 + 回写 Excel 供事后追溯;强烈建议先在测试商品验证再批量。
|
||||
- **AI 成本与依赖**:接入文本+图像 AI = 新外部依赖 + API 费用 + Key 管理;服务商/模型/合规待 [技术栈](03-tech-stack.md) 确认。
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
| 安装依赖 | `pip install websocket-client requests openpyxl pillow PySide6` |
|
||||
| 检查 PySide6 | `python -c "import PySide6; print(PySide6.__version__)"` |
|
||||
| 语法检查 | `python -m py_compile *.py` |
|
||||
| 单元测试 | `python -m unittest discover -s tests` |
|
||||
| 单元测试(T-006 后) | `python -m unittest discover -s tests` |
|
||||
| 跑单账号演示 | `python prototypes/demo.py`(分步)/ `set AUTO=1 && python prototypes/demo.py`(自动) |
|
||||
| 提交更新(真改线上) | `set UPDATE=1 && python prototypes/demo.py` |
|
||||
| 读取某账号 Cookie(调试) | `python prototypes/cookies.py` |
|
||||
@@ -74,7 +74,7 @@ set AUTO=1 && python prototypes/demo.py
|
||||
| 层级 | 覆盖对象 | 验证方式 |
|
||||
| --- | --- | --- |
|
||||
| 语法 | 所有 `.py` | `python -m py_compile *.py`,后续可扩展 `compileall` |
|
||||
| 单元 | `appconfig/db/excel/prompts/config/chrome` 的纯逻辑 | `python -m unittest discover -s tests`,使用临时目录/临时 SQLite/样例 Excel |
|
||||
| 单元 | `appconfig/db/excel/prompts/config/chrome` 的纯逻辑 | T-006 建立 `tests/` 后运行 `python -m unittest discover -s tests`,使用临时目录/临时 SQLite/样例 Excel |
|
||||
| GUI 轻测 | PySide6 主窗口可创建、Tab 数量、worker signal 基本行为 | 可用 unittest 构造 `QApplication`,不连真实 Shopee |
|
||||
| 集成 | CDP/editor 操作 Shopee 测试商品 | 手动跑 `prototypes/demo.py` 或后续专用集成脚本 |
|
||||
| 外部 AI | 模型连接、文本/图像生成 | 默认 mock;真实调用只在手动验证时跑,避免成本和限流 |
|
||||
|
||||
@@ -255,6 +255,8 @@ CREATE INDEX idx_tasks_item ON tasks(item_id);
|
||||
|
||||
- 输入列(账号名/别名/商品id)运营填;其余为程序各阶段输出,**回写到原 Excel**(被锁→提示重试/另存副本)。
|
||||
- 别名以此列为匹配权威,不解析文件名。
|
||||
- 导入容错:缺少必需列(别名/商品id)时拒绝整个文件,记入 `file_errors`,不导入该文件任何行。
|
||||
- 脏行处理:单行缺别名/商品id、商品id 格式错误等逐行跳过,计入 `invalid`,不阻塞同文件其他有效行。
|
||||
|
||||
### 5.4 本地图片目录
|
||||
|
||||
@@ -352,7 +354,7 @@ cmshopee/
|
||||
├── config/ai_models.json # AI 模型清单(含密钥,必须 gitignore)
|
||||
├── cmshopee.db # SQLite(账号/任务/结果,gitignore)
|
||||
├── chrome_user_data_dir/ # 各账号 Chrome 配置(含登录态,gitignore)
|
||||
├── images/ # 旧封面/新封面本地图片(建议 gitignore)
|
||||
├── images/ # 旧封面/新封面本地图片(gitignore)
|
||||
├── title_prompt.txt # 标题提示词(单文件,启动回显)
|
||||
├── prompts/cover/<名称>.txt # 封面提示词模板(多个)
|
||||
├── appconfig.py / db.py / excel.py / config.py / chrome.py / editor.py / ai.py / prompts.py / gui.py # 待建
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
完成前至少检查:
|
||||
|
||||
- [ ] `python -m py_compile` 通过。
|
||||
- [ ] 纯逻辑改动有对应 `unittest`,至少覆盖正常路径和一个失败路径。
|
||||
- [ ] T-006 完成后,纯逻辑改动有对应 `unittest`,至少覆盖正常路径和一个失败路径。
|
||||
- [ ] 涉及 CDP 的改动,在测试商品(ITEM_ID 51100639510)上实跑验证。
|
||||
- [ ] 涉及 DB 的改动,覆盖 schema 初始化、重复初始化、短事务写入、失败状态写入。
|
||||
- [ ] 涉及 Excel 的改动,覆盖 source_file_abs/source_sheet/source_row 回写定位。
|
||||
@@ -63,15 +63,20 @@
|
||||
|
||||
```bash
|
||||
python -m py_compile *.py
|
||||
python -m unittest discover -s tests
|
||||
python -m unittest discover -s tests # T-006 完成且 tests/ 存在后
|
||||
python prototypes/demo.py # 单账号闭环验证(不提交)
|
||||
```
|
||||
|
||||
测试命令时机:
|
||||
|
||||
- T-006 前:`tests/` 尚未建立时,只要求运行与当前任务匹配的可用验证;不要因为 `python -m unittest discover -s tests` 缺目录而判失败。
|
||||
- T-006 后:`python -m unittest discover -s tests` 成为纯逻辑改动的必跑项;新增/修改 appconfig、db、excel、prompts、config、chrome 纯逻辑时同步补测。
|
||||
|
||||
## 7. 绝不
|
||||
|
||||
- 绝不把真实账号、密码、Cookie、token 写进代码、文档或日志。
|
||||
- 绝不把密码/API Key 写进代码、文档、日志或导出文件;本地配置/DB 可明文保存,必须 gitignore,UI 打码。
|
||||
- 绝不把 `config.json`、`cmshopee.db`、`chrome_user_data_dir/` 提交版本库。
|
||||
- 绝不把 `config.json`、`config/ai_models.json`、`cmshopee.db`、`chrome_user_data_dir/`、`images/` 提交版本库。
|
||||
- 绝不自动登录 / 自动填账号密码;登录由人工完成,程序只检测登录态。
|
||||
- 绝不在缺少 ③ 批量确认弹窗确认的情况下点击「更新」提交线上。
|
||||
- 绝不擅自删除用户文件或重置 user-data-dir。
|
||||
|
||||
+5
-3
@@ -11,6 +11,8 @@
|
||||
5. **动手前**读 `00-ai-start-here.md`、`05-coding-rules.md`、`current-state.md`、`04-architecture.md`(尤其第七节已验证事实、第二节流水线)。
|
||||
6. **完成后**同步本文状态,追加 [`../progress.md`](../progress.md),覆盖 [`current-state.md`](current-state.md)。
|
||||
|
||||
`current-state.md` 只记录按以上规则计算出的当前快照;如果它和本文任务顺序/状态冲突,以本文为准并先修正文档。
|
||||
|
||||
## 状态图例
|
||||
|
||||
`TODO` · `DOING`(同一时间最多 1 个)· `DONE` · `BLOCKED`
|
||||
@@ -24,7 +26,7 @@
|
||||
| T-001 | `editor.py`:改标题/换封面/点更新/登录检测/**采集(读旧标题+旧封面下载)**/apply_task,复用 `cdp.py` | - | 函数可调用,在测试商品跑通;与 `prototypes/demo.py` 行为一致 | TODO |
|
||||
| T-002 | `appconfig.py` + `config.json`(含 image_dir、ai 选择/参数段、端口等默认值;不含 AI Key) | - | 读写正常;不存在则写默认;AI Key 留给 `config/ai_models.json`/T-501 | TODO |
|
||||
| T-003 | `db.py` + SQLite 建表(batches/accounts/tasks,含 Excel 行定位、状态、时间戳、重试字段) | - | `init_db` 幂等;`connect` 设置 WAL/busy_timeout/foreign_keys;账号/批次/任务/各 set_* 可用;schema 同架构 5.2 | TODO |
|
||||
| T-004 | `.gitignore`:排除 `config.json`、`cmshopee.db`、`chrome_user_data_dir/`、`images/` | T-002, T-003 | 凭证/业务/图片不被提交 | TODO |
|
||||
| T-004 | `.gitignore`:排除 `config.json`、`config/ai_models.json`、`cmshopee.db`、`chrome_user_data_dir/`、`images/` | T-002, T-003 | 配置、密钥、凭证、业务数据、图片不被提交 | TODO |
|
||||
| T-005 | AI 模型清单后端:`config/ai_models.json` 读写 + category 过滤 + 测试连接 | T-002 | 本地明文 api_key;UI/API 打码显示;日志脱敏;至少 text/image 各一个;`get_model` 返回调用所需字段 | TODO |
|
||||
| T-006 | 单元测试基座:`tests/` + appconfig/db/excel/prompts 最小测试 | T-002, T-003 | `python -m unittest discover -s tests` 可跑;不依赖真实 Shopee/AI;临时文件在测试目录清理 | TODO |
|
||||
|
||||
@@ -44,7 +46,7 @@
|
||||
|
||||
| ID | 任务 | 依赖 | 验收要点 | 状态 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| T-201 | `excel.py` 导入:解析多文件输入列入库 | T-003 | 按模板解析账号名/别名/商品id;记录 source_file_abs/source_sheet/source_row/row_key;脏数据容错;写 batches/tasks | TODO |
|
||||
| T-201 | `excel.py` 导入:解析多文件输入列入库 | T-003 | 按模板解析账号名/别名/商品id;记录 source_file_abs/source_sheet/source_row/row_key;缺必需列则拒绝整文件并记 file_errors;脏行逐行跳过计 invalid;写 batches/tasks | TODO |
|
||||
| T-202 | Tab① 任务列表 + 导入按钮 + 别名匹配标记 | T-201, T-105 | `QTableView` 显示账号/别名/商品id/阶段;未匹配标“略过” | TODO |
|
||||
| T-202b | Tab① 导入汇总栏 | T-202 | 导入后显示 文件数/解析行数/有效/无效/匹配(按账号)/未匹配;未匹配可点击筛出 | TODO |
|
||||
| T-203 | 采集旧标题+旧封面(只读),下载图片,立即写库 | T-202, T-001, T-104b | 通过 worker 执行;逐条 set_collected;旧封面下载到 `images/<slug>/`;未登录/未匹配略过记原因 | TODO |
|
||||
@@ -75,7 +77,7 @@
|
||||
| T-501 | Tab⑤ 设置 · AI 模型管理 UI(master-detail):模型下拉 + 新增/删除 + 详情(服务商名/类别/api_type/模型ID/网址/密钥打码/连接超时) + 测试连接 | T-005, T-104 | 复用 T-005 后端;name 唯一;类别 text/image;至少各一个;密钥本地明文保存、UI 打码;测试连接可用 | TODO |
|
||||
| T-501b | Tab⑤ 设置 · 角色与生成参数:标题大模型/图片大模型下拉、分辨率(512/1k/2k/4k)、返回超时随分辨率、并发/重试/jpg质量、路径/端口 | T-501 | 角色下拉按类别过滤;分辨率选后返回超时按 resolution_timeouts 自动;持久化 config.json | TODO |
|
||||
| T-502 | 满 9 张封面:删第一张再上传 | T-001 | 实测删除确认框并处理;满 9 张流程正确 | TODO |
|
||||
| T-503 | 敏感信息本地明文存储提示与日志脱敏 | T-105, T-501 | 首次保存密码/API Key 时提示“本地明文保存”;UI 打码;日志/导出不含密码/API Key;文档说明 config/DB 必须 gitignore | TODO |
|
||||
| T-503 | 敏感信息本地明文存储提示与日志脱敏 | T-105, T-501 | 首次保存密码/API Key 时提示“本地明文保存”;UI 打码;日志/导出不含密码/API Key;文档说明 `config.json`/`config/ai_models.json`/DB/user-data-dir/images 必须 gitignore | TODO |
|
||||
| T-504 | 多账号并行 / dry-run / 运行日志(V2) | T-402 | 端口不冲突;dry-run 只预览;操作留痕 | TODO |
|
||||
|
||||
## 里程碑
|
||||
|
||||
+4
-4
@@ -6,7 +6,7 @@
|
||||
|
||||
- 形态:本地函数 + 子进程(Chrome)+ CDP(`127.0.0.1:<port>`)+ SQLite + openpyxl + AI 服务调用。
|
||||
- 编码:UTF-8;传 Chrome / `setFileInputFiles` 的路径为 **Windows 绝对路径**。
|
||||
- 凭证:登录态在 user-data-dir;密码、AI Key 本地明文存于 config/DB,文件必须 gitignore;UI 打码显示,不出现在日志/导出。
|
||||
- 凭证:登录态在 user-data-dir;密码、AI Key 本地明文存于 config/DB;`config.json`、`config/ai_models.json`、`cmshopee.db`、`chrome_user_data_dir/`、`images/` 必须 gitignore;UI 打码显示,不出现在日志/导出。
|
||||
- 失败处理:抛带中文说明的异常或返回状态字段;GUI 负责提示,不静默吞错。
|
||||
|
||||
## appconfig 模块(`appconfig.py`,待建)
|
||||
@@ -74,8 +74,9 @@ SQLite 连接规则:
|
||||
```python
|
||||
import_tasks(file_paths: list[str]) -> dict
|
||||
# 只解析【输入列】:账号名、别名、商品id;并记录 source_file/source_file_abs/source_sheet/source_row/row_key
|
||||
# -> {"rows": [...], "stats": {"files": int, "total": int, "valid": int, "invalid": int}}
|
||||
# invalid = 缺别名/商品id 或脏数据的行
|
||||
# -> {"rows": [...], "stats": {"files": int, "total": int, "valid": int, "invalid": int, "file_errors": [...]}}
|
||||
# 必需列缺失(别名/商品id)= 整个文件拒绝并记录到 file_errors,不导入该文件任何行
|
||||
# invalid = 单行缺别名/商品id 或商品id格式错误等脏数据;逐行跳过,不阻塞同文件其他有效行
|
||||
|
||||
match_summary(rows: list[dict], accounts: list) -> dict
|
||||
# 用 accounts 的别名对 rows 做匹配统计(导入汇总栏用)
|
||||
@@ -225,5 +226,4 @@ set UPDATE=1 && python prototypes/demo.py # 走完点击「更新」提交
|
||||
|
||||
- AI 服务商/模型/计费;图像 image-to-image 能力与合规。
|
||||
- 满 9 张删除封面的确认框选择器(需实测)。
|
||||
- Excel 缺列/脏数据容错(整文件拒绝 vs 逐行跳过)。
|
||||
- 旧封面下载的图片格式/扩展名处理。
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
- 阶段:V0 单账号 CDP 流程已验证;V1 多账号管理 + 5 Tab GUI + Excel/AI 流水线为既定设计,尚未开始编码。
|
||||
- 技术栈:Python 3.10+,自研 CDP(websocket-client + requests),SQLite(sqlite3)+ `config.json` + openpyxl + AI(服务商待定),GUI PySide6 5 Tab(已定)。
|
||||
- 生产代码:尚无 `appconfig/db/excel/config/chrome/editor/gui/workers`;现有为验证脚本 + `cdp.py`。
|
||||
- 测试:当前以 `py_compile` + 在测试商品上手动跑 `prototypes/demo.py` 为主;T-006 将补 `unittest` 自动化测试基座。
|
||||
- 数据:无 `config.json`、`cmshopee.db`、`chrome_user_data_dir/`(待 Phase 0/1 建立)。
|
||||
- 测试:当前以 `py_compile` + 在测试商品上手动跑 `prototypes/demo.py` 为主;`tests/` 与 `python -m unittest discover -s tests` 由 T-006 建立,T-006 完成前不把缺少 `tests/` 视为验证失败。
|
||||
- 数据:无 `config.json`、`config/ai_models.json`、`cmshopee.db`、`chrome_user_data_dir/`、`images/`(待 Phase 0/1 建立,均须 gitignore)。
|
||||
|
||||
## 既定设计要点(文档已定)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
| `prototypes/` | 已有 | 已验证原型/探查脚本(demo/set_title/set_cover/get_title/cookies/inspect_images/grab/1.py),逻辑待并入 `editor.py` 后清理;见 `prototypes/README.md` |
|
||||
| `chrome-remote-debug-lan.md` | 已有 | WSL→Windows CDP 转发排查记录 |
|
||||
| `appconfig.py` / `db.py` / `excel.py` / `config.py` / `chrome.py` / `editor.py` / `gui.py` / `workers.py` | 待建 | Phase 0-3 产出 |
|
||||
| `config.json` / `cmshopee.db` / `chrome_user_data_dir/` | 待建 | 含配置/业务/凭证,须 gitignore |
|
||||
| `config.json` / `config/ai_models.json` / `cmshopee.db` / `chrome_user_data_dir/` / `images/` | 待建 | 含配置、密钥、业务、登录态、图片,须 gitignore |
|
||||
|
||||
## 已验证能力(单账号)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
- 已完成:无(任务均为 TODO;单账号能力以脚本形式存在,待 T-001 模块化)。
|
||||
- 正在进行:无。
|
||||
- 下一个可领取任务:Phase 0 的 **T-001(`editor.py` 含采集)/ T-002(`appconfig.py`+`config.json`)/ T-003(`db.py`+SQLite)**——三者无相互依赖,可任选其一起步;AI 真实接入前先做 T-005。
|
||||
- 下一个可领取任务:**T-001(`editor.py`:改标题/换封面/点更新/登录检测/采集/apply_task)**。虽然 T-002/T-003 也无依赖,但任务领取规则固定为“取 `06-tasks.md` 中第一个 TODO 且依赖均 DONE 的任务”,因此当前不能任选。
|
||||
|
||||
## 当前可运行内容
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
# 语法检查
|
||||
python -m py_compile *.py
|
||||
|
||||
# 单元测试(T-006 后)
|
||||
# 单元测试(T-006 完成且 tests/ 存在后)
|
||||
python -m unittest discover -s tests
|
||||
|
||||
# 单账号闭环(不提交线上)
|
||||
|
||||
+21
@@ -2,6 +2,7 @@
|
||||
|
||||
> 本文件是只追加的历史流水,记录任务执行过程、验证命令、阻塞点和关键决策。
|
||||
> 当前目录、当前命令、下一个可领取任务等可覆盖快照,写入 [`docs/current-state.md`](docs/current-state.md)。
|
||||
> 历史条目里的“下一步”只代表当时判断,不作为当前任务领取依据;当前任务必须按 [`docs/06-tasks.md`](docs/06-tasks.md) 的顺序与 [`docs/current-state.md`](docs/current-state.md) 的快照执行。
|
||||
|
||||
## 职责边界
|
||||
|
||||
@@ -192,4 +193,24 @@
|
||||
- 不做加密:密码与 AI Key 本地明文保存,文件必须 gitignore;UI 打码,日志/导出脱敏,不自动登录。
|
||||
- 下一步:继续按任务看板从 Phase 0 开始实现,建议优先 T-003/T-006 或 T-001。
|
||||
|
||||
## 【2026-06-26】修正 · 任务领取规则与 tests 命令时机
|
||||
|
||||
- 状态:DONE(仅文档)
|
||||
- 变更:更新 `docs/current-state.md`、`docs/00-ai-start-here.md`、`docs/05-coding-rules.md`、`docs/03-tech-stack.md`、`docs/06-tasks.md`、`AGENTS.md`。
|
||||
- 决策:
|
||||
- 任务领取规则统一为:每轮只取 `docs/06-tasks.md` 中第一个 `TODO` 且依赖均 `DONE` 的任务;`current-state.md` 只能展示按该规则计算出的当前任务,不能写“任选”。
|
||||
- 当前下一个可领取任务修正为 T-001;T-002/T-003 虽无依赖,但排在 T-001 后,不能跳过。
|
||||
- `tests/` 与 `python -m unittest discover -s tests` 由 T-006 建立;T-006 前缺少 `tests/` 不算验证失败,T-006 后纯逻辑改动必须补测并运行该命令。
|
||||
- 下一步:按任务看板领取 T-001。
|
||||
|
||||
## 【2026-06-26】修正 · 敏感文件清单与 Excel 容错策略
|
||||
|
||||
- 状态:DONE(仅文档)
|
||||
- 变更:更新 `AGENTS.md`、`CLAUDE.md`、`docs/05-coding-rules.md`、`docs/06-tasks.md`、`docs/current-state.md`、`docs/api.md`、`docs/02-requirements.md`、`docs/04-architecture.md`。
|
||||
- 决策:
|
||||
- gitignore/禁止提交清单统一为:`config.json`、`config/ai_models.json`、`cmshopee.db`、`chrome_user_data_dir/`、`images/`。
|
||||
- `current-state.md` 的待建数据路径补齐 `config/ai_models.json` 与 `images/`。
|
||||
- Excel 导入容错定稿:必需列缺失(别名/商品id)时拒绝整个文件;单行缺值或商品id格式错误等脏数据逐行跳过,计入 invalid,不阻塞同文件其他有效行。
|
||||
- 下一步:按任务看板领取 T-001。
|
||||
|
||||
<!-- 新一轮从这里向下追加记录。 -->
|
||||
|
||||
Reference in New Issue
Block a user