提交图

288 次代码提交

作者 SHA1 备注 提交日期
Jenkins CI
16dcd5ebac ci: bump versions [tenant-service=1.0.7] [skip ci] 2026-06-24 18:25:59 +08:00
XuqmGroup
beb8b57fc1 fix: checkForUpdates 中排除 nginx 版本对比
nginx 使用官方镜像,不携带语义版本标签,在版本对比表格中显示
"未知 / 未知" 无实际意义。将 nginx 保留在 OTHER_SERVICES(一键更新
时仍会重建容器),但从 checkForUpdates() 的 services map 中移除。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 18:20:25 +08:00
Jenkins CI
e402366f0d ci: bump versions [tenant-service=1.0.6] [skip ci] 2026-06-24 17:04:44 +08:00
XuqmGroup
1151724a2a fix: readCurrentVersion 优先读 /app/SERVICE_VERSION,修复 currentVersion 永远返回 "1.0.0"
Dockerfile 中 COPY VERSION /app/VERSION 拷贝的是 repo 根目录的静态文件(始终是 "1.0.0"),
实际构建版本通过 build-arg SERVICE_VERSION 写入 /app/SERVICE_VERSION。
改为优先读 /app/SERVICE_VERSION,使 check-update 返回正确的 currentVersion。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 17:01:59 +08:00
Jenkins CI
b851a83e10 ci: bump versions [tenant-service=1.0.5] [skip ci] 2026-06-24 16:46:14 +08:00
XuqmGroup
9580f77b68 fix: 服务 changed 状态以本地/云端版本比对为准,不依赖 manifest 的 changed 字段
manifest.changed 是 Jenkins 构建时标记的,表示"本次 release 有改动",
不能反映私有部署是否需要更新。改为 current != latest 比对,
避免 current==latest 时误报"有更新"。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 16:42:56 +08:00
Jenkins CI
15a1d79d39 ci: bump versions [tenant-service=1.0.4] [skip ci] 2026-06-24 16:37:20 +08:00
XuqmGroup
e3ec7828fc fix: check-update 正确映射 bugcollect-service 在 manifest 中的 key
versions.json 中 bugcollect-service 的 key 是其镜像名 xuqm-bugcollect-service,
导致 latest 字段为空。复用 SERVICE_IMAGE_OVERRIDES 做 manifest key 转换,
使 bugcollect-service 能正确读取到云端最新版本。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 16:28:24 +08:00
Jenkins CI
c9a3bb5208 ci: bump versions [tenant-service=1.0.3] [skip ci] 2026-06-24 16:17:44 +08:00
XuqmGroup
0f0d0a6b8e fix(tenant-service): 放开 /api/system/versions/manifest 无需鉴权
私有部署通过此端点从云端拉取最新版本清单(VERSIONS_MANIFEST_URL),
不能要求登录态,否则私有服务器无法获取更新信息。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 16:14:57 +08:00
Jenkins CI
cfc028b7eb ci: bump versions [tenant-service=1.0.2] [skip ci] 2026-06-24 16:13:08 +08:00
XuqmGroup
d3f0c0305a feat(tenant-service): nginx 配置改为模板驱动,随发版自动同步
将 nginx 配置打包进 JAR(src/main/resources/nginx/xuqm.conf),
一键更新时自动同步到宿主机挂载目录并重建 nginx 容器。
新增服务只需修改该文件并发版,不再需要为每个变更写 patchNginxXxx() 方法。

同时补入 update-service WebSocket 路由(/ws/),
该路由原本由 patchNginxWebSocket() 注入,因 /ws/im 已存在导致条件误判未生效。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 16:10:26 +08:00
Jenkins CI
aad4fabeb1 ci: bump versions [tenant-service=1.0.1] [skip ci] 2026-06-24 16:06:58 +08:00
XuqmGroup
821745de6b fix(tenant-service): check-update nginx 版本读取报错
从运行容器的真实镜像读取版本标签,而非构造 registry/nginx:latest。
nginx 使用官方镜像(nginx:1.27-alpine),构造路径本地不存在导致 "no such object" 错误。
同时修复 docker inspect 错误退出码未判断的问题,避免将错误信息写入版本号字段。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 16:04:59 +08:00
XuqmGroup
93b1b41ede fix(system-update): 修复 check-update 显示 "no such object" 及 bugcollect-service 无法被一键更新
1. readLocalServiceVersions() 改用 resolveServiceImageName() 获取完整
   镜像名(含 registry 前缀),不再硬编码 "xuqmgroup/{svc}:latest"。

2. resolveServiceImageName() 通过 SERVICE_IMAGE_OVERRIDES 处理镜像名与
   compose service 名不一致的例外(bugcollect-service → xuqm-bugcollect-service)。

3. 新增 SERVICE_COMPOSE_PROFILES 映射与 composeCmd() 辅助方法,为带
   profile 的服务(bugcollect-service:bugcollect)自动注入 --profile 参数,
   使 pull / up 命令能正常识别并更新这些服务。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:40:43 +08:00
