89 lines
5.3 KiB
Markdown
89 lines
5.3 KiB
Markdown
# 交互设计 · 调用日志
|
||
|
||
> 管理面的模型请求日志查询页——`GET /api/admin/logs` 的界面落点。回答「这段时间谁、哪把 key、哪个模型、花了多少」;与 Key 管理、成员管理、全员总览构成筛选跳转闭环。**只读事实**,无改写。
|
||
|
||
| 项目 | 内容 |
|
||
|------|------|
|
||
| 状态 | 定稿(2026-10-08;2026-10-13 补模型筛选与汇总条、来源徽章支付弹窗) |
|
||
| 关联 | 《实现方案-日志模型筛选与汇总条》·《API契约-管理面》§6(过滤与 DTO)·《交互设计-总览与共性》(时间范围、数值呈现、状态模式)·《交互设计-key管理》《交互设计-成员管理》《交互设计-全员总览》(双向跳转)· `usage_logs表字段设计.md` |
|
||
| 数据 | `usage_logs` 明细(分页;默认全类型,可筛 `type` / `model_name`)+ 当前筛选汇总(条数 + 消费用量) |
|
||
|
||
---
|
||
|
||
## 1. 页面定位
|
||
|
||
- 侧边栏项「**调用日志**」(排在「支付记录」之后:对象链之后的事实查询)
|
||
- 纯查询页:无登记、无启停、无删除;排查与核对入口
|
||
- 与成员视图的日志表**列语义同构**,但范围是**全池**且可筛错误行
|
||
|
||
## 2. 筛选区(自上而下一行或两行)
|
||
|
||
| 筛选 | 形态 | 对应 API |
|
||
|------|------|----------|
|
||
| 时间范围 | 共性组件,默认最近 30 天 | `from` / `to`(必填) |
|
||
| 成员 | Select,含「未归属」 | `member_id` |
|
||
| Key | Select(依赖已选成员可收窄;或全量) | `api_key_id` |
|
||
| 模型 | Select,可搜可清空;选项 = 时间窗 + 主体筛选下去重 `model_name` | `model_name` |
|
||
| 计费来源 | 全部 / 订阅 / 充值 / 未关联 | `billing_source` |
|
||
| 订阅 ID | 数字(可空) | `subscription_id` |
|
||
| 类型 | 全部 / 消费 / 错误 | `type`(2 / 非 2) |
|
||
|
||
- 切换任一筛选 → 回第 1 页
|
||
- URL 查询同步:`from/to` 可选省略(用默认区间);`member_id`、`api_key_id`、`model_name`、`billing_source`、`subscription_id`、`type`、`page`——便于总览/管理页深链
|
||
|
||
## 2.5 汇总条(筛选条与表格之间)
|
||
|
||
低高度**单行**读数条(约 32–36px),只回答「这批条件加起来多少」:
|
||
|
||
| 段 | 内容 | 口径 |
|
||
|----|------|------|
|
||
| 请求次数 | 当前筛选条数;错误数 > 0 时附注「消费 X / 错误 Y」 | 跟全部筛选(含 `type`) |
|
||
| 消费用量 | quota + $(`QuotaText`) | 恒 `type = 2` + 其余筛选 |
|
||
|
||
- 类型筛「错误」时:请求次数 = 错误条数;消费用量仍为同期消费口径(标签保持「消费用量」,不叫「花费」)
|
||
- 查询中数字骨架/淡化,不闪上一轮;空结果汇总条保留、数字归零
|
||
- 成员端同构(见《交互设计-成员视图》§4)
|
||
|
||
## 3. 日志表(页面主体)
|
||
|
||
| 列 | 内容 | 备注 |
|
||
|----|------|------|
|
||
| 时间 | 到秒(北京时间) | 倒序由后端返回 |
|
||
| Key | `token_name` | **可点** → Key 管理定位该 key |
|
||
| 归属 | 成员名 / 未归属 | **可点** → 成员管理;未归属不跳 |
|
||
| 模型 | `model_name` | |
|
||
| 类型 | 消费 / 错误徽章 | 错误行 `type ≠ 2` |
|
||
| 来源 | 订阅 #N / 充值 / 未关联徽章 | 与成员视图同构 |
|
||
| 用量 | quota + $ 双单位 | 错误行可显示 `—` 或 0 |
|
||
| Tokens | prompt / completion | |
|
||
| 操作 | 「详情」按钮 | 开详情弹窗 |
|
||
|
||
- 分页:默认 50,档位 20 / 50 / 100 / 200(无界列表)
|
||
- **来源徽章**:`订阅 #N`(蓝)**可点** → 支付参数弹窗(期间 / 额度 / 金额 / 备注;无登记显示「该订阅无登记信息」);底栏「在支付记录中查看」→ 支付记录页并带 `subscription_id` 深链。`充值` / `未关联` 为纯标识,不可点(与成员端同构)
|
||
- **「详情」弹窗**(操作列,居中定高内滚,宽约 720):时间 / Key·归属 / 模型·类型 / 用量 / Tokens / 耗时流式 / 来源 / 内容(错误详情),以及**原始数据**(落库行 JSON,内滚);**不承载支付参数**(支付参数走来源徽章弹窗,核对/补录走支付记录页)
|
||
- 空态:「该时段内无调用日志」
|
||
- 窄屏:表格横向滚动(共性 §3.5)
|
||
|
||
## 4. 交互链路(与其它页)
|
||
|
||
| 从 | 到 | 携带 |
|
||
|----|-----|------|
|
||
| 全员总览 · 按 key 行 / 成员行 | 本页 | `api_key_id` 或 `member_id` + 当前时间范围 |
|
||
| Key 管理 · 行操作「查调用」 | 本页 | `api_key_id` |
|
||
| 成员管理 · 行操作「查调用」 | 本页 | `member_id` |
|
||
| 本页 · Key 列 | Key 管理 | `key_id`(定位/高亮) |
|
||
| 本页 · 归属列 | 成员管理 | `member_id`(筛选) |
|
||
| 本页 · 来源徽章弹窗「在支付记录中查看」 | 支付记录 | `tab=subs` + `subscription_id` |
|
||
| 健康带失败数(总览) | 仍去 Key 管理失败筛选 | 不变 |
|
||
|
||
## 5. 状态与边界
|
||
|
||
- 加载:表 loading;错误:顶部错误条 + 重试(共性 §3.4)
|
||
- 401 → 管理面登录(既有分流)
|
||
- 不展示 `request_id` / `ip` / `channel` 等表字段(契约 §6 暂不 API);将来需要时列可扩
|
||
|
||
## 6. 与既有文档的衔接
|
||
|
||
- 《API契约-管理面》§6「界面落点待补」→ **本篇即落点**;「跳 Key 管理详情」改为「跳本页带筛选 + Key 管理定位」并行
|
||
- 侧边栏六项 → **七项**(《交互设计-总览与共性》§2 同步修订)
|