1.0.2

1.0.2-202506241106

  • 服务端
    • 零售类 App HTTP API 新增
      • 设备共享列表接口
      • 添加共享接口
    • MQTT API 新增(按新的 MQTT 协议规范新增接口)
      • MQTT 客户端在线状态保活
      • 获取指定 MQTT 客户端在线状态
      • 上报 MQTT 客户端多种分类信息至服务端
      • 获取指定 MQTT 客户端上报至服务端的多种分类信息
      • 获取指定 MQTT 客户端被分配的 ICE 服务器

1.0.2-202505271541

  • Web 客户端
    • LOGO图标显示优化:越南客户定制版存在多项定制需求,LOGO定制是其中之一。客户为此提供了两款LOGO图标,分别适配平台的两种主题。为降低后续其他定制开发的工作量,对主线版本进行改造。改造完成后,若需替换LOGO,仅需更换以下文件:
      • /v2/img/logo-root.png
      • /v2/img/logo-dark.png
      • /favicon.ico: 依据客户提供的 logo-root.png 文件,利用在线工具网站生成新的图标,替换原有的 /favicon.ico 文件
    • BUG 修复:当经纬度与 N(北)、S(南)、E(东)、W(西)组合显示时,不应显示负值。
    • BUG 修复:解决主界面左上角下拉菜单显示不全的问题。
    • BUG 修复:解决主界面左下角版本号显示问题。之前版本号显示存在多余的 v 字符前缀,导致显示效果不佳。例如,当版本号为 vi-1-v1.0.2 时,会显示为 vvi-1-v1.0.2,显得十分不协调。修复后,去除了多余的 v 前缀,使版本号显示更加通用和简洁。

1.0.2-202505231644

  • 服务端
    • IOT 在线状态接口处理:本部分工作聚焦于记录仪设备中 mqtt_client 的在线状态管理。
      • 优化 emqx 的 mqtt 客户端上线与离线通知的原有代码。在原有将设备上 webrtc 程序在线状态存入缓存的基础上,新增对 mqtt_client 在线状态变更的维护,并同步存入缓存。
      • 当多个用于与记录仪设备 mqtt_client 程序交互的 MQTT 接口被调用时,及时将 mqtt_client 的在线状态更新为“在线”,并保存至缓存。
      • MQTT 接口支持批量查询多个设备的 mqtt_client 在线状态。
      • 在多个 http 接口返回的信息中,新增 iot 在线状态字段,以更全面地呈现设备状态。
    • IOT 及 webrtc 版本号接口处理:此部分工作围绕记录仪设备中 mqtt_clientwebrtc 上报的版本号展开。
      • MQTT 接口负责接收记录仪设备 mqtt_clientwebrtc 程序上报的内容(不限于版本号),并将其存入缓存,以满足未来扩展需求。
      • MQTT 接口支持批量查询多个设备 mqtt_clientwebrtc 的相关信息(不限于版本号),只要设备上报的内容均可查询。
  • Web 客户端
    • 优化直播及多屏直播界面中设备列表的定位图标显示逻辑:
      • 若设备定位信息有效,将根据设备的 mqtt_client 程序在线状态显示不同颜色的定位图标。定位信息源于服务端提供的 GPS_INFO 数据,当设备的 mqtt_client 程序处于“在线”状态时,显示绿色定位图标;若为“离线”状态,则显示红色定位图标。
      • 若设备定位信息无效,不显示定位图标。
    • Device running information 界面进行改进,旨在排查因设备端程序版本未更新引发的异常问题,如切换网络后 MQTT 连接未自动重连、WebRTC 连接失败等。
      • 新增 mqtt_client 程序版本号字段,用于显示设备的 mqtt_client 程序版本信息,该字段仅在切换到高级模式时显示。
      • 增设 webrtc 程序版本号字段,用于展示设备的 webrtc 程序版本信息,该字段同样仅在切换到高级模式时显示。

1.0.2-202505221751

  • janus 安装程序
    • 修复自测时发现的问题:
      • 修复 coturn-external-ip 参数未生效的问题。
      • 修复 ES_CENTER_SERVER_COTURN_DOMAIN_NAME 内部替换配置变量未设置的问题。

