2.8 KiB
2.8 KiB
模型密钥解密失败仍显示已配置
日期:2026-07-18 文档路径:document/development/2026-07-18/dev-logs/bugs/model-secret-decryption-status.md
修复记录
- 15:54:记录 bug 修复:模型密文无法由当前
settings.key解密时,设置页仍根据非空密文显示“已配置”,掩盖实际不可用状态。- Git 提交检查:
git fetch --all --prune成功;upstreamorigin/main无新提交;本地 ahead 19 条,最新为07241b46 fix(docker): manage local postgres in default compose、787bc3a4 feat(platform): close AI expense value loop、242d68c3 feat(approval): add task workflow and waiver decisions,另有 16 条。 - 原因:后端配置状态只判断数据库密文字段是否非空,前端本地草稿又可能覆盖服务端状态,均没有验证密文是否能用当前密钥成功解密。
- 修改:后端序列化配置时以实际解密结果计算模型、OnlyOffice JWT 与 SMTP 密码状态;解密只读取现有主密钥,不再因 GET 设置请求自动创建新
settings.key;前端合并本地草稿后重新应用服务端权威密钥状态;新增密钥轮换、密钥文件缺失和前端状态覆盖回归测试。 - 操作:在
local-x-financial-linux容器内执行设置持久化测试、后端联合回归、前端全量回归、Ruff 和生产构建,并使用真实管理员设置页复验。 - 验证:主模型和备份模型仍显示“已配置”,当前无法解密的 Embedding 与 Reranker 准确显示“未配置”;后端联合回归
165 passed,前端全量回归821/821,生产构建成功。 - 影响:管理员不会再被伪阳性状态误导;受影响的两个真实 API Key 仍需重新录入,或恢复与密文配套的旧密钥文件后才能恢复检索模型调用。
- Git 提交检查:
- 16:20:补齐已有主密钥格式与长度校验。
- Git 提交检查:
git fetch --all --prune成功;upstreamorigin/main无新提交;本地 ahead 19 条,最新为07241b46 fix(docker): manage local postgres in default compose、787bc3a4 feat(platform): close AI expense value loop、242d68c3 feat(approval): add task workflow and waiver decisions,另有 16 条。 - 修改:加密和解密路径统一要求已有
settings.key解码后为 32 字节;非空但格式错误或长度错误的密钥直接拒绝,不再先生成无法由后续读取路径解密的密文;空文件仍按首次初始化语义生成合法密钥。 - 验证:新增非法 Base64、短密钥和空密钥文件回归;设置与管理模块后端联合回归
176 passed,Ruff 通过;admin/admin + default实际读取状态为主模型/备份模型/OnlyOffice 已配置,Embedding/Reranker/SMTP 未配置。 - 影响:设置保存不会在损坏主密钥下产生新的不可恢复密文,读取设置也不会通过副作用掩盖密钥文件缺失。
- Git 提交检查: