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

3.9 KiB
Raw Permalink Blame History

id, title, phase, deps, status, created, vikunja_task_id, context_ref, work_branch, needs_device, needs_human_review, write_paths
id title phase deps status created vikunja_task_id context_ref work_branch needs_device needs_human_review write_paths
T-003 建立双端统一初始化与验证入口 0
T-001
T-002
DONE 2026-08-03 20 bcec012 task/t-003-unified-entry false false
docs/tasks/T-003.md
init.ps1
init.sh
docs/03-tech-stack.md
docs/00-ai-start-here.md
docs/current-state.md

问题 / 背景

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 时明确非零退出。

边界

  • 不修改 admin/、client/ 生产代码、数据库迁移、业务 API、产品界面或真机流程。
  • 不连接设备,不编写拼多多页面判据、下单、提交订单、付款或支付逻辑。
  • 统一入口只能执行安装、离线验证、构建和打印启动命令;不得在失败时静默跳过任一已初始化端。
  • 采购工具必须使用 Python 3.11+ 虚拟环境和 pip install -e .;已有低版本虚拟环境必须明确失败, 不得继续运行或自动覆盖用户环境。
  • init.sh 在缺少 Windows 侧工具链的环境应明确非零退出;语法通过不等于在 WSL 已完成产品验收。
  • 不放宽 docs/04-architecture.md 第四节安全边界,入口脚本不得触发任何业务动作。