1.0.2-202505211437

  • 服务端
    • 转发服务器配置原存储于服务端程序的配置文件中。为实现服务端运行时的动态配置,现对配置数据的查询顺序进行调整。调整后,系统将按照以下顺序依次查询配置,一旦查询到有效配置,便会停止后续查询流程:
      • 从数据库中查询当前设备号对应的 STUN、TURN 配置。
      • 若上一步未找到有效配置,从数据库中查询当前租户的 STUN、TURN 配置。
      • 若仍未找到有效配置,从数据库中查询全局的 STUN、TURN 配置。
      • 若上述步骤均未找到有效配置,从配置文件中获取全局的 STUN、TURN 配置。
    • 此前,转发 Janus 交互信令时所使用的 Janus 编号固定为 janus-1。为实现服务端运行时的动态配置,现对配置数据的查询顺序进行调整。调整后,系统将按照以下顺序依次查询配置,一旦查询到有效配置,便会停止后续查询流程:
      • 从数据库中查询当前设备号对应的 JANUS 配置。
      • 若上一步未找到有效配置,从数据库中查询当前租户的 JANUS 配置。
      • 若仍未找到有效配置,从数据库中查询全局的 JANUS 配置。
      • 若上述步骤均未找到有效配置, 返回 janus-1

1.0.2-202505201826

  • 服务端
    • 清理冗余代码:
      • 移除穿透科技对接相关的数据库建表及服务端实现代码(已改用WebRTC方案)
      • 优化设备数据存储方案:
        • 停用原数据库存储设备快照及历史数据(电量/定位等)方案
        • 后续将采用Elasticsearch/Manticore Search等分布式搜索引擎替代方案(应对数千级设备数据量)
    • 中间件升级
      • apache/activemq-artemis2.35.0 升级为 2.41.0-alpine: 有多项改进,包括管理 API 增强、消息存储性能优化、高可用性提升、TLS 配置简化、新增 OAuth2 支持以及多个安全漏洞修复。Alpine 镜像进一步减小体积、优化 JVM 参数,并更新至最新 Alpine Linux 3.18+ 基础系统。完整变更日志
      • coturn/coturn4.6.2 升级为 4.6.3-alpine: 主要修复了 STUN/TURN 协议实现中的安全漏洞(如 CVE-2023-48790 缓冲区溢出风险),改进了证书验证逻辑,增强了对 DTLS 和 TLS 1.3 的支持稳定性,并优化了 Alpine 环境下的资源占用。此外,更新了 Alpine 基础镜像至 3.18+,提升了容器安全性与性能。完整变更日志
      • nginx1.26.1-alpine 升级为 1.28.0-alpine: 核心模块支持了 HTTP/3 的 early data 特性;HTTP 映射模块新增了 map_hash_max_size 和 map_hash_bucket_size 指令用于优化哈希表性能;Stream 模块新增 udp_stream 指令以支持 UDP 流处理;更新了 PCRE2 库至 10.44 版本以提升正则表达式处理能力;修复了若干 HTTP/2 和 HTTP/3 相关的稳定性问题,包括帧处理和连接管理方面的缺陷;同时 Alpine 基础镜像的更新也带来了系统依赖组件的安全修复和性能优化。生产环境升级前建议在测试环境验证应用兼容性。
      • bitnami/redis7.2.5 升级为 7.4.3: Redis 内核升级至 7.4.3 版本,带来了新的 JSON.GET 和 JSON.SET 命令以增强 JSON 数据处理能力;优化了内存管理机制,减少了大键值对操作时的内存碎片;改进了 RDB 和 AOF 持久化的性能,特别是在处理大量写入操作时;新增了 CLIENT UNBLOCK 命令用于更灵活地管理阻塞客户端;修复了潜在的数据同步延迟问题和 Lua 脚本执行的边缘情况;容器镜像层面优化了启动脚本,增强了与 Kubernetes 和 Helm 的集成稳定性;同时更新了底层依赖包以修复安全漏洞,提升了容器的安全性。
  • Web 客户端
    • 修复 Device running information 中的定位显示问题。
    • 统一多处定位显示格式,使其与视频中的定位格式保持一致。
    • 调整页面色彩,使其与之前版本相近。
    • 将多播界面的对齐方式默认值从 "end" 改为 "start"。
    • 解决新版本上线后需手动刷新页面以更新静态文件缓存的问题:
      • 在页面的 HTTP 元信息(HTTP Meta)中,通过 http-equiv 属性添加强制不缓存的设置。
      • 在所有跳转的 HTTP URL 处添加 build_time 参数,参数值为当前 Web 项目编译打包的时间。
    • 已将登录界面的背景图更换为通过 AI 生成的图片。
    • MQTT 客户端优化:配置 reconnectPeriod: 5000 以实现自动重连功能,即每 5000 毫秒尝试重连一次;设置 keepalive: 30,借助 MQTT 协议自带的心跳机制,客户端将自动每 30 秒发送一次 PINGREQ 消息,以维持连接稳定性。

