Files
cmbuyer/docs/tasks/T-003.md
T

67 lines
3.9 KiB
Markdown
Raw 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.
---
id: T-003
title: 建立双端统一初始化与验证入口
phase: 0
deps: [T-001, T-002]
status: DONE
created: 2026-08-03
vikunja_task_id: 20
context_ref: bcec012
work_branch: task/t-003-unified-entry
needs_device: false
needs_human_review: false
write_paths:
- docs/tasks/T-003.md
- init.ps1
- init.sh
- docs/03-tech-stack.md
- docs/00-ai-start-here.md
- docs/current-state.md
---
<!-- BEGIN VIKUNJA EXPORT id=20 synced=2026-08-03T10:55:26Z sha256=ded66098a74140a3738f1afd64299eb429325a72fdd018aeb1dabbedc89cca56 -->
## 问题 / 背景
T-001 与 T-002 已建立两端可运行骨架,但仓库根 init.ps1 / init.sh 仍沿用占位命令:Windows 默认 Python 3.10 不满足 client 的 Python 3.11+ 下限,桌面端仍按 requirements.txt 安装而不是规范的 editable package,启动命令也指向不存在的 src/main.py。统一入口若不能主动验证工具链和两端基线,后续任务会在错误环境上叠加实现。
## 关联需求与交互
- 功能:Phase 0 工程地基,只建立开发安装、验证与启动提示。
- 用户故事 / 交互:不改采购服务或采购工具产品界面。
- 架构 / API:不改业务接口、数据模型或任何采购安全边界。
## 方案
1. 完善 init.ps1:显式选择并验证 Python 3.11+,创建或校验 client/.venv,以 editable 方式安装 client,再运行两端离线测试、静态检查和构建。
2. 完善 init.sh 的等价流程与缺失工具提示;在无 Windows 工具链的 WSL 环境只允许明确失败,不得把跳过当成功。
3. 两端目录、Go、Python、venv 或必要文件缺失时输出可操作原因并返回非零;任何门禁失败立即停止。
4. 成功后只打印真实启动命令:采购服务 go run ./cmd/server;采购工具虚拟环境 Python -m cmbuyer_client。
5. 同步入口、技术栈与当前状态文档;不修改 admin/client 业务代码。
## 验收要点
- Windows 一条命令完成两端安装、admin test/vet/build、client unittest/compileall 与上下文门禁。
- 不会使用 Python 3.10 创建采购工具环境;已有低版本 venv 会明确失败并给出修复提示。
- editable install 与启动模块和 T-002 已验证契约一致。
- init.sh 至少通过 bash 语法检查,且与 PowerShell 入口保持同一边界。
- 不连接真机,不实现采购、下单或付款逻辑。
## 执行记录
### 2026-08-03T10:54:57Z · ila
主 agent 终审通过:init.ps1/init.sh 已成为双端统一安装与离线门禁入口;不启动产品、不连接设备、不触发采购、下单或付款动作。
Windows 入口优先复用并验证现有 Python 3.11+ venv,仅缺失时从 Launcher 合规版本确定性创建;安装、包导入、unittest、compileall、validator 全部使用同一 venv Python。当前实测 venv 为 Python 3.12。
独立验证:在已合入 T-004 的最新组合基线上连续两次运行 init.ps1 成功;admin test/vet/build、client 6 tests/compileall、validator 通过。Python 3.10 venv fixture 与仅 3.10/3.9 Launcher fixture 均 fail closed;bash -n 通过,WSL 缺 Go 时明确非零退出。
<!-- END VIKUNJA EXPORT -->
## 边界
- 不修改 `admin/`、`client/` 生产代码、数据库迁移、业务 API、产品界面或真机流程。
- 不连接设备,不编写拼多多页面判据、下单、提交订单、付款或支付逻辑。
- 统一入口只能执行安装、离线验证、构建和打印启动命令;不得在失败时静默跳过任一已初始化端。
- 采购工具必须使用 Python 3.11+ 虚拟环境和 `pip install -e .`;已有低版本虚拟环境必须明确失败,
不得继续运行或自动覆盖用户环境。
- `init.sh` 在缺少 Windows 侧工具链的环境应明确非零退出;语法通过不等于在 WSL 已完成产品验收。
- 不放宽 `docs/04-architecture.md` 第四节安全边界,入口脚本不得触发任何业务动作。