feat(contract): amount_rmb 支持 null + 汇总增 unpriced_count;实施计划补「实现假设」机制

- API 契约:无归属购买的明细行 amount_rmb = null(展示「—」);汇总增 unpriced_count(未折算条数)
- shared 类型同步(amount_rmb: number | null · unpriced_count: number)
- 实施计划:loop 停车规则改为「自主推进 + 假设记录」(作者开发期可能缺席);新增 8 条实现假设;待定问题 #1/#3 标记已决
This commit is contained in:
2026-09-15 00:12:19 +08:00
parent dcf7a31c09
commit 1295667c94
3 changed files with 41 additions and 24 deletions
+6 -5
View File
@@ -119,9 +119,9 @@
- 恒定 / 空值字段(`user_id` / `username` / `channel` / `channel_name` / `ip` / `group_name` / `upstream_request_id`)照返——展示与否是交互层决策
- 两个覆盖/计算字段:
- `token_name`——**当前名**(join `api_keys`),不用日志里的快照名(同一个 key 的每行显示同一个名字;快照列仍在库中保真)
- `amount_rmb`——该行折算实付人民币(`quota ÷ 购买时刻 QPU × 购买汇率`;错误行 `quota = 0` → 0)
- `amount_rmb`——该行折算实付人民币(`quota ÷ 购买时刻 QPU × 购买汇率`;错误行 `quota = 0` → 0);**匹配不到归属购买时为 `null`**(未登记购买 / 充值来源)——展示层显示「—」,绝不退化为额度美元(2026-09-14 定)
**汇总响应字段(2026-09-13 定)**
**汇总响应字段(2026-09-13 定;2026-09-14 增 `unpriced_count`)**
| 字段 | 含义 |
|------|------|
@@ -129,7 +129,8 @@
| `consume_count` / `error_count` | 按 `type` 拆分(2 消费 / 5 错误) |
| `prompt_tokens` / `completion_tokens` / `cache_tokens` | token 三项合计(`cache_tokens ⊆ prompt_tokens`,单列可看缓存命中量) |
| `quota` | quota 合计(原值,供核对) |
| `amount_rmb` | 折算实付人民币(跨期按购买期间分段累加;非订阅来源的折算规则后议) |
| `amount_rmb` | **可折算部分**的实付人民币合计(跨期按购买期间分段累加) |
| `unpriced_count` | 无法折算的行数(`amount_rmb` 为 `null` 的行)——前端据此提示「其中 N 条未登记购买、未计入金额」 |
| `meta` | 同约定 22 |
**页面元素 → 数据来源**
@@ -168,7 +169,7 @@
**响应示例(示意)**
```jsonc
// 明细
// 明细(amount_rmb 为 null = 匹配不到归属购买:未登记 / 充值来源)
{
"items": [
{ "id": 8412, "key_id": 3, "user_id": 12, "username": "…", "created_at": "2026-09-11T19:37:12+08:00",
@@ -186,7 +187,7 @@
{
"request_count": 1873, "consume_count": 1849, "error_count": 24,
"prompt_tokens": 1234567, "completion_tokens": 234567, "cache_tokens": 89012,
"quota": 53939847, "amount_rmb": 23.45,
"quota": 53939847, "amount_rmb": 23.45, "unpriced_count": 0,
"meta": { "…": "见约定 22" }
}
```