1.0.2-202505170002

  • 服务端
    • 实测:GPS_INFO 中 valid == 1 时,latitude 及 longitude 有效。修改服务端逻辑,缓存更多有效定位数据(仅判 latitude 及 longitude 大于 0,忽略 valid 判断)。
  • Web 客户端
    • 实测:GPS_INFO 中 valid == 1 时,latitude 及 longitude 有效。修改 Web 客户端获取 GPS_INFO 后的逻辑(仅判 latitude 及 longitude 大于 0,忽略 valid 判断)

1.0.2-202505161835

  • 服务端
    • 各模块依赖库优化:
      • 将 log4j2 替换为 slf4j。
      • 移除对 disruptor, fastjson2 库的引用。
    • 启动速度优化:
      • 缩小 @MapperScan 及 scanBasePackages 的扫描范围。
    • 性能优化
      • 将 Spring Boot 默认集成的 Tomcat 替换为 Undertow。Undertow 的优点包括:1)基于 NIO 的异步非阻塞架构,可支持更高并发连接数;2)内存占用更少(约 Tomcat 的 1/3);3)与 Spring WebFlux 深度集成,更适合响应式编程场景;4)自带 HTTP/2 和 WebSocket 支持,可减少协议转换开销;5)轻量级设计(jar 包体积比 Tomcat 小 60%)。
    • 打包优化(Spring Boot JAR 缩减 3MB,Docker 镜像优化 205MB):
      • 构建过程采用差异化镜像策略:
        • 编译阶段使用 eclipse-temurin:21-jdk-alpine 镜像
        • 镜像构建阶段采用 eclipse-temurin:21-jre-alpine 镜像
      • 技术方案说明:
        • 通过替换 OpenJDK 为 Eclipse Temurin 官方镜像
        • 采用 JDK/ JRE 镜像分离策略(JDK 镜像较 JRE 镜像体积大 66MB)
    • 项目构建升级改造
      • 完成项目构建工具从 Maven 到 Gradle 的迁移,以提升构建效率和灵活性。
      • 集成 Kotlin 编译与打包功能,同时配置项目多模块以支持 Java 与 Kotlin 混合编译,为后续全面过渡到 Kotlin 语言开发做好前期准备。
  • Web 客户端
    • 主界面左下角版本号显示优化:默认仅显示版本号,鼠标悬停时显示编译打包时间。
    • BUG修复:针对GPS数据有效性的判断,在原有的 valid > 1 基础上,新增了 latitude > 0 以及 longitude > 0 的条件。经排查发现,当 valid = 128 时,存在 latitude = 0 以及 longitude = 0 的情况。

1.0.2-202505121512

  • 服务端
    • janus-gatewa 服务从 v1.2.2(2024年4月2日) 升级至 v1.3.1(2025月3月5日),由于官方仅提供源代码,因此需手动构建 Docker 镜像
    • emqx 服务从 v5.6(2024月3月) 升级至 v5.8.6(2025月2月)
  • Web 客户端
    • 主题色细节优化:伴随 Tailwind CSS 从 v3 升级至 v4,样式定义方式有所变化。其中,色彩表示方式也从 hsl 模式转变为了 oklch 模式。

