JPower v3.0.3:补齐录音控制与多数据源事务
JPower v3.0.3 是一次偏向稳定性和配置能力的更新。版本一方面为 Asterisk 录音增加静默与打断配置,另一方面修复 Boot 模型同步、部门过滤和密码加密逻辑,并优化 MyBatis-Flex 多数据源场景下的事务管理。对于已经运行 JPower 的团队,这些变化虽然不集中在界面上,却会直接影响通话流程、数据隔离和账号安全。
Asterisk 录音从固定行为变成可配置策略
新版本中,Asterisk 录音支持静默配置与打断配置。这意味着录音不必只依赖一套固定流程,可以根据业务场景决定何时保持静默,以及录音过程能否被用户操作打断。
这两项能力适合用于语音通知、客服质检、交互式语音应答等场景。例如,自动播报可能要求录音完整执行,而交互式菜单通常需要允许按键打断。升级后应重点验证以下组合:
- 开启静默、禁止打断;
- 关闭静默、允许打断;
- 通话提前挂断时录音文件是否正常关闭;
- 连续触发按键或语音输入时,录音状态是否保持一致。
来源摘要没有给出正式配置键名。接入时应以 v3.0.3 实际配置类和示例文件为准,不要直接猜测生产参数。可以先在测试环境建立一份配置映射,下面的 YAML 仅展示配置组织方式,需要替换为项目中的真实字段:
# 示例结构:字段名需要按 JPower v3.0.3 实际配置进行调整
jpower:
asterisk:
recording:
silence-enabled: true
interrupt-enabled: false
配置生效后,不应只检查应用能否启动,还要通过真实呼叫验证 Asterisk 通道、录音文件和业务状态是否一致。
三个修复点背后的升级风险
Boot 模型同步前缀
v3.0.3 修复了功能接口同步 Boot 模型时的前缀问题。依赖自动同步接口或模型元数据的项目,应在升级后比较同步前后的路径、模型名称和生成结果,尤其要留意重复前缀与前缀丢失。
用户管理部门过滤
此前用户管理无法去掉部门过滤,新版本对此进行了修复。这个改动会影响管理员可见的数据范围。测试时至少准备一个有部门限制的普通管理员和一个应查看全部用户的管理员,确认取消过滤后不会继续拼接部门条件,也不会绕过其他权限约束。
用户密码加密逻辑
密码加密逻辑的修正属于高敏感变更。升级前需要确认存量密码是否仍能验证,新建用户与重置密码是否使用相同编码器,以及登录失败日志中是否泄露明文或哈希值。
不要在升级脚本中批量重新加密已有哈希。更稳妥的做法是先验证旧账号登录,再检查新密码写入结果;如果编码方案发生变化,则采用登录成功后渐进迁移等兼容策略。
MyBatis-Flex 多数据源事务要验证回滚边界
本次版本优化了事务管理对 MyBatis-Flex 多数据源的支持。多数据源场景最容易出现的问题不是 SQL 无法执行,而是开发者以为两个数据源处于同一个事务中,实际只回滚了其中一个。
升级验证可以围绕一个明确的失败用例展开:先向主数据源写入业务记录,再向第二数据源写入审计记录,随后主动抛出异常,观察两边的数据是否符合项目约定。这里需要区分两种目标:
- 单个数据源内保证本地事务回滚;
- 多个数据源之间要求原子提交。
前者通常可由对应事务管理器处理;后者可能需要分布式事务、补偿任务或 Outbox 模式,不能因为框架增强了多数据源支持就默认获得跨库原子性。
可以这样建立升级冒烟测试
下面是一份可直接运行并按项目改造的 Bash 脚本。执行前修改 BASE_URL、接口路径、管理员凭据和预期状态码。示例接口是假设值,不代表 JPower 的正式 API 定义。
#!/usr/bin/env bash
set -euo pipefail
BASE_URL="${BASE_URL:-http://127.0.0.1:8080}"
USERNAME="${JPOWER_USER:-admin}"
PASSWORD="${JPOWER_PASSWORD:?set JPOWER_PASSWORD first}"
login_response=$(curl -fsS \
-H 'Content-Type: application/json' \
-d "{\"username\":\"${USERNAME}\",\"password\":\"${PASSWORD}\"}" \
"${BASE_URL}/api/login")
token=$(printf '%s' "$login_response" | jq -er '.data.token')
curl -fsS \
-H "Authorization: Bearer ${token}" \
"${BASE_URL}/api/users?departmentFilter=false" \
| jq -e '.data != null' >/dev/null
curl -fsS \
-H "Authorization: Bearer ${token}" \
"${BASE_URL}/api/models/sync-preview" \
| jq -e '.data != null' >/dev/null
echo 'JPower v3.0.3 smoke checks passed'
运行方式如下:
chmod +x smoke-test.sh
JPOWER_PASSWORD='replace-me' BASE_URL='http://localhost:8080' ./smoke-test.sh
这份脚本适合作为起点,实际流水线还应加入密码重置、部门权限矩阵、模型同步结果比对,以及多数据源异常回滚测试。密码通过环境变量传入,避免直接写入仓库。
升级前后的检查清单
升级前备份数据库和配置,记录当前密码编码器、多数据源事务管理器及 Asterisk 配置。测试环境完成数据库变更后,应依次验证登录、创建用户、重置密码、部门过滤开关、Boot 模型同步和录音控制。
上线时建议观察认证失败率、用户查询数量、事务回滚异常和录音失败日志。JPower v3.0.3 解决了若干明确问题,但录音策略、多库一致性和密码兼容性仍取决于项目自身配置;把这些边界写进自动化回归测试,才能让这次升级真正稳定落地。