alfadb
6624947b62
feat(opencode): 支持 OpenCode Go 官方用量窗口查询与自动刷新
OpenCode Go 上游(https://opencode.ai/zen/go/v1)官方提供用量端点
GET /zen/go/v1/usage(Bearer 复用消费 key),返回 rolling(5h)/weekly/monthly
三窗口的 percent 与 resetsAt。本提交为 openai apikey 账号(base_url 为
opencode.ai/zen/go/v1)接入该用量窗口:
- 后端:OpenCodeGoUsageService——手动刷新(每账号 10s 节流)、
周期自动刷新(全局开关 + 账号开关双开启,interval 5-1440 分钟,
leader lock + 每轮 20 账号 + 并发 4)、失败指数退避(上限 24h)、
Retry-After 尊重;401→unauthorized、403→failed;snapshot 持久化于
accounts.extra(单账号写入,无分组 CAS、无会话加密)
- admin API:settings GET/PUT、/:id/opencode-go-usage GET、
auto-refresh PUT、refresh POST(与 Ollama Cloud usage 同构)
- 前端:账号列表行内三窗口进度条(复用 UsageProgressBar)、
编辑弹窗内配置面板(详情+手动刷新+auto-refresh)、全局设置卡片、
en/zh i18n
验证:
- 上游端点已用生产真实 Go key 实测 200,响应
{"usage":{"rolling":{"status":"ok","percent":6,...},...}}(2026-08-13)
- go build ./... OK;service/handler/repo/dto/cmd 全量回归 OK
- 新增单测 20 例(解析 401/403/畸形 JSON、退避、节流等)全绿
- frontend vitest 新增 7 例 + Ollama 回归 4 例全绿;vue-tsc 零错误
2026-09-23 15:26:35 +08:00
..
2026-09-23 15:26:35 +08:00
2026-09-23 15:26:35 +08:00
2026-08-09 22:42:51 +08:00
2026-08-09 22:42:51 +08:00
2026-08-06 20:34:37 +08:00
2026-09-05 16:05:17 +08:00
2026-08-04 20:57:15 +08:00
2026-09-23 01:24:59 +08:00
2026-08-04 20:57:15 +08:00
2026-08-04 15:09:29 +08:00
2026-08-04 20:57:15 +08:00
2026-08-04 20:57:15 +08:00
2026-08-04 20:57:15 +08:00
2026-08-09 15:53:40 +08:00
2026-08-07 03:09:57 +08:00
2026-08-24 12:02:53 +08:00
2026-07-28 17:21:32 +08:00
2026-08-04 20:57:15 +08:00
2026-09-20 16:41:49 +08:00
2026-09-20 16:41:49 +08:00
2026-09-05 16:05:17 +08:00
2026-08-18 04:14:15 +00:00
2026-08-30 09:28:40 +08:00
2026-08-30 09:28:40 +08:00
2026-09-08 18:50:06 +08:00
2026-09-02 20:16:57 +08:00
2026-09-03 12:48:02 +08:00
2026-09-03 12:48:02 +08:00
2026-09-11 10:05:24 +08:00
2026-09-17 04:14:14 +09:00
2026-08-01 22:39:33 +08:00
2026-08-20 18:16:38 -07:00
2026-08-20 18:16:38 -07:00
2026-08-25 15:10:52 +08:00
2026-07-26 20:23:50 +09:00
2026-07-27 15:20:03 +00:00
2026-09-03 12:48:02 +08:00
2026-07-27 15:20:03 +00:00
2026-09-22 10:30:01 +08:00
2026-09-08 19:12:37 +08:00
2026-09-08 19:12:37 +08:00
2026-09-15 16:50:46 +08:00
2026-09-10 15:57:17 +08:00
2026-09-23 11:27:49 +08:00
2026-08-13 07:49:19 +08:00
2026-09-15 16:50:46 +08:00
2026-09-15 16:50:46 +08:00
2026-09-15 16:50:46 +08:00
2026-08-13 08:38:10 +08:00
2026-08-20 09:50:23 -07:00
2026-09-17 04:14:14 +09:00
2026-08-07 16:29:57 +08:00
2026-09-17 04:14:14 +09:00
2026-08-24 09:03:37 +08:00
2026-09-08 13:37:53 +08:00
2026-09-08 13:37:53 +08:00
2026-09-01 15:18:30 +08:00
2026-09-01 15:18:30 +08:00
2026-08-19 23:13:40 -07:00
2026-09-09 12:48:57 +08:00
2026-09-03 10:51:12 +08:00
2026-08-31 21:04:29 +08:00
2026-09-07 19:44:03 +08:00
2026-09-05 19:58:47 +08:00
2026-09-03 11:39:23 +08:00
2026-09-03 10:51:12 +08:00
2026-09-11 15:39:13 +08:00
2026-08-14 18:18:53 +08:00
2026-08-14 18:18:53 +08:00
2026-08-20 22:01:20 -07:00
2026-09-06 20:38:17 +08:00
2026-09-05 15:32:29 +08:00
2026-09-23 11:19:17 +08:00
2026-09-23 08:17:48 +08:00
2026-07-26 13:33:56 +08:00
2026-07-26 13:33:56 +08:00
2026-08-19 18:51:21 +08:00
2026-09-05 16:05:17 +08:00
2026-09-21 10:23:10 +08:00
2026-09-11 15:57:09 +08:00
2026-09-12 14:34:31 +08:00
2026-08-19 04:40:32 +00:00
2026-08-19 04:40:32 +00:00
2026-09-07 18:33:39 +08:00
2026-09-10 15:57:17 +08:00
2026-08-14 16:23:52 +08:00
2026-08-01 22:39:33 +08:00
2026-09-07 17:58:20 +08:00
2026-08-20 22:01:20 -07:00
2026-09-04 10:14:29 +08:00
2026-08-28 13:17:43 +08:00
2026-08-17 19:45:07 +08:00
2026-08-27 21:50:53 +08:00
2026-08-13 08:37:57 +08:00
2026-08-13 08:37:57 +08:00
2026-08-20 22:01:20 -07:00
2026-09-10 02:59:15 +08:00
2026-09-10 02:59:15 +08:00
2026-08-19 23:13:40 -07:00
2026-08-04 15:09:29 +08:00
2026-08-04 20:57:15 +08:00
2026-09-16 13:19:15 +08:00
2026-09-16 13:19:15 +08:00
2026-08-19 09:03:37 -07:00
2026-08-19 09:03:37 -07:00
2026-08-11 11:56:46 +08:00
2026-08-11 11:56:46 +08:00
2026-09-17 04:14:14 +09:00
2026-09-17 04:14:14 +09:00
2026-08-06 20:34:37 +08:00
2026-09-11 00:50:17 +08:00
2026-09-14 11:45:53 +08:00
2026-09-14 11:45:53 +08:00
2026-08-28 23:32:11 +08:00
2026-08-28 23:32:11 +08:00
2026-08-07 17:58:23 +08:00
2026-08-01 11:29:58 +08:00
2026-07-28 17:21:32 +08:00
2026-08-19 23:13:40 -07:00
2026-09-23 15:26:35 +08:00