1.0.2-202505091620

  • 服务端
    • 服务端项目云原生改造(完成 10%): 集成Native Maven插件(native-maven-plugin),通过AOT编译实现容器镜像体积优化与启动性能提升,为后续容器化部署的资源效率和冷启动响应优化提供技术支撑
  • Web 客户端
    • 在 P2P 直播界面中,复用原有的麦克风按钮组件。实现点击该按钮时,通过信令触发相应逻辑,以启用或禁用设备的音频输出功能。同时,麦克风按钮的状态会根据设备返回的音频输出状态进行动态变更,即音频输出开启时按钮启用,音频输出关闭时按钮禁用。
    • 当 WebRTC 连接成功后,系统会自动获取一次设备端的音频输出状态。

1.0.2-202504301555

  • WEB 客户端
    • 交互体验升级
      • 主界面左侧菜单默认收起,仅展示大图标,鼠标悬停时会显示简要提示信息。
    • 技术架构改进
      • 前端框架升级:将 shadcn-ui 升级至新版本。此升级的前置条件为 Tailwind CSS 已从 v3 升级至 v4。

1.0.2-202504301121

  • WEB 客户端
    • 核心功能修复
      • 修复直播界面数据加载异常:动态监听租户ID变化自动触发数据更新(原需手动刷新)
      • 优化界面兼容性:新增的"设备运行信息"模块,实现手机/平板/PC端(宽屏/大屏显示器)多场景自适应
    • 交互体验升级
      • 优化设备详情页逻辑:未绑定组织时自动隐藏组织信息字段
      • 提升系统响应效率:关键操作响应速度提升5%
      • 完善本地化资源:更新中文词条文件(xlsx),新增近期功能对应国际化内容
    • 技术架构改进
      • 升级前端框架:Tailwind CSS 从 v3 升级至 v4

1.0.1-202504281555

  • WEB 客户端
    • 移除了不必要的 WebRTC API 调用,例如 rtcPeerConnection.getTransceivers();
    • 增加了直播重试功能:如果在直播信令交互开始后的 8 秒内未能成功建立 WebRTC 连接,则将重新进行信令交互。
    • 修复了 MQTT 客户端未成功建立连接前的尝试发送 ping 信令定时间隔问题,将其从 0.01 秒调整为 0.1 秒。当 MQTT 客户端成功建立连接并尝试发送 ping 信令时,间隔时间将重置为默认值 3 秒。
  • 服务端
    • 更新了 Maven 编译配置,将 JDK 版本从 23 升级到 24,以适应 Spring Boot 3.x 主要支持的 JDK 版本。
    • 升级了依赖库至最新稳定版本,确保服务端程序的高效与稳定运行:
      • org.springframework.boot:spring-boot-starter-parent: 3.4.4 -> 3.4.5
      • com.baomidou:mybatis-plus-bom: 3.5.11 -> 3.5.12
      • com.baomidou:mybatis-plus: 3.5.11 -> 3.5.12
      • com.alicp.jetcache:jetcache-starter-redis-lettuce: 2.7.7 -> 2.7.8
      • com.alicp.jetcache:jetcache-anno: 2.7.7 -> 2.7.8
      • com.alicp.jetcache:jetcache-autoconfigure: 2.7.7 -> 2.7.8
      • org.apache.commons:commons-collections4: 4.4 -> 4.5.0
    • 移除了过时代码,减少了不必要的内存占用:
      • 删除了基于 Netty 实现的 socket 通信服务端 API,共计 61 个文件。
    • 统一了 HTTP API 异常处理:
      • 多处涉及修改密码的地方返回的错误信息不一致,现已统一为一致的错误信息。
  • Docker 镜像
    • es-center-server-main-servicees-center-server-device-service 的 Docker 父镜像从 openjdk:23-slim 升级至 openjdk:24-slim

