提交图

164 次代码提交

作者 SHA1 备注 提交日期
Jenkins CI
9cc6a53256 ci: bump tenant-web to 1.0.14 [skip ci] 2026-06-17 10:11:30 +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
Jenkins CI
b83df44444 ci: bump tenant-web to 1.0.13 [skip ci] 2026-06-17 05:31:31 +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
Jenkins CI
2d650d2b7a ci: bump tenant-web to 1.0.12 [skip ci] 2026-06-17 05:02:45 +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
Jenkins CI
b31bf0ce45 ci: bump tenant-web to 1.0.11 [skip ci] 2026-06-16 19:24:27 +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
Jenkins CI
a6c929e406 ci: bump tenant-web to 1.0.10 [skip ci] 2026-06-16 19:02:52 +08:00
Jenkins CI
b29ea8c308 ci: bump ops-web to 1.0.3 [skip ci] 2026-06-16 18:58:12 +08:00
Jenkins CI
7d20388c61 ci: bump tenant-web to 1.0.9 [skip ci] 2026-06-16 18:35:11 +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
Jenkins CI
35f8d30cd5 ci: bump tenant-web to 1.0.8 [skip ci] 2026-06-16 18:31:19 +08:00
XuqmGroup
09f4afac41 Merge remote-tracking branch 'origin/main' 2026-06-16 18:30:08 +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
Jenkins CI
a15793e3a2 ci: bump tenant-web to 1.0.7 [skip ci] 2026-06-16 18:27:00 +08:00
Jenkins CI
254388cd1f ci: bump ops-web to 1.0.2 [skip ci] 2026-06-16 18:00:39 +08:00
XuqmGroup
1ad3cc481d revert: 还原日志监控页面(Bug收集服务改由租户平台管理)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 17:39:59 +08:00
Jenkins CI
f6b29bac57 ci: bump ops-web to 1.0.1 [skip ci] 2026-06-16 16:28:47 +08:00
XuqmGroup
ca09e7c2f8 fix: LogEvents/LogIssues size.value 类型修正
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 16:26:54 +08:00
XuqmGroup
9bc227f3a3 feat: 日志监控模块 — 8 个页面
- 概览仪表盘(统计卡片 + echarts 趋势图 + Top5)
- 错误列表(分页 + 筛选)
- 错误详情(stack trace + 源码上下文)
- 事件流水(分页 + 筛选)
- 漏斗分析(动态步骤 + 转化率)
- Webhook 配置(CRUD)
- 高频/高危排行

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 16:20:16 +08:00
Jenkins CI
b071350ab4 ci: bump tenant-web to 1.0.6 [skip ci] 2026-06-16 14:20:51 +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
Jenkins CI
23b600987b ci: bump tenant-web to 1.0.5 [skip ci] 2026-06-16 14:03:52 +08:00
XuqmGroup
72c36ffb82 docs(sdk): 添加 Android SDK 架构总览文档
- 新增架构总览文档,包含整体架构图和依赖关系
- 详细描述初始化流程(ContentProvider 自动和手动两种方式)
- 补充技术栈版本信息和发布说明
- 更新服务器端和Web端项目上下文文档
- 添加新模块 xuqm-log-service 的版本文件
- 在服务器端 POM 中注册 xuqm-log-service 模块
- 修复 Android SDK 字符串模板语法错误
- 修改服务器端 webhook 服务的 Redis 锁获取逻辑
2026-06-16 12:35:17 +08:00
Jenkins CI
84bcfc7a7d ci: bump tenant-web to 1.0.4 [skip ci] 2026-06-12 23:12:40 +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
bbbd382651 feat(platform): 添加网站图标支持
- 在运营平台index.html中添加ico和svg格式图标链接
- 在租户平台index.html中统一图标引用为标准favicon路径
- 添加运营平台SVG格式网站图标文件
- 添加租户平台SVG格式网站图标文件
- 移除租户平台原有的vite默认图标引用
2026-06-12 19:53:39 +08:00
Jenkins CI
acd2070e25 ci: bump tenant-web to 1.0.3 [skip ci] 2026-06-11 19:36:45 +08:00
Jenkins CI
626211b85f ci: bump tenant-web to 1.0.2 [skip ci] 2026-06-11 19:18:12 +08:00
Jenkins CI
b20acdd093 ci: bump tenant-web to 1.0.1 [skip ci] 2026-06-11 17:29:40 +08:00
XuqmGroup
344baead4e fix: copy workspace package.json before yarn install so devDeps are installed
vue-tsc and other workspace devDeps were missing because COPY <workspace>/
ran after yarn install, leaving yarn without sub-package manifests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 17:27:39 +08:00
XuqmGroup
500eca8d6a refactor(jenkins): 简化 Jenkinsfile 版本管理和部署流程
- 移除复杂的版本策略参数,统一使用自动递增版本号
- 修改 Docker 镜像标签策略,使用 latest 标签进行部署
- 简化版本计算逻辑,统一维护服务版本文件
- 更新部署脚本,直接使用 latest 标签拉取镜像
- 添加版本文件自动提交到 Git 的功能
- 重构版本记录更新机制,使用 Python 脚本管理 versions.json
- 统一所有 Jenkinsfile 的环境变量和构建参数结构
2026-06-11 17:23:49 +08:00
XuqmGroup
6b94c30628 chore(ci): 移除 DEPLOY 和 NO_CACHE 参数,构建后必然部署
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 17:07:57 +08:00
XuqmGroup
0572bbdd38 fix(ci): 修复 Jenkinsfile.tenant-web/ops-web 缓存穿透和错误处理
- 添加 --build-arg GIT_COMMIT 使 Docker 每次提交都重新构建源码层
- 添加 NO_CACHE 参数支持强制禁用缓存
- 修复 bat 错误处理(if %errorlevel% neq 0 exit /b 1)
- Deploy 阶段添加 lock('prod-deploy') + retry(2) 防并发失败
- Dockerfile.ops: 将 COPY ops-platform 移到 yarn install 之后,添加 ARG GIT_COMMIT

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 17:05:43 +08:00
XuqmGroup
07d6307b5d fix(ci): 修复 bat 脚本错误处理,Docker 失败时立即退出
原 || exit /b %ERRORLEVEL% 在 Windows bat 中无法可靠捕获 Docker API
错误(Docker Desktop 宕机时返回 500 但 %ERRORLEVEL% 可能仍为 0),
导致构建失败时管道仍标记为 SUCCESS。改为 if %errorlevel% neq 0 exit /b 1。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 15:20:16 +08:00
XuqmGroup
50eb60b895 fix(ci): 部署阶段加 lock(prod-deploy) 和 retry,防止并发 pull 失败
多个 Jenkins job 同时向同一服务器执行 docker pull 时,containerd
ingest 目录存在 rename 竞争,会出现 "no such file or directory"
错误。通过全局锁 prod-deploy 序列化所有部署操作(与 Server
Jenkinsfile 共享同一锁名),并加 retry(2) 兜底。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 15:16:37 +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