# API Changelog 前端消费状态协作说明

## 可直接转发给前端的通知

API changelog 从 `hl-changelog/v2` 开始记录前端消费进度。后端交接时会填写：

```yaml
backend_status: "deployed"
frontend_status: "pending"
frontend_owner: ""
frontend_ref: ""
target_release: ""
verified_at: ""
```

请前端在领取、实现、发布和页面验证时更新对应状态，并填写可追溯的前端 PR、提交或发布版本。

这不会把前端工作纳入后端工单验收，也不要求在 `hl-ui` 创建配合工单。它只用于区分：

- 后端接口是否已经部署并验证；
- 前端是否已经领取；
- 前端代码是否已经实现；
- 页面是否已经发布并验证。

只有 `frontend_status: "verified"` 才表示用户页面形成完整闭环。

## 状态流转

```text
pending → claimed → implemented → released → verified
```

不需要前端修改时：

```text
not_required
```

| 状态 | 含义 | 必填证据 |
|---|---|---|
| `not_required` | 不需要前端修改 | 不填写前端负责人、引用和版本 |
| `pending` | 等待前端领取 | 无 |
| `claimed` | 前端已领取 | `frontend_owner` |
| `implemented` | 前端代码已实现 | `frontend_owner`、`frontend_ref` |
| `released` | 已发布 | 再填写 `target_release` |
| `verified` | 页面已验证 | 再填写 `verified_at` |

跨级迁移会被自动校验拒绝。状态回退或改为/取消 `not_required` 时必须填写原因。

## 更新命令

### 存在历史路径 alias 的文档

消费线程已经记录的路径不得因文件改名失效。先解析路径：

```powershell
npm run changelog:resolve -- "changelogs-v2/2026-07/旧路径.md"
```

状态回写统一使用 alias-aware 命令；传旧路径或 canonical 均会同时更新整组文件：

```powershell
npm run changelog:transition -- `
  "changelogs-v2/2026-07/旧路径.md" implemented `
  --owner frontend-team `
  --frontend-ref "mmg/hl-ui@abc1234" `
  --write
```

相同状态和证据可以重复执行，第二次不会产生文件变更。alias 关系集中记录在
`changelog-path-aliases.json`，并由 `npm run check:path-aliases` 校验文件存在性、ticket、
canonical 指向及前端状态一致性。

### 无 alias 的文档

领取：

```powershell
hl changelog transition 5205 D:/path/changelog.md claimed `
  --owner frontend-team --write
```

实现：

```powershell
hl changelog transition 5205 D:/path/changelog.md implemented `
  --owner frontend-team `
  --frontend-ref "mmg/hl-ui@abc1234" `
  --write
```

发布：

```powershell
hl changelog transition 5205 D:/path/changelog.md released `
  --target-release "test-2026.07.24" `
  --write
```

验证：

```powershell
hl changelog transition 5205 D:/path/changelog.md verified `
  --verified-at "2026-07-24" `
  --write
```

命令默认只预览；只有 `--write` 才修改文件。写入命令会自动获取 `changelog` 单写租约。

## 职责边界

后端负责：

- 完成后端测试、部署和网关验证；
- 初始化 v2 元数据；
- 需要前端时设置 `pending`，不需要时设置 `not_required`；
- 不替前端填写 `implemented`、`released` 或 `verified`。

前端负责：

- 领取时填写负责人；
- 实现后填写前端引用；
- 发布后填写目标版本或环境；
- 页面验证后填写验证日期。

QA 或产品可以协助更新 `verified_at`，但必须基于实际页面验证，不能只根据接口成功或代码已合并标记完成。

## 存量文档

- 新 changelog 全部使用 `hl-changelog/v2`。
- `hl-changelog/v1` 继续可读和索引，不强制一次性迁移。
- 文件名带“前端待处理”不代表真实状态；需要继续流转时补充 v2 元数据。
- 不通过重命名表达消费状态，避免破坏文件名校验和历史链接。
- 已被消费的路径如确需规范化，必须先登记 alias、保留兼容入口，并使用 alias-aware 命令同步状态。