1.0.1-202504270954

  • WEB 客户端
    • 直播界面设备信息展示优化
      • 修复 4G 网络信息展示的 BUG
      • 使设备 TF 卡容量的显示格式与设备屏幕保持一致
    • 主界面设备列表刷新调整:在主界面的设备列表中,将“Select Device”下方的设备列表定时刷新间隔调整为 90 秒
    • 定位图标显示改进:此前仅在地图组件中定时获取定位信息,现优化为在设备详情界面也进行定时定位信息获取
    • 当用户修改密码时,若新密码与确认密码不一致,系统将提示用户重新输入密码
  • 服务端
    • 切换租户记录切换时间的逻辑去掉
    • 对于所有具备缓存处理功能的 API 接口,统一将缓存失效时间设置为 60 秒。原有的定时更新缓存方式,待服务器配置提升后再启用。

1.0.1-202504230939

  • WEB 客户端
    • 直播界面下,设备信息展示改进,增加高级/简单模式切换,用于展示更多设备信息,默认为简单模式。

1.0.1-202504221542

  • 服务端
    • MQTT订阅设备上报消息:GPS信息验证逻辑调整,经与韦工确认,valid === 0 表示GPS信息无效,现已修改为 valid < 1
  • WEB 客户端
    • 直播界面下,补充更多的设备信息展示。比如:LAN信息, WIFI信息,GPS信息等。
    • GPS信息验证逻辑调整:经与韦工确认,valid === 0 表示GPS信息无效,现已修改为 valid < 1
  • 安装程序
    • 去掉 docker-buildx-plugin 安装包, 生产环境不需要。Docker Buildx 让开发者能够通过一致的流程,高效生成多平台兼容的容器镜像,适配现代多云、混合架构的部署需求。
    • 去掉 docker-ce-rootless-extras 安装包, 生产环境不需要。该组件是实现 Docker 无 root 权限运行的关键依赖,在保障安全性的同时,让普通用户能便捷管理容器,适用于权限受限或多用户共享的场景。

1.0.1-202504221352

  • 升级程序
    • 修复源目录路径错误
  • WEB 客户端
    • 每隔30秒自动重新加载i18n资源,以确保国际化内容的实时更新和准确性。

1.0.1-202504220939

  • 服务端程序依赖库升级:定期将依赖库更新至最新稳定版本,以保障服务端程序的高效与稳定运行。
    • spring-boot-starter-parent: 3.4.1 -> 3.4.4
    • springdoc-openapi: 2.8.3 -> 2.8.6
    • swagger-annotations-jakarta: 2.2.27 -> 2.2.30
    • mybatis-plus: 3.5.10.1 -> 3.5.11
    • java-jwt: 4.4.0 -> 4.5.0
    • guava: 33.4.0-jre -> 33.4.8-jre
    • hutool-bom: 5.8.35 -> 5.8.37
  • redmine.netbodycamera.com 上分配的任务处理
  • WEB 客户端
    • 对于所有涉及密码输入的功能界面(如修改密码、通过邮箱找回密码、通过手机验证码找回密码、租户绑定用户等):
      • 正则表达式修改:把原正则表达式中的 (?!.*(\w)\1\1) 去掉了,这个部分是用来检查是否有三个连续相同字符的。
      • 错误提示信息修改:去掉了原提示信息里 “不能有连续相同字符” 的内容。

1.0.1-202504171705

  • 安装程序:
    • 移除了除 es-center-server-launcher 外的所有服务开机启动配置,改由 es-center-server-launcher 服务统一管理。这样可以确保各个服务按照预定的顺序依次启动,并在不同服务之间设置适当的延时,以避免连续启动导致的资源竞争和性能问题。
  • WEB 客户端:
    • 依赖库升级
      • 从 Remix v2 升级到 React Router v7:由于 Remix v2 已不再维护,决定将其升级至 React Router v7。这是在 Remix v2 停止支持后的首选替代方案。Remix v2 依赖于 React 18,而其他库的新版本则依赖于 React 19。为了保持项目的一致性并避免使用过时的技术,按照官方文档进行了此次升级。升级指南
      • 将 remix-utils/promise 替换为 p-timeout:由于 Remix v2 已升级至 React Router v7,选择使用 p-timeout 作为 remix-utils/promise 的替代方案。
      • 其它库的升级:所有相关的库已被更新至最新版本,以确保它们与 React 19 兼容。

