# 交互设计 · 调用日志 > 管理面的模型请求日志查询页——`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(无界列表) - **「详情」弹窗**(操作列,居中定高内滚,宽约 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`(筛选) | | 健康带失败数(总览) | 仍去 Key 管理失败筛选 | 不变 | ## 5. 状态与边界 - 加载:表 loading;错误:顶部错误条 + 重试(共性 §3.4) - 401 → 管理面登录(既有分流) - 不展示 `request_id` / `ip` / `channel` 等表字段(契约 §6 暂不 API);将来需要时列可扩 ## 6. 与既有文档的衔接 - 《API契约-管理面》§6「界面落点待补」→ **本篇即落点**;「跳 Key 管理详情」改为「跳本页带筛选 + Key 管理定位」并行 - 侧边栏六项 → **七项**(《交互设计-总览与共性》§2 同步修订)