XuqmGroup
b7980ade1c
fix(update): decouple optional mail health
2026-07-28 22:04:30 +08:00
XuqmGroup
a86b753508
fix(update): make store migration production-safe
2026-07-28 21:50:28 +08:00
Jenkins CI
0910cfab12
ci: bump versions [update-service=1.0.7] [skip ci]
2026-07-28 21:40:01 +08:00
Jenkins CI
079afd62df
ci: bump versions [tenant-service=1.0.15] [skip ci]
2026-07-28 21:33:45 +08:00
XuqmGroup
3a48de3417
feat(bugcollect): add ingestion backpressure
2026-07-28 20:41:05 +08:00
XuqmGroup
228c87f5da
refactor(security): remove client-embedded app secret
2026-07-28 20:12:27 +08:00
XuqmGroup
f96a27facc
feat(update): add official store monitoring domain
2026-07-28 19:53:15 +08:00
XuqmGroup
1665dbc735
docs: record final license cleanup validation
2026-07-27 13:43:43 +08:00
XuqmGroup
a2b1fafc1f
refactor: remove obsolete license table preservation
2026-07-27 13:32:19 +08:00
XuqmGroup
f643945e7c
docs: record server verification pipeline
2026-07-27 13:05:53 +08:00
XuqmGroup
6dd3f26904
ci: skip production input for verification builds
2026-07-27 13:04:21 +08:00
XuqmGroup
26dbe8f1de
ci: support Windows SSH credential binding
2026-07-27 12:58:29 +08:00
XuqmGroup
3d696d10d2
build: make server verification self-contained
2026-07-27 12:49:46 +08:00
XuqmGroup
e593a70a59
ci: move server Git operations to SSH credentials
2026-07-27 12:35:41 +08:00
Jenkins CI
c68575dded
ci: bump versions [tenant-service=1.0.14] [skip ci]
2026-07-27 10:48:16 +08:00
XuqmGroup
297a94a3e4
fix(tenant): select update config client constructor
2026-07-27 10:46:08 +08:00
Jenkins CI
d226936d78
ci: bump versions [update-service=1.0.6] [skip ci]
2026-07-27 10:22:40 +08:00
Jenkins CI
6733f9e3f9
ci: bump xuqm-bugcollect-service=1.0.21 [skip ci]
2026-07-27 10:12:46 +08:00
Jenkins CI
a22000a93f
ci: bump versions [tenant-service=1.0.13] [skip ci]
2026-07-27 10:12:22 +08:00
Jenkins CI
6c019de131
ci: bump versions [tenant-service=1.0.12] [skip ci]
2026-07-27 10:02:33 +08:00
Jenkins CI
e085ada793
ci: bump xuqm-bugcollect-service=1.0.20 [skip ci]
2026-07-27 10:01:20 +08:00
XuqmGroup
659ce4ab61
style(config): normalize migration file
2026-07-27 09:59:59 +08:00
XuqmGroup
061b9a53e7
feat(update): implement signed RN release sets
2026-07-27 09:58:25 +08:00
XuqmGroup
c51cdd46f4
feat(platform): implement signed sdk config and artifacts
2026-07-27 09:58:25 +08:00
Jenkins CI
ea68030903
ci: bump versions [push-service=1.0.12] [skip ci]
2026-07-13 17:18:06 +08:00
XuqmGroup
2df5b10d38
fix(file): 解决文件下载和时间戳处理问题
...
- 实现文件名扩展名推断逻辑,从URL路径自动提取并添加扩展名
- 添加下载错误处理和日志记录功能
- 在下载失败时显示错误通知而非成功通知
- 将服务器时间戳处理统一调整为CST(亚洲/上海)时区
- 更新sdk-core版本号至1.1.6-SNAPSHOT
2026-07-13 17:17:47 +08:00
XuqmGroup
b20bb12091
fix(push): add OPPO delivery diagnostics
2026-07-13 17:14:52 +08:00
Jenkins CI
71975e8b7c
ci: bump versions [push-service=1.0.11] [skip ci]
2026-07-13 16:45:56 +08:00
XuqmGroup
dfd7fdeb6b
fix(push): normalize OPPO action parameters
2026-07-13 16:44:25 +08:00
Jenkins CI
fd94a3c499
ci: bump versions [push-service=1.0.10] [skip ci]
2026-07-13 16:39:43 +08:00
XuqmGroup
d18d3f8c57
fix(push): implement OPPO server API protocol
2026-07-13 16:37:12 +08:00
Jenkins CI
e655ab9fd4
ci: bump versions [tenant-service=1.0.11] [skip ci]
2026-07-13 16:27:35 +08:00
XuqmGroup
37a34aad11
fix(push): keep OPPO master secret server-side
2026-07-13 16:24:28 +08:00
Jenkins CI
7de609a6b8
ci: bump versions [tenant-service=1.0.10] [skip ci]
2026-07-04 03:20:42 +08:00
XuqmGroup
2937fb7cfb
fix(tenant-service): 私有部署"一键更新"因异步请求超时半途失败
...
一键更新/重置接口用 StreamingResponseBody 长连接执行 docker pull + 重建容器,
docker pull 大镜像耗时经常超过 Tomcat 默认 30s 异步超时,导致处理线程被
InterruptedException 中断,更新流程半途而废(例如 pull tenant-web 卡住后
整个流程直接失败退出)。禁用该接口所在服务的异步请求超时。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 03:18:44 +08:00
Jenkins CI
cee8d8ba61
ci: bump versions [file-service=1.0.5] [skip ci]
2026-07-04 02:50:14 +08:00
XuqmGroup
e34ef26d73
feat(update-service,file-service): 下载页对已丢失的历史APK显示"无法下载"
...
新增 file-service GET /api/file/{hash}/exists 轻量存在性检查(不读取文件内容),
下载页为每个历史版本调用该接口确认文件是否真实存在;若已丢失(如本次修复之前
就已被 30 天回收任务误删),不再展示会 404 的下载按钮,改为显示"无法下载"提示。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 02:47:50 +08:00
Jenkins CI
25e39386d9
ci: bump versions [file-service=1.0.4] [skip ci]
2026-07-04 02:41:11 +08:00
Jenkins CI
319804d7de
ci: bump versions [update-service=1.0.5] [skip ci]
2026-07-04 02:40:54 +08:00
XuqmGroup
9be2e71b82
feat(update-service,file-service): 按占用空间阈值清理历史APK,下载页兼容"从未点击发布"的真实数据
...
- 下载页/公开接口重新定义"曾上架":不再要求内部 PublishStatus=PUBLISHED,
实际生产数据显示大多数租户只提交应用商店从不点击"发布",现改为
PublishStatus 已发布 或 任一厂商 storeReviewStatus 显示 liveOnStore
- 新增 file-service DELETE /api/file/{hash}(X-Internal-Token 保护,销毁性操作不能像
pin/GET 一样完全公开)
- 新增 ApkRetentionService:按 appKey 分组,从最新版本往回累加安装包大小,
超过阈值(默认 5GB,可通过发布配置 JSON 里 apkRetentionMaxTotalSizeMb 按应用覆盖)
即清理更旧版本的安装包,但永远保留最新版本
- AppVersionEntity 新增 fileSize 字段,上传时记录(本地存储路径直接取
MultipartFile.getSize(),file-service 路径由前端一并上传时的 size 回传)
- 新增每日 02:00 自动重新 pin 所有历史 APK 的兜底任务,保护本次修复之前已上传、
尚未被 pin 保护的历史版本
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 02:38:35 +08:00
Jenkins CI
acad056e55
ci: bump versions [file-service=1.0.3] [skip ci]
2026-07-04 02:20:15 +08:00
XuqmGroup
00fb02dff4
fix(file-service): add Flyway migration for pinned column, fix production crash
...
file-service uses ddl-auto=validate (Flyway-managed schema), not auto-DDL — the
previous commit added a pinned field to FileEntity with no matching migration,
so Hibernate schema validation failed at startup and crash-looped the service
in production. Add V2__add_pinned.sql to actually create the column.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 02:18:48 +08:00
Jenkins CI
efc12762e0
ci: bump versions [file-service=1.0.2] [skip ci]
2026-07-04 02:15:32 +08:00
XuqmGroup
eb0e3a1877
fix(file-service,update-service): APK 下载 500、文件被误回收;下载页支持历史版本
...
file-service:
- 新增 GlobalExceptionHandler(此前完全缺失,任何异常都变成裸 500,包括文件不存在)
- 修复 Content-Disposition 文件名未按 RFC 5987 编码,中文应用名会导致下载响应异常
- 新增 pinned 标记 + POST /api/file/{hash}/pin,30 天未访问自动回收任务不再误删仍被引用的文件
update-service:
- 上传 APK 到 file-service 后自动调用 pin,防止已发布版本的安装包被回收站清理
- PublicDownloadController 返回 Android 全部曾发布版本(PUBLISHED+DEPRECATED)历史列表,而非仅最新版本
tenant-platform:
- 下载页展示历史版本列表,支持下载任意历史 APK
- 版本管理页新增"复制对外下载页链接"入口,便于管理员查找/分享
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 02:12:55 +08:00
Jenkins CI
d9b87237a2
ci: bump versions [update-service=1.0.4] [skip ci]
2026-07-04 01:55:41 +08:00
XuqmGroup
7db07cc5fc
fix(update-service): OPPO 商店状态字段读取修复、避免重复审核通知,新增默认更新说明与公开下载接口
...
- 修复 OPPO 状态查询读取 snake_case 字段名(version_code/version_name),解决版本已上线仍显示"审核中"
- 手动刷新厂商状态时若已是干净的 APPROVED+live 状态则跳过重复通知,避免重复发送【应用审核通知】
- 各厂商提交分支统一走 effectiveChangeLog(),更新说明为空时兜底默认文案
- 新增 GET /api/v1/updates/public/download-info 公开接口,支撑新的应用下载页
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 01:50:42 +08:00
Jenkins CI
032dd4be61
ci: bump versions [update-service=1.0.3] [skip ci]
2026-07-02 19:38:01 +08:00
XuqmGroup
8c0bcef237
fix: update store state to APPROVED when app is live even if version code doesn't match exactly
...
- When polled state is ONLINE but version codes don't match, still mark as APPROVED with nonCurrentRelease=true
- Prevents state getting stuck at UNDER_REVIEW when Huawei shows the app is already live
- Fixes issue where Huawei app is live but system still shows '审核中'
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-02 19:34:28 +08:00
Jenkins CI
a023e7faab
ci: bump versions [update-service=1.0.2] [skip ci]
2026-07-02 18:59:46 +08:00
XuqmGroup
a6da4f3560
fix: prevent duplicate store submissions by adding SUBMITTING state guard
...
- Add SUBMITTING to skip guard in executeSubmitAsync to prevent concurrent uploads
- Add getSubmittingStores() public method to check SUBMITTING state
- Add controller-level check to reject submissions when stores are already uploading
- Prevents VIVO/Honor 'app is under review' errors from duplicate uploads
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-02 18:56:33 +08:00