# R3.2 任务报告

## 结果

- 已通过 [Issue #2097](https://github.com/pikasTech/unidesk/issues/2097) 和 [PR #2102](https://github.com/pikasTech/unidesk/pull/2102) 增加 Sub2API 原生公告受控 CLI。
- PR 已合并到 `master`，merge commit 为 `43f34ccfe82c3be55b731d0e5c7e416de1bcccb5`。
- CLI 支持公告 `list`、`get`、`create`：默认 Kubernetes 风格紧凑文本，显式 `--json` 输出机器结构。
- `create` 支持标题、Markdown 正文、状态、通知模式、原生 targeting 以及 Unix 秒或 RFC3339 时间窗。
- `create` 默认 dry-run；只有显式 `--confirm` 才调用原生创建 API。
- 确认创建后的回读对账覆盖 ID、`title`、`content`、`status`、`notify_mode`、`targeting`、`starts_at` 和 `ends_at`；任一差异均返回失败并披露 `mismatchedFields`。

## 原生能力依据

- Sub2API 官方仓库 `Wei-Shaw/sub2api` 的 `v0.1.155` 原生提供 `/api/v1/admin/announcements`。
- 原生后端支持分页列表、按 ID 查看、创建、更新、删除和阅读状态；本次按授权范围接入列表、查看和受控创建。
- 未修改 Sub2API 源码、版本、外部哨兵或运行面配置。

## 补偿公告预览

- 标题：`服务稳定性补偿说明`。
- 内容语义：计划向最近 24 小时有实际使用记录的 17 名活跃用户每人增加 10 USD，总计 170 USD，确认后发放。
- 文案使用“计划”和“确认后发放”，没有表述为已经到账。
- dry-run 返回 `mutation=false`、`writeAttempted=0`，完整预览正确。
- PK01 原生公告列表只读验证返回 `mode=read-only`、`mutation=false`、`total=0`、`returned=0`。

## 验证

- scoped CLI help 通过。
- 显式 JSON dry-run 输出合同通过。
- 字段级对账纯内存 fixture 通过：全匹配无差异，多字段差异和 ID 差异均准确披露；`network=false`。
- `git diff --check` 通过。
- 子代理交付 commit：`2ab5fb87a2693ad6076e3abdeb3801c74269be69`。
- 主代理纠偏 commit：`2c0cf9479197a37728a3c697da230fb9e7ce28de`。

## 写入边界

- 本轮没有使用 `--confirm`。
- 公告发布数为 0。
- 充值写入数为 0。
- 实际公告发布和每人 10 USD 充值仍需用户对具体公告参数及固定用户名单再次明确授权。

## 后续改进

- post-task 已登记 [Issue #2106](https://github.com/pikasTech/unidesk/issues/2106)，用于改进 `platform-infra` 深层 scoped help 的渐进披露，减少后续无效调用；不作为本任务合并门禁。
