提交图

127 次代码提交

作者 SHA1 备注 提交日期
XuqmGroup
088e922ec9 feat(push-config): 每个厂商卡片内嵌 Profiles,独立保存按钮
- 移除全局"厂商凭据"包裹卡和底部"平台 Profiles"卡
- 每个厂商独立一张卡:凭据 + 通知渠道 Profiles + 保存按钮
- Profiles 按厂商过滤展示,支持在对应厂商卡内添加/删除
- iOS APNs 卡额外显示 Thread ID 和中断级别列
- savingMap 替代独立的 saving ref,各厂商 loading 状态独立

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 16:29:37 +08:00
XuqmGroup
1b3c94603a fix(push-config): 修复厂商凭据无法回显问题
- 添加 getServiceItem API,按平台精确查询推送服务配置(/services/item)
- applySelectedPlatformConfig 改用精确接口而非列表,避免 listByApp
  只返回第一条 PUSH 服务(IOS)导致 ANDROID 配置加载为空的问题

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 16:16:11 +08:00
XuqmGroup
0b0e004c2e feat(push-config): 厂商凭据与 Profiles 分别独立保存
- 厂商凭据卡片 header 右侧增加「保存凭据」按钮
- Profiles 卡片底部保留「保存 Profiles」按钮
- 拆分 saving 为 savingVendors / savingProfiles,加载状态独立

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 14:27:07 +08:00
XuqmGroup
43a4e29ae5 fix(push-config): 按平台过滤厂商凭据展示
切换平台时只展示对应平台的厂商:
- Android:小米、华为、荣耀、OPPO、VIVO
- iOS:APNs
- HarmonyOS:鸿蒙 Push Kit

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 14:23:25 +08:00
XuqmGroup
efa77abce9 fix(push): 修复推送平台配置选择器及在线时间显示
- PushConfigView: 新增平台选择器(Android/iOS/HarmonyOS),加载时固定默认 ANDROID,
  避免因激活服务平台顺序不同而静默保存到错误平台
- PushManagementView: 最后在线为空时降级显示设备最后登录时间,并加注释区分 IM 在线 vs 设备登录

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 14:12:24 +08:00
XuqmGroup
68a56a3575 feat(push): 测试推送支持选择指定设备,默认最近登录设备
- 设备选择器显示全部设备,预选最近登录项
- sent=false && targetCount>0 时显示厂商拒绝提示
- testOffline API 新增 deviceId 参数

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 13:22:07 +08:00
XuqmGroup
6f89da4362 feat(push): Token 复制按钮 + romVersion 显示
- PushManagementView: 系统版本列新增 romVersion 子行显示(灰色小字)
- Token 预览列新增"复制"按钮,点击后调管理端接口获取完整 token 并复制到剪贴板
- DeviceInfo 接口添加 romVersion 字段
- pushAdminApi 新增 getDeviceToken 方法

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 12:25:14 +08:00
XuqmGroup
efdbfafeb7 feat(push-management): 在服务门户栏添加「厂商凭据配置」快速跳转
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 18:38:03 +08:00
XuqmGroup
af552ad58e fix(push-config): 移除平台切换开关和服务状态,修复凭据保存不生效问题
- 删除"配置平台"切换 UI(Android/iOS/鸿蒙分段选择器)和推送服务开关
- 删除"服务状态"显示(页面可达即已开通,显示"未开通"逻辑有误)
- 修复厂商凭据保存:前端直接将 PushServiceConfig 作为 body,
  服务端 FeatureServiceConfigRequest 期望 pushConfig 字段包裹,
  导致 req.pushConfig() 始终为 null,vendors 从未实际写入。
  改为发送 { pushConfig: payload } 使服务端正确解析。
