Wesley Liddick
325ed747d8
Merge pull request #455 from ZeroClover/feat/ops-ignore-invalid-api-key-errors
...
feat(ops): 支持过滤无效 API Key 错误,不写入错误日志
2026-02-02 20:28:00 +08:00
Wesley Liddick
4329f72abf
Merge pull request #450 from bayma888/feature/show-admin-adjustment-notes
...
feat: 向用户显示管理员调整余额的备注
2026-02-02 20:19:23 +08:00
Zero Clover
ad1cdba338
feat(ops): 支持过滤无效 API Key 错误,不写入错误日志
...
新增 IgnoreInvalidApiKeyErrors 开关,启用后 INVALID_API_KEY 和
API_KEY_REQUIRED 错误将被完全跳过,不写入 Ops 错误日志。
这些错误由用户错误配置导致,与服务质量无关。
2026-02-02 20:16:17 +08:00
小北
ae18397ca6
feat: 向用户显示管理员调整余额的备注
...
- 为RedeemCode DTO添加notes字段(仅用于admin_balance/admin_concurrency类型)
- 更新mapper使其有条件地包含备注信息
- 在用户兑换历史UI中显示备注
- 备注以斜体显示,悬停时显示完整内容
用户现在可以看到管理员调整其余额的原因说明。
Changes:
- backend/internal/handler/dto/types.go: RedeemCode添加notes字段
- backend/internal/handler/dto/mappers.go: 条件性填充notes
- frontend/src/api/redeem.ts: TypeScript接口添加notes
- frontend/src/views/user/RedeemView.vue: UI显示备注信息
2026-02-02 17:44:50 +08:00
shaw
bbdc8663d3
feat: 重新设计公告系统为Header铃铛通知
...
- 新增 AnnouncementBell 组件,支持 Modal 弹窗和 Markdown 渲染
- 移除 Dashboard 横幅和独立公告页面
- 铃铛位置在 Header 文档按钮左侧,显示未读红点
- 支持点击查看详情、标记已读、全部已读等操作
- 完善国际化,移除所有硬编码中文
- 修复 AnnouncementTargetingEditor watch 循环问题
2026-02-02 15:15:39 +08:00
Wesley Liddick
d3062b2e46
Merge pull request #434 from DuckyProject/feat/announcement-system-pr-upstream
...
feat(announcements): admin/user announcement system
2026-02-02 10:50:26 +08:00
iBenzene
f2e206700c
feat: add support for using TLS to connect to Redis
2026-01-31 03:58:01 +08:00
ducky
b7f69844e1
feat(announcements): add admin/user announcement system
...
Implements announcements end-to-end (admin CRUD + read status, user list + mark read) with OR-of-AND targeting. Also breaks the ent<->service import cycle by moving schema-facing constants/targeting into a new domain package.
2026-01-30 16:45:04 +08:00
ducky
04a509d45e
feat(purchase): 增加购买订阅 iframe 页面与配置
...
- 新增 /purchase 页面(iframe + 新窗口兜底)
- 管理员系统设置可配置开关与URL
- 非 simple mode 才在侧边栏展示入口
2026-01-28 13:54:32 +08:00
shaw
1245f07a2d
feat(auth): 实现 TOTP 双因素认证功能
...
新增功能:
- 支持 Google Authenticator 等应用进行 TOTP 二次验证
- 用户可在个人设置中启用/禁用 2FA
- 登录时支持 TOTP 验证流程
- 管理后台可全局开关 TOTP 功能
安全增强:
- TOTP 密钥使用 AES-256-GCM 加密存储
- 添加 TOTP_ENCRYPTION_KEY 配置项,必须手动配置才能启用功能
- 防止服务重启导致加密密钥变更使用户无法登录
- 验证失败次数限制,防止暴力破解
配置说明:
- Docker 部署:在 .env 中设置 TOTP_ENCRYPTION_KEY
- 非 Docker 部署:在 config.yaml 中设置 totp.encryption_key
- 生成密钥命令:openssl rand -hex 32
2026-01-26 09:19:53 +08:00
shaw
9cc8352593
feat(auth): 密码重置邮件队列化与限流优化
...
- 邮件发送改为异步队列处理,避免并发导致发送失败
- 新增 Email 维度限流(30秒冷却期),防止邮件轰炸
- Token 验证使用常量时间比较,防止时序攻击
- 重构代码消除冗余,提取公共验证逻辑
2026-01-24 22:55:28 +08:00
shaw
b0aa23540b
feat(subscription): 订阅过期状态自动更新与服务端排序
...
- 新增 SubscriptionExpiryService 定时任务,每分钟更新过期订阅状态
- 订阅列表支持服务端排序(按过期时间、状态、创建时间)
- 实时显示正确的过期状态,无需等待定时任务
- 允许对已过期订阅进行续期操作
- DataTable 组件支持 serverSideSort 模式
2026-01-24 20:26:01 +08:00
shaw
fd73b8875d
feat(frontend): 优化账号限流状态显示,直接展示倒计时
2026-01-23 15:48:25 +08:00
shaw
f9ab1daa3c
feat: 保存并显示OAuth账号邮箱地址
2026-01-23 15:17:47 +08:00
ducky
ff74f517df
feat(frontend): 账号表格默认排序/持久化 + 自动刷新 + 更多菜单外部关闭
2026-01-21 22:43:25 +08:00
Wesley Liddick
39fad63ccf
Merge pull request #345 from whoismonay/main
...
mod(frontend): 管理员订阅/兑换码分组选择展示备注
2026-01-20 16:22:53 +08:00
shaw
192efb84a0
feat(promo-code): complete promo code feature implementation
...
- Add promo_code_enabled field to SystemSettings and PublicSettings DTOs
- Add promo code validation in registration flow
- Add admin settings UI for promo code configuration
- Add i18n translations for promo code feature
2026-01-20 15:56:26 +08:00
墨颜
88b6358472
build(frontend): vite 加载开发环境变量
...
- 使用 loadEnv 读取 VITE_DEV_PROXY_TARGET/VITE_DEV_PORT
- 注入 public settings 与 dev proxy 使用同源后端地址
2026-01-20 15:04:18 +08:00
墨颜
dd8d5e2c42
mod(frontend): 订阅分组下拉显示备注
...
- 订阅管理/分配订阅:下拉项展示分组备注
- 兑换码/订阅类型:下拉项展示分组备注
- 复用 GroupOptionItem/GroupBadge 保持一致体验
2026-01-20 15:02:48 +08:00
Gemini Wen
53534d3956
style(admin): 统一列设置按钮位置到刷新按钮右侧
...
将订阅管理和账号管理页面的列设置按钮移动到刷新按钮右侧,
与用户管理页面保持一致的布局。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-20 00:18:51 +08:00
Gemini Wen
cc07a0e295
feat(subscription): 支持调整订阅时长(延长/缩短)
...
- 将"延长订阅"功能改为"调整订阅",支持正数延长、负数缩短
- 后端验证:调整天数范围 -36500 到 36500,缩短后剩余天数必须 > 0
- 前端同步更新界面文案和验证逻辑
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-20 00:11:30 +08:00
Wesley Liddick
e7bc62500b
Merge pull request #333 from whoismonay/main
...
fix: 普通用户接口移除管理员敏感字段透传
2026-01-19 21:35:51 +08:00
shaw
b1a980f344
feat: 添加隐藏CCS导入按钮的设置选项
...
在管理后台设置页面新增开关,允许管理员隐藏API Keys页面的"导入CCS"按钮
2026-01-19 19:25:16 +08:00
墨颜
00d9fbd220
fix(user): 普通用户接口不返回备注
...
- 用户侧 dto.User 移除 notes 字段,避免泄露管理员备注\n- 新增 dto.AdminUser 并调整 /admin/users 系列接口使用\n- 前端拆分 User/AdminUser,管理端用户页面使用 AdminUser\n- 更新契约测试:/api/v1/auth/me 响应不包含 notes
2026-01-19 19:23:51 +08:00
墨颜
4f4c9679bf
fix(groups): 用户分组不下发内部路由信息
...
- 普通用户 Group DTO 移除 model_routing/account_count/account_groups,避免泄露内部路由与账号信息\n- 新增 AdminGroup DTO,并仅在管理员分组接口返回完整字段\n- 前端拆分 Group/AdminGroup,管理端页面与 API 使用 AdminGroup\n- 增加 /api/v1/groups/available 契约测试,防止回归
2026-01-19 18:58:42 +08:00
墨颜
2f6f758670
fix(usage): 用户使用记录不下发账号计费倍率
...
- 将 usage log DTO 拆分为用户/管理员两类
- 用户接口不返回 account_rate_multiplier/ip_address/account
- 管理员接口保留管理员字段
- 补充契约测试防止回归
2026-01-19 17:05:42 +08:00
shaw
ccfeaeb22d
feat: 新增会话ID伪装功能,优化日志系统
...
- 新增 session_id_masking_enabled 配置,启用后将在15分钟内固定
metadata.user_id 中的 session ID
- TLS fingerprint 模块日志从自定义 debugLog 迁移到 slog
- main.go 添加 slog 初始化,根据 gin mode 设置日志级别
- 前端创建/编辑账号模态框添加会话ID伪装开关
- 多语言支持(中英文)
2026-01-19 10:22:13 +08:00
Wesley Liddick
0f8d42c577
Merge pull request #327 from mt21625457/main
...
feat(usage): 添加清理任务与统计过滤
2026-01-19 09:18:00 +08:00
Wesley Liddick
03c7578713
Merge pull request #325 from slovx2/main
...
fix(antigravity): 修复Antigravity 频繁429的问题,以及一系列优化,配置增强
2026-01-19 09:17:15 +08:00
shaw
2028cc29b7
fix: 修复多个管理后台问题
...
- 分页接口 page_size 最大限制从 100 改为 1000
- 通过 Redis Pub/Sub 实现跨实例认证缓存失效
- 允许订阅类型分组编辑计费倍率
- 账号计费倍率支持 3 位小数
2026-01-18 22:13:47 +08:00
shaw
9abda1bc59
feat(tls): 新增 TLS 指纹模拟功能
2026-01-18 20:08:40 +08:00
shaw
a07174c191
fix: 修复会话限制功能并在创建账号时支持配额控制
2026-01-18 16:41:15 +08:00
yangjianbo
bdc426a774
Merge branch 'main' into dev
2026-01-18 15:55:58 +08:00
Wesley Liddick
32fff3798c
Merge pull request #326 from geminiwen/main
...
feat(admin): 添加账号管理和订阅管理的列设置功能
2026-01-18 14:41:02 +08:00
yangjianbo
771baa66ee
feat(界面): 优化分页跳转与页大小显示
...
分页组件支持隐藏每页条数选择器并新增跳转页输入
清理任务列表启用跳转页并固定每页 5 条
补充中英文分页文案
2026-01-18 14:31:22 +08:00
Wesley Liddick
0c2a901af4
Merge pull request #317 from IanShaw027/fix/gemini-issue
...
fix(gemini,group): 更新 Gemini 模型配置并补齐 SIMPLE 默认分组
2026-01-18 14:30:42 +08:00
yangjianbo
bd18f4b8ef
feat(清理任务): 引入Ent存储并补充日志与测试
...
新增 usage_cleanup_task Ent schema 与仓储实现,支持清理任务排序分页
补充清理任务全链路日志、仪表盘重算触发及 UI 过滤调整
完善 repository/service 单测并引入 sqlite 测试依赖
2026-01-18 14:18:28 +08:00
Gemini Wen
45e8598d32
feat(admin): 添加账号管理和订阅管理的列设置功能
...
- 账号管理新增代理列显示和列设置下拉菜单
- 订阅管理新增列设置,支持用户列在邮箱/用户名间切换
- 列设置持久化到 localStorage
- 统一列设置图标样式
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-18 11:57:07 +08:00
yangjianbo
ef5a41057f
feat(usage): 添加清理任务与统计过滤
2026-01-18 10:52:18 +08:00
song
b9b4db3df5
Merge upstream/main
2026-01-17 18:00:07 +08:00
Wesley Liddick
dae0d5321f
Merge pull request #315 from mt21625457/main
...
perf(前端): 优化页面加载性能和用户体验 和 修复静态 import 导致入口文件膨胀问题
2026-01-16 23:55:45 +08:00
IanShaw027
28e46e0e7c
fix(gemini): 更新 Gemini 模型列表配置
...
- 移除已弃用的 1.5 系列模型
- 调整模型优先级顺序(2.0 Flash > 2.5 Flash > 2.5 Pro > 3.0 Preview)
- 同步前后端模型配置
- 更新相关测试用例和默认模型选择逻辑
2026-01-16 23:47:42 +08:00
shaw
7379423325
feat: 添加5h窗口费用控制和会话数量限制
...
- 支持Anthropic OAuth/SetupToken账号的5h窗口费用阈值控制
- 支持账号级别的并发会话数量限制
- 使用Redis缓存窗口费用(30秒TTL)减少数据库压力
- 费用计算基于标准费用(不含账号倍率)
2026-01-16 23:36:52 +08:00
程序猿MT
3d6d131889
Merge branch 'Wei-Shaw:main' into main
2026-01-16 22:31:14 +08:00
yangjianbo
b0569d873a
perf(路由预加载): 修复静态 import 导致入口文件膨胀问题
...
问题:
- 原实现使用静态 import() 映射表
- Rollup 静态分析时将所有 37 个视图组件引用打包进 index.js
- 导致首次加载时需要解析大量未使用的 import 语句
修复:
- 移除静态 import() 映射,改用纯路径字符串邻接表
- 通过 router.getRoutes() 动态获取组件的 import 函数
- 延迟初始化 routePrefetch,首次导航时才创建实例
- 更新测试文件使用 mock router
效果:
- index.js 中动态 import 引用从 37 个减少到 1 个
- 首次加载不再包含未使用的视图组件引用
- 41 个测试全部通过
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-16 22:07:39 +08:00
yangjianbo
92234857f7
perf(前端): 优化页面加载性能和用户体验
...
- 添加路由预加载功能,使用 requestIdleCallback 在浏览器空闲时预加载
- 配置 Vite manualChunks 分离 vendor 库(vue/ui/chart/i18n/misc)
- 新增 NavigationProgress 导航进度条组件,支持防闪烁和无障碍
- 集成 Vitest 测试框架,添加 40 个单元测试和集成测试
- 支持 prefers-reduced-motion 和暗色模式
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-16 21:48:57 +08:00
yangjianbo
eb432a49ed
perf(前端): 移除 Google Fonts 改用系统字体栈
...
- 删除 Google Fonts @import,解决国内访问阻塞问题
- 使用 system-ui 优先的系统字体栈
- 添加中文字体支持(苹方、冬青黑、微软雅黑)
- 移除 Inter 字体专用的 font-feature-settings
此改动可显著提升国内用户的页面加载速度,避免因 Google Fonts
被墙导致的渲染阻塞问题。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-16 19:49:33 +08:00
Wesley Liddick
04811c00cb
Merge pull request #313 from mt21625457/main
...
fix(ci): 修复各类bug
2026-01-16 19:30:07 +08:00
longgexx
19865b865f
feat(group): 添加分组级别模型路由配置功能
...
支持为分组配置模型路由规则,可以指定特定模型模式优先使用的账号列表。
- 新增 model_routing 字段存储路由配置(JSONB格式,支持通配符匹配)
- 新增 model_routing_enabled 字段控制是否启用路由
- 更新后端 handler/service/repository 支持路由配置的增删改查
- 更新前端 GroupsView 添加路由配置界面
- 添加数据库迁移脚本 040/041
2026-01-16 17:26:05 +08:00
yangjianbo
c659788022
fix(前端路由): 添加 chunk 加载错误自动恢复机制
...
- 检测动态导入模块加载失败错误
- 自动刷新页面获取最新资源
- 使用 sessionStorage 防止无限刷新循环(10秒冷却)
- 解决前端重新部署后用户缓存导致的加载失败问题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-16 16:20:10 +08:00