Files
chengmaandClaude Opus 4.8 c204fc205c fix: 运行方式改回脚本并自注入项目根,修复 Windows No module named 'src'
- 现象:Windows(Python 3.7) python -m src.main 报 No module named 'src',
  即便 cwd 在项目根、src/__init__.py 存在。
- 根因:该环境运行时不把当前目录加入 sys.path,python -m 找不到 cwd 下的 src 包。
- 修复:
  - src/main.py 启动时自注入项目根到 sys.path,不依赖运行环境配置;
  - 运行方式从 python -m src.main 改回脚本方式 python src/main.py;
  - dev.bat 恢复 CRLF 行尾并改用 python src\main.py;
  - 00/03/05/current-state 文档命令同步。

验证:WSL 下从不含 src 的目录脚本方式运行 exit=0;unittest 17 passed。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 17:48:35 +08:00

98 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 执行进度(Progress)
> 本文记录任务执行进度、验证结果、阻塞点和关键决策。任务定义和依赖见 [`tasks.md`](tasks.md),当前代码现实见 [`docs/current-state.md`](docs/current-state.md)。
>
> **职责边界**:本文是**只追加的历史流水**——每次执行后追加一条带日期的记录,不回头改写或删除旧记录。需要"当前是什么样"的可覆盖快照(目录结构、可运行命令、下一个任务),看 [`docs/current-state.md`](docs/current-state.md),不要在本文重复维护。
## 使用规则
- 每完成一个任务,追加一条进度记录。
- 记录实际验证命令、真机验证情况和结果文件位置。
- 遇到阻塞时记录阻塞原因、已尝试方案和下一步建议。
- 不在本文重新定义任务范围;任务范围以 `tasks.md` 为准。
## 当前摘要
- 日期:2026-06-24
- 阶段:Phase 0 地基完成(T-001/2/3)/ 进入 Phase 1 原型验证
- 当前任务:无(T-003 已完成)
- 下一个任务:`T-101 验证 ADB 和 uiautomator2 真机连接`(需真机环境)
- 当前阻塞:尚未提供真实 Excel 样例、Android 真机和测试商品链接
## 进度记录
### 2026-06-24 · 文档初始化
- 完成:按 harness coding 文档风格建立项目文档集。
- 完成:确认 MVP 形态为 Windows 桌面 GUI + Excel 导入/回写 + Android 真机自动化。
- 完成:支付策略更新为默认人工确认,预留受控自动支付开关。
- 完成:将任务定义移到根目录 `tasks.md`,新增根目录 `progress.md`。
- 验证:文档结构和引用已通过文本搜索检查。
### 2026-06-24 · 文档一致性补丁
- 新增根目录 `.gitignore`:忽略 `logs/`、`artifacts/`、`samples/*.xlsx`、结果文件和虚拟环境,防止提交含 PII 的运行产物。
- 统一 `TaskStatus` 中英映射:`04-architecture.md` §3.4 新增英文枚举成员 ↔ 中文显示值表,明确中文只在 GUI/Excel 边界出现。
- 消解自动支付口径冲突:支付模式收敛为全局 `PaymentConfig`,从 `OrderTask` 移除 `auto_pay_enabled`;`api.md` 的 `enable_auto_pay` 改为 `set_payment_config`。
- 明确暂停语义:`04-architecture.md` §4.5 新增 `RunnerState`(执行器级 `PAUSED`),与任务级 `status` 分离;`api.md` 补 `TaskRunner.pause()/resume()`。
- 验证:全文搜索确认无 `auto_pay_enabled` / `enable_auto_pay` 残留引用。
### 2026-06-24 · 文档可维护性补丁(中优先级)
- 新增 `CLAUDE.md`:薄入口指向 `AGENTS.md`,Claude Code 与 Codex 共用一套规则,避免双份漂移。
- 钉死 `progress.md` 与 `current-state.md` 职责边界:前者为只追加历史流水,后者为可覆盖当前快照,二者顶部各加边界声明。
- T-001 受理条件补充:要求用真实可运行命令替换各文档中的占位符验证命令。
### 2026-06-24 · 合规风险留痕(低优先级 item 9)
- `02-requirements.md` §七 新增「平台规则与合规风险」一条:中立记录对第三方 App 做批量自动化下单可能触及平台协议/账号风控的已知风险,交叉引用 `01-vision.md` 非目标与 `05-coding-rules.md` 安全纪律;明确 MVP 不提供任何规避平台限制能力,使用范围与账号风险由业务方评估承担。
### 2026-06-24 · T-001 初始化 Python 项目骨架(DONE)
- 完成:建立 `src/`(`__init__.py`、`main.py` 最小可运行入口)、`tests/`(`__init__.py`、`test_smoke.py` 冒烟测试)、`requirements.txt`(含依赖纪律注释,当前零第三方运行时依赖)。
- 决策:骨架阶段测试用标准库 `unittest`,不引入 `pytest`(sandbox 网络受限装不上,且骨架只需冒烟测试、保持零依赖更契合范围纪律);已在 `03-tech-stack.md` 留痕。
- 文档:用真实命令替换 `00`/`03`/`05`/`current-state` 的占位符(`python -m pytest` → `python -m unittest discover -s tests -t .`)。
- 验证(WSL Python 3.10.12,命令用 `python3`):
- `python3 -m compileall src` → OK
- `python3 -m unittest discover -s tests -t .` → Ran 2 tests, OK
- `python3 src/main.py` → 正常输出,exit=0
- 范围:未提前创建 models/GUI/Android 等后续任务模块;`logs/`、`artifacts/`、`samples/` 归 T-003。
### 2026-06-24 · T-002 建立核心数据模型和状态枚举(DONE)
- 完成:`src/core/status.py` 定义 `TaskStatus`(六态,英文成员 + `display_name`/`from_display` 中英映射,单一事实源);`src/core/models.py` 定义 `OrderTask` dataclass,字段集合/类型对齐 `04-architecture.md` §3.3。
- 测试:`tests/test_models.py` 覆盖枚举完整性、中英映射双向往返、未知值报错、`OrderTask` 默认值与 `sku_items` 实例独立性。
- 文档:`04-architecture.md` §3.4 约定同步为 `display_name` + `from_display`。
- 范围:未含 `PaymentConfig`/`PaymentMode`/`RunnerState`(属支付与执行器任务,按需引入)。
- 验证:`python3 -m compileall src` OK;`python3 -m unittest discover -s tests -t .` → Ran 10 tests, OK。
### 2026-06-24 · T-003 建立日志和运行产物目录策略(DONE)
- 完成:`src/paths.py` 集中管理运行时路径与产物命名(`logs/`、`artifacts/` 运行时创建并 gitignore;截图/UI XML 按 `artifacts/<task_id>/<时间戳>_<step>.png|.xml` 归档,`_safe` 安全化防路径穿越);`src/logging_config.py` 统一日志格式(含 `task_id`/`step`,控制台 + `logs/app.log`,缺上下文时由 filter 补默认值,幂等 setup)。
- 集成:`src/main.py` 启动时 `ensure_runtime_dirs()` + `setup_logging()` 并写一条启动日志。
- 修正:`main.py` 引入 `from src.*` 后 `python src/main.py` 直接运行会 `ModuleNotFoundError`;运行方式统一为 `python -m src.main`,同步替换 `00/03/05/current-state` 文档命令与 `dev.bat`。
- 测试:`tests/test_paths.py`、`tests/test_logging.py` 覆盖安全化、路径生成与归档、防穿越、日志上下文与幂等。
- 安全:日志格式不含敏感字段,并在 `logging_config`/`05` 留下「不记录支付密码/验证码/账号密码」约定。
- 验证:`python3 -m compileall src` OK;`python3 -m unittest discover -s tests -t .` → Ran 17 tests, OK;`python3 -m src.main` exit=0 且 `logs/app.log` 正常写入。
### 2026-06-24 · 修复 Windows 运行方式(No module named 'src')
- 现象:Windows(Python 3.7)下 `python -m src.main` 报 `ModuleNotFoundError: No module named 'src'`,即使 cwd 在项目根、`src/__init__.py` 存在。
- 根因:该环境运行时未把当前目录加入 `sys.path`,`python -m` 找不到 cwd 下的 `src` 包(`os.listdir` 能看到文件属文件系统层,import 靠 `sys.path`)。
- 修复:`src/main.py` 启动时自注入项目根到 `sys.path`;运行方式从 `python -m src.main` 改回脚本方式 `python src/main.py`(脚本目录可定位,配合自注入不依赖 cwd/环境);同步 `dev.bat`(恢复 CRLF + `python src\main.py`)与 `00/03/05/current-state` 文档命令。
- 教训:Windows 脚本保持 CRLF;运行方式以目标机实测为准,不臆断 `python -m` 可用。
- 验证:WSL 下从不含 `src` 的目录脚本方式运行 exit=0、unittest 17 passed;Windows 由用户实测确认。
## 阻塞与风险
- 真实 Excel 表头待提供。
- ADB 和 Android 真机连接待验证。
- 拼多多商品详情页、SKU 面板、订单确认页结构待真机验证。
- 订单号读取位置待支付后真机验证。
## 下一步
1. 按 `tasks.md` 领取 `T-001 初始化 Python 项目骨架`。
2. 初始化项目后同步更新 `docs/current-state.md`。
3. 完成任务后在本文追加验证结果。