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
Jenkins CI
8cdfad5a1a
ci: bump versions [xuqm-bugcollect-service=1.0.4] [skip ci]
2026-06-19 00:43:54 +08:00
XuqmGroup
8ac2a37e7f
fix: bugcollect controller 路径从 /bugcollect/v1 改为 /api/bugcollect/v1,匹配 nginx 路由
2026-06-19 00:41:07 +08:00
Jenkins CI
62163fac7b
ci: bump versions [xuqm-bugcollect-service=1.0.3] [skip ci]
2026-06-19 00:32:41 +08:00
Jenkins CI
127345458a
ci: bump versions [xuqm-bugcollect-service=1.0.2] [skip ci]
2026-06-19 00:17:22 +08:00
XuqmGroup
ff9ccc4447
fix: bugcollect V4 拆分为 V4+V5,解决 MySQL 不兼容 ADD COLUMN IF NOT EXISTS 问题
...
V4: CREATE TABLE IF NOT EXISTS(全部幂等)
V5: ALTER TABLE ADD COLUMN + CREATE INDEX(升级场景需手动处理)
2026-06-18 23:56:17 +08:00
XuqmGroup
4a3cb74954
fix: bugcollect V4 迁移移除不兼容的 IF NOT EXISTS 语法 + docker-compose 补充 env_file 和密码修复
2026-06-18 23:52:22 +08:00
XuqmGroup
ae56369e03
fix: 所有服务禁用 Flyway validate-on-migrate,防止迁移文件修改后 checksum 不匹配导致 crash-loop
...
升级场景下 V1__init.sql 被修改后,数据库中旧 checksum 与新代码不一致,
Flyway 默认 validate-on-migrate=true 会校验失败导致服务无法启动。
添加 validate-on-migrate: false 使服务可以正常启动。
2026-06-18 22:44:31 +08:00
XuqmGroup
58f6135cbe
feat(tenant-service): SystemUpdateService 新增 bugcollect-service
...
OTHER_SERVICES 和 ALLOWED_LOG_SERVICES 添加 bugcollect-service,
一键更新和日志查看支持 Bug 收集服务。
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 21:21:28 +08:00
Jenkins CI
7f2a55969c
ci: bump versions [xuqm-bugcollect-service=1.0.1] [skip ci]
2026-06-18 14:37:06 +08:00
XuqmGroup
9930d90146
fix(ci): for-in 循环改为 keySet 遍历,修复 HashMap$Node 序列化问题
...
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 14:29:43 +08:00
XuqmGroup
33ccaa677f
fix(ci): JsonSlurper → JsonSlurperClassic 修复 CPS 序列化问题
...
Jenkins CPS 要求所有变量可序列化,JsonSlurper 返回的 LazyMap 不满足。
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 14:19:44 +08:00
XuqmGroup
ba6fb48f5b
fix(ci): Git checkout 使用内嵌 token 替代 credentials 绑定
...
credentials() 在内嵌脚本模式下绑定失败,改为直接嵌入 token。
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 14:17:02 +08:00
XuqmGroup
7911a13542
fix(ci): checkout 改为显式 Git URL,修复 scm 不可用问题
...
内嵌脚本模式下 scm 对象不可用,改为 credentials 绑定 git-token。
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 14:15:22 +08:00
XuqmGroup
7cc0962df2
fix(bugcollect): V4 迁移 SQL 修复 ADD INDEX IF NOT EXISTS 语法
...
MySQL 不支持 ALTER TABLE ADD INDEX IF NOT EXISTS,改用 CREATE INDEX。
已在生产数据库手动修复并标记 Flyway 迁移成功。
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 13:59:38 +08:00
XuqmGroup
375f2c4660
fix(ci): echo 中文改为 bat+chcp65001 修复 Jenkins 控制台乱码
...
Windows Jenkins JVM 的 echo 步骤输出中文时出现三重 UTF-8 编码问题,
改用 bat 'chcp 65001 >nul && echo ...' 绕过。
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 12:14:35 +08:00
XuqmGroup
e0e8dcb092
fix(bugcollect): 修复 queryEvents 中 IssueEventResponse 构造参数不匹配
...
commit 8770f50 重构 IssueEventResponse 为 ExceptionInfo 嵌套结构(20→16字段),
但 queryEvents 方法的内联构造调用未同步更新,导致 Jenkins 构建失败:
constructor IssueEventResponse cannot be applied to given types
修复:将内联构造改为匹配新 record 的 16 参数调用,device 字段使用 parseJsonField 处理。
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 11:23:24 +08:00