fix: 素材余量四字段兼容 Asset 领域实体(真实接口恒为 None 修复) #1550
Reference in New Issue
Block a user
Delete Branch "fix/asset-availability-entity-meta"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
#1549 合并后 staging 真实接口验收发现:GET /assets 与 smart-match 返回的余量四字段恒为 None(usable 恒为 True 兜底)。
根因
路由层 repository 返回的是 Asset 领域实体(packages/domain/entities.py),不是 ORM AssetModel:
metadatadict 属性里(repository 与classification_resultJSON 列互转,见 asset_repository.py:133/162);classification_result属性;_read_meta只读classification_result列 → AttributeError →_asset_availability_fields异常兜底 → 四字段 None + usable=True。单测用 SimpleNamespace 同时带了两个属性,未暴露此问题。
修复
_read_meta双形态兼容:metadata且为 dict(领域实体)→ 直接使用;classification_resultJSON 字符串(ORM AssetModel 形态,tracker 内部 DB 写入路径不变)。测试
staging 验收(容器内直调路由函数,真实 DB)
修复前:所有素材计算抛 AttributeError、四字段 None;
修复后待本 PR 部署复验。
🚀 预览环境已部署
代码审查结果 - PR #1550
⚠️ 问题(0个需要修改)
无
💡 建议(1个可选)
except Exception:改为更具体的异常类型(如json.JSONDecodeError和TypeError),或者至少添加日志记录。虽然此处沿用旧逻辑是为了容错,但捕获所有异常可能会掩盖非预期的程序错误(如内存错误或键盘中断),不利于排查数据格式问题。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显问题
🤖 由 AI 代码审查机器人自动生成 | 2026-08-30 00:12:23 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1550 已关闭或合并,对应的预览环境已被清理。