- loadData 改为优先选取已启用的 PUSH 服务平台

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 17:53:50 +08:00
XuqmGroup
9413a5ea5c feat(sourcemap): 隐藏文件路径,显示 Build ID,添加删除按钮,倒序排列
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 12:05:03 +08:00
XuqmGroup
55cd65899c fix(bugcollect): 补充缺失的 statusTag/statusLabel/formatTime 函数
这三个函数在模板中调用但未在 script 中定义,导致 TypeScript 编译失败。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 18:41:37 +08:00
XuqmGroup
e2b85c76a4 fix(bugcollect): 修复趋势图不显示 — API 响应结构为 {issueId, points[]} 而非数组
trend API 返回 { issueId, points: [...] },前端误以为是数组直接调用 .map()
导致 TypeError 被 catch 静默吞掉,图表从不渲染。
修复:正确读取 res.data.data.points,并更新类型定义。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 18:39:44 +08:00
XuqmGroup
563a8d8af6 fix: BugCollect 前端空 catch 块添加错误提示
修复:
- BugCollectIssues.vue - 添加 ElMessage.error
- BugCollectEvents.vue - 添加 ElMessage.error
- BugCollectRankFreq.vue - 添加 ElMessage.error
- BugCollectRankRisk.vue - 添加 ElMessage.error
- BugCollectSourcemaps.vue - 添加 ElMessage.error

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 19:38:49 +08:00
XuqmGroup
2c4dcaf130 refactor: 抽取 BugCollect 公共辅助函数
新增:
- utils/bugCollect.ts - levelTag/statusTag/statusLabel/formatTime/platformTagType

