Commit Graph

129 Commits

Author SHA1 Message Date
fawney19
504c1ccb37 feat: restructure notification services 2026-05-22 01:45:46 +08:00
fawney19
d5e64d6ad9 Merge branch 'pr-503'
# Conflicts:
#	apps/aether-gateway/src/handlers/admin/provider/summary/value.rs
#	apps/aether-gateway/src/lib.rs
#	apps/aether-gateway/src/maintenance/mod.rs
#	apps/aether-gateway/src/maintenance/runtime/workers.rs
#	frontend/src/api/endpoints/types/provider.ts
2026-05-22 00:19:23 +08:00
fawney19
0e6d7539ad Merge remote-tracking branch 'origin/pr/538' 2026-05-21 23:12:42 +08:00
fawney19
97997685b5 Merge remote-tracking branch 'origin/pr/498' 2026-05-21 22:56:43 +08:00
stabey
3330b2ac4c refactor(report-context): extract UPSTREAM_IS_STREAM_KEY constant
The "upstream_is_stream" JSON key flows from the AI execution report
context producer (aether-ai-serving::report_context) through several
consumers — usage runtime metadata copy/move, gateway watchdog, sync
execution decision, observability handlers, and the per-driver usage
repositories. Each site spelled the key as a bare string literal, so a
producer-side rename would silently degrade every consumer to its
fallback (typically assuming streaming) with no compile-time signal.

Introduce a single pub const UPSTREAM_IS_STREAM_KEY in
aether-ai-formats (the lowest crate every consumer already depends on),
re-export from the crate root, and route producer + all map-style
consumers through it. The change is purely a string-literal → constant
swap; behaviour is identical.

Sites left as literals (intentional):
- `json!({"upstream_is_stream": ...})` macro keys, which must be string
  literals at the macro layer; these are also API-response payload
  field names (an external contract that should not silently track
  internal report-context renames).
- SQL column accessors (`try_get::<...>("upstream_is_stream")`), which
  refer to the database schema column, not the JSON key.
- Test fixtures and assertions, which validate the on-the-wire contract
  and should keep verifying the actual string.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 15:26:42 +08:00
