1. 09 Jan, 2026 5 commits
    • IanShaw027's avatar
      feat(handler): 实现运维监控 API 处理器和中间件 · f3ed95d4
      IanShaw027 authored
      - 新增 ops 错误日志记录器(ops_error_logger.go)
      - 新增 ops 主处理器(ops_handler.go)
      - 新增告警管理处理器(ops_alerts_handler.go)
      - 新增仪表板处理器(ops_dashboard_handler.go)
      - 新增实时监控处理器(ops_realtime_handler.go)
      - 新增配置管理处理器(ops_settings_handler.go)
      - 新增 WebSocket 处理器(ops_ws_handler.go)
      - 扩展设置 DTO 支持 ops 配置
      - 新增客户端请求 ID 中间件(client_request_id.go)
      - 新增 WebSocket 查询令牌认证中间件(ws_query_token_auth.go)
      - 更新管理员认证中间件支持 ops 路由
      - 注册 handler 依赖注入
      f3ed95d4
    • IanShaw027's avatar
      feat(service): 实现运维监控业务逻辑层 · 5baa8b56
      IanShaw027 authored
      - 新增 ops 主服务(ops_service.go)和端口定义(ops_port.go)
      - 实现账号可用性检查服务(ops_account_availability.go)
      - 实现数据聚合服务(ops_aggregation_service.go)
      - 实现告警评估服务(ops_alert_evaluator_service.go)
      - 实现告警管理服务(ops_alerts.go)
      - 实现数据清理服务(ops_cleanup_service.go)
      - 实现并发控制服务(ops_concurrency.go)
      - 实现仪表板服务(ops_dashboard.go)
      - 实现错误处理服务(ops_errors.go)
      - 实现直方图服务(ops_histograms.go)
      - 实现指标采集服务(ops_metrics_collector.go)
      - 实现查询模式服务(ops_query_mode.go)
      - 实现实时监控服务(ops_realtime.go)
      - 实现请求详情服务(ops_request_details.go)
      - 实现重试机制服务(ops_retry.go)
      - 实现配置管理服务(ops_settings.go)
      - 实现趋势分析服务(ops_trends.go)
      - 实现窗口统计服务(ops_window_stats.go)
      - 添加 ops 相关领域常量
      - 注册 service 依赖注入
      5baa8b56
    • IanShaw027's avatar
      feat(repository): 实现运维监控数据访问层 · bb530327
      IanShaw027 authored
      - 新增 ops 主仓库(ops_repo.go)
      - 实现告警数据访问(ops_repo_alerts.go)
      - 实现仪表板数据访问(ops_repo_dashboard.go)
      - 实现直方图数据访问(ops_repo_histograms.go)
      - 实现延迟直方图桶逻辑(ops_repo_latency_histogram_buckets.go)
      - 新增延迟直方图桶测试(ops_repo_latency_histogram_buckets_test.go)
      - 实现指标数据访问(ops_repo_metrics.go)
      - 实现预聚合数据访问(ops_repo_preagg.go)
      - 实现请求详情数据访问(ops_repo_request_details.go)
      - 实现趋势数据访问(ops_repo_trends.go)
      - 实现窗口统计数据访问(ops_repo_window_stats.go)
      - 更新并发缓存支持 ops 场景
      - 注册 repository 依赖注入
      bb530327
    • IanShaw027's avatar
      feat(数据库): 添加运维监控数据模型和数据库迁移脚本 · d55866d3
      IanShaw027 authored
      - 新增 ops 监控数据库迁移脚本(表结构定义)
      - 定义核心数据模型(ops_models.go)
      - 定义告警相关模型(ops_alert_models.go)
      - 定义仪表板数据模型(ops_dashboard_models.go)
      - 定义实时监控数据模型(ops_realtime_models.go)
      - 定义配置相关模型(ops_settings_models.go)
      - 定义趋势分析数据模型(ops_trend_models.go)
      d55866d3
    • IanShaw027's avatar
      feat(基础设施): 添加运维监控功能的基础配置和依赖 · 4b9e47ce
      IanShaw027 authored
      - 更新 .gitignore 排除临时文件
      - 添加 ops 监控相关配置项到 config.yaml
      - 更新 Go 依赖包(go.mod/go.sum)
      - 扩展 config.go 支持 ops 监控配置
      - 新增上下文键定义(ClientRequestID)
      4b9e47ce
  2. 06 Jan, 2026 14 commits
    • yangjianbo's avatar
      fix(ci): 修复 frontend-security job 中的 pnpm 安装顺序问题 · 58b17771
      yangjianbo authored
      **问题描述:**
      GitHub Actions 在 frontend-security job 中报错:
      "Error: Unable to locate executable file: pnpm"
      
      **根本原因:**
      setup-node@v4 在尝试使用 pnpm cache 时,pnpm 还未安装
      
      **解决方案:**
      1. 调整步骤顺序:先安装 pnpm,再设置 Node.js
      2. 升级 pnpm/action-setup 从 v2 到 v4
      3. 明确指定 pnpm version: 9
      
      **修改内容:**
      - 将 "Set up pnpm" 步骤移到 "Set up Node.js" 之前
      - 更新 pnpm/action-setup@v2 → pnpm/action-setup@v4
      - 添加 version: 9 配置
      
      **正确的步骤顺序:**
      1. Checkout 代码
      2. Set up pnpm (指定版本)
      3. Set up Node.js (可以使用 pnpm cache)
      4. Install dependencies
      
      相关 Issue: #174
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      58b17771
    • yangjianbo's avatar
      fix(配置): 修改 URL 安全配置默认值为开发友好模式 · 0c7a58fc
      yangjianbo authored
      调整以下配置的默认值以匹配 .env.example:
      - allow_insecure_http: false → true (允许 HTTP URL)
      - allow_private_hosts: false → true (允许本地/私有 IP)
      
      **改动说明:**
      - 默认允许 HTTP URL,方便开发测试环境使用
      - 默认允许本地和私有 IP 地址
      - 与 deploy/.env.example 中的推荐配置保持一致
      - 更新相应的单元测试以验证新的默认值
      
      **安全提示:**
      ️ 这些默认值适合开发/测试环境
      ️ 生产环境建议显式配置更严格的安全策略
      ️ HTTP 存在明文传输风险,仅在可信网络中使用
      
      **测试结果:**
      -  所有单元测试通过
      -  golangci-lint 无问题
      
      相关文件:
      - backend/internal/config/config.go:451-452
      - backend/internal/config/config_test.go:83-88
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      0c7a58fc
    • yangjianbo's avatar
      merge: 合并远程分支并修复代码冲突 · 17ae51c0
      yangjianbo authored
      合并了远程分支 cb72262a 的功能更新,同时保留了 ESLint 修复:
      
      **冲突解决详情:**
      
      1. AccountTableFilters.vue
         -  保留 emit 模式修复(避免 vue/no-mutating-props 错误)
         -  添加第三个筛选器 type(账户类型)
         -  新增 antigravity 平台和 inactive 状态选项
      
      2. UserBalanceModal.vue
         -  保留 console.error 错误日志
         -  添加输入验证(金额校验、余额不足检查)
         -  使用 appStore.showError 向用户显示友好错误
      
      3. AccountsView.vue
         -  保留所有 console.error 错误日志(避免 no-empty 错误)
         -  使用新 API:clearRateLimit 和 setSchedulable
      
      4. UsageView.vue
         -  添加 console.error 错误日志
         -  添加图表功能(模型分布、使用趋势)
         -  添加粒度选择(按天/按小时)
         -  保留 XLSX 动态导入优化
      
      **测试结果:**
      -  Go tests: PASS
      -  golangci-lint: 0 issues
      -  ESLint: 0 errors
      -  TypeScript: PASS
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      17ae51c0
    • yangjianbo's avatar
      fix(前端): 修复 ESLint 代码规范问题 · 4790aced
      yangjianbo authored
      - 修复 AccountTableFilters.vue 中的 vue/no-mutating-props 错误,使用 emit 模式替代直接修改 props
      - 修复 TypeScript 类型错误,支持 Select 组件的 null 值类型
      - 为所有空 catch 块添加错误日志,提升代码可维护性和调试能力
      - 涉及文件:AccountTableFilters.vue, UserAllowedGroupsModal.vue, UserApiKeysModal.vue, UserBalanceModal.vue, AccountsView.vue, UsageView.vue, DashboardView.vue, ProfileView.vue
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      4790aced
    • yangjianbo's avatar
      fix(安全): 修复依赖漏洞并强化安全扫描 · 3f0017d1
      yangjianbo authored
      主要改动:
      - 固定 Go 1.25.5 与 CI 校验并更新扫描流程
      - 升级 quic-go、x/crypto、req 等依赖并通过 govulncheck
      - 强化 JWT 校验、TLS 配置与 xlsx 动态加载
      - 新增审计豁免清单与校验脚本
      3f0017d1
    • shaw's avatar
      Merge PR #166: feat: 图片生成计费功能 · cb72262a
      shaw authored
      cb72262a
    • song's avatar
      195e227c
    • Yuhao Jiang's avatar
      fix: 修复跨时区用户日期范围查询不准确的问题 · f5603b07
      Yuhao Jiang authored
      问题:当用户时区与服务器时区不同时,日期范围查询使用服务器时区解析,
      导致用户看到的数据与预期不符。
      
      修复方案:
      - 前端:所有 GET 请求自动携带用户时区参数
      - 后端:新增时区辅助函数,所有日期解析和默认日期范围计算都使用用户时区
      - 当用户时区为空或无效时,自动回退到服务器时区
      
      🤖 Generated with [Claude Code](https://claude.ai/code
      
      )
      Co-Authored-By: default avatarClaude <noreply@anthropic.com>
      f5603b07
    • shaw's avatar
      fix: Token 统计支持 M 单位并修复 lint 错误 · 752882a0
      shaw authored
      - 用户仪表盘 Token 统计卡片支持 K/M 单位自动切换
      - 更新 formatTokensK 工具函数支持百万级显示
      - 修复 setup.go 中未检查返回值的 errcheck 错误
      752882a0
    • shaw's avatar
      fix: redeem 页面类型的字段翻译 · 9731b961
      shaw authored
      9731b961
    • shaw's avatar
      docs: 更新 Docker 部署文档强调 JWT_SECRET 配置重要性 · 29204094
      shaw authored
      - docker-compose.yml: 添加注释说明设置固定 JWT_SECRET 可防止容器重启后登录失效
      - .env.example: 添加 openssl rand -hex 32 生成安全密钥的命令
      29204094
    • shaw's avatar
      fix: 移除 release 模式 JWT Secret 必填限制并支持 Docker 数据目录 · 7dbbfc22
      shaw authored
      - 移除 Install() 和 AutoSetupFromEnv() 中 release 模式下 JWT Secret 必填检查
      - 移除 config.Validate() 中 release 模式下的 JWT 验证
      - 新增 GetDataDir() 函数,自动检测数据目录:DATA_DIR 环境变量 > /app/data > 当前目录
      - config.yaml 和 .installed 文件现在写入正确的数据目录
      - config.Load() 添加 /app/data 到配置搜索路径
      
      这修复了两个问题:
      1. Web Setup Wizard 在 release 模式下无法完成安装
      2. Docker 部署时 config.yaml 未被持久化导致每次重启重新初始化
      7dbbfc22
    • shaw's avatar
      fix: 修复 CSP 策略阻止 Cloudflare Turnstile 加载的问题 · aaaa68ea
      shaw authored
      在 script-src 和 frame-src 中添加 challenges.cloudflare.com 域名,
      允许 Turnstile 脚本加载和 iframe 渲染。
      aaaa68ea
    • shaw's avatar
      fix: 修复账号修改代理更新无效的bug · af753de4
      shaw authored
      af753de4
  3. 05 Jan, 2026 21 commits