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-07-19 14:42:01 +08:00
2026-07-23 13:43:57 +08:00
2026-07-23 13:43:57 +08:00
2026-07-14 15:00:52 +08:00
2026-09-13 17:23:24 +08:00
2026-08-26 12:46:31 +09:00
2026-07-30 18:03:54 +08:00
2026-07-15 16:13:22 +08:00
2026-07-14 15:00:52 +08:00
2026-09-03 23:32:34 +09:00
2026-09-20 14:39:36 +08:00
2026-08-01 22:11:09 +08:00
2026-07-14 15:00:52 +08:00
2026-09-07 09:20:48 +08:00
2026-09-23 15:26:35 +08:00
2026-07-25 15:37:06 +08:00
2026-07-23 15:50:44 +08:00
2026-09-23 15:26:35 +08:00
2026-09-23 15:26:35 +08:00
2026-07-15 23:58:46 +08:00
2026-07-15 23:58:46 +08:00
2026-08-25 10:34:46 +08:00
2026-09-05 16:05:17 +08:00
2026-09-04 10:14:29 +08:00
2026-09-07 09:20:48 +08:00
2026-09-23 01:24:59 +08:00
2026-09-23 01:24:59 +08:00
2026-07-17 09:33:18 +08:00
2026-09-18 06:56:27 +08:00
2026-07-14 15:00:52 +08:00
2026-09-20 16:41:49 +08:00
2026-09-20 16:41:49 +08:00
2026-07-16 16:30:19 +08:00
2026-09-11 10:05:24 +08:00
2026-07-14 12:24:42 +08:00
2026-08-15 10:37:51 +00:00
2026-09-19 20:52:31 -04:00
2026-09-19 20:52:31 -04:00
2026-08-28 23:32:11 +08:00
2026-07-10 11:43:44 +08:00
2026-08-28 23:32:11 +08:00
2026-08-28 23:32:11 +08:00
2026-08-28 23:32:11 +08:00
2026-08-07 12:38:49 +08:00
2026-08-07 16:36:12 +08:00
2026-09-06 08:11:23 +08:00
2026-09-02 11:50:33 +08:00
2026-09-02 11:50:33 +08:00
2026-08-08 01:07:19 +08:00
2026-08-24 12:02:53 +08:00
2026-07-16 18:18:28 +08:00
2026-08-30 16:36:13 +08:00
2026-09-01 04:34:24 +09:00
2026-09-11 10:05:24 +08:00
2026-08-31 19:21:31 +08:00
2026-09-07 18:33:39 +08:00
2026-09-11 10:05:24 +08:00
2026-09-13 11:49:03 +08:00
2026-09-20 14:38:29 +08:00
2026-08-02 21:32:31 +08:00
2026-09-20 14:38:29 +08:00
2026-09-20 15:47:53 +08:00
2026-09-20 15:47:53 +08:00
2026-07-18 00:11:18 +08:00
2026-09-11 10:16:32 +08:00
2026-07-14 14:55:30 +08:00
2026-07-18 00:11:18 +08:00
2026-07-18 00:11:18 +08:00
2026-07-14 01:29:46 +08:00
2026-07-14 01:29:46 +08:00
2026-07-14 01:29:30 +08:00
2026-07-23 10:26:46 +08:00
2026-07-23 10:26:46 +08:00
2026-09-19 11:25:56 +08:00
2026-09-13 17:23:24 +08:00
2026-09-13 17:23:24 +08:00
2026-09-13 17:23:24 +08:00
2026-09-08 13:38:41 +08:00
2026-09-05 23:56:59 +08:00
2026-09-23 13:35:44 +08:00
2026-07-16 00:40:46 +08:00
2026-08-29 17:28:00 +08:00
2026-08-29 17:28:00 +08:00
2026-09-13 00:14:16 -04:00
2026-09-11 00:50:17 +08:00
2026-08-04 15:09:29 +08:00
2026-08-26 19:07:39 +08:00
2026-07-20 00:09:21 +08:00
2026-09-23 13:35:44 +08:00
2026-09-23 13:35:44 +08:00
2026-09-13 12:33:35 +08:00
2026-09-13 11:49:03 +08:00
2026-07-19 22:40:44 +08:00
2026-07-19 22:40:44 +08:00
2026-08-28 23:32:11 +08:00
2026-08-28 23:32:11 +08:00
2026-08-28 23:32:11 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-09-10 16:41:58 +08:00
2026-09-10 16:41:58 +08:00