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
|
4ffb7c0071
|
perf: 为 /uploads 静态资源添加缓存控制
- 设置 Cache-Control: public, max-age=3600 (缓存 1 小时)
- 减少 logo、favicon 等上传文件的重复请求
|
2026-05-07 14:04:20 +08:00 |
|
admin
|
f290b81700
|
perf: 优化 Dashboard 接口性能,并行执行数据库查询
- 使用 goroutine 并行执行 8 个数据库查询
- 将串行查询改为并行,显著减少响应时间
- 使用 sync.WaitGroup 和 sync.Mutex 保证线程安全
|
2026-05-07 13:58:28 +08:00 |
|
admin
|
8811511ff8
|
refactor: 删除未实现的 call-function API
- 该功能与 dynamic-code/:key/execute 重复
- 保持代码整洁,移除无用代码
|
2026-05-07 13:22:43 +08:00 |
|
admin
|
6bdffcd90f
|
fix: 云端函数区分当前用户和目标用户
- user 始终为当前登录用户(从 token 获取)
- 新增 targetUser 变量,当请求参数指定 user_id 时注入
- 同时注入 targetSubscription、targetUserVariables、targetDevices
|
2026-05-07 13:15:23 +08:00 |
|
admin
|
551eff2f60
|
fix: 云端函数默认注入当前登录用户信息
- 当请求参数未指定 user_id 时,使用 token 中的用户 ID
- 确保 user、subscription、devices 等变量始终有值
|
2026-05-07 13:13:18 +08:00 |
|
admin
|
e019f6a55c
|
fix: 移除云端函数HTTP客户端硬编码代理
- 将硬编码的代理地址改为从环境变量读取
- 使用 http.ProxyFromEnvironment 让代理配置更灵活
- 服务器环境不设置代理环境变量即可直连
|
2026-05-07 12:39:33 +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
|
92813fde49
|
fix: 修复Alpine上MIME类型检测失败
- fallbackMimeTypes 硬编码映射优先,不依赖系统 mime.types
- Docker 镜像安装 mailcap 包提供 /etc/mime.types
- 移除不可靠的 mime.AddExtensionType 方案
|
2026-05-05 19:58:56 +08:00 |
|
admin
|
6c99256e71
|
fix: 修复gzip中间件ERR_INCOMPLETE_CHUNKED_ENCODING
- 首次Write时删除Content-Length头(压缩后大小不同)
- 非压缩类型直接透传,不经过gzip writer
- 移除有问题的noopWriter方案
|
2026-05-05 14:58:47 +08:00 |
|
admin
|
d584b578f1
|
perf: 优化前端加载速度
- 改用 mime 标准库替代硬编码 MIME 类型(更优雅)
- 全局 gzip 中间件替代手动压缩(覆盖所有响应)
- ECharts 改为动态 import,首屏不再加载 1.1MB
- manualChunks 拆分 vue-vendor/ui-vendor 减小主包
- 首屏 gzip 体积从 544KB 降至 236KB(减少 57%)
|
2026-05-05 13:18:40 +08:00 |
|
admin
|
bc30afe106
|
perf: 添加gzip压缩提升前端资源加载速度
- 对JS/CSS/HTML/JSON/SVG等文本资源启用gzip压缩
- 传输体积可减少70-80%,大幅提升页面加载速度
- 图片和字体等已压缩格式不重复压缩
|
2026-05-05 12:15:46 +08:00 |
|
admin
|
bb802e765c
|
fix: 用硬编码MIME映射替代mime.TypeByExtension
- Alpine镜像缺少/etc/mime.types导致TypeByExtension不可靠
- 使用getContentType函数硬编码常见Web文件MIME类型
- 不再依赖系统环境,确保所有平台行为一致
|
2026-05-05 04:12:12 +08:00 |
|
admin
|
a1e3306fc7
|
fix: 注册MIME类型解决Alpine镜像js文件返回octet-stream的问题
- mime.TypeByExtension在Alpine精简环境中缺少.js等MIME映射
- 使用mime.AddExtensionType在启动时注册常见Web文件类型
|
2026-05-05 03:28:23 +08:00 |
|
admin
|
9253cb23bf
|
fix: 从源头解决下划线文件名问题并优化代码
- Vite配置chunkFileNames去除开头的下划线,避免Go embed/http.FS过滤
- 使用mime.TypeByExtension自动推断Content-Type,替代手动映射
- 移除调试日志(文件列表、全局中间件打印)
|
2026-05-05 02:21:13 +08:00 |
|
admin
|
25fc6e89f7
|
fix: 修复http.FS过滤下划线开头文件导致404的问题
- 使用fs.ReadFile直接读取文件内容替代c.FileFromFS
- http.FileServer/http.FS默认过滤以_开头的文件
- 手动设置Content-Type确保正确的MIME类型
- 移除不再需要的net/http导入
|
2026-05-05 00:44:54 +08:00 |
|
admin
|
13472e56ef
|
debug: 添加嵌入文件系统调试日志
- 启动时列出所有嵌入的assets文件
- 请求assets文件时添加文件查找日志
|
2026-05-04 23:33:19 +08:00 |
|
admin
|
c543b80df1
|
fix: 修复Go embed排除下划线开头文件的问题
- 使用all:前缀确保嵌入所有文件,包括以_开头的文件
- Vite生成的chunk文件名如_id_-0eu8SYUT.js以_开头
- Go的embed指令默认排除_开头的文件,导致这些资源404
|
2026-05-04 21:14:21 +08:00 |
|
admin
|
e229e31079
|
fix: 修复assets文件路径拼接错误
- Gin的*filepath参数包含开头的/,需要去除
- 修复路径拼接导致的双斜杠问题
- 移除自动刷新逻辑,这不是正确的解决方案
|
2026-05-04 16:23:26 +08:00 |
|
admin
|
337ddf6bb4
|
fix: URL解码处理和移除BOM字符
- 添加assets文件路径的URL解码处理,支持特殊字符
- 添加NoRoute处理器的URL解码
- 移除dashboard.go文件中的BOM字符
- 添加Vite构建配置确保文件名格式正确
|
2026-05-04 16:06:46 +08:00 |
|
admin
|
44d65f1fbc
|
fix: 修复assets文件路径错误
- 修复通配符参数filepath只包含assets/后面的部分的问题
- 正确拼接assets/前缀以查找嵌入的静态资源文件
|
2026-05-04 14:38:46 +08:00 |
|
admin
|
16af684a32
|
fix: 资源加载失败时自动刷新页面
- 添加路由错误处理,当动态导入模块失败时自动刷新页面
- 修复 assets 文件不存在时返回 404 错误
|
2026-05-04 10:54:31 +08:00 |
|
admin
|
9937fbbae2
|
fix: 安装完成后清除旧的token和user数据
- 修复安装完成后点击前往登录时,旧的token导致直接跳转到后台的问题
- 安装完成后清除localStorage中的token和user数据
- 移除调试日志
|
2026-05-04 09:43:03 +08:00 |
|
admin
|
eb6b7d84f9
|
debug: 添加JWT密钥调试日志
|
2026-05-04 09:40:18 +08:00 |
|
admin
|
7ab899b44f
|
fix: JWT密钥YAML格式和401错误处理
- 修复JWT密钥在YAML配置文件中未加引号导致解析错误的问题
- 添加dashboard页面401错误处理,自动清除token并跳转登录页
|
2026-05-04 09:12:50 +08:00 |
|
admin
|
9262d066bb
|
fix: JWT密钥同步、地图初始化时序、API中间件错误处理
- 修复安装完成后JWT密钥未同步到viper内存的问题
- 修复地图在loading状态时DOM元素不存在导致的初始化错误
- 修复AppCryptoMiddleware中数据库错误时未正确返回错误响应的问题
- 添加数据库未初始化检查
- 移除调试日志输出
|
2026-05-04 02:22:23 +08:00 |
|
admin
|
a950acb2d6
|
fix: index.html禁用缓存,assets启用长期缓存
- index.html: Cache-Control: no-cache,防止浏览器缓存旧版本
- assets: Cache-Control: max-age=31536000,1年强缓存
|
2026-05-03 20:16:11 +08:00 |
|