diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 379d867..84a16c1 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -547,14 +547,21 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → | 7. 数据端缺陷修复 | 15/16 | Complete(07-16 superseded) | - | | 8. 测试重构与接口对齐 | 11/11 | Complete | 2026-10-08 | | 9. 最小浏览器可运行版本 | 15/16 | In Progress| | -| 10. 文档重构 | 0/0 | Not Planned | - | +| 10. 文档重构 | 0/6 | Planned | - | ### Phase 10: 文档重构 -**Goal:** [To be planned] -**Requirements**: TBD +**Goal:** 重构过老、结构不佳、新人难懂的项目文档,面向多背景读者(完全新手 / 不懂代码的作者 / 有基础的作者 / AI Agent)提供分层指南。本阶段采用「伞阶段 + 增量派发」:每次只规划执行一个已派发的具体小任务。**第一批已派发 = 中级教程(`docs/intermediate/`,24 篇中文 markdown)+ 在 VitePress 站点注册它们**(D-01..D-44)。 +**Requirements**: (无专属需求 ID;以 `10-CONTEXT.md` 的 D-01..D-44 为需求基线,验收锚在 D-09:用户人工审阅 + 链接全部有效 + 构建通过) **Depends on:** Phase 9 -**Plans:** 0 plans +**Plans:** 6 plans(第一批:中级教程 24 篇 + 站点注册) Plans: -- [ ] TBD (run /gsd-plan-phase 10 to break down) +- [ ] 10-01-PLAN.md — Wave 0:站点前置与注册(`tsx docs/.vitepress/init.ts` 生成 `apiSidebar.ts`、建 `docs/intermediate/`、`config.ts` 新增 nav 入口 + `sidebar['/intermediate/']` 4 组/24 条;D-13 命名 checkpoint) +- [ ] 10-02-PLAN.md — 概念与导航 4 篇(`data-vs-render` / `src-tour` / `code-basics` / `hooks`) +- [ ] 10-03-PLAN.md — 基础接口 8 篇(`data-state-overview` … `flags`) +- [ ] 10-04-PLAN.md — 战斗 9 篇(`combat-overview` + 8 篇子系统;N-1/N-2/N-3/N-7 留余地) +- [ ] 10-05-PLAN.md — 其他 3 篇(`events` / `replay-commands` / `data-plugins`) +- [ ] 10-06-PLAN.md — 全批验收(构建通过 + 链接有效 + 交付 D-09 人工审阅) + +**说明:** 每篇中级教程遵循 `10-CONTEXT.md` D-21..D-44 的逐篇要点与阅读顺序(4/8/9/3)。文档仅新增 `docs/intermediate/*.md` 与修改 `docs/.vitepress/config.ts`;**不**触碰 `docs/guide/*`、`docs/dev/*`、`docs/logger/*`(旧内容删除为 D-04 的后续派发)。构建命令须先跑 `tsx docs/.vitepress/init.ts`(`config.ts:3` 静态 import `./apiSidebar`,该文件 gitignored 且当前缺失)。本机 PowerShell 禁止 `pnpm.ps1`,命令经 `cmd /c "..."` / `pnpm.cmd` 执行。 diff --git a/.planning/phases/10-docs-restructure/10-01-PLAN.md b/.planning/phases/10-docs-restructure/10-01-PLAN.md new file mode 100644 index 0000000..c57d7de --- /dev/null +++ b/.planning/phases/10-docs-restructure/10-01-PLAN.md @@ -0,0 +1,129 @@ +--- +phase: 10-docs-restructure +plan: 01 +type: execute +wave: 1 +depends_on: [] +files_modified: + - docs/.vitepress/config.ts +autonomous: false +requirements: [] +user_setup: [] +estimate: + tokens: 22000 + raw_tokens: 15000 + tasks: 2 + confidence: low +must_haves: + truths: + - "顶栏 `nav` 出现「中级教程」入口,指向 `/intermediate/data-vs-render`,且既有 `主页/指南/API/错误代码` 四条逐字不变" + - "侧边栏新增 `'/intermediate/'` 键,含 4 个分组(概念与导航 / 基础接口 / 战斗 / 其他)、共 24 条链接,顺序为 D-20 的 4/8/9/3" + - "既有 `'/guide/'`、`'/logger/'`、`'/api/'` 三个 sidebar 键与既有 nav 条目零改动" + - "`docs:build` 在生成 `apiSidebar.ts` 后成功通过" + artifacts: + - "docs/.vitepress/config.ts(仅新增 nav 一条 + sidebar['/intermediate/'] 键)" + key_links: + - "config.ts:3 静态 import './apiSidebar' ← 依赖 docs/.vitepress/init.ts 生成(否则构建起步即失败)" + - "config.ts:59-156 既有 guide/logger/api sidebar 键必须逐字保留" +--- + + +在中级教程正文成批编写之前,先把 24 篇的**站点注册**落地:生成构建前置文件 `docs/.vitepress/apiSidebar.ts`、创建 `docs/intermediate/` 目录、在 `docs/.vitepress/config.ts` 新增顶栏入口与 `'/intermediate/'` 侧边栏分组。 + +Purpose: 没有侧边栏注册,24 篇会「写了但看不见」,D-09 的人工审阅将直接不通过(RESEARCH Pitfall 1);没有 `apiSidebar.ts`,`docs:build` 会因 `config.ts:3` 的静态 import 失败(RESEARCH Pitfall 2)。本计划是后续全部写作计划的硬前置(Wave 0)。 +Output: 已注册的 `docs/.vitepress/config.ts` + 已生成的 `docs/.vitepress/apiSidebar.ts`(gitignored,不提交)+ 空目录 `docs/intermediate/`。 + + + +@C:/Users/13194/.config/opencode/gsd-core/workflows/execute-plan.md +@C:/Users/13194/.config/opencode/gsd-core/templates/summary.md + + + +@.planning/PROJECT.md +@.planning/ROADMAP.md +@.planning/STATE.md +@.planning/phases/10-docs-restructure/10-CONTEXT.md +@.planning/phases/10-docs-restructure/10-RESEARCH.md +@.planning/phases/10-docs-restructure/10-PATTERNS.md +@.planning/phases/10-docs-restructure/10-VALIDATION.md +@docs/.vitepress/config.ts +@docs/.vitepress/init.ts + +**约定(dev.md / AGENTS.md):** +- 本批只改 `docs/intermediate/*`(新增)与 `docs/.vitepress/config.ts`(注册);**禁止**删除或修改 `docs/guide/*`、`docs/dev/*`、`docs/logger/*`,**禁止**改动既有 `nav`/`sidebar` 的 guide/logger/api 键(D-14)。 +- 本机 PowerShell 禁止运行 `pnpm.ps1`/`npx.ps1`,命令一律经 `cmd /c "..."` 或 `pnpm.cmd` 执行(RESEARCH Environment Availability)。 + + + + + + Task 0: 向用户汇报本计划并申请 D-13 命名批准 + 在写入任何文件之前,向用户汇报本计划内容并停下等待。汇报须包含:**要做什么**(在 VitePress 站点注册中级教程的顶栏入口与侧边栏分组,并生成本地构建前置文件)、**为什么**(24 篇正文没有侧边栏注册会「写了但看不见」,且缺 `apiSidebar.ts` 会导致构建失败)、**大致怎么做**(先 `tsx docs/.vitepress/init.ts` 生成 `apiSidebar.ts`、创建 `docs/intermediate/` 目录,再在 `config.ts` 的 `nav` 新增一条、`sidebar` 新增 `'/intermediate/'` 键)、**影响范围**(仅 `docs/.vitepress/config.ts` 一个受跟踪文件被修改,外加一个 gitignored 生成文件)。同时按 D-13 **申请新增命名的批准**,逐条列出:(a) `nav` 新条目显示名 `中级教程`(`link: '/intermediate/data-vs-render'`);(b) 四个分组标题 `概念与导航` / `基础接口` / `战斗` / `其他`;(c) 24 条侧边栏显示名——`数据端与渲染端` / `src 导览` / `代码基础` / `钩子` / `数据端总览` / `勇士属性` / `勇士道具` / `勇士装备` / `勇士位置` / `地图结构` / `地图图块` / `Flag 变量` / `战斗总览` / `怪物特殊属性` / `光环` / `查询效果` / `最终属性` / `伤害计算` / `地图伤害` / `战斗脚本` / `状态钩子` / `自定义事件` / `录像指令` / `数据插件`(分别对应 D-20 文件名 `data-vs-render` / `src-tour` / `code-basics` / `hooks` / `data-state-overview` / `hero-attribute` / `hero-items` / `hero-equipment` / `hero-location` / `map-structure` / `map-tiles` / `flags` / `combat-overview` / `enemy-specials` / `enemy-aura` / `enemy-query` / `enemy-final` / `enemy-calculator` / `enemy-map-damage` / `enemy-combat-script` / `enemy-status-hooks` / `events` / `replay-commands` / `data-plugins`)。在收到用户明确回复「可以执行」四个字、且对上述命名给出(可含微调的)确认之前,不得开始 Task 1 的任何一步,也不得派发执行子代理。 + 本计划内容:在 VitePress 站点注册中级教程的顶栏入口与 `'/intermediate/'` 侧边栏分组(4 组 / 24 条),并生成本地构建前置文件 `apiSidebar.ts`;申请 D-13 命名的批准。 + 阅读上面的「要做什么 / 为什么 / 大致怎么做 / 影响范围」四段;逐条审阅 nav 显示名 `中级教程`、四个分组标题、24 条显示名,确认或提出修改。 + 回复「可以执行」以继续;如对命名有修改,请一并给出,待修正后再回复「可以执行」。其它回复视为未批准,本计划停在此处。 + + 用户已回复「可以执行」,并对 nav 显示名、四个分组标题、24 条显示名给出确认或修改意见。 + + 用户回复「可以执行」且命名经批准(含修改);未获批准前本计划不得继续。 + + + + Task 1: 生成 apiSidebar.ts 并创建 docs/intermediate/ 目录 + docs/.vitepress/apiSidebar.ts, docs/intermediate/ + 先生成构建前置文件,再准备正文目录。执行 `cmd /c "pnpm exec tsx docs/.vitepress/init.ts"`,它会运行 `docs/.vitepress/api.ts` 的 `generateSidebar()` 并写出 `docs/.vitepress/apiSidebar.ts`(该文件被 `.gitignore:54` 忽略,属本地生成物,不提交)。随后创建目录 `docs/intermediate/`(`New-Item -ItemType Directory -Force -Path docs/intermediate`)——它在第一次写入正文前是空的,git 不跟踪空目录,本步仅为让后续写作计划与本地预览有落点。不要触碰 `docs/.vitepress/api.ts`、`init.ts` 或既有 `apiSidebar.ts` 的生成逻辑(D-14 越界红线;RESEARCH Anti-Patterns)。 + + cmd /c "pnpm exec tsx docs/.vitepress/init.ts"; if ($?) { if (-not (Test-Path docs/.vitepress/apiSidebar.ts)) { exit 1 }; if (-not (Test-Path docs/intermediate)) { exit 1 }; echo "W0-PREP-OK" } else { exit 1 } + non-zero exit, or output lacks "W0-PREP-OK", or docs/.vitepress/apiSidebar.ts / docs/intermediate/ 不存在 + + `docs/.vitepress/apiSidebar.ts` 已生成且非空,`docs/intermediate/` 目录已存在;两文件之外的仓库内容零改动。 + + + + Task 2: 在 config.ts 注册 nav 入口与 '/intermediate/' 侧边栏分组 + docs/.vitepress/config.ts + 用**就地编辑(Edit,最小作用域)**修改 `docs/.vitepress/config.ts`,只做两处新增、不动任何既有键。(1) 在 `nav` 数组(现为 `config.ts:53-58`)末尾追加一条 `{ text: '中级教程', link: '/intermediate/data-vs-render' }`,保留既有 `主页`/`指南`/`API`/`错误代码` 四条逐字不变。(2) 在 `sidebar` 对象(现为 `config.ts:59-156`)中新增 `'/intermediate/'` 键,其值为一个 `{ text: '中级教程', collapsed: false, items: [...] }`,`items` 内按 D-20 顺序嵌套四个分组:`概念与导航`(`data-vs-render` / `src-tour` / `code-basics` / `hooks`)、`基础接口`(`data-state-overview` / `hero-attribute` / `hero-items` / `hero-equipment` / `hero-location` / `map-structure` / `map-tiles` / `flags`)、`战斗`(`combat-overview` / `enemy-specials` / `enemy-aura` / `enemy-query` / `enemy-final` / `enemy-calculator` / `enemy-map-damage` / `enemy-combat-script` / `enemy-status-hooks`)、`其他`(`events` / `replay-commands` / `data-plugins`)。每条写为 `{ text: '', link: '/intermediate/<文件名>' }`(绝对路径、不带 `.md`,写法和 `config.ts:64-124` 既有条目一致;分组嵌套写法参照 `config.ts:70-86`)。`'/guide/'`、`'/logger/'`、`'/api/'` 三个键与其中全部内容**逐字保留**。新增后运行构建命令确认站点可通过(命令本身先跑 init.ts,避免 `config.ts:3` 的 import 失败)。 + + cmd /c "pnpm exec tsx docs/.vitepress/init.ts && pnpm docs:build" + non-zero exit, or output contains "dead link(s) found.", or "Failed to resolve import", or the build does not print "build complete" + + config.ts 仅新增 nav 一条与 `'/intermediate/'` sidebar 键(24 条 link、4 个分组,顺序 4/8/9/3);既有 guide/logger/api 键与 nav 条目零 diff;`docs:build` 通过并打印 build complete。 + + + + + +## Trust Boundaries + +| Boundary | Description | +|----------|-------------| +| 构建期 markdown/config → 静态站点 | 配置与文档内容由构建期静态处理,无运行时用户输入 | +| 站点 → 浏览器读者 | 外链是唯一的对外指向面 | + +## STRIDE Threat Register + +| Threat ID | Category | Component | Severity | Disposition | Mitigation Plan | +|-----------|----------|-----------|----------|-------------|-----------------| +| T-10-01 | Tampering | `docs/.vitepress/config.ts` 新增内容 | low | mitigate | 只新增 `nav`/`sidebar` 静态文本条目,不写原始 HTML/`