Jenkins CI
1131a0c614 ci: bump xuqm-bugcollect-service=1.0.18 [skip ci] 2026-06-24 15:22:22 +08:00
XuqmGroup
a934abe7aa fix(db): 修复 sourcemap 上传因唯一约束缺少 build_id 导致 HTTP 500
uk_map 约束为 (app_key, platform, app_version, bundle_name),未包含
build_id。Gradle 插件每次构建生成不同 buildId,服务端查不到记录后尝试
INSERT,触发 Duplicate entry 约束冲突返回 500。

V8 migration:删除旧约束,重建为
(app_key, platform, app_version, build_id, bundle_name)。
MySQL UNIQUE 对 NULL 视为不相等,历史 build_id=NULL 记录不受影响;
应用层已通过 findByBuildIdIsNull 防止 NULL 记录重复插入。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:19:03 +08:00
XuqmGroup
bb40b13189 fix: 修正 tenant-service bugcollect-api-url 默认值
SDK_BUGCOLLECT_API_URL 默认值从 https://dev.xuqinmin.com/api/bugcollect
改为 https://dev.xuqinmin.com/api。

BugCollect SDK 的 LogUploader 会在 logApiUrl 后自动拼接
/bugcollect/v1/issues/batch,URL 中不应包含 /bugcollect 路径。
旧默认值导致最终请求路径变为 /api/bugcollect/bugcollect/v1/...(路径重复)。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 22:03:14 +08:00
XuqmGroup
e294d42dff fix(bugcollect): 修复 V6 no-op 导致 build_id 列缺失引发的 502
V6 迁移原为空操作(SELECT 1),导致 log_issue_events 和 log_sourcemaps
表缺少 build_id 列,服务启动时 Hibernate schema 校验失败并持续重启。

- 重写 V6 为实际 DDL(ALTER TABLE ... ADD COLUMN build_id)
- 新增 V7 幂等修复迁移,使用条件预处理语句,对已有列的部署安全跳过

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 18:53:57 +08:00
XuqmGroup
ddaf2829cc Merge remote-tracking branch 'origin/main' 2026-06-23 16:43:48 +08:00
XuqmGroup
028ebf4222 fix(file): 解决文件下载和时间戳处理问题
- 实现文件名扩展名推断逻辑,从URL路径自动提取并添加扩展名
- 添加下载错误处理和日志记录功能
- 在下载失败时显示错误通知而非成功通知
- 将服务器时间戳处理统一调整为CST(亚洲/上海)时区
- 更新sdk-core版本号至1.1.6-SNAPSHOT
2026-06-23 16:43:19 +08:00
Jenkins CI
3fe8ce87c7 ci: bump xuqm-bugcollect-service=1.0.17 [skip ci] 2026-06-23 12:09:13 +08:00
XuqmGroup
45ea8060b9 feat(sourcemap): 新增单条删除和全量裁剪接口,列表按上传时间倒序
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 11:56:40 +08:00
Jenkins CI
4c27eb2b97 ci: bump xuqm-bugcollect-service=1.0.16 [skip ci] 2026-06-23 11:42:41 +08:00
XuqmGroup
67f9b37fe8 fix(bugcollect): 新 issue 创建时漏插 log_issue_users 导致 affectedUsers 偏低
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 11:39:51 +08:00
XuqmGroup
d02cd10714 feat(sourcemap): 上传后自动裁剪,每版本保留最新 3 条,最多保留 5 个版本
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 11:39:21 +08:00
Jenkins CI
523f9d7894 ci: bump xuqm-bugcollect-service=1.0.15 [skip ci] 2026-06-23 10:11:14 +08:00
Jenkins CI
0cc73c6b62 ci: bump xuqm-bugcollect-service=1.0.14 [skip ci] 2026-06-22 18:31:26 +08:00
XuqmGroup
45a08c1e3a fix(bugcollect): LogEventEntity 无 buildId,queryEvents 映射改用 null
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 18:28:37 +08:00
XuqmGroup
f6dc3f7c72 feat(bugcollect): 事件响应中暴露 buildId 字段
IssueEventResponse 新增 buildId 字段,将构建 ID 包含在 events API 响应中,
方便前端展示具体构建对应的错误。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 18:27:08 +08:00
Jenkins CI
7f4fd6ee61 ci: bump xuqm-bugcollect-service=1.0.13 [skip ci] 2026-06-22 17:54:11 +08:00
XuqmGroup
39d62f2080 fix(bugcollect): 修复 callSymbolicator 字段名 sourcemap → mappingFile
Android symbolicator API 期望 mappingFile 字段,之前误用 sourcemap 导致
符号化返回 "mappingFile is required for Android" 错误,堆栈无法还原。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 17:51:27 +08:00
Jenkins CI
56dc6ff4cc ci: bump xuqm-bugcollect-service=1.0.12 [skip ci] 2026-06-22 17:29:33 +08:00
XuqmGroup
e7a0d740d2 fix(bugcollect): V6 改为空迁移,所有 DDL 已手动应用
PREPARE/EXECUTE 语法在 Flyway 中不可用;V6 的所有 schema 变更
(log_sourcemaps.build_id、uk_map_build、idx_sm_version_latest、
log_issue_events.build_id)已手动执行到数据库,此脚本改为 SELECT 1
让 Flyway 顺利完成 V6 的版本记录。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 17:26:42 +08:00
Jenkins CI
c4f93ebaf4 ci: bump xuqm-bugcollect-service=1.0.11 [skip ci] 2026-06-22 17:15:52 +08:00
XuqmGroup
f0cd3b5d33 fix(bugcollect): 修复 V6 迁移 SQL 错误并改为幂等执行
- AFTER app_version(列名)替代 AFTER release(Java字段名)
- 使用 information_schema 条件检查实现幂等,防止重复执行报错
- LogService log 语句中 issueId → eventId

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 17:12:51 +08:00
Jenkins CI
632499a5d8 ci: bump xuqm-bugcollect-service=1.0.10 [skip ci] 2026-06-22 17:06:23 +08:00
XuqmGroup
cfd5d67ce9 fix(bugcollect): 修复 LogService symbolication 日志中的变量名错误
log.info/error 中误用 issueId,改为 eventId,修复编译错误。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 17:03:33 +08:00
XuqmGroup
4acec019f7 feat(bugcollect): buildId 支持相同版本多包 sourcemap 与精确符号化
- V6 迁移:log_sourcemaps 新增 build_id 列,唯一键改为
  (app_key, platform, app_version, build_id, bundle_name);
  log_issue_events 新增 build_id 列
