# R9 任务报告

## 结果

ApiState 账号评分现按稳定上游账号身份跨分组聚合。同一账号只显示一行，分组列汇总全部所属分组；请求、成功、失败、Token、API USD 与切号恢复计数合并后重新计算评分，评分保留一位小数。TTFT P95 在分组摘要无法恢复原始样本时取各分组 P95 最大值，避免合并后低估风险；缺失用量继续保持空值，不伪造为零。

服务端刷新、旧缓存读取和本地 CLI 共用 `src/account-score-aggregation.ts` 的纯聚合函数。本地可直接执行：

```bash
bun scripts/apistate-cli.ts --config config/sub2rank.yaml scores aggregate-smoke
```

主分支实测返回 `mutation=false`，所有检查均为 true；样例账号 `lyon9801 0.0` 聚合为一行，分组为“自用”和 `unidesk-codex-pool`，评分为 `97.5`。

前端将上次更新时间提升为独立高对比区块，并依据后端 `nextRefreshAt` 每秒显示距离下次刷新的倒计时。刷新失败不会破坏倒计时 DOM。

## 验证

- `bun run check`：通过。
- `node --check static/app.js`：通过。
- 本地同源 CLI `scores aggregate-smoke`：通过。
- ApiState PR #7 已合并，merge commit 为 `d8d929cfaa86f83716645e5635394a196df58d9f`。
- 自动 PipelineRun `sub2rank-nc01-d8d929cfaa86f83716645e5635394a196df58d9f-wdw9w`：Succeeded，Argo 为 Synced/Healthy，运行副本 `1/1`。
- 公网 `product-smoke`：pass，账号评分、用户用量和额度抽奖三页均通过，`mutatingRequests=[]`。
- 线上截图中账号总数为 12；`lyon9801 0.0` 仅一行，同时显示两个分组，线上评分显示 `99.5`；更新时间为醒目独立区块，截图时下次刷新倒计时为 `09:20`。
- 截图 SHA-256：`255373f1a55fb1d66974fa5d6228d49f7dd9cda56d8ead80dd17f68874c2c6f0`。