重构:
- BugCollectOverview.vue - 使用公共 levelTag
- BugCollectIssues.vue - 使用公共辅助函数
- BugCollectEvents.vue - 使用公共 formatTime
- BugCollectSourcemaps.vue - 使用公共辅助函数
- BugCollectRankFreq.vue - 使用公共辅助函数
- BugCollectRankRisk.vue - 使用公共辅助函数
- BugCollectIssueDetail.vue - 使用公共辅助函数

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 19:38:49 +08:00
XuqmGroup
7b3ef8189e feat: 添加 Sourcemap 管理页面
- 新增 BugCollectSourcemaps.vue 组件
- 添加路由 /bugcollect/sourcemaps
- 添加导航菜单项
- 展示已上传的 Sourcemap 列表
- 包含使用说明(Android/RN/手动上传)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 03:02:57 +08:00
XuqmGroup
563a2c5628 fix: bugcollect 时间显示时区问题 - 追加 Z 表示 UTC 再转本地时间
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 02:16:17 +08:00
XuqmGroup
1dc188b2be feat: update 统计图表 + bugcollect ECharts 图表增强 + 修复字段映射
- update: 新增版本分布/设备分布/厂商分布/日趋势统计图表(ECharts)
- update: 添加 echarts 依赖
- bugcollect: 概览页新增 5 张 ECharts 图表(级别/状态/平台/版本分布 + 每日趋势)
- bugcollect: 高频/高危排行页添加横向柱状图
- bugcollect: Issue 详情页添加趋势双轴折线图
- bugcollect: 漏斗页替换为 ECharts 漏斗图
- bugcollect: 修复 type→level、isResolved→status 字段引用
- bugcollect: 新增 statistics 和 issueTrend API

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 01:23:32 +08:00
XuqmGroup
eb85e53d3f fix(jenkins): 修复Jenkins构建中的字符编码和API参数问题
- 在Jenkinsfile中添加JAVA_TOOL_OPTIONS环境变量设置UTF-8编码
- 在Windows批处理命令前添加chcp 65001命令解决中文字符显示问题
- 修复BugCollectIssues组件中API参数从type改为level
- 修复BugCollectWebhooks组件中API字段映射eventTypes到events和cooldownSeconds到cooldownSec
- 更新webhook请求数据结构以匹配后端API要求
2026-06-18 11:14:34 +08:00
XuqmGroup
66414f7987 fix(bugcollect): 修复问题详情页字段映射,新增设备信息/状态管理
- 修复 level/release 字段未显示(原引用了废弃的 type/appVersion)
- 新增设备信息卡片(解析 device JSON 展示型号/系统/内存等)
- 新增状态管理操作栏(标记已解决/忽略/重新打开/删除)
- 修复事件列表使用 exception.value/stacktrace(新格式)
- 新增 reopenIssue API 方法

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 10:47:52 +08:00
XuqmGroup
a58d25fc24 fix(bugcollect-web): 修复前端 API 类型与后端对齐
- BugCollectIssue: type→level, isResolved→status, appVersion→release, 新增 affectedUsers/assignee
- BugCollectEventItem: 扁平 message/stack/metadata 字段替换为 exception 对象结构,与 IssueEventResponse 对齐
- BugCollectWebhook: eventTypes/cooldownSeconds→events/cooldownSec,新增 hasSecret,移除 updatedAt
- BugCollectWebhookRequest: 新增独立请求类型,含 secret 字段
- 新增 resolveIssue / ignoreIssue / assignIssue / deleteIssue / bulkUpdateIssues / issueEvents API
- frequencyRanking / riskRanking 支持 from/to/limit 参数
- issues() 新增 assignee / environment / q / status 过滤参数
- webhooks.create 改为直接传 BugCollectWebhookRequest(移除冗余 appKey params)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 09:27:43 +08:00
XuqmGroup
6d6fd3363e fix(bugcollect): 更新 IssueDetail 视图对齐后端 IssueResponse 字段
移除不存在的字段(status/osVersion/deviceModel/affectedUsers/stackTrace/sourceContext/recentEvents),
改用 isResolved/events[].stack/events 替代,通过 TypeScript 类型检查。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 10:24:01 +08:00
XuqmGroup
3676241f6a fix(bugcollect): 对齐前后端接口契约
- bugcollect.ts: issues/events 请求参数重映射(startDate/endDate→from/to,eventName→name,page 0-based+1→backend 1-based)
- BugCollectPageResult: content/totalElements → items/total(匹配后端 PageResult<T>)
- BugCollectIssue: 字段对齐 IssueResponse(id:number,isResolved,移除 affectedUsers/status)
- BugCollectEventItem: 字段对齐 IssueEventResponse(message/stack/createdAt,移除 eventName/timestamp/properties)
- BugCollectIssueRanking: 同步 isResolved,移除 affectedUsers
- 所有视图表格列更新为实际存在的字段

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 10:21:00 +08:00
XuqmGroup
7c97a7b90e fix(bugcollect): 修复 overview loadData 的 TypeScript 类型错误 — 改用可选链替代 ?? {}
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 10:10:20 +08:00
XuqmGroup
c8224bf598 fix(bugcollect): 修复 undefined.length 崩溃 — 所有视图加 gateStatus 守卫和 null safety
- 所有视图 loadData/loadWebhooks:首行加 gateStatus !== 'enabled' 守卫,避免 appKey 为空或服务未开通时发请求
- 所有视图加 watch(gateStatus) 监听,服务开通后自动刷新数据
- 所有响应体数组赋值改为 ?? [],防止后端返回 null/undefined 时 el-table 访问 .length 崩溃
- BugCollectOverview:maxRate computed 改用 crashRateTrend ?? [] 防止 undefined.map 崩溃

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 10:07:36 +08:00
XuqmGroup
fb5e9753a3 feat(bugcollect): 将崩溃收集移为服务管理子菜单,并增加服务开通校验
- MainLayout: 移除独立的 bug-collect 顶级子菜单,改为嵌套在服务管理下的 services-bugcollect 子菜单(桌面 + 移动抽屉均已同步)
- openedMenus: /bugcollect/* 路径下同时展开 services 和 services-bugcollect
- FeatureService.serviceType: 补充 BUG_COLLECT 枚举值
- appApi.requestActivation: 支持 BUG_COLLECT 服务类型
- useBugCollectApp: 增加 gateStatus / serviceEnabled / checkingService;appKey 变化时自动调用 getServices 检查 BUG_COLLECT 是否已开通;提供 applyDialogVisible / submitActivation 申请流程
- 全部 7 个 BugCollect 视图: 替换原 !appKey 判断为 gateStatus 四态门控(no-app / loading / not-enabled / enabled),并附加申请开通对话框

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 05:27:53 +08:00
XuqmGroup
5e87a17765 feat(bug-collect): 所有视图新增应用选择器,API 调用补充 appKey 参数 2026-06-17 05:00:51 +08:00
XuqmGroup
4c6be2c489 feat: 版本状态看板 — 检查更新时展示全量服务对比表格
- Dockerfile.tenant/ops: 注入 SERVICE_VERSION ARG,设置 com.xuqm.version 标签
- Jenkinsfile: 移除手动 IMAGE_TAG;自动递增语义版本;构建后更新 versions.json;commit VERSION 文件
- SecurityCenterView: 点击「检查更新」后始终展示全量服务当前版本 vs 云端版本对比表格(不再仅 hasUpdate 时显示)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 19:33:39 +08:00
XuqmGroup
b75efcefd8 feat(tenant-platform): 应用详情页显示 BugCollect 服务 + 服务管理菜单新增崩溃收集
- AppDetailView: 新增崩溃收集服务卡片(开通/关闭/跳转概览&错误列表)
- serviceLabel/serviceHelp: 补充 BUG_COLLECT 对应文案
- MainLayout: 服务管理子菜单新增「崩溃收集」入口(/services/bugcollect)
- router: 注册 services/bugcollect 路由 → BugCollectOverview

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 19:22:02 +08:00
XuqmGroup
95a8a3f876 refactor: log-monitor → bug-collect 重命名
- 目录/文件/API/路由/侧边栏全部重命名
- API路径 /log/v1/ → /bugcollect/v1/

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 18:33:21 +08:00
XuqmGroup
1abf05ecca feat(log): 重构日志监控功能为Bug收集系统
- 将日志监控模块重命名为Bug收集模块
- 更新路由路径从 /log/* 到 /bugcollect/*
- 修改导航菜单项名称为"Bug收集"
- 更新API代理路径从 /api/log 到 /api/bugcollect
- 新增完整的Bug收集前端功能实现
- 添加错误列表、概览、事件流水、漏斗分析等功能页面
- 实现错误详情展示包括堆栈追踪和源码上下文
- 创建新的bugcollect API接口文件和类型定义
2026-06-16 18:30:01 +08:00
XuqmGroup
7a85d99001 fix: AlertTriangle → Warning 图标修正
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 14:19:20 +08:00
XuqmGroup
2d7b1943cd feat: 日志监控模块 — 8 个页面
- 概览仪表盘(统计卡片 + 趋势图 + Top5)
- 错误列表(分页 + 筛选)
- 错误详情(符号化 stack + 源码上下文)
- 事件流水(分页 + 筛选)
- 漏斗分析(动态步骤 + 转化率)
- Webhook 配置(CRUD)
- 高频/高危排行

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 14:13:47 +08:00
XuqmGroup
7fe3cc767c feat(login): 私有化部署时隐藏注册账号入口
通过 /api/private/deployment/status 判断部署模式,PRIVATE 模式下不渲染注册链接。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 23:09:22 +08:00
XuqmGroup
58f7fb4a44 fix(web): 修复双垂直滚动条并优化Docker构建缓存策略
- MainLayout: 为侧边栏添加 overflow:hidden,避免 el-aside 默认
  overflow:auto 在菜单内容较多时产生第二条垂直滚动条
- Dockerfile.tenant: 将 COPY 源码移至 yarn install 之后并引入
  GIT_COMMIT ARG,确保每次提交都重新构建源码层,防止 --cache-from
  错误复用旧层导致更新未生效
- Jenkinsfile: 传入 GIT_COMMIT 构建参数;新增 NO_CACHE 参数,缓存
  异常时可强制全量重建

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 15:11:43 +08:00
XuqmGroup
90c9705ff1 feat(system): 添加系统更新检查和选择性更新功能
- 新增 streamSelectiveUpdate 函数支持选择性服务更新
- 添加 UpdateCheckResult 接口定义版本更新检查结果
- 实现 checkForUpdates 函数获取版本更新信息
- 在安全中心视图添加版本信息显示和更新检查按钮
- 添加选择性更新对话框支持按服务选择更新
- 实现版本管理视图中的实时更新通知配置
- 添加从 IM 导入灰度成员功能
- 移除应用密钥管理相关的重复组件实现
2026-06-11 14:11:06 +08:00
XuqmGroup
8abcf59147 feat(app): 支持多平台包名配置和应用信息编辑功能
- 后端增加至少填写一个平台包名的验证逻辑
- 前端调整应用数据模型,将包名字段改为可选类型
- 添加应用详情页的编辑功能和表单验证
- 优化应用列表页包名显示逻辑,支持多平台包名展示
- 重构应用配置指引页面,按平台分类展示商店配置指南
- 在版本管理页面增加包名配置检查和相应提示
- 新增应用信息编辑弹窗组件和相关业务逻辑
2026-06-11 13:04:28 +08:00
XuqmGroup
0a8011d9be refactor(version): 优化版本管理中的灰度发布配置
- 移除 GrayMemberGroup 和 GraySelectionSource 类型定义
- 添加 GrayTag 类型定义以支持标签模式
- 重命名 normalizeCallbackUrl 函数为 normalizeUrl
- 简化灰度发布配置逻辑,移除本地选择源相关代码
- 将灰度同步回调URL和发布回调URL统一为 graySyncUrl 和 publishCallbackUrl
- 更新灰度成员加载逻辑为标签加载逻辑
- 移除成员模式下的回调地址验证和选择源设置
- 简化灰度模式切换条件判断逻辑
2026-06-11 12:36:27 +08:00
XuqmGroup
f116b63369 feat(update): 重构灰度发布系统并新增标签管理功能
- 灰度模式简化为 PERCENT 和 MEMBERS 两种
- 新增成员标签系统,支持标签 CRUD 和按标签选择发版
- 成员同步保留已有标签,手动成员不受同步影响
- 支持标签 + 额外成员组合选择:groupNames + extraMemberIds
- 发布时回调集成方获取成员列表,支持 AppSecret 签名验证
- 从 IM 服务导入成员功能
- 修复 isInGrayRelease() 中的 String.contains() 误匹配 bug
- 移除 IM_PUSH_USERS、CUSTOMER_SYNC、CUSTOMER_CALLBACK 模式
- 更新前端界面,优化灰度成员选择体验
- 添加发布配置和操作日志等相关数据库表结构
2026-06-11 12:30:13 +08:00
XuqmGroup
cbc29cf255 feat(update): 添加 API Key 管理和 WebSocket 实时通知功能
- 新增 API Key 管理功能,支持外部工具认证调用平台 API
- 实现 WebSocket 实时通知,版本发布时推送轻量通知给客户端
- 添加 APK 文件哈希校验,支持已下载检测和直接安装
- 支持外部 APK 上传使用 API Key 认证
- 优化私有化部署自动注入 nginx WebSocket 代理配置
- 扩展 SDK 功能包括已下载检测、直接安装和实时通知监听
2026-06-11 12:25:16 +08:00
XuqmGroup
cd39c7fb30 feat(app): 添加重新生成应用配置文件功能
- 在AppController中新增regenerateConfigFile接口
- 在AppService中实现重新生成配置文件的业务逻辑
- 记录重新生成配置文件的操作日志
- 在前端API中添加重新生成功能调用方法
- 在应用详情页面添加重新生成按钮和确认对话框
- 实现重新生成配置文件的前端交互逻辑
2026-06-02 17:43:36 +08:00
XuqmGroup
348c04ba72 refactor(app): 将许可证文件功能替换为配置文件功能
- 替换 LicenseFileCrypto 为 ConfigFileCrypto 加密类
- 将 /license-file 相关接口重命名为 /config-file
- 修改数据库实体中的 licenseFileContent 字段为 configFileContent
- 更新前端 API 调用从 downloadLicenseFile 改为 downloadConfigFile
- 将安全中心的 License 文件解析功能改为 Config 文件解析
- 更新文件扩展名从 .xuqmlicense 改为 .xuqmconfig
- 修改后端服务方法 ensureLicenseFile 为 ensureConfigFile
- 调整加密解密逻辑以支持新的配置文件格式
2026-06-02 17:35:29 +08:00
XuqmGroup
62966dcf20 feat(ui): 添加服务应用切换记忆功能并优化菜单结构
- 在IM、授权、推送、版本管理视图中添加最近使用应用的记忆功能
- 新增serviceApp工具函数用于存储和获取最近使用的应用
- 将系统日志、数据库、操作日志菜单项归类到运维管理子菜单
- 修复实体类索引字段命名不一致问题
- 在安全配置中启用方法级别安全注解支持
2026-05-28 10:53:13 +08:00
XuqmGroup
db3158d2e4 refactor(logs): 更新操作日志视图中的推送服务注释
- 修改了推送服务相关的注释说明
- 移除了重复的用户信息编辑和状态变更操作日志条目
- 添加了关于与im-service重复的说明注释
2026-05-27 17:30:03 +08:00
XuqmGroup
5b2a89e964 feat(logs): 添加操作日志功能支持推送和授权模块
- 在JwtAuthFilter中设置认证详情到claims
- 为license-service添加LicenseOperationLog相关实体、仓库和服务
- 为push-service添加PushOperationLog相关实体、仓库和服务
- 在LicenseAdminController中注入并使用操作日志记录授权变更
- 在PushManagementController中注入并使用操作日志记录推送操作
- 更新OperationLogService以支持从JWT claims获取用户信息
- 扩展OperationLogService支持推送和授权操作日志查询
- 在前端OperationLogView中添加推送和授权日志选项卡
- 添加LicenseOperationLog和PushOperationLog接口定义
- 实现推送和授权日志的数据加载和分页功能
- 添加操作类型和资源类型的标签映射支持
2026-05-27 13:36:16 +08:00
XuqmGroup
908916fefd feat(logs): 添加即时通讯操作日志并优化界面显示
- 在 operation log 视图中新增即时通讯标签页
- 为 IM 服务添加操作摘要、资源类型等字段支持
- 统一三个标签页的操作类型和资源类型的中文映射
- 重构操作摘要生成功能,区分租户平台、即时通讯和版本管理
- 优化表格列宽度和布局显示
- 添加 IM 日志的数据加载和分页功能
- 新增 IM 应用选择和页面切换事件处理
- 在 API 定义中添加 summary 字段支持
2026-05-27 12:52:29 +08:00
XuqmGroup
4b13f64966 feat(log): 优化操作日志记录和展示功能
- 在OperationLogEntity实体中新增summary和ipAddress字段存储摘要和IP信息
- 修改operationLogService.record方法支持传入操作摘要信息
- 实现客户端IP地址解析功能,支持X-Forwarded-For和X-Real-IP头
- 更新系统更新服务中的数据库表结构迁移逻辑,增加NOT NULL列处理
- 优化前端操作日志页面展示,添加标签分类和详情弹窗功能
- 在系统更新流式响应中增加网络连接异常处理机制
- 添加Nginx代理配置中的缓冲区设置以支持实时日志流式传输
2026-05-27 12:27:43 +08:00
XuqmGroup
38e138f955 fix(core): 统一全局异常处理器并添加数据库管理功能
- 在所有服务的GlobalExceptionHandler中添加HttpServletRequest参数以记录请求上下文
- 统一异常响应格式为ResponseEntity<ApiResponse<Void>>并改进错误日志记录
- 添加对多种异常类型的处理包括参数验证、请求方法不支持、权限拒绝等
- 为业务异常添加不同级别的日志记录(warn/error)和状态码映射
- 在前端系统API中新增数据库表管理相关接口定义和实现
- 添加数据库表列表、列信息和数据查询的API调用函数
2026-05-27 11:51:19 +08:00
XuqmGroup
ad734ff204 feat(system-logs): 两端平台新增服务日志查看页面
- tenant-platform: /system-logs 页面,私有化模式下侧边栏显示;支持服务切换、
  行数选择、刷新间隔配置(5s/10s/30s/1min)、自动滚动
- ops-platform: /system-logs 页面,始终可见;复用相同交互,通过 ROLE_OPS 接口获取日志

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 23:22:58 +08:00
XuqmGroup
e999d4d443 feat(system): 添加系统版本查询和数据库迁移功能
- 移除 license-service 中 DeviceEntity 的 device_id 唯一约束注解
- 添加 /api/system/version 接口用于查询当前部署版本
- 实现数据库 schema 版本化迁移机制
- 添加自动执行数据库迁移的功能
- 在前端安全中心界面显示当前版本和迁移状态
- 优化配置文件修复逻辑和代码结构
2026-05-22 23:04:36 +08:00
XuqmGroup
ee20767d57 fix(security-center): add missing isMobile ref and fix Jenkins build failure handling
- Add isMobile reactive ref with resize listener in SecurityCenterView
  to fix TypeScript build error TS2339
- Fix Jenkinsfile: use '|| exit /b %ERRORLEVEL%' after docker build/push
  and ssh deploy commands so Windows bat steps actually fail the pipeline
  when a command returns non-zero exit code

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 19:33:38 +08:00