Trae AI
4a6fc087c6
fix: 修复应用设置保存时未传字段被覆盖为空值/默认值的问题
2026-06-18 12:38:19 +08:00
admin
5bbae23bca
feat: 用户管理页面添加充值功能
...
- 后端新增 POST /app-users/:id/recharge API
- 前端新增独立的用户充值页面 (/admin/users/:id/recharge)
- 充值页面风格与添加用户/编辑用户页面一致
- 支持选择卡密类型和数量进行充值
- 永久会员显示提示不允许充值
Co-Authored-By: Claude <noreply@anthropic.com >
2026-06-14 11:49:34 +08:00
admin
beae161078
feat: 创建和编辑版本时保存文件列表到数据库
...
- 在 CreateVersionRequest 和 UpdateVersionRequest 中添加 Files 字段
- 创建版本时保存文件列表到 VersionFile 表
- 更新版本时删除旧文件记录并创建新的
- 前端创建和编辑版本时传递文件列表
- 修复检测更新 API 使用正确的字段名 (publish_status=published)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-03 03:07:42 +08:00
admin
ad58d2220e
feat: 添加补丁版本基础版本选择功能
...
- 添加基础版本下拉选择器,仅在补丁更新类型时显示
- 添加应用和更新类型的 watch 监听,自动获取全量版本列表
- 提交时传递 base_version_id 参数
- 添加调试日志便于排查问题
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-02 22:48:22 +08:00
admin
026581ea60
fix: 编辑补丁版本时重新合并生成全量包
...
当编辑版本并更新文件时,如果是补丁包类型,需要重新与基础全量包合并生成新的全量包
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-02 00:02:28 +08:00
admin
c755587a4d
feat: 完善版本管理功能
...
后端改进:
- 新增版本发布状态管理 (draft/published/deprecated/superseded)
- 新增发布/废弃/回滚 API 接口
- 新增增量包生成功能 (仅包含差异文件)
- 新增删除版本时的依赖检查
- 数据库字段: publish_status, superseded_by, delta_package_*
前端改进:
- 版本列表新增发布状态列和增量包大小列
- 新增发布/废弃/回滚操作按钮
- 新增增量包下载功能
- 更新国际化翻译
修复:
- 修复 announcements 页面 typeOptions 未定义问题
- 修复 echarts 模块导入类型问题
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-01 20:31:52 +08:00
admin
c3e44c74da
fix: fallback to FilePath when FullPackagePath is empty
...
When old versions don't have full_package_path set, use file_path instead
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-01 18:32:03 +08:00
admin
93f1e899fc
refactor: simplify to maintain only one latest full package per app
...
- Remove per-version full package storage
- Remove RegenerateDependentVersions logic
- Only generate full package for the latest version
- Simplify package_util.go
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-01 12:58:43 +08:00
admin
a17938c000
feat: regenerate dependent versions after deletion
...
- Add RegenerateFullPackage function to rebuild single version's full package
- Add RegenerateDependentVersions function to handle cascade regeneration
- Call regeneration after deleting versions
- Each version maintains its own full package independently
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-01 12:10:30 +08:00
admin
551f4f1576
feat: auto-generate full package when uploading patch
...
- Add FullPackagePath, FullPackageSize, FullPackageHash to Version model
- When uploading patch, merge with base full package to create new full package
- Check update API returns full package info for download
- Add package_util.go with merge functions
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-01 11:43:58 +08:00
admin
fd98c0dcc4
feat: delete old file when updating version with new file
...
If file_path is different from existing file, remove the old file
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-01 10:09:23 +08:00
admin
8cb867e65b
fix: save file info when updating version
...
- Add file_path, file_size, file_hash, entry_file to UpdateVersionRequest
- Update these fields when saving version changes
- Update originalUploadedData after successful save
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-01 09:25:39 +08:00
admin
0a20892f94
fix: calculate total file size on backend instead of frontend
...
- Backend returns total_size for all matching versions
- Frontend uses backend's total_size instead of computing from current page
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-01 00:11:33 +08:00
admin
53fd9ff7dc
feat: add custom download URL for manual update method
...
- Add custom_download_url field to Version model
- Show custom download URL input when update method is 'manual'
- Use platform default URL if custom URL is not set
- Add i18n translations for new field
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-28 16:06:48 +08:00
admin
853c22fdbe
feat: add balance display, user columns, device mgmt and sessions for agent
...
- Backend: add balance to agent stats API
- Backend: return full user details (balance, expiry, online_status, device_count, application) in agent users API
- Backend: export admin device/session handlers, add agent routes for devices and sessions
- Backend: add card type permission check and balance deduction for agent user creation
- Backend: extract checkAgentUserPermission helper, add user edit API
- Frontend: add balance card to agent dashboard
- Frontend: add application, online_status, device_count, balance, expiry_at columns to agent user table
- Frontend: add agent devices page (reuse admin data-table component)
- Frontend: add agent sessions page (reuse admin data-table component)
- Frontend: add devices and sessions to agent navigation and routes
- Add i18n keys for agent devices, sessions, user columns, dashboard balance
2026-05-11 10:46:29 +08:00
admin
409ec4f75b
修复: 1.管理员编辑代理云端数据权限switch无效(后端缺少CanViewCloudData字段) 2.代理卡密status显示disabledbanned 3.代理用户管理只显示代理/子代理卡密充值过的用户
2026-05-10 14:12:35 +08:00
admin
3cbb607ff3
修复所有分页页面统计从当前页计算的问题,改为服务端统计
2026-05-10 07:04:22 +08:00
admin
f198ae268e
修复admin卡密统计GORM累积条件问题、data-table传递server-pagination
2026-05-10 05:44:16 +08:00
admin
ba7b6015eb
修复管理员卡密管理页面统计数据显示不准确
2026-05-10 04:44:18 +08:00
admin
65fa7146e8
refactor: 拆分更新类型(全量/补丁)和更新方式(自动/手动),移除force_update字段
2026-05-08 23:34:14 +08:00
admin
de0de10b8d
refactor: 移除min_version/base_version_id,后端自动确定基础版本
2026-05-08 23:17:53 +08:00
admin
48ec0f97f7
fix: 状态列根据是否有更新的强制版本判断生效/失效
2026-05-08 22:54:38 +08:00
admin
426290e299
fix: 添加调试日志排查版本更新不生效问题
2026-05-08 21:34:22 +08:00
admin
3b4b0ac1e3
fix: 修复版本更新时字段未正确保存的问题
2026-05-08 21:16:17 +08:00
admin
01ca9e3df1
重构版本状态为动态计算
...
- 状态不再写入数据库,改为查询时动态计算
- 每个应用的最新版 = 有效, 旧版 = 已失效
- 移除后端 status 筛选参数
- 移除前端 status 筛选器
- 移除编辑页的状态手动编辑
- 移除创建版本时自动更新旧版本状态的逻辑
2026-05-08 16:40:02 +08:00
admin
e2ebb6e46e
版本管理全面增强:状态、补丁更新、热更新
...
1. 自动状态管理
- 新增版本自动标记状态:最新版本为'有效',旧版本自动标记为'已失效'
- 前端列表页新增状态列和状态筛选
2. 更新方式升级
- 更新方式从手动/自动改为:手动更新/热更新/完整更新
- 热更新:运行时增量替换文件,无需重启
- 完整更新:下载完整包替换,需重启
3. 补丁更新支持
- 新增 base_version_id 字段支持增量补丁
- 创建版本时可选择基础版本,自动识别为补丁模式
- 补丁模式仅上传变更文件
4. ZIP解析上传(已有功能完善)
- 上传ZIP自动解析文件列表
- 支持选择入口文件
5. 国际化完善
- 中英文新增状态、更新方式等翻译
2026-05-08 16:21:35 +08:00
admin
ecf54d3e3f
修复仪表板用户分布统计:改用AppUser统计用户数而非设备数
2026-05-08 16:06:34 +08:00
admin
5e79955428
修复用户分布地图显示问题
...
- 修改后端返回正确的国家英文名称(China)以匹配世界地图
- 正确计算在线/离线设备数量
- 确保数据一致性:总数 = 在线 + 离线
2026-05-08 15:58:18 +08:00
admin
3a734e6dad
修复控制台首页的两个问题
...
1. 修复用户分布显示问题:
- 后端添加 online 和 offline 字段到用户分布数据
- 确保前端能正确显示在线和离线用户数
2. 修复 ECharts 初始化报错:
- 添加 DOM 元素存在性检查
- 添加异步加载时的卸载检查
- 在重新初始化前清理旧实例
- 防止页面切换时的空指针错误
2026-05-08 15:34:00 +08:00
admin
63cc2f80b3
修复编译错误:添加strings包导入和修复时间类型转换
...
- announcements.go: 添加strings包导入
- devices.go: 添加strings包导入
- cloud.go: 修复CreatedAt时间类型转换为字符串
2026-05-08 15:08:51 +08:00
admin
dde179a896
修复工单、日志、卡密管理页面的分页和筛选功能
...
- 工单管理:后端添加分页和筛选支持(status, priority, type, 日期范围)
- 日志管理:前端使用服务端分页和筛选(后端已支持)
- 卡密管理:前端使用服务端分页和筛选(后端已支持)
- 所有页面移除前端筛选逻辑,改为服务端筛选
- 修复分页总数与筛选数据不匹配的问题
- 添加watch监听筛选条件变化,自动刷新数据
2026-05-08 14:45:38 +08:00
admin
d0ef52ab4f
优化分页和筛选功能:实现服务端分页和筛选,修复总数不匹配问题
...
- 优化设备管理、版本管理、用户管理、在线实例、公告管理页面的分页功能
- 后端添加筛选参数支持(application_id, status, type, search等)
- 前端移除冗余的前端筛选逻辑,改为服务端筛选
- 修复分页总数与筛选数据不匹配的问题
- 优化云端变量记录页面的时间筛选和搜索功能
- 修复DateTimePicker组件关闭后不自动更新的问题
2026-05-08 13:45:21 +08:00
admin
29fb448d04
fix: 优化云端变量记录页面样式,对齐其他表格页面
...
- 移除ID列的font-mono text-xs样式,改用与其他页面一致的truncate样式
- 移除toolbar顶部多余的批量删除按钮,只保留BulkActions组件内的
- 搜索框和日期选择器尺寸对齐其他页面(h-8)
- 日期格式化对齐其他页面(zh-CN格式)
- 动态字段值显示改用truncate+title,替代pre标签
- 移除raw_data调试字段和诊断卡片
2026-05-08 09:31:47 +08:00
admin
375fd46224
fix: 修复云端变量记录data为null的问题
...
- 后端: handleAddRecord增加recordData nil检查,避免存入null
- 后端: 记录读取改用interface{}替代map[string]interface{}解析JSON
- 后端: JSON解析失败时回退返回原始字符串
- 后端: API返回raw_data字段暴露数据库原始数据用于诊断
- 后端: app/cloud.go同步修复同样的JSON解析问题
- 前端: parseRecordData增加raw_data回退解析
- 前端: 添加数据诊断卡片显示原始数据结构
2026-05-08 02:31:15 +08:00
admin
48889a1c90
perf: 优化上传文件缓存策略
...
- 上传新文件时删除同类型旧文件,避免文件堆积
- 文件名带时间戳,每次上传生成新 URL
- 缓存时间设为 1 年 + immutable,文件更新后 URL 变化自动重新请求
2026-05-07 14:12:45 +08:00
admin
f290b81700
perf: 优化 Dashboard 接口性能,并行执行数据库查询
...
- 使用 goroutine 并行执行 8 个数据库查询
- 将串行查询改为并行,显著减少响应时间
- 使用 sync.WaitGroup 和 sync.Mutex 保证线程安全
2026-05-07 13:58:28 +08:00
admin
8c48c002d3
fix: 修复设备列表API的Count查询导致Find失败的问题
2026-05-07 09:39:53 +08:00
admin
64569e305e
fix: 修复授权详情API返回格式,重构授权管理页面表格和批量操作
2026-05-07 02:31:15 +08:00
admin
7a3353ee96
feat: 添加查看授权和编辑授权功能, 代理充值使用 NumberField 组件
2026-05-07 01:34:05 +08:00
admin
a2eccb9818
feat: 添加代理充值功能到代理管理页面, 移除授权管理页面的无效操作
2026-05-07 01:13:09 +08:00
admin
e7e7631fa5
feat: 授权管理改为设置卡类价格,代理管理增加消费列
2026-05-07 00:28:52 +08:00
admin
3cd22fdce1
feat: 重构授权管理为层级模型 - 管理员直接对代理授权应用卡密权限
2026-05-06 22:16:31 +08:00
admin
086c5c6573
perf: 性能优化与错误修复
...
- 修复 N+1 查询: users/devices/agents 批量 GROUP BY 替代循环查询
- 添加分页: cards/finance/agents/devices API
- Redis 初始化根据安装配置 redis.enabled 决定是否连接
- 修复 DefaultVal 解析错误: 使用 sql.NullString 处理 NULL 值
- Dashboard 优化: 替换 ECharts 世界地图为 Chart.js 环形饼图
- 适配前端 cards 页面新 API 响应格式
- 添加数据库索引优化查询性能
- 实现可配置的数据清理定时任务
2026-05-06 19:19:02 +08:00
admin
98986b0eb7
fix: 修复数据库配置和事务一致性问题
...
数据库配置:
- SQLite 开启 WAL 模式,读写可并发
- 设置 busy_timeout=5000ms 避免锁超时
- 设置 synchronous=NORMAL 平衡性能和安全
- SQLite MaxOpenConns 设为 1 避免并发写入冲突
事务修复:
- auth.go: 注册流程(用户+设备+会话)加入事务
- auth.go: 密码重置(修改密码+标记验证码)加入事务
- cards.go: 卡密使用加入事务,补充 UsedAt 字段
- cards.go: 代理商批量生成(扣款+生成卡密)加入事务
- extension.go: 充值(修改余额+记录)加入事务
- extension.go: 扣费(修改余额+记录)加入事务
- storage_config.go: 设置默认存储加入事务
2026-05-06 08:12:04 +08:00
admin
4841920727
perf: 修复 cards.go 和 users.go 中的 N+1 查询问题
...
cards.go:
- 合并循环中的 Count 查询为单次 GROUP BY 查询
users.go:
- 合并 ownApps 循环查询为单次 IN 查询
- 合并 agentApps 循环查询为批量查询
- 减少数据库查询次数从 O(n) 到 O(1)
2026-05-06 08:02:03 +08:00
admin
488b1581e9
perf: 优化dashboard API,41次查询12次
...
- 合并30次循环查询为1次(onlineTrend)
- 使用 GROUP BY DATE() 一次获取所有日期数据
- 在内存中填充缺失日期,避免 N+1 问题
- API 响应时间预计从 1-2s 降至 100-200ms
2026-05-06 07:55:36 +08:00
admin
41fe48e128
feat: 添加安装向导功能
...
- 后端:安装状态检测API、数据库连接测试、配置文件生成
- 后端:支持SQLite/MySQL数据库选择
- 后端:JWT密钥自动生成或手动设置
- 前端:安装向导界面(数据库配置、安全配置、管理员账号)
- 前端:路由守卫检测安装状态,未安装自动跳转安装页面
2026-05-03 11:52:34 +08:00
admin
e71437190b
feat: 添加生产环境docker-compose配置
2026-05-03 11:12:18 +08:00
admin
ecf5690505
feat: 用户创建充值优化、侧边栏导航修复、在线实例统计修复
2026-05-03 06:07:11 +08:00
admin
fa521de836
chore: 清理最近活动(recentActivities)后端接口和前端翻译
2026-05-03 05:09:35 +08:00