1.0.1-202504171342

  • 安装程序:
    • 移除了将当前用户添加到 docker 组的步骤,因为通常客户会使用 root 账户进行安装。对于非 root 用户,只需在 docker 命令前加上 sudo 即可。

1.0.202504161818

  • WEB 客户端:

    • BUG 修复:
      • 根据纬度方向调整 GPS 的纬度值,并根据经度方向调整经度值。
      • 修复了在多屏直播模式下隐藏设备列表时右侧播放界面出现的闪烁问题。
    • 用户体验改进:
      • 在多地图模式下,系统将根据用户的语言设置自动加载默认地图。如果用户选择中文,则默认使用百度地图;否则,默认使用 Google 地图。地图选择列表的顺序已调整为:Google、Open Street Map、百度、高德、腾讯。
  • 安装程序:

    • Docker 配置调整:
      • 将所有服务的 docker-compose.yml 文件中的 restart: on-failure:9 更改为 restart: no
      • 在所有服务的 docker-compose.yml 文件中添加了 restart_policy 设置,以实现延时重启,避免因连续重启导致 CPU 资源耗尽。
    • 默认数据目录变更:
      • 默认数据目录已从 /opt/es-center-server-data 更改为 /var/lib/es-center-server-data,以更好地遵循 Linux 目录规范。
    • cli upgrade-server 子命令逻辑调整:
      • 新增了处理 docker-compose.yml 及相关配置文件升级的逻辑,以应对可能需要升级的情况。
    • cli install-server-coturn-service 子命令调整:
      • 添加了 --internal-eth-name 参数,用于指定 Coturn 服务的内部网卡名称。
    • 集成 docker:cli 容器:
      • 集成了 docker:cli 容器,以便在开机自启后按指定顺序延时启动其他 Docker 容器。这样做的原因是,开机时多个容器同时启动会对低配服务器造成巨大压力,可能导致 CPU 超过 100%,从而使某些服务无法正常启动。

