93 lines
4.6 KiB
Markdown
93 lines
4.6 KiB
Markdown
---
|
||
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 语义、页面判据或资金安全边界。
|