fawney19
e7f8b259ac Revert "Merge pull request #517 from zhiqicloud/feat/provider-balance-query"
This reverts commit 7e95e769d5, reversing
changes made to 490306c242.
2026-05-21 01:24:17 +08:00
Entropy.Xu
129c7c90c0 fix(provider): 修复 Windsurf 原生工具桥接 2026-05-21 01:02:02 +08:00
Entropy.Xu
0226e14251 feat(provider): 原生接入 Windsurf provider 2026-05-21 01:02:02 +08:00
fawney19
fa5d26ce38 Merge remote-tracking branch 'origin/main' 2026-05-20 16:14:09 +08:00
fawney19
f76bbaab52 feat: support api key ip restriction rules 2026-05-20 16:11:49 +08:00
zhiqicloud
122daf0f87 支持 Provider Key 余额查询与自动刷新 2026-05-20 12:33:31 +08:00
RWDai
316b1e3207 Merge remote-tracking branch 'upstream/main' into feat/500-api-key-ip-whitelist 2026-05-20 11:14:43 +08:00
fawney19
61bcbe826a fix: tighten OAuth auto cleanup signals 2026-05-20 10:34:22 +08:00
RWDai
bdc848b19e Merge upstream main into feat/500-api-key-ip-whitelist 2026-05-20 10:26:56 +08:00
fawney19
1b570daf72 Revert "Merge PR #504"
This reverts commit d216a9e219, reversing
changes made to 21e82abd54.
2026-05-19 17:23:57 +08:00
RWDai
95af482ffe Update auth snapshot observability fixture 2026-05-19 10:23:54 +08:00
fawney19
d8a9d7eb5e chore: format merged PR changes 2026-05-19 08:13:56 +08:00
fawney19
d216a9e219 Merge PR #504 2026-05-19 08:10:57 +08:00
fawney19
69af74b1e0 Merge PR #488 and #489 2026-05-19 03:16:35 +08:00
fawney19
5eed329916 Rootfix usage counter outbox 2026-05-19 00:44:37 +08:00
MMEXA
4317ff78b1 Expose local scheduling failures in usage UI 2026-05-18 16:28:37 +00:00
yangrs
6c16f399d4 feat: 重要通知模块、Server 酱独立配置与额度提醒
- 新增重要通知统一模块(邮件 + Server 酱)作为后台任务通知出口
- 拆出独立的 Server 酱 配置页(SendKey + Markdown 模板,支持 {title}/{body} 变量替换),通过仪表盘内置工具入口进入
- 新增提供商额度提醒后台 worker:余额低于阈值时通过重要通知推送,提供商配置页加入额度提醒开关与阈值
- 重要通知页加入配置可用性守卫:未配置任一通道时禁用总开关,未配置邮件/SendKey 时禁用对应通道开关
- 测试通知端点支持 channel 过滤(all/email/server_chan),并绕过总开关与通道开关,便于配置阶段先验证通道
- 修复:测试通知路由未在 buffered-body 白名单导致 channel 参数丢失、测试时邮件分支被误触发
- 修复:sub2api 验证响应中 username 为 null 时正确回退到 email,避免误报"验证响应缺少: 用户信息"

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 23:51:14 +08:00
MMEXA
b480f3aaff fix(gateway): normalize Gemini Vertex embedding transport 2026-05-18 15:39:29 +00:00
RWDai
24129d7f12 Merge upstream/main into feat/356-usage-record-columns 2026-05-18 20:33:05 +08:00
RWDai
ae9d4038b1 Prefer typed admin usage client family 2026-05-18 19:29:36 +08:00
fawney19
90dbc279fd Merge remote-tracking branch 'origin/pr-476' 2026-05-18 16:13:45 +08:00
MMEXA
9586f5158e Fix fixed-provider endpoint key counts 2026-05-17 20:55:36 +00:00
RWDai
96d40dd21d Infer usage client family from User-Agent 2026-05-17 23:04:31 +08:00
RWDai
981020a5ab fix(ci): apply rustfmt to usage metadata handlers 2026-05-17 20:28:08 +08:00
RWDai
97cd92a1a2 Expose usage record metadata fields 2026-05-16 15:55:38 +08:00
RWDai
a2649718ea Expose scheduling failure details in usage payload 2026-05-16 15:42:13 +08:00
fawney19
893ac18d60 Merge PR #469: 修复用户可见性、额度、验证与 Codex 探测 2026-05-16 14:28:19 +08:00
fawney19
f72ab383c9 Refine OAuth auto cleanup conditions
(cherry picked from commit 78826eae47ab18ace6931dd190a41070416b5e10)
2026-05-16 11:33:45 +08:00
Entropy.Xu
1a50c5e112 merge: 同步主线并解决用户侧验证冲突 2026-05-16 01:25:42 +08:00
Entropy.Xu
bbd3c30b0e fix(public): 修复用户可见性、额度、验证与 Codex 探测 2026-05-16 00:51:44 +08:00
Entropy.Xu
85f48123b6 feat(auth): 添加 Turnstile 注册防护 2026-05-15 01:54:20 +08:00
fawney19
509bd30252 Redesign sensitive info protection settings 2026-05-14 11:14:20 +08:00
fawney19
91955ad1e0 Merge remote-tracking branch 'origin/pr/451' into aether-rust-pioneer 2026-05-14 02:10:37 +08:00
fawney19
e251a63cb3 Merge remote-tracking branch 'pr-434/fix-provider-model-test-compat' into aether-rust-pioneer 2026-05-14 01:28:33 +08:00
fawney19
acd44328d6 feat: add version update flow 2026-05-13 22:28:05 +08:00
fawney19
8b813f645f Merge branch 'pr-438' into aether-rust-pioneer 2026-05-13 22:28:05 +08:00
fawney19
1a196c8cf2 Merge pull request #443 from AAEE86/rust
feat(admin): add Done-hub provider ops template
2026-05-13 18:42:28 +08:00
Kayphoon
2958041dc7 feat(gateway): add reversible chat pii redaction 2026-05-13 18:25:13 +08:00
fawney19
5d1460e051 refactor: extract provider pool abstractions 2026-05-13 18:19:15 +08:00
AAEE86
afbb656510 feat(admin): add Done-hub provider ops template
- 新增 Done-hub Cookie 认证架构
- 使用 /api/user/profile 查询余额,按 quota / 500000 换算
- 补充余额解析、认证头和校验相关测试
2026-05-13 16:10:59 +08:00
RWDai
e00df5f7a2 Add admin update payload builder 2026-05-13 10:27:21 +08:00
mayrain
fca3f24d91 fix: preserve legacy admin config imports 2026-05-12 20:10:27 +08:00
AAEE86
bfbf7a4663 fix(usage): 统一用户排行榜 Token 统计口径
- 将用户排行榜 Tokens 调整为与仪表盘今日 Token 一致
- 统一 effective input、cache creation fallback、cache read 计算规则
- 补齐 Postgres 聚合、admin 内存构建和内存仓库回退路径
- 增加缓存命中场景的统计口径测试
2026-05-11 22:34:37 +08:00
fawney19
ef4cc55c9a Record per-candidate upstream error bodies 2026-05-11 02:30:45 +08:00
fawney19
228253c166 Merge pull request #410 from Entropy-Xu/codex/codex-image-progress-heartbeat
Add Codex image progress heartbeat
2026-05-10 17:57:33 +08:00