- src/paths.py: 集中管理 logs/、artifacts/ 路径与产物命名 (artifacts/<task_id>/<时间戳>_<step>.png|.xml),_safe 安全化防路径穿越, 运行时自动创建且被 .gitignore 忽略。 - src/logging_config.py: 统一日志格式(含 task_id/step),控制台 + logs/app.log, 缺上下文时由 filter 补默认值,setup 幂等;约定不记录敏感信息。 - src/main.py: 启动时初始化运行目录与日志。 - 运行方式统一为 python -m src.main(绝对导入下的唯一干净入口), 同步替换 00/03/05/current-state 文档命令与 dev.bat。 - 文档:04 §七 补 paths.py 与产物命名规则;tasks/progress/current-state 更新。 验证:compileall OK;unittest Ran 17 tests OK;python -m src.main exit=0,logs/app.log 写入正常。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
74 lines
4.0 KiB
Markdown
74 lines
4.0 KiB
Markdown
# 技术栈(Tech Stack)
|
||
|
||
> “用什么”的统一速查表。选型与理由在此集中维护;“怎么把它们搭起来”见 [架构设计](04-architecture.md)。
|
||
> 未定项必须标为待定,不要让 agent 在代码里自行决定。
|
||
|
||
## 一、技术栈一览
|
||
|
||
| 维度 | 选型 | 状态 | 理由 / 说明 |
|
||
| --- | --- | --- | --- |
|
||
| 主语言 | Python 3.x | 已定 | 与 `uiautomator2`、Excel 处理、桌面 GUI 衔接快。具体版本待项目初始化确认。 |
|
||
| 桌面 GUI | PySide6 | 已定 | 适合 Windows 桌面程序,用户不需要部署 Web 服务。 |
|
||
| Android 控制 | ADB + `uiautomator2` | 已定 | MVP 只控制 Android 真机,开发成本低于 Appium。 |
|
||
| Excel 处理 | `openpyxl` | 已定 | 读取/写入 `.xlsx`,适合固定表头和结果回写。 |
|
||
| 图像/截图 | `uiautomator2` 截图能力;Pillow 待定 | 部分待定 | MVP 先保存截图;如需图片处理再引入 Pillow。 |
|
||
| OCR | 待定 | 待定 | MVP 不优先引入;UI XML 识别不足时再评估。 |
|
||
| 数据库 | 无数据库 | 已定 | MVP 以 Excel 文件作为输入输出,避免过早引入数据库。 |
|
||
| 鉴权方式 | 无工具账号 | 已定 | 本地内部工具;拼多多账号由真机 App 登录态承担。 |
|
||
| 后端服务 | 无独立后端 | 已定 | 单机 GUI 内直接调用本地模块。 |
|
||
| 日志 | Python `logging` | 已定 | 保存执行日志,便于排查。 |
|
||
| 测试 | 标准库 `unittest`(当前);`pytest` 后续按需 | 已定(骨架阶段) | 骨架阶段零第三方依赖,用 `unittest`;需参数化/夹具等能力时再按依赖纪律引入 `pytest`。 |
|
||
| 打包 | PyInstaller | 待定 | MVP 稳定后打包为 Windows 可执行程序。 |
|
||
|
||
## 二、决策记录与演进
|
||
|
||
- 当前选择 **桌面 GUI**,因为功能少、给运营内部使用、运行环境就是连接手机的 Windows 电脑,落地快。
|
||
- 当前选择 **`uiautomator2 + ADB`**,因为只做 Android 真机控制,不需要 Appium 的跨平台和服务端复杂度。
|
||
- 当前选择 **Excel 输入输出**,因为运营后期可直接整理历史文档,MVP 不需要数据库。
|
||
- 当前不引入 **Web 后台 / 多设备调度 / 数据库**,避免第一版复杂度过高。
|
||
- OCR、图像识别、Appium、SQLite 作为后续选项,仅在真实页面验证需要时引入。
|
||
- T-001 骨架阶段测试先用**标准库 `unittest`**,不引入 `pytest`:骨架只需冒烟测试,且保持零第三方依赖、不依赖网络即可验证;待出现参数化、夹具、丰富断言等需求时再按依赖纪律引入 `pytest`。
|
||
|
||
## 三、构建与运行命令
|
||
|
||
骨架已初始化(T-001)。以下为真实命令;打包命令待 T-402 落地后确认。
|
||
|
||
| 用途 | 命令 |
|
||
| --- | --- |
|
||
| 创建虚拟环境 | `python -m venv .venv` |
|
||
| 激活虚拟环境 | `.venv\Scripts\Activate.ps1` |
|
||
| 安装依赖 | `pip install -r requirements.txt` |
|
||
| 本地运行 | `python -m src.main` |
|
||
| 测试 | `python -m unittest discover -s tests -t .` |
|
||
| 语法检查 | `python -m compileall src` |
|
||
| 打包(待 T-402) | `pyinstaller app.spec` |
|
||
|
||
Windows PowerShell:
|
||
|
||
```powershell
|
||
python -m venv .venv
|
||
.venv\Scripts\Activate.ps1
|
||
pip install -r requirements.txt
|
||
python -m src.main
|
||
python -m unittest discover -s tests -t .
|
||
```
|
||
|
||
## 四、设备与环境要求
|
||
|
||
- Windows 电脑。
|
||
- Android 真机,已开启开发者选项和 USB 调试。
|
||
- ADB 可用,电脑能看到设备。
|
||
- 真机已安装拼多多 App,并已登录可下单账号。
|
||
- 真机网络稳定,屏幕常亮或执行期间不锁屏。
|
||
- 支付默认由运营人工确认;开启受控自动支付时,必须由配置、金额上限和二次校验控制。
|
||
- 验证码、风控、人脸、短信等安全校验节点由运营人工处理。
|
||
|
||
## 五、依赖纪律
|
||
|
||
- 新增第三方依赖前,先说明用途、替代方案和维护成本。
|
||
- 不确定的技术选型先更新本文,再进入代码。
|
||
- 不允许同一职责并存两套框架或两套状态管理方案。
|
||
- 不允许为了绕过平台安全校验而引入逆向、Hook、抓包改包等依赖。
|
||
|
||
|