1. 02 Apr, 2026 1 commit
  2. 27 Mar, 2026 1 commit
    • shaw's avatar
      feat(tls-fingerprint): 新增 TLS 指纹 Profile 数据库管理及代码质量优化 · 1854050d
      shaw authored
      新增功能:
      - 新增 TLS 指纹 Profile CRUD 管理(Ent schema + 迁移 + Admin API + 前端管理界面)
      - 支持账号绑定数据库中的自定义 TLS Profile,或随机选择(profile_id=-1)
      - HTTPUpstream.DoWithTLS 接口从 bool 改为 *tlsfingerprint.Profile,支持按账号指定 Profile
      - AccountUsageService 注入 TLSFingerprintProfileService,统一 usage 场景与网关的 Profile 解析逻辑
      
      代码优化:
      - 删除已被 TLSFingerprintProfileService 完全取代的 registry.go 死代码(418 行)
      - 提取 3 个 dialer 的重复 TLS 握手逻辑为 performTLSHandshake() 共用函数
      - 修复 GetTLSFingerprintProfileID 缺少 json.Number 处理的 bug
      - gateway_service.Forward 中 ResolveTLSProfile 从重试循环内重复调用改为预解析局部变量
      - 删除冗余的 buildClientHelloSpec() 单行 wrapper 和 int64(e.ID) 无效转换
      - tls_fingerprint_profile_cache.go 日志从 log.Printf 改为 slog 结构化日志
      - dialer_capture_test.go 添加 //go:build integration 标签,防止 CI 失败
      - 去重 TestProfileExpectation 类型至共享 test_types_test.go
      - 修复 9 个测试文件缺少 tlsfingerprint import 的编译错误
      - 修复 error_policy_integration_test.go 中 handleError 回调签名被错误替换的问题
      1854050d
  3. 19 Mar, 2026 1 commit
  4. 18 Mar, 2026 1 commit
    • shaw's avatar
      fix: 兼容 Claude Code v2.1.78+ 新 JSON 格式 metadata.user_id · a14babdc
      shaw authored
      Claude Code v2.1.78 起将 metadata.user_id 从拼接字符串改为 JSON:
      旧: user_{hex}_account_{uuid}_session_{uuid}
      新: {"device_id":"...","account_uuid":"...","session_id":"..."}
      
      新增集中解析/格式化模块 metadata_userid.go:
      - ParseMetadataUserID: 自动识别两种格式,提取 DeviceID/AccountUUID/SessionID
      - FormatMetadataUserID: 根据 UA 版本输出对应格式(>= 2.1.78 输出 JSON)
      - ExtractCLIVersion: 从 UA 提取版本号,消除与 ClaudeCodeValidator.ExtractVersion 的重复
      
      修改消费者统一使用新模块:
      - claude_code_validator: 用 ParseMetadataUserID 替代只匹配旧格式的 userIDPattern
      - identity_service: RewriteUserID/WithMasking 增加 fingerprintUA 参数,
        解析用 ParseMetadataUserID,输出用 FormatMetadataUserID(版本感知)
      - gateway_service: GenerateSessionHash 用 ParseMetadataUserID 提取 session_id,
        buildOAuthMetadataUserID 用 FormatMetadataUserID 输出版本匹配格式,
        两处 RewriteUserIDWithMasking 调用传入 fp.UserAgent
      - account_test_service: generateSessionString 改用 FormatMetadataUserID,
        自动跟随 DefaultHeaders UA 版本
      
      删除三个旧正则: userIDPattern, userIDRegex, sessionIDRegex
      统一 hex 匹配为 [a-fA-F0-9],修复旧 userIDRegex 只匹配小写的不一致
      a14babdc
  5. 13 Mar, 2026 1 commit
  6. 11 Mar, 2026 1 commit
  7. 07 Mar, 2026 2 commits
  8. 05 Mar, 2026 4 commits
    • erio's avatar
      fix: route antigravity apikey account test to native protocol · c26f93c4
      erio authored
      Antigravity APIKey accounts were incorrectly routed to
      testAntigravityAccountConnection which calls AntigravityTokenProvider,
      but the token provider only handles OAuth and Upstream types, causing
      "not an antigravity oauth account" error.
      
      Extract routeAntigravityTest to route APIKey accounts to native
      Claude/Gemini test paths based on model prefix, matching the
      gateway_handler routing logic for normal requests.
      c26f93c4
    • guoyongchang's avatar
      refactor: 移除冗余中间类型和不必要代码 · 831abf79
      guoyongchang authored
      
      
      - 移除 ScheduledTestOutcome 中间类型,RunTestBackground 直接返回 *ScheduledTestResult
      - 简化 SaveResult 直接接受 *ScheduledTestResult
      - 移除 handler 中不必要的 nil 检查
      - 移除前端 ScheduledTestsPanel 中多余的 String() 转换
      Co-Authored-By: default avatarClaude Opus 4.6 <noreply@anthropic.com>
      831abf79
    • guoyongchang's avatar
      feat: 支持基于 crontab 的定时账号测试 · 3a089242
      guoyongchang authored
      
      
      每个测试计划绑定一个账号和一个模型,按 cron 表达式定期执行测试,
      保存历史结果并在前端账号管理页面中提供完整的增删改查和结果查看功能。
      
      主要变更:
      - 新增 scheduled_test_plans / scheduled_test_results 两张表及迁移
      - 后端 service 层:CRUD 服务 + 后台 cron runner(每分钟扫描到期计划并发执行)
      - RunTestBackground 方法通过 httptest 在内存中执行账号测试并解析 SSE 输出
      - Redis leader lock + pg_try_advisory_lock 双重保障多实例部署只执行一次
      - REST API:5 个管理端点(计划 CRUD + 结果查询)
      - 前端 ScheduledTestsPanel 组件:计划管理、启用开关、内联编辑、结果展开查看
      - 中英文 i18n 支持
      Co-Authored-By: default avatarClaude Opus 4.6 <noreply@anthropic.com>
      3a089242
    • shaw's avatar
  9. 28 Feb, 2026 1 commit
  10. 19 Feb, 2026 5 commits
  11. 08 Feb, 2026 1 commit
  12. 07 Feb, 2026 2 commits
    • erio's avatar
      feat(antigravity): comprehensive enhancements - model mapping, rate limiting, scheduling & ops · 5e98445b
      erio authored
      Key changes:
      - Upgrade model mapping: Opus 4.5 → Opus 4.6-thinking with precise matching
      - Unified rate limiting: scope-level → model-level with Redis snapshot sync
      - Load-balanced scheduling by call count with smart retry mechanism
      - Force cache billing support
      - Model identity injection in prompts with leak prevention
      - Thinking mode auto-handling (max_tokens/budget_tokens fix)
      - Frontend: whitelist mode toggle, model mapping validation, status indicators
      - Gemini session fallback with Redis Trie O(L) matching
      - Ops: enhanced concurrency monitoring, account availability, retry logic
      - Migration scripts: 049-051 for model mapping unification
      5e98445b
    • shaw's avatar
      fix: 账号测试根据类型使用不同的 beta header · 39a5b17d
      shaw authored
      - OAuth 账号:使用完整的 DefaultBetaHeader 和 Claude Code 客户端 headers
      - API Key 账号:使用 APIKeyBetaHeader(不含 oauth beta)
      39a5b17d
  13. 02 Feb, 2026 1 commit
  14. 01 Feb, 2026 1 commit
    • yangjianbo's avatar
      feat(Sora): 直连生成并移除sora2api依赖 · 399dd78b
      yangjianbo authored
      实现直连 Sora 客户端、媒体落地与清理策略\n更新网关与前端配置以支持 Sora 平台\n补齐单元测试与契约测试,新增 curl 测试脚本\n\n测试: go test ./... -tags=unit
      399dd78b
  15. 30 Jan, 2026 1 commit
    • yangjianbo's avatar
      feat(账号): 添加 Sora 账号双表同步与创建 · 99dc3b59
      yangjianbo authored
      - 新增 sora_accounts 表与 accounts.extra GIN 索引\n- OpenAI OAuth 支持同时创建 Sora 账号并同步配置\n- Token 刷新同步关联 Sora 账号凭证与扩展表\n- 增加 Sora 账号连通性测试与前端开关文案
      99dc3b59
  16. 28 Jan, 2026 1 commit
  17. 18 Jan, 2026 1 commit
  18. 12 Jan, 2026 2 commits
  19. 08 Jan, 2026 1 commit
    • IanShaw's avatar
      fix(gemini): Google One 强制使用内置 OAuth client + 自动获取 project_id + UI 优化 (#212) · afcfbb45
      IanShaw authored
      * fix(gemini): Google One 强制使用内置 OAuth client + 自动获取 project_id + UI 优化
      
      ## 后端改动
      
      ### 1. Google One 强制使用内置 Gemini CLI OAuth Client
      **问题**:
      - Google One 之前允许使用自定义 OAuth client,导致认证流程不稳定
      - 与 Code Assist 的行为不一致
      
      **解决方案**:
      - 修改 `gemini_oauth_service.go`: Google One 现在与 Code Assist 一样强制使用内置 client (L122-135)
      - 更新 `gemini_oauth_client.go`: ExchangeCode 和 RefreshToken 方法支持强制内置 client (L31-44, L77-86)
      - 简化 `geminicli/oauth.go`: Google One scope 选择逻辑 (L187-190)
      - 标记 `geminicli/constants.go`: DefaultGoogleOneScopes 为 DEPRECATED (L30-33)
      - 更新测试用例以反映新行为
      
      **OAuth 类型对比**:
      | OAuth类型 | Client来源 | Scopes | Redirect URI |
      |-----------|-----------|--------|-----------------|
      | code_assist | 内置 Gemini CLI | DefaultCodeAssistScopes | https://codeassist.google.com/authcode |
      | google_one | 内置 Gemini CLI (新) | DefaultCodeAssistScopes | https://codeassist.google.com/authcode |
      | ai_studio | 必须自定义 | DefaultAIStudioScopes | http://localhost:1455/auth/callback |
      
      ### 2. Google One 自动获取 project_id
      **问题**:
      - Google One 个人账号测试模型时返回 403/404 错误
      - 原因:cloudaicompanion API 需要 project_id,但个人账号无需手动创建 GCP 项目
      
      **解决方案**:
      - 修改 `gemini_oauth_service.go`: OAuth 流程中自动调用 fetchProjectID
      - Google 通过 LoadCodeAssist API 自动分配 project_id
      - 与 Gemini CLI 行为保持一致
      - 后端根据 project_id 自动选择正确的 API 端点
      
      **影响**:
      - Google One 账号现在可以正常使用(需要重新授权)
      - Code Assist 和 AI Studio 账号不受影响
      
      ### 3. 修复 Gemini 测试账号无内容输出问题
      **问题**:
      - 测试 Gemini 账号时只显示"测试成功",没有显示 AI 响应内容
      - 原因:processGeminiStream 在检查到 finishReason 时立即返回,跳过了内容提取
      
      **解决方案**:
      - 修改 `account_test_service.go`: 调整逻辑顺序,先提取内容再检查是否完成
      - 确保最后一个 chunk 的内容也能被正确显示
      
      **影响**:
      - 所有 Gemini 账号类型(API Key、OAuth)的测试现在都会显示完整响应内容
      - 用户可以看到流式输出效果
      
      ## 前端改动
      
      ### 1. 修复图标宽度压缩问题
      **问题**:
      - 账户类型选择按钮中的图标在某些情况下会被压缩变形
      
      **解决方案**:
      - 修改 `CreateAccountModal.vue`: 为所有平台图标容器添加 `shrink-0` 类
      - 确保 Anthropic、OpenAI、Gemini、Antigravity 图标保持固定 8×8 尺寸 (32px × 32px)
      
      ### 2. 优化重新授权界面
      **问题**:
      - 重新授权时显示三个可点击的授权类型选择按钮,可能导致用户误切换到不兼容的授权方式
      
      **解决方案**:
      - 修改 `ReAuthAccountModal.vue` (admin 和普通用户版本):
        - 将可点击的授权类型选择按钮改为只读信息展示框
        - 根据账号的 `credentials.oauth_type` 动态显示对应图标和文本
        - 删除 `geminiAIStudioOAuthEnabled` 状态和 `handleSelectGeminiOAuthType` 方法
        - 防止用户误操作
      
      ## 测试验证
      -  所有后端单元测试通过
      -  OAuth client 选择逻辑正确
      -  Google One 和 Code Assist 行为一致
      -  测试账号显示完整响应内容
      -  UI 图标显示正常
      -  重新授权界面只读展示正确
      
      * fix(lint): 修复 golangci-lint 错误信息格式问题
      
      - 将错误信息改为小写开头以符合 Go 代码规范
      - 修复 ST1005: error strings should not be capitalized
      afcfbb45
  20. 05 Jan, 2026 2 commits
    • yangjianbo's avatar
      fix(安全): 关闭白名单时保留最小校验与默认白名单 · 048ed061
      yangjianbo authored
      实现 allow_insecure_http 并在关闭校验时执行最小格式验证
      - 关闭 allowlist 时要求 URL 可解析且 scheme 合规
      - 响应头过滤关闭时使用默认白名单策略
      - 更新相关文档、示例与测试覆盖
      048ed061
    • yangjianbo's avatar
      feat(安全): 添加安全开关并完善测试流程 · 794a9f96
      yangjianbo authored
      实现安全开关默认关闭与响应头透传逻辑
      - URL 校验与响应头过滤支持开关并覆盖流式路径
      - 非流式 Content-Type 透传/默认值按配置生效
      - 接入 go test、golangci-lint 与前端 lint/typecheck
      - 补充相关测试与配置/文档说明
      794a9f96
  21. 04 Jan, 2026 3 commits
    • IanShaw027's avatar
      fix(lint): 修复所有 Go 命名规范问题 · a4953785
      IanShaw027 authored
      - 全局替换 ApiKey → APIKey(类型、字段、方法、变量)
      - 修复所有 initialism 命名(API, SMTP, HTML, URL 等)
      - 添加所有缺失的包注释
      - 修复导出符号的注释格式
      
      主要修改:
      - ApiKey → APIKey(所有出现的地方)
      - ApiKeyID → APIKeyID
      - ApiKeyIDs → APIKeyIDs
      - TestSmtpConnection → TestSMTPConnection
      - HtmlURL → HTMLURL
      - 添加 20+ 个包注释
      - 修复 10+ 个导出符号注释格式
      
      验证结果:
      - ✓ golangci-lint: 0 issues
      - ✓ 单元测试: 通过
      - ✓ 集成测试: 通过
      a4953785
    • shaw's avatar
      a5275595
    • ianshaw's avatar
      fix(test): 优化账户测试逻辑和默认模型配置 · cc86f944
      ianshaw authored
      - 更新默认模型列表顺序,gemini-2.0-flash 作为首选
      - OpenAI API Key 账户优先使用 Chat Completions API,兼容第三方代理
      - 重构 OAuth 和 API Key 测试逻辑为独立方法
      - 修复 Gemini 流处理中 finishReason 检查顺序
      cc86f944
  22. 03 Jan, 2026 1 commit
    • ianshaw's avatar
      chore: 更新依赖、配置和代码生成 · 112a2d08
      ianshaw authored
      主要更新:
      - 更新 go.mod/go.sum 依赖
      - 重新生成 Ent ORM 代码
      - 更新 Wire 依赖注入配置
      - 添加 docker-compose.override.yml 到 .gitignore
      - 更新 README 文档(Simple Mode 说明和已知问题)
      - 清理调试日志
      - 其他代码优化和格式修复
      112a2d08
  23. 02 Jan, 2026 2 commits
    • IanShaw's avatar
      运维监控系统安全加固和功能优化 (#21) · 45bd9ac7
      IanShaw authored
      * fix(ops): 修复运维监控系统的关键安全和稳定性问题
      
      ## 修复内容
      
      ### P0 严重问题
      1. **DNS Rebinding防护** (ops_alert_service.go)
         - 实现IP钉住机制防止验证后的DNS rebinding攻击
         - 自定义Transport.DialContext强制只允许拨号到验证过的公网IP
         - 扩展IP黑名单,包括云metadata地址(169.254.169.254)
         - 添加完整的单元测试覆盖
      
      2. **OpsAlertService生命周期管理** (wire.go)
         - 在ProvideOpsMetricsCollector中添加opsAlertService.Start()调用
         - 确保stopCtx正确初始化,避免nil指针问题
         - 实现防御式启动,保证服务启动顺序
      
      3. **数据库查询排序** (ops_repo.go)
         - 在ListRecentSystemMetrics中添加显式ORDER BY updated_at DESC, id DESC
         - 在GetLatestSystemMetric中添加排序保证
         - 避免数据库返回顺序不确定导致告警误判
      
      ### P1 重要问题
      4. **并发安全** (ops_metrics_collector.go)
         - 为lastGCPauseTotal字段添加sync.Mutex保护
         - 防止数据竞争
      
      5. **Goroutine泄漏** (ops_error_logger.go)
         - 实现worker pool模式限制并发goroutine数量
         - 使用256容量缓冲队列和10个固定worker
         - 非阻塞投递,队列满时丢弃任务
      
      6. **生命周期控制** (ops_alert_service.go)
         - 添加Start/Stop方法实现优雅关闭
         - 使用context控制goroutine生命周期
         - 实现WaitGroup等待后台任务完成
      
      7. **Webhook URL验证** (ops_alert_service.go)
         - 防止SSRF攻击:验证scheme、禁止内网IP
         - DNS解析验证,拒绝解析到私有IP的域名
         - 添加8个单元测试覆盖各种攻击场景
      
      8. **资源泄漏** (ops_repo.go)
         - 修复多处defer rows.Close()问题
         - 简化冗余的defer func()包装
      
      9. **HTTP超时控制** (ops_alert_service.go)
         - 创建带10秒超时的http.Client
         - 添加buildWebhookHTTPClient辅助函数
         - 防止HTTP请求无限期挂起
      
      10. **数据库查询优化** (ops_repo.go)
          - 将GetWindowStats的4次独立查询合并为1次CTE查询
          - 减少网络往返和表扫描次数
          - 显著提升性能
      
      11. **重试机制** (ops_alert_service.go)
          - 实现邮件发送重试:最多3次,指数退避(1s/2s/4s)
          - 添加webhook备用通道
          - 实现完整的错误处理和日志记录
      
      12. **魔法数字** (ops_repo.go, ops_metrics_collector.go)
          - 提取硬编码数字为有意义的常量
          - 提高代码可读性和可维护性
      
      ## 测试验证
      -  go test ./internal/service -tags opsalert_unit 通过
      -  所有webhook验证测试通过
      -  重试机制测试通过
      
      ## 影响范围
      - 运维监控系统安全性显著提升
      - 系统稳定性和性能优化
      - 无破坏性变更,向后兼容
      
      * feat(ops): 运维监控系统V2 - 完整实现
      
      ## 核心功能
      - 运维监控仪表盘V2(实时监控、历史趋势、告警管理)
      - WebSocket实时QPS/TPS监控(30s心跳,自动重连)
      - 系统指标采集(CPU、内存、延迟、错误率等)
      - 多维度统计分析(按provider、model、user等维度)
      - 告警规则管理(阈值配置、通知渠道)
      - 错误日志追踪(详细错误信息、堆栈跟踪)
      
      ## 数据库Schema (Migration 025)
      ### 扩展现有表
      - ops_system_metrics: 新增RED指标、错误分类、延迟指标、资源指标、业务指标
      - ops_alert_rules: 新增JSONB字段(dimension_filters, notify_channels, notify_config)
      
      ### 新增表
      - ops_dimension_stats: 多维度统计数据
      - ops_data_retention_config: 数据保留策略配置
      
      ### 新增视图和函数
      - ops_latest_metrics: 最新1分钟窗口指标(已修复字段名和window过滤)
      - ops_active_alerts: 当前活跃告警(已修复字段名和状态值)
      - calculate_health_score: 健康分数计算函数
      
      ## 一致性修复(98/100分)
      ### P0级别(阻塞Migration)
      -  修复ops_latest_metrics视图字段名(latency_p99→p99_latency_ms, cpu_usage→cpu_usage_percent)
      -  修复ops_active_alerts视图字段名(metric→metric_type, triggered_at→fired_at, trigger_value→metric_value, threshold→threshold_value)
      -  统一告警历史表名(删除ops_alert_history,使用ops_alert_events)
      -  统一API参数限制(ListMetricsHistory和ListErrorLogs的limit改为5000)
      
      ### P1级别(功能完整性)
      -  修复ops_latest_metrics视图未过滤window_minutes(添加WHERE m.window_minutes = 1)
      -  修复数据回填UPDATE逻辑(QPS计算改为request_count/(window_minutes*60.0))
      -  添加ops_alert_rules JSONB字段后端支持(Go结构体+序列化)
      
      ### P2级别(优化)
      -  前端WebSocket自动重连(指数退避1s→2s→4s→8s→16s,最大5次)
      -  后端WebSocket心跳检测(30s ping,60s pong超时)
      
      ## 技术实现
      ### 后端 (Go)
      - Handler层: ops_handler.go(REST API), ops_ws_handler.go(WebSocket)
      - Service层: ops_service.go(核心逻辑), ops_cache.go(缓存), ops_alerts.go(告警)
      - Repository层: ops_repo.go(数据访问), ops.go(模型定义)
      - 路由: admin.go(新增ops相关路由)
      - 依赖注入: wire_gen.go(自动生成)
      
      ### 前端 (Vue3 + TypeScript)
      - 组件: OpsDashboardV2.vue(仪表盘主组件)
      - API: ops.ts(REST API + WebSocket封装)
      - 路由: index.ts(新增/admin/ops路由)
      - 国际化: en.ts, zh.ts(中英文支持)
      
      ## 测试验证
      -  所有Go测试通过
      -  Migration可正常执行
      -  WebSocket连接稳定
      -  前后端数据结构对齐
      
      * refactor: 代码清理和测试优化
      
      ## 测试文件优化
      - 简化integration test fixtures和断言
      - 优化test helper函数
      - 统一测试数据格式
      
      ## 代码清理
      - 移除未使用的代码和注释
      - 简化concurrency_cache实现
      - 优化middleware错误处理
      
      ## 小修复
      - 修复gateway_handler和openai_gateway_handler的小问题
      - 统一代码风格和格式
      
      变更统计: 27个文件,292行新增,322行删除(净减少30行)
      
      * fix(ops): 运维监控系统安全加固和功能优化
      
      ## 安全增强
      - feat(security): WebSocket日志脱敏机制,防止token/api_key泄露
      - feat(security): X-Forwarded-Host白名单验证,防止CSRF绕过
      - feat(security): Origin策略配置化,支持strict/permissive模式
      - feat(auth): WebSocket认证支持query参数传递token
      
      ## 配置优化
      - feat(config): 支持环境变量配置代理信任和Origin策略
        - OPS_WS_TRUST_PROXY
        - OPS_WS_TRUSTED_PROXIES
        - OPS_WS_ORIGIN_POLICY
      - fix(ops): 错误日志查询限流从5000降至500,优化内存使用
      
      ## 架构改进
      - refactor(ops): 告警服务解耦,独立运行评估定时器
      - refactor(ops): OpsDashboard统一版本,移除V2分离
      
      ## 测试和文档
      - test(ops): 添加WebSocket安全验证单元测试(8个测试用例)
      - test(ops): 添加告警服务集成测试
      - docs(api): 更新API文档,标注限流变更
      - docs: 添加CHANGELOG记录breaking changes
      
      ## 修复文件
      Backend:
      - backend/internal/server/middleware/logger.go
      - backend/internal/handler/admin/ops_handler.go
      - backend/internal/handler/admin/ops_ws_handler.go
      - backend/internal/server/middleware/admin_auth.go
      - backend/internal/service/ops_alert_service.go
      - backend/internal/service/ops_metrics_collector.go
      - backend/internal/service/wire.go
      
      Frontend:
      - frontend/src/views/admin/ops/OpsDashboard.vue
      - frontend/src/router/index.ts
      - frontend/src/api/admin/ops.ts
      
      Tests:
      - backend/internal/handler/admin/ops_ws_handler_test.go (新增)
      - backend/internal/service/ops_alert_service_integration_test.go (新增)
      
      Docs:
      - CHANGELOG.md (新增)
      - docs/API-运维监控中心2.0.md (更新)
      
      * fix(migrations): 修复calculate_health_score函数类型匹配问题
      
      在ops_latest_metrics视图中添加显式类型转换,确保参数类型与函数签名匹配
      
      * fix(lint): 修复golangci-lint检查发现的所有问题
      
      - 将Redis依赖从service层移到repository层
      - 添加错误检查(WebSocket连接和读取超时)
      - 运行gofmt格式化代码
      - 添加nil指针检查
      - 删除未使用的alertService字段
      
      修复问题:
      - depguard: 3个(service层不应直接import redis)
      - errcheck: 3个(未检查错误返回值)
      - gofmt: 2个(代码格式问题)
      - staticcheck: 4个(nil指针解引用)
      - unused: 1个(未使用字段)
      
      代码统计:
      - 修改文件:11个
      - 删除代码:490行
      - 新增代码:105行
      - 净减少:385行
      45bd9ac7
    • yangjianbo's avatar
      feat(安全): 强化安全策略与配置校验 · bd4bf008
      yangjianbo authored
      - 增加 CORS/CSP/安全响应头与代理信任配置
      
      - 引入 URL 白名单与私网开关,校验上游与价格源
      
      - 改善 API Key 处理与网关错误返回
      
      - 管理端设置隐藏敏感字段并优化前端提示
      
      - 增加计费熔断与相关配置示例
      
      测试: go test ./...
      bd4bf008
  24. 31 Dec, 2025 2 commits
    • shaw's avatar
      refactor(service): 统一时间戳解析,支持多种格式 · 81213f23
      shaw authored
      新增 Account.GetCredentialAsTime 方法,统一处理凭证中的时间戳字段,
      兼容 RFC3339 字符串、Unix 时间戳字符串和数字类型。
      
      - 重构 Claude/Gemini/Antigravity TokenRefresher.NeedsRefresh
      - 移除重复的 parseExpiresAt/parseAntigravityExpiresAt 函数
      - 简化 GetOpenAITokenExpiresAt 实现
      - 新增 RFC3339 格式单元测试用例
      81213f23
    • yangjianbo's avatar
      perf(网关): 实现上游账号连接池隔离 · d1c98896
      yangjianbo authored
      新增隔离策略与连接池缓存回收
      
      连接池大小跟随账号并发并处理代理切换
      
      同步配置默认值与示例并补充测试
      d1c98896
  25. 30 Dec, 2025 1 commit