call-graph-cli 0.3.0

Interactive call and type hierarchy TUI
Documentation
# cgraph 需求管理

本目录是用户可观察产品行为的唯一规范来源。根目录 `DESIGN.md` 只保留产品愿景、范围和需求导航;`docs/` 解释已经交付的用户用法;`src/` 记录实现原理与技术决策。

## 父子结构

- 顶层目录代表父需求,目录名使用 `REQ-N-slug`,数字不加前导零。
- 父需求的 `README.md` 描述共同目标、范围、整体验收条件和子需求清单。
- 子需求使用 `REQ-N-M-slug.md`,只拆分能够独立实现、验收或延期的行为。
- 父需求可以没有子需求。此时父文件本身就是最小可交付需求,并直接记录验收条件。
- 子需求暂不继续嵌套;出现第三层需求时,应先验证父需求是否过大,再修改本规范。

## 状态

| 状态 | 含义 |
| --- | --- |
| `Draft` | 仍在澄清,不能据此承诺实现 |
| `Planned` | 行为和边界已接受,但尚未开始 |
| `In Progress` | 正在实现,尚未满足全部验收条件 |
| `Partial` | 部分行为已可使用,但需求整体未完成 |
| `Implemented` | 代码、验收、用户文档和内部设计均已完成 |
| `Deferred` | 已接受但当前里程碑明确不实现 |
| `Rejected` | 已决定不实现,并应记录原因或替代方案 |

父需求有子需求时,状态按以下规则维护:全部适用子需求完成才是 `Implemented`;已有部分交付时是 `Partial`;没有任何实现时是 `Planned`;`Deferred` 子需求不会被默认为已完成,父文件必须说明它是否阻塞父需求完成。

## 优先级

| 优先级 | 含义 |
| --- | --- |
| `P0` | 当前可用主流程不可缺少 |
| `P1` | 下一个完整产品里程碑需要 |
| `P2` | 明确需要,但不阻塞近期主流程 |
| `P3` | 探索性或长期增强 |

优先级不是实现状态,也不代表承诺日期。目标版本尚未建立时使用 `TBD`,不要猜测发布日期。

## 需求树

| 父需求 | 状态 | 优先级 | 子需求 | 摘要 |
| --- | --- | --- | ---: | --- |
| [REQ-1 会话与启动]REQ-1-session/README.md | `Implemented` | `P0` | 2 | 启动模式、初始图入口和安全退出 |
| [REQ-2 分析后端状态]REQ-2-analysis-status/README.md | `Implemented` | `P0` | 3 | LSP/Tree-sitter 状态及底部同栏展示 |
| [REQ-3 层次关系探索]REQ-3-hierarchy/README.md | `Implemented` | `P1` | 4 | 双向展开、缓存、重复节点和刷新 |
| [REQ-4 画布与导航]REQ-4-canvas-navigation/README.md | `Implemented` | `P1` | 5 | 选中、空间导航、无限画布、图布局、连线与操作帮助 |
| [REQ-5 符号与图入口管理]REQ-5-symbol-management/README.md | `Implemented` | `P0` | 5 | 搜索、新增、重定位与取消图入口 |
| [REQ-6 进程间通信]REQ-6-ipc/README.md | `Implemented` | `P2` | 2 | 节点跳转编辑器与外部 anchor 聚焦 |
| [REQ-7 导出关系图]REQ-7-export/README.md | `Implemented` | `P2` | 0 | 简洁、稳定且不覆盖已有文件的文本导出 |
| [REQ-8 语言支持]REQ-8-language-support/README.md | `Implemented` | `P1` | 1 | Rust、C/C++ 和 Python 后端支持,Python 默认使用 Pyrefly |
| [REQ-9 项目本地配置与符号过滤]REQ-9-project-configuration/README.md | `Implemented` | `P1` | 2 | `.cgraph.toml`、限定名过滤和会话内编辑重载 |

`Partial` 只用于已经存在部分用户可观察行为的需求。领域类型、协议结构或占位类等内部骨架应记录为实现准备,但不能据此把 `Planned` 改成 `Partial`。

## 需求文件模板

```markdown
# REQ-N-M:需求名称

| 字段 ||
| --- | --- |
| 父需求 | `REQ-N` |
| 状态 | `Planned` |
| 优先级 | `P1` |
| 目标版本 | `TBD` |

## 目标

## 需求

## 验收条件

## 当前实现与差距

## 关联文档
```

## 维护规则

1. 产品行为改变时,先修改对应需求及验收条件,再同步用户文档和内部设计。
2. 新需求先判断属于现有父需求还是需要新的父需求;不要把功能列表重新堆回 `DESIGN.md`3. 标记 `Implemented` 时必须列出实现或测试证据,并确认 `docs/` 没有相反描述。
4. 技术方案变化但用户行为不变时,只修改 `src/` 设计或 decision 文档,不制造新的产品需求。
5. TODO 应尽可能引用需求 ID;没有对应产品行为的纯重构 TODO 留在内部设计中。
6. 本索引中的状态必须与各父需求文件一致;父子状态变更应在同一次修改中完成。