- SourcemapService: 按 buildId 精确匹配,找不到时回退到最新上传
  (findFirstByUploadedAtDesc);存储路径包含 buildId 目录
- LogService: 修复 symbolication 事件查找 bug(原使用 issueId 查
  event 表,现改为 eventId);事件保存后取返回值获取正确 ID
- LogController/DTO: upload 接口新增可选 buildId 参数;事件批量
  上报 DTO 新增 buildId 字段
- tenant-service: 补充 bugcollect-api-url 配置项

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 16:49:38 +08:00
Jenkins CI
331343e51e ci: bump xuqm-bugcollect-service=1.0.9 [skip ci] 2026-06-19 19:42:28 +08:00
Jenkins CI
31501ec34c ci: bump xuqm-bugcollect-service=1.0.8 [skip ci] 2026-06-19 03:07:52 +08:00
XuqmGroup
dea5038de2 feat: bugcollect 添加 Sourcemap 列表 API
- 新增 GET /bugcollect/v1/sourcemaps 端点
- SourcemapService 新增 listByAppKey 方法
- 新增 SourcemapInfo DTO
- LogSourcemapRepository 新增 findByAppKey 查询

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 03:01:54 +08:00
XuqmGroup
a8ad342336 feat: 集成符号化服务 - 实现 triggerSymbolicationAsync
- 注入 SourcemapService 到 LogService
- 实现 triggerSymbolicationAsync 调用符号化服务
- 支持 RN/Android/iOS/Flutter 堆栈符号化
- 新增 symbolicator.url 配置

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 02:50:56 +08:00
Jenkins CI
064e3e3223 ci: bump xuqm-bugcollect-service=1.0.7 [skip ci] 2026-06-19 01:45:07 +08:00
Jenkins CI
8abcb0e77d ci: bump versions [xuqm-bugcollect-service=1.0.6] [skip ci] 2026-06-19 01:38:42 +08:00
XuqmGroup
f5019d11e8 fix: 修复 IssueResponse 构造函数缺少 type 参数
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 01:35:35 +08:00
Jenkins CI
462b983e55 ci: bump versions [update-service=1.0.1] [skip ci] 2026-06-19 01:32:00 +08:00
XuqmGroup
5b1e04b6d1 feat: update-service 签名验证 + bugcollect 统计图表 API + 修复字段映射
- update-service: 集成 AppSignatureAuthFilter 签名验证
- update-service: 添加 TenantAppSecretResolver
- bugcollect: 新增 /statistics 统计 API 端点
- bugcollect: 修复 OverviewResponse 字段名(crashRateTrend/topIssues/crashRate)
- bugcollect: 修复 IssueResponse 添加 type 字段
- bugcollect: 修复 affectedUsers 语义(从 openIssues 改为真正的受影响用户数)
- bugcollect: 新增 StatisticsResponse DTO
- bugcollect: LogIssueRepository 新增统计查询方法

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 01:26:36 +08:00
Jenkins CI
0871d5cfab ci: bump versions [xuqm-bugcollect-service=1.0.5] [skip ci] 2026-06-19 00:54:33 +08:00
XuqmGroup
e551fb3cb2 revert: 恢复 bugcollect controller 路径为 /bugcollect/v1(公有化兼容) 2026-06-19 00:46:31 +08:00