From fe0c86794833927e2413a0795d4adc83fdf0853d Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Mon, 3 Aug 2026 16:18:10 +0800 Subject: [PATCH] docs(tasks): define project naming and directory contract --- docs/06-tasks.md | 1 + docs/tasks/T-007.md | 79 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 docs/tasks/T-007.md diff --git a/docs/06-tasks.md b/docs/06-tasks.md index 2d9a4c6..d32feb5 100644 --- a/docs/06-tasks.md +++ b/docs/06-tasks.md @@ -27,6 +27,7 @@ | T-004 | 建立核心数据模型与状态机 | T-001 | `tasks`、`order_authorizations`、`order_submissions` 表与 `04-architecture.md` 一致;状态流转有单元测试;金额用十进制字符串 | | T-005 | 网页端 MVP 交互原型 | - | “采购服务”的 `docs/design/web-*.html` 单文件假数据原型覆盖登录、表格工作台、创建弹窗、批量开始试选、路由化详情抽屉与完整详情;键盘、窄屏、空态 / 错误 / 加载、围栏后调和状态可演示;经人工确认前保持 `DOING` | | T-006 | 桌面端 MVP 交互原型 | - | `docs/design/desk-*.html` 单文件假数据原型覆盖“采购工具”的采购执行 / 配置固定页签、顶部轮询控制、当前任务图片、滚动日志、时间倒序执行记录,以及左侧当前任务 / 记录详情双视图;明确 dry-run / 真实下单、App 版本失配、围栏后不可重试;经人工确认前保持 `DOING` | +| T-007 | 统一产品名称与源码目录契约 | - | 项目名固定为 `cmbuyer`;采购服务使用 `admin/`,采购工具使用 `client/`;架构、任务和启动脚本不再把 `web/` / `desk/` 当生产源码目录 | ### Phase 1 · 真机取证(最高风险,必须先做) diff --git a/docs/tasks/T-007.md b/docs/tasks/T-007.md new file mode 100644 index 0000000..59d41ae --- /dev/null +++ b/docs/tasks/T-007.md @@ -0,0 +1,79 @@ +--- +id: T-007 +title: 统一产品名称与源码目录契约 +phase: 0 +deps: [] +status: DOING +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 · 待实现 + +- 已确认命名与目录映射;任务保持 `DOING`,先更新规范与入口脚本,再运行静态门禁。