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

93 lines
4.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.
---
id: T-007
title: 统一产品名称与源码目录契约
phase: 0
deps: []
status: DONE
created: 2026-08-03
context_ref: a7465d2
work_branch: task/t-007-project-naming-layout
needs_device: false
needs_human_review: false
write_paths:
- AGENTS.md
- README.md
- init.ps1
- init.sh
- docs/00-ai-start-here.md
- docs/03-tech-stack.md
- docs/04-architecture.md
- docs/05-coding-rules.md
- docs/06-tasks.md
- docs/api.md
- docs/current-state.md
- docs/routes.md
- docs/README.md
- docs/design/desk-execution.html
- docs/tasks/README.md
- docs/tasks/T-007.md
---
## 问题 / 背景
项目已经确认三层命名,但当前文档和统一启动脚本仍把未来源码目录写成 `web/` 与 `desk/`,
会直接把 T-001 / T-002 引向错误位置。生产骨架尚未创建,现在统一成本最低;若等目录落地后
再改,会同时影响包路径、脚本、CI、构建产物与开发说明。
唯一命名契约:
| 层级 | 名称 | 目录 / 说明 |
| --- | --- | --- |
| 整体项目 / 仓库 | `cmbuyer` | 仓库根目录与系统内部标识 |
| 网页产品 | 采购服务 | Go 源码根目录 `admin/` |
| Windows 桌面产品 | 采购工具 | Python 源码根目录 `client/` |
## 方案
1. 在入口、技术栈、架构、API、路由和任务路线图第一次出现双端时写全“产品名 + 端类型 +
源码目录”,后文可以使用产品名或“网页端 / 桌面端”,不再把 `web` / `desk` 当产品名。
2. 把所有当前规范性的源码路径从 `web/...` 改为 `admin/...`,从 `desk/...` 改为
`client/...`;包内 `webui` 等技术标识不因顶层目录改名而修改。
3. 更新 `init.ps1` / `init.sh` 的目录判断、变量、提示和启动命令,使尚未初始化时明确提示
`admin/` 对应 T-001、`client/` 对应 T-002,并继续按 Phase 0 基线返回退出码 3。
4. 不创建 `admin/` 或 `client/`:生产骨架仍分别由 T-001 / T-002 创建。本任务只修正契约和
当前入口脚本。
5. `docs/design/web-*.html` 与 `desk-*.html` 是原型文件前缀,不是生产源码目录,本轮不重命名;
HTTP `/api/...`、页面路由和领域字段也不受影响。
## 验收要点
- 入口文档能一眼读出 `cmbuyer → 采购服务/admin + 采购工具/client`,不存在第四套产品名。
- 架构树、事实来源、入口文件与任务写路径统一使用 `admin/`、`client/`。
- 两个统一入口脚本只检测 `admin/`、`client/`,打印的运行命令与目录一致。
- 在当前 docs-only 基线上执行 `init.ps1`,上下文校验通过并以退出码 3 精确列出 T-001 / T-002。
- `python scripts/validate_agent_context.py`、shell 语法检查、PowerShell 解析检查与
`git diff --check` 通过。
- 不改 API 语义、安全边界、页面判据、原型交互或生产代码;不创建空源码目录。
## 边界
- 本任务只修改 frontmatter `write_paths` 所列文件。
- 历史任务执行记录可以保留当时的 `web/` / `desk/` 旧占位事实,但不得被当前入口或架构引用。
- 不重命名仓库、远程 Git 项目、原型文件或内部 `webui` 包。
- 不涉及真机,不改变任何下单或付款约束。
## 执行记录
### 2026-08-03 · 命名与目录契约已统一
- 项目入口、技术栈、架构、API、路由、路线图和当前状态已统一为:整体项目 `cmbuyer`;
采购服务是网页端,源码目录 `admin/`;采购工具是 Windows 桌面端,源码目录 `client/`。
- 当前规范性源码路径已切换到 `admin/cmd/server/main.go`、`admin/internal/...`、
`client/src/main.py`、`client/src/android/pdd_flow.py` 与 `client/tests/`。原型文件前缀、
HTTP 路由和内部 `webui` 包保持不变。
- `init.ps1` 与 `init.sh` 使用 `admin/go.mod`、`client/requirements.txt` 作为初始化哨兵,
不再仅凭空目录判断。验证时发现工作区已有空 `admin/` / `client/`,旧判据误建了
`client/.venv`;该虚拟环境创建时间与本轮验证一致,已移入回收站,两个目标目录均未删除。
- `& .\init.ps1`:上下文清单通过,并按 Phase 0 约定以退出码 3 精确列出
“T-001 初始化采购服务 admin/ Go 骨架”和“T-002 初始化采购工具 client/ Python 骨架”。
- PowerShell `ScriptBlock` 解析与 `bash -n init.sh` 通过;路径审计未在当前入口 / 架构中发现
`web/cmd`、`web/internal`、`desk/src`、`desk/tests`、`cd web` 或 `cd desk`。
- `python scripts/validate_agent_context.py` 与 `git diff --check` 通过。没有创建或修改生产代码,
没有触及 API 语义、页面判据或资金安全边界。