XuqmGroup
655c5bc598
web: decouple license file download from license service status
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 17:57:01 +08:00
XuqmGroup
e965c012e6
feat(security-center): add reset container operation alongside update
...
- system.ts: extract streamOperation helper; add streamSystemReset export
- SecurityCenterView: replace single update button with update/reset descriptions table; shared dialog driven by operationType ref
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 15:33:35 +08:00
XuqmGroup
d0b7a51c2c
fix(version): 修复版本管理中文件删除按钮文本显示问题
...
- 删除按钮文本从"删除重新上传"改为"删除"
- 保持原有的删除功能不变
- 优化界面文本简洁性
2026-05-21 18:39:34 +08:00
XuqmGroup
7465ee9b65
fix(version): 修复应用包上传文件为空时的处理逻辑
...
- 添加文件存在性检查避免空值传递
- 调整代码顺序确保正确的执行流程
- 防止因空文件导致的应用包检测异常
- 优化上传表单的数据初始化逻辑
2026-05-21 18:31:21 +08:00
XuqmGroup
293df1f821
fix(update): 修复版本列表排序并改进Android包上传功能
...
- 将版本查询排序从versionCode改为createdAt以正确显示最新版本
- 为Android包上传表单添加已上传文件显示区域
- 实现删除已上传文件的功能以便重新上传
- 添加上传组件引用以支持文件清除操作
- 增加Document和Delete图标导入用于文件管理界面
- 添加已上传文件信息的样式和布局支持
2026-05-21 18:20:06 +08:00
XuqmGroup
f3c58866df
feat(license): 支持在租户平台修改 License 过期时间
...
描述详情框中的过期时间行增加内联日期选择器,与最大设备数保持
相同的行内编辑交互,支持设置具体日期或留空(永久有效)。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:24:39 +08:00
XuqmGroup
c4373c8cc1
feat: 全平台时间显示统一为北京时间 (Asia/Shanghai)
...
新增 formatTime 工具函数,强制使用 Asia/Shanghai 时区,
替换两个平台所有视图中裸 toLocaleString('zh-CN') 调用。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:09:55 +08:00
XuqmGroup
2b7857a820
fix(app-detail): License 文件下载行简化为纯下载按钮
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 15:31:53 +08:00
XuqmGroup
3c98850a36
feat(app-detail): 下载 license 文件移至应用信息卡片,附 SDK 接入引导
...
- 授权管理页不再显示下载入口
- 应用信息卡片新增 "SDK 接入文件" 行(LICENSE 开通后可见),
包含下载按钮和 autoInitialize 使用说明
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 15:25:17 +08:00
XuqmGroup
ef0876fc5d
feat(security): 一键更新 UI + 私有/公有化条件渲染
...
- 安全中心按部署模式条件显示:PRIVATE 显示更新卡片,PUBLIC 显示迁移卡片
- 新增 api/system.ts:getDeploymentStatus + streamSystemUpdate(流式日志)
- 更新进度用暗色终端风格日志框展示,自动滚动到底部
- RESTART_SELF 事件后轮询服务恢复,最长等待 90s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 14:47:10 +08:00
XuqmGroup
66129cb89d
feat(license): 租户平台新增最大设备数编辑,ops 彻底移除 license 管理入口
...
ops-platform:
- AppDetailView: 移除整个 License 授权管理卡片(含设备数查看和 maxDevices 编辑)
- ops.ts: 移除 LicenseStatusInfo 类型、getAppLicense / updateMaxDevices API
tenant-platform:
- license.ts: 新增 updateAppLicense() 调用 PATCH /api/license/admin/apps/{appKey}
- LicenseManagementView: 「最大设备数」旁新增「修改」按钮,
弹出行内 InputNumber 编辑,保存后刷新显示
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 12:47:03 +08:00
XuqmGroup
290a6999fe
feat(deploy): 完成私有化部署全流程验收
...
- 更新部署进度文档,标记P5-02/P5-03为已完成状态
- 修复中文乱码问题,MySQL数据层使用UNHEX函数配合nginx字符集设置
- 配置im-service和update-service的内部服务URL,从127.0.0.1改为Docker服务名
- 实现全功能验收,nginx为所有服务添加路由映射并返回正确的状态码
- 创建私有化部署默认信息文档,记录完整的部署配置和访问地址
- 添加部署清理脚本clean.sh,支持一键清理容器、配置和数据目录
- 更新敏感配置模板,添加详细的密码和密钥配置说明
- 优化前端实时消息轮询机制,通过WebSocket心跳检测决定是否启用HTTP轮询回退
2026-05-19 19:23:28 +08:00
XuqmGroup
3900d25d51
feat(tenant-platform): migration key UI + app market publish options
...
- Add migrate API client (request-code / generate-key)
- SecurityCenterView: 私有化部署迁移 card with email verify → one-time key dialog
- VersionManagementView: remove preflight check dialog; open submit directly
- VersionManagementView: replace 手动上架/审核后自动/定时 with 立即上架/计划上架 only
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 15:12:56 +08:00
XuqmGroup
b6f2aedc70
docs(private): 更新私有化SDK设计文档添加配置管理和错误码规范
...
- Flutter包名格式从xuqm_private_flutter_*改为xuqm_private_*
- 添加configVersion字段用于追踪配置变更,格式为YYYY.MM.DD-序号
- 添加配置版本管理说明,包含schemaVersion兼容性策略
- 添加配置热更新机制,支持冷加载和热加载两种方式
- 添加多环境配置支持,可通过activeProfile指定生效环境
- 添加统一错误码规范,覆盖配置缺失、格式错误、版本不兼容等场景
- 更新验收标准,包含热更新、多环境切换、错误码一致性要求
- 添加私有化开发计划中的错误码规范、文档同步、数据迁移等任务
- 补充MySQL运维细节、证书自动续期、监控告警、日志收集等部署要求
- 添加性能基准指标,包含HTTP API、WebSocket、文件传输等性能要求
- 修复应用商店审核状态轮询中的逻辑错误,添加小米商店特殊处理
- 更新前端界面显示审核版本信息,优化状态刷新逻辑
2026-05-18 19:17:44 +08:00
XuqmGroup
a1e4d5741b
docs(private): 完善私有化部署开发计划和设计规范
...
- 增加实时进度和交接规则,定义任务状态枚举和更新格式
- 创建任务进度台账,涵盖P0-P5阶段全部开发任务
- 补充部署仓库交付边界确认和进度审计规范
- 完善MySQL/Redis双模式支持,增加external/managed选项
- 增加离线部署、安全治理、可观测性等完整交付能力
- 更新仓库结构设计,增加secrets.env、observability、data目录
- 补充健康检查、诊断脚本、升级回滚、备份恢复详细要求
- 优化应用商店审核状态查询逻辑,增加手动刷新接口
- 修复小米和VIVO商店状态查询中的版本匹配逻辑错误
- 增加缓存键版本隔离,防止不同版本状态混淆
- 优化厂商API连通性检查和审核状态轮询机制
2026-05-18 19:00:38 +08:00
XuqmGroup
b77ccc663a
feat(private-deploy): 支持 MySQL/Redis 外部连接和托管模式部署
...
- 添加 external 和 managed 两种数据库/缓存模式支持
- 实现 MySQL/Redis 托管安装脚本和配置向导
- 支持客户自备连接或部署脚本新建基础设施
- 更新部署文档说明不同模式的配置和验证要求
- 添加应用版本防重复上传和删除功能
- 实现应用商店预提交检查和发布计划功能
2026-05-18 18:37:10 +08:00
XuqmGroup
d08a6fd16a
fix(update): remove confusing '直接上传' badge from store review card
...
The badge was not meaningful to users who just need to know if the
version is live on the store. Removed it — the '已上线' state label is
sufficient.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 17:53:16 +08:00
XuqmGroup
1310488835
feat(update): show 已上线 state and pre-existing badge for store review
...
- reviewLabel: APPROVED now displays '已上线' instead of '已通过'
- parseStoreReview: extract liveOnStore and preExisting fields from JSON
- Store review dialog card: show '直接上传' badge when preExisting=true,
indicating the version was published directly to the store rather than
via the platform submission flow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 17:30:38 +08:00
XuqmGroup
416783047c
feat(tenant-platform): editable changelog with audit trail in version table
...
Adds an edit button (pencil icon) on each row's changelog cell.
Clicking it opens a dialog pre-filled with the current text; saving
calls PATCH /app/{id}/changelog and refreshes the list and op-log.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 16:48:20 +08:00
XuqmGroup
36deeb218f
remove manual review button; store review is now fully automated via polling
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 12:15:06 +08:00
XuqmGroup
42b1868f54
fix: submit dialog pre-deselects and disables already-reviewing stores
...
- parseStoreReview state shown per store with review tag
- UNDER_REVIEW/APPROVED stores are disabled + labeled "审核进行中,将跳过"
- openSubmitStoreDialog filters them out of default selectedStores
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 15:58:56 +08:00
XuqmGroup
61dd09763a
feat: add app transfer, parallel upload toggle, webhook type config, fix Chinese encoding in JWT
...
- ops-platform: add 一键转移 button and dialog to AppListView; add transferApp API call
- tenant-platform/update: parallel upload toggle in 凭据配置 tab; REVIEW_WEBHOOK notifyType select (钉钉/企微/飞书/自定义); select field support in store config dialog with visibleWhen
- tenant-platform/jwt: fix Chinese garble in right-corner nickname by decoding JWT payload as UTF-8 via TextDecoder instead of raw atob()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 15:34:42 +08:00
XuqmGroup
6b891bee92
feat(tenant-platform): service activation realtime + store review retry
...
- Add IM real-time notification for service activation approval/rejection
(LicenseManagementView, PushManagementView, AppDetailView)
- Add retry button for FAILED and REJECTED stores in version review detail
- Refactor storeReviewRealtime to single shared IM connection
- Bump @xuqm/vue3-sdk to 0.2.3 (fixes sendSync crash when SDK uninitialized)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 14:27:02 +08:00
XuqmGroup
ce05fa4fe3
fix: sync store review detail dialog items when loadAppVersions refreshes table data
2026-05-16 13:28:58 +08:00
Dev
88e5a70d87
feat: 授权管理页面+路由,IM状态30s轮询,移除接入文档,ops去除appKey/平台列,Jenkinsfile固定main分支
2026-05-16 11:31:21 +08:00
XuqmGroup
06436394ed
docs: fix version numbers, add license SDK docs; fix service gating reactivity
...
- Android: correct version header 0.5.x→0.4.x, add sdk-license to module table, update artifact versions to 0.4.10
- iOS: correct min version iOS 14→16, bump version to 0.2.0, update SPM ref to from: "0.2.0"
- RN: fix version 0.3.x→0.2.x, standardize npm registry URL, add @xuqm/rn-license to module table
- Flutter: update git ref to v0.2.2, add xuqm_flutter_license to module tables
- Add new docs: ios/license, rn/push, rn/license, flutter/push, flutter/update, flutter/license
- tenant-platform: make appKey a computed ref in Push/VersionManagementView to fix service gating reactivity on route change
- tenant-platform: add requestActivation API endpoint
- tenant-platform: add IM service gating UI (checkServiceEnabled + activation dialog)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 02:23:57 +08:00
XuqmGroup
c0f9bc1c47
一大波改动
2026-05-15 22:11:03 +08:00
XuqmGroup
c1c80e1a7c
Show app license device list directly
2026-05-15 21:42:17 +08:00
XuqmGroup
690d930a17
Show license device user info
2026-05-15 21:30:09 +08:00
XuqmGroup
02d64f1cb9
Add tenant license management
2026-05-15 21:00:24 +08:00
XuqmGroup
a917932a2d
一大波改动
2026-05-15 16:47:22 +08:00
XuqmGroup
09891bf46e
docs(deploy): 添加完整的部署文档和配置示例
...
- 新增 compose.production.yaml 和 compose.production.server.yaml 部署配置
- 添加 nginx.dev.xuqinmin.com.conf 和 nginx.sentry.xuqinmin.com.conf 反向代理配置
- 创建详细的部署指南文档 deploy/README.md,涵盖架构设计和部署步骤
- 添加前端访问文档 web/README.md,包含线上地址和接口说明
- 补充平台文档总览 README.md,整合各模块文档入口
- 配置多服务容器化部署,包括 tenant-service、im-service、push-service 等
- 设置外部数据库和 Redis 连接配置,确保服务间正确通信
- 配置 WebSocket 和 API 路由转发规则,支持实时通信和版本更新服务
2026-05-09 14:53:43 +08:00
XuqmGroup
168bf4662c
docs(deploy): 添加部署文档和安全设计规范
...
- 新增 XuqmGroup 部署文档,包含部署方案、架构建议和部署步骤
- 添加安全设计规范,涵盖密码安全、AppSecret验证和服务端API认证
- 补充平台REST API规范,定义Server-to-Server调用接口和错误码
- 创建Java IM服务端SDK计划文档,规划Maven包发布和接口实现
2026-05-08 18:32:00 +08:00
XuqmGroup
55826db8c4
feat(update): 添加应用更新检查功能支持用户ID参数
...
- 在UpdateApi接口中新增可选的userId查询参数
- 新增UpdateSDK对象用于统一管理应用更新逻辑
- 实现应用版本检查、下载安装和APK文件处理功能
- 添加下载URL规范化处理逻辑
- 在Flutter SDK中新增update模块实现跨平台更新功能
- 在iOS SDK中新增UpdateSDK类提供应用更新检查接口
- 支持Android和iOS平台的应用商店跳转功能
- 添加React Native SDK的更新检查和插件注册功能
- 实现RN Bundle的检查、下载和缓存机制
2026-05-08 12:00:34 +08:00
XuqmGroup
832d180ff3
feat: add drag upload for rn bundles
2026-05-08 10:25:50 +08:00
XuqmGroup
bcdbf6fcc5
feat: add drag upload for app version dialog
2026-05-08 10:22:39 +08:00
XuqmGroup
775e6c85e8
feat: unify app identity on appKey in platforms
2026-05-08 10:09:22 +08:00
XuqmGroup
6eeea6f268
chore: sync local changes
2026-05-07 19:39:47 +08:00
XuqmGroup
f36d657bba
feat: add quick service entry portal with in-page app switcher
...
- Add sidebar sub-menu for 服务管理 (IM / 离线推送 / 版本管理)
- Service pages load directly with optional appId route param
- Each service page shows a portal bar (app selector) when accessed via /services/* path
- Content is guarded with v-if so empty state shows when no app is selected
- Router-view keyed by path so component re-creates on app switch
- App-level package name split into Android/iOS/HarmonyOS fields
- Push vendor channel config: Xiaomi channelId, Huawei category, vivo category+receiptId, OPPO channelId
- Remove packageName from push vendor config (moved to app-level)
- Format device last-login time in push management view
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 13:53:02 +08:00
XuqmGroup
f24b467308
fix(push-management): 推送管理页改用 appKey 作为路由参数
...
push-service 按 appKey 存储推送 token,租户 app.id(UUID)
与 push-service 数据库字段不匹配,导致查无设备。
与 IM 管理页统一使用 app.appKey。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 08:36:44 +08:00
XuqmGroup
2ac30eb1f3
feat(push-config): 小米推送配置新增 Android 包名字段
...
packageName 字段由租户在推送配置页维护,对应 Xiaomi MiPush
restricted_package_name,服务端凭此正确路由推送。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 08:23:29 +08:00
XuqmGroup
4df6bd0e79
feat(tenant): 推送配置说明与IM多端互踢配置
...
推送服务配置页新增字段说明提示(通道业务键含义、Channel ID 规则、
厂商凭据来源);IM 服务配置页新增"多端登录与互踢"卡片,支持三种
模式选择;app.ts 类型增加 multiDeviceLoginMode 字段。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:16:45 +08:00
XuqmGroup
7b9e955c7e
feat(push): 添加推送管理页面
...
在租户平台「离线推送」卡片中新增「推送管理 →」入口,新增
/apps/:appId/push-management 路由及 PushManagementView 页面。
页面支持按用户 ID 查询设备在线状态与注册设备列表、发送测试
离线推送消息、浏览设备登录日志。同步新增 push.ts API 客户端
及 vite 开发代理对 /api/push 的路由。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-05 23:18:02 +08:00
XuqmGroup
0f57fe3b71
feat(push): 添加推送服务功能支持
...
- 新增推送相关的类型定义,包括消息类型、聊天类型、推送配置等接口
- 实现 HarmonyOS 推送 SDK,集成 HarmonyOS NEXT Push Kit 服务
- 实现 iOS 推送 SDK,支持 APNS 推送注册和消息接收
- 添加服务器端 APNS 推送提供商,支持 JWT 认证和推送消息发送
- 添加服务器端 HarmonyOS 推送提供商基础框架
- 集成推送配置加载和路由功能,支持多渠道推送分类管理
2026-05-05 22:26:32 +08:00
XuqmGroup
edfb3bac2e
feat(push): 添加推送SDK和消息服务实现
...
- 实现了 Android 推送 SDK,支持华为、小米、Oppo、Vivo、荣耀、FCM 等厂商推送
- 添加了推送配置管理和设备注册功能
- 实现了推送令牌管理和用户绑定功能
- 添加了消息发送、撤回、编辑等核心消息服务功能
- 实现了单聊和群聊消息历史记录管理
- 添加了消息读取回执和群组消息状态同步
- 实现了消息过滤、黑名单和权限控制
- 添加了离线消息推送和消息预览功能
- 实现了消息 Webhook 回调机制
2026-05-05 22:16:11 +08:00
XuqmGroup
dcbd833e64
feat(push): 添加多厂商推送集成支持
...
- 实现了华为 HMS 推送服务集成
- 实现了小米推送服务集成
- 实现了 OPPO 推送服务集成
- 实现了 vivo 推送服务集成
- 实现了荣耀推送服务集成
- 实现了 FCM 推送服务集成
- 添加了统一的厂商推送接口和检测机制
- 添加了推送配置 API 和存储管理
- 添加了推送令牌管理和设备注册功能
- 添加了模拟器环境的推送测试用例
2026-05-05 17:54:59 +08:00
XuqmGroup
6ae648507b
feat: 上传对话框平台默认选中当前tab;fix: 大文件上传超时、iOS鸿蒙不显示上传按钮
2026-05-03 11:00:13 +08:00
XuqmGroup
6cd938cfbc
feat(android-sdk): 添加完整的IM客户端SDK实现
...
- 实现了Android SDK的完整IM功能接口,包括消息、群组、好友、会话等核心功能
- 添加了消息收发、历史记录、撤回编辑等完整的消息操作能力
- 实现了群组管理功能,包括创建、成员管理、权限设置等操作
- 添加了好友关系链管理,支持添加、删除、分组等操作
- 实现了会话管理功能,包括置顶、免打扰、已读状态等
- 添加了黑名单、资料管理、搜索等辅助功能
- 补齐了批量操作接口,提升客户端操作效率
- 实现了WebSocket连接管理和事件监听机制
- 添加了离线消息同步和状态管理功能
2026-05-02 22:57:55 +08:00
XuqmGroup
af253f688a
docs: 添加 SDK API 重设计、安全设计规范和测试进度跟踪文档
...
- 新增 SDK API 重设计规范文档,统一各端 SDK 初始化、登录、消息接口
- 新增安全设计规范文档,涵盖密码安全、AppSecret 验证、令牌存储等安全要点
- 新增 Bug 跟踪记录文档,记录已修复问题和开放问题
- 新增测试进度跟踪文档,记录各模块测试覆盖情况和验证结果
2026-05-02 11:45:43 +08:00
XuqmGroup
e5552044ae
docs(deploy): 添加部署文档并更新SDK API设计规范
...
- 新增完整的XuqmGroup部署文档,包含服务器配置、Docker Compose部署策略
- 更新SDK API重设计规范至V2.0,统一各端SDK初始化和登录接口
- 添加安全设计规范文档,涵盖密码安全、AppSecret验证等内容
- 新增离线推送架构设计文档,定义厂商推送集成方案
- 重构SDK登录流程,统一使用userId + userSig鉴权模式
- 移除dbName等外部配置参数,实现零感知平台地址配置
- 完善部署架构图和配置示例文件
2026-05-02 11:29:50 +08:00