Commit 367b4d5035c92abf423659e7b8a807f1ca8a425e
1 parent
e20d4375
docs(27-P3C): 登记批 1 顺手要收敛的一处路径重复,以及一处刻意不做的改名
并行会话提醒 company-service.js 的 TEMPLATES_DIR 名字过期(实指 system/agents)。查调用点时发现更值得记的是 company.js:同一个 路径常量在这个文件里被重复定义了 7 次,6 处硬编码 path.resolve(__dirname,'../../system/agents'),只有 1 处用了权威 访问器 locator.AGENTS_ROOT。 这个路径 2026-08-18 刚被 agent 目录重构搬过一次 —— 下次再搬, 改 6 处漏 1 处就是静默 bug。批 1 本来就要大改 company.js(全部新 端点挂这里),顺手收敛成模块级一份,不是为改而改。 这与本文档反复点名的是同一个病:canDispatch 的取值域被前端复述过 一份、ACTIVE_ROOT_RUN_STATUS 在两个文件里逐字重复、 isUngraduatedStatus() 的取值域不许在别处复述。同一个事实只能有 一处持有者,路径也是事实。 同时登记一条刻意不做的:company-service.js 那个 TEMPLATES_DIR 改名要动 50 处、跨 6 个文件、零功能收益,不值得。留记录是为了 说明它是已知的,不是没人看见。 顺带独立复验:template-refs.test.js 4/4 通过,27-P3/P4 的 blocker 21(CI 因骨架悬空引用而红)确实已关闭。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Showing
1 changed file
with
6 additions
and
0 deletions
docs/todo/system-design/27-p3c-goal-task-model.md
| ... | ... | @@ -485,6 +485,12 @@ for (const t of queuedTasks) { |
| 485 | 485 | |
| 486 | 486 | 全部挂在 `server/routes/company.js`。错误响应沿用现有 `{ error, hint, ... }` 形态。 |
| 487 | 487 | |
| 488 | +> **批 1 顺手收敛一处**(不是为改而改 —— 批 1 本来就要大改这个文件):`company.js` 里 `const TEMPLATES_DIR` 被**重复定义了 7 次**,其中 6 处硬编码 `path.resolve(__dirname, '../../system/agents')`,只有 1 处(`:220`)用了权威访问器 `locator.AGENTS_ROOT`。2026-08-18 的 agent 目录重构刚把这个路径搬过一次 —— **下次再搬,改 6 处、漏 1 处就是一个静默 bug**。收敛成模块级的一份 `locator.AGENTS_ROOT` 即可。 | |
| 489 | +> | |
| 490 | +> 这与本文档反复点名的是**同一个病**:`canDispatch` 的取值域被前端复述过一份(§六.3 的教训)、`ACTIVE_ROOT_RUN_STATUS` 在两个文件里逐字重复(§九.1)、`isUngraduatedStatus()` 的取值域不许在别处复述(§四.9)。**同一个事实只能有一处持有者 —— 路径也是事实。** | |
| 491 | +> | |
| 492 | +> (顺带记一条**不做**的:`company-service.js` 的 `const TEMPLATES_DIR = locator.AGENTS_ROOT` 名字已过期,读的人会以为它指 `system/templates`。但改名要动 50 处、跨 6 个文件、零功能收益 —— 不值得,留着这条记录说明它是已知的、不是没人看见。) | |
| 493 | + | |
| 488 | 494 | ### 6.1 先做一件清理:退役 OKR 的 `/goals` 别名 |
| 489 | 495 | |
| 490 | 496 | `index.js` / `agent-server.js` 里 `app.use('/api/goals', require('./routes/okr'))` 与 `company.js` 的 `okrPath()` 里那条 `/:companyId/goals${suffix}` 一并删除。§二.3 已核实**零调用方**。删完 `/goals` 这个词在整套 API 里只剩一个含义。 | ... | ... |