
DaydreamCodingandClaude Opus 4.8
ddf063352a
feat(ops): 错误日志 key 归因与早退字段补全
让 /admin/ops 错误详情正确归因 API key 并补全早退场景字段,合并三项改动:
- 鉴权早退补全用户/分组/平台字段:引入 ops fallback key(ContextKeyOpsFallbackAPIKey),
apiKey 一加载成功即写入,覆盖分组停用/删除、Key 停用/过期/额度、用户停用、IP 限制等早退
路径;ops 错误日志改用 getOpsAPIKey(正式 key 优先、回退键兜底),不改「已鉴权」语义。
- 已删除 key 归因(迁移 145):删除 key 时同一事务写 deleted_api_key_audits 映射,认证失败
时用明文反查命中原所有者,错误详情展示「已删除 Key 所有者」「尝试的 Key 前缀」。
- 有效 key 报错快照前缀(迁移 147):对绑定有效 key 的错误,落库时快照明文前 8 位到
api_key_prefix(与 attempted_key_prefix 互斥),key 之后被删仍保留报错当时真实前缀。
均仅对上线后新产生的错误/删除生效。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 14:00:57 +08:00
..
2026-05-28 01:27:11 +08:00
2026-05-27 23:55:34 +08:00
2026-05-26 11:24:25 -07:00
2026-05-26 20:29:48 +08:00
2026-05-26 20:29:48 +08:00
2026-05-26 13:57:59 +08:00
2026-05-26 13:57:59 +08:00
2026-06-03 11:46:31 +08:00
2026-05-26 13:57:59 +08:00
2026-06-03 11:46:31 +08:00
2026-05-29 10:30:33 +08:00
2026-06-05 14:00:57 +08:00
2026-06-01 08:41:35 +08:00
2026-05-30 17:52:18 +08:00
2026-05-30 17:52:18 +08:00
2026-05-30 17:52:18 +08:00
2026-06-04 19:48:03 +08:00
2026-06-04 19:48:03 +08:00
2026-05-30 20:01:38 +08:00
2026-05-30 20:01:38 +08:00
2026-05-31 22:00:03 +08:00
2026-06-01 14:50:36 +08:00
2026-06-01 14:50:36 +08:00
2026-05-29 09:56:48 +08:00
2026-05-31 22:00:03 +08:00
2026-05-31 22:00:03 +08:00
2026-05-31 22:00:03 +08:00
2026-05-31 22:00:03 +08:00
2026-05-27 18:00:45 +08:00
2026-05-27 18:00:45 +08:00
2026-05-27 18:00:45 +08:00
2026-06-05 14:00:57 +08:00
2026-06-05 14:00:57 +08:00
2026-06-05 14:00:57 +08:00
2026-06-05 14:00:57 +08:00
2026-05-26 10:49:20 +08:00
2026-05-26 10:49:20 +08:00
2026-05-26 10:49:20 +08:00
2026-05-26 10:49:20 +08:00
2026-05-30 17:52:18 +08:00
2026-05-26 10:49:20 +08:00
2026-05-29 17:19:15 +08:00
2026-05-29 17:19:15 +08:00
2026-05-26 10:49:20 +08:00
2026-05-26 10:49:20 +08:00
2026-05-29 09:56:48 +08:00
2026-05-26 10:49:20 +08:00
2026-05-29 17:19:15 +08:00
2026-05-29 17:19:15 +08:00
2026-05-29 17:19:15 +08:00
2026-05-29 17:19:15 +08:00
2026-05-27 09:59:58 +00:00
2026-05-29 17:19:15 +08:00
2026-05-31 08:43:20 +08:00
2026-05-31 08:43:20 +08:00
2026-06-03 09:33:37 +08:00
2026-06-03 09:33:37 +08:00
2026-05-26 10:49:20 +08:00
2026-05-27 23:55:34 +08:00
2026-05-31 22:00:03 +08:00
2026-05-30 20:01:39 +08:00
2026-05-30 20:01:39 +08:00
2026-05-30 20:01:39 +08:00
2026-05-30 20:01:40 +08:00
2026-05-30 20:01:40 +08:00
2026-05-31 22:00:03 +08:00
2026-05-30 20:01:38 +08:00
2026-05-26 10:49:20 +08:00
2026-05-30 20:01:38 +08:00
2026-05-30 20:01:39 +08:00
2026-05-31 16:38:42 +08:00
2026-05-30 20:01:40 +08:00
2026-05-30 20:01:38 +08:00
2026-05-30 20:01:40 +08:00
2026-05-29 06:47:23 +00:00
2026-05-30 20:01:40 +08:00
2026-05-26 20:29:48 +08:00
2026-05-30 20:01:38 +08:00
2026-05-27 18:00:45 +08:00
2026-05-27 18:00:45 +08:00
2026-05-28 00:02:50 +08:00
2026-05-26 13:57:59 +08:00
2026-05-26 13:57:59 +08:00
2026-05-31 16:00:35 +08:00
2026-05-31 16:00:35 +08:00
2026-05-26 20:29:48 +08:00
2026-05-26 20:29:48 +08:00
2026-05-31 22:00:03 +08:00
2026-05-31 22:00:03 +08:00
2026-05-26 20:29:48 +08:00
2026-05-26 20:29:48 +08:00
2026-06-05 13:54:37 +08:00
2026-06-05 13:54:37 +08:00
2026-05-26 13:57:59 +08:00
2026-05-27 23:55:34 +08:00
2026-05-27 23:55:34 +08:00
2026-05-28 19:39:52 +08:00
2026-05-30 20:01:40 +08:00
2026-06-01 10:19:24 +08:00
2026-05-26 21:33:28 +08:00
2026-05-30 20:01:40 +08:00
2026-05-26 21:33:28 +08:00
2026-05-30 20:01:40 +08:00
2026-05-30 20:01:40 +08:00
2026-05-31 15:09:06 +08:00
2026-05-26 13:57:59 +08:00
2026-05-30 20:01:40 +08:00
2026-05-27 23:55:34 +08:00
2026-06-04 22:07:36 +08:00
2026-05-31 16:38:42 +08:00
2026-06-05 13:54:05 +08:00
2026-06-05 13:54:18 +08:00
2026-05-30 20:01:40 +08:00
2026-05-30 20:01:40 +08:00
2026-05-30 20:01:40 +08:00
2026-05-30 20:01:38 +08:00
2026-05-29 14:01:39 +08:00
2026-05-29 14:01:39 +08:00
2026-05-29 14:01:39 +08:00
2026-05-29 14:01:39 +08:00
2026-05-30 20:01:39 +08:00
2026-05-31 16:38:42 +08:00
2026-05-29 12:20:30 +08:00
2026-05-28 01:27:11 +08:00
2026-06-01 14:18:58 +08:00
2026-05-31 16:00:35 +08:00
2026-05-29 01:33:42 +00:00
2026-06-01 14:18:58 +08:00
2026-06-01 10:42:55 +08:00
2026-06-01 10:42:55 +08:00
2026-05-26 10:49:20 +08:00
2026-05-26 20:07:00 +08:00
2026-05-28 01:27:11 +08:00
2026-05-26 17:21:56 +08:00
2026-05-26 17:21:56 +08:00
2026-06-05 14:00:57 +08:00
2026-06-05 14:00:57 +08:00
2026-06-05 14:00:57 +08:00
2026-06-05 14:00:57 +08:00
2026-05-29 14:32:45 +08:00
2026-05-29 10:47:47 +08:00
2026-05-29 14:32:45 +08:00
2026-05-26 17:18:27 +08:00
2026-05-26 10:49:20 +08:00
2026-05-29 18:48:49 +08:00
2026-05-28 20:32:16 +08:00
2026-05-26 20:29:48 +08:00
2026-06-03 11:46:31 +08:00
2026-05-28 20:05:38 +08:00
2026-05-26 20:29:48 +08:00
2026-05-31 22:00:03 +08:00
2026-05-27 23:55:34 +08:00
2026-05-26 10:49:20 +08:00
2026-05-29 14:32:45 +08:00
2026-05-27 23:55:34 +08:00
2026-05-28 17:27:01 +08:00
2026-05-28 17:27:01 +08:00
2026-05-30 20:01:38 +08:00
2026-05-29 17:19:15 +08:00
2026-05-29 17:19:15 +08:00
2026-05-29 17:19:15 +08:00
2026-05-30 17:52:18 +08:00
2026-05-30 17:52:18 +08:00
2026-05-30 17:52:18 +08:00
2026-06-01 10:04:16 +08:00