1.0.202504151416

  • 服务端初始化:
    • 在与 EMQX 建立 MQTT 连接之前,向与 EMQX 集成的 Redis 中写入账号、密码及授权范围。
  • 服务端 HTTP 接口:
    • 错误码已根据其在生命周期中的出现顺序进行了重新排序:
      • 200: 成功执行请求,没有发生任何错误。
      • 500: 发生了内部服务器错误,这通常意味着后端代码遇到了某种未预料的情况(如数据库操作失败)。此时,用户界面只显示"System Error",但详细的错误信息记录下来以供开发者诊断问题。
      • 1000: 身份验证异常,会在认证环节失败时出现。常见场景有:用户登录时输入的用户名或密码有误,无法通过验证;使用的令牌(如 JWT、OAuth2 令牌)无效、过期或者格式不对;请求头中缺少必要的认证信息,像基本认证的 Authorization 头;用户尝试使用禁用、锁定或过期的账户登录。一旦发生这些情况,Spring Security 会抛出该异常,阻止用户继续访问受保护资源。
      • 1001: 拒绝访问异常,通常发生在用户已通过认证(登录)但缺乏访问目标资源权限的场景,例如请求的 URL 或方法所需角色、权限表达式(如 hasRole、hasAuthority)与用户实际权限不匹配,匿名用户或 “记住我” 用户访问受限资源,自定义访问决策逻辑拒绝(如 AccessDecisionVoter 投票失败),以及请求方法、CSRF 校验、会话权限变更等配置导致的授权失败。核心原因是用户认证通过但授权(权限检查)未通过。
      • 1002: 出现于 HTTP 请求 / 响应的消息转换过程失败时,主要场景包括:请求体(如 JSON/XML)无法转换为目标对象(格式错误、类型不匹配等),或响应体对象无法序列化为指定格式(如序列化规则冲突、字段无法处理),本质是数据格式与目标类型间的转换逻辑失败,常见于前后端数据格式不匹配或消息转换器配置问题。
      • 1003: 通常出现在控制器方法的参数验证失败场景。当使用 @Valid 或 @Validated 注解对方法参数(如实体类、基本类型或自定义参数)进行校验时,若客户端请求的参数不符合校验规则(如 @NotEmpty、@Size、@Pattern 等注解定义的约束),Spring 会在参数绑定过程中触发验证逻辑。若验证不通过,会将所有错误信息封装成 BindingResult,并抛出 MethodArgumentNotValidException。例如,前端传递的表单数据缺失必填字段、字符串长度超出限制、格式不符合正则要求等,都会导致该异常,其本质是参数绑定与校验失败的统一封装,便于集中处理请求参数的合法性问题.
      • 1004: 对象验证失败时抛出。常见场景包括:直接通过验证器(如 Validator)对对象进行校验(如 validator.validate(object)),或在框架(如 Spring、Hibernate)自动触发验证逻辑时(如服务层参数校验、JPA 实体持久化前的约束检查)。当对象的属性违反 @NotEmpty、@Size、@Pattern 等验证注解定义的规则时,所有违反的约束会被收集为 ConstraintViolation 集合,最终封装成该异常,用于集中处理参数或实体的合法性校验失败问题。
      • 1005: 业务逻辑验证失败。这意味着虽然请求本身可能是有效的,但在尝试执行特定业务功能时发现了问题。例如,如果某个设备ID不存在于系统中,那么即使请求格式正确,也会因为找不到相关联的数据而产生此类错误。同样地,具体的原因会在error字段中给出。
    • 消费模式类别
      • 在设备列表接口中,列表中每个设备详情添加了与绑定的采集服务相关的字段,例如:采集服务器编号、采集服务器外网地址等。
      • 在设备绑定接口中,现已处理了重复绑定已删除设备的情况(绑定成功后,删除了相关厂家数据)。此前,这种特殊情况会导致 SQL 插入错误,此问题现已得到解决。
    • TOKEN 过期时间从 5 分钟延长至 30 分钟,以防止客户在短时间内未进行任何操作而导致 TOKEN 过期。
  • 服务端 MQTT 接口:
    • 接收设备上报信息的接口对 GPS 信息进行了特别处理,只有在 GPS 信息有效时才会将其存入缓存。
  • WEB 客户端:
    • 预加载多国语言词条文件,以确保用户在切换语言后无需刷新页面即可生效。
  • 安装程序:
    • 在安装过程中移除了自动申请 SSL 证书的功能,因为越南客户1提供的 Linux 服务器的 80 端口已被占用,导致该功能无法使用。通过子命令 update-server-ssl,单独申请或更新或申请 SSL 证书。
    • 在更新配置子命令时,也移除了自动申请 SSL 证书的支持,原因同样是越南客户1提供的 Linux 服务器的 80 端口已被占用,无法使用该功能。
    • 添加了以下可配置项:
      • ES_CENTER_SERVER_JANUS_RTP_PORT_RANGE=40000-59999
      • ES_CENTER_SERVER_COTURN_LISTENING_PORT=3478
      • ES_CENTER_SERVER_COTURN_MIN_PORT=20000
      • ES_CENTER_SERVER_COTURN_MAX_PORT=39999
    • 对 spring-boot 程序的默认 JAVA_OPTS 参数进行了优化,以更好地适配 2 核 4GB 内存的服务器环境。优化后的参数为:-Xmx1024m -Xms512m -Xmn256m -XX:MaxDirectMemorySize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200
    • 在部署运行 spring-boot 程序的 docker-compose.yml 文件中,添加了 mem_limitmem_reservation 配置:
      • mem_limit: 2g:限制容器最多使用 2GB 的内存。
      • mem_reservation: 512m:设定容器期望使用的内存量为 512MB。
    • 将所有 docker-compose.yml 文件中的 restart: always 修改为 restart: on-failure:9,以避免无限重启循环。

1.0.202504011734

  • 在安装过程中新增了自动申请 SSL 证书的功能。
  • 在更新配置子命令时,增加了自动申请 SSL 证书的支持。
  • 新增了一个独立的子命令 update-server-ssl,用于单独更新或申请 SSL 证书。

1.0.202503311844

  • 优化安装流程,减少在低配置服务器(如 2 核 4G 内存)上因并发安装可能导致的资源耗尽风险。
  • 新增升级功能,支持通过命令行执行升级操作。