fix: expand all UUID fields from varchar(32) to varchar(36) [P0] #204
Reference in New Issue
Block a user
Delete Branch "fix/ingest-job-library-id-length"
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?
P0 Hotfix: StringDataRightTruncation on upload/direct/complete
问题
ingest_jobs.library_id字段为varchar(32),但标准 UUID(带横杠)是 36 字符,导致小程序上传时StringDataRightTruncation错误,上传功能完全不可用。修复范围
全库扫描,所有
String(32)UUID 字段统一扩到String(36):变更
models.py: 10 张表所有String(32)→String(36)alembic/versions/036_expand_uuid_fields_to_36.py: 迁移脚本tests/unit/test_uuid_field_length.py: 43 个单元测试测试
✅ 审查结论:通过,可合并
PR #204 UUID 字段长度修复 — 代码审计报告
✅ 核心修复验证通过
1. Alembic 迁移脚本正确
036_expand_uuid_36,down_revision 正确指向035_editing_modemodels.py完全一致,无拼写错误op.alter_column()标准语法,兼容 PostgreSQL2. 全库扫描彻底,无遗漏
共覆盖 10 张表、42 个字段,全部从
varchar(32)扩到varchar(36):已验证:
users、assets、asset_libraries、title_libraries、voice_libraries、voice_clone_profiles等表本来就是varchar(36),无需迁移,不属于遗漏。3. 性能风险评估:低
ALTER COLUMN TYPE varchar(36)从varchar(32)扩容,仅修改系统表元数据(atttypmod),不需要重写表4. 单元测试覆盖充分
test_ingest_job_library_id_accepts_standard_uuid专门验证 36 字符标准 UUID5. Schema 快照同步更新
docs/schema-metadata-snapshot.json已同步刷新,所有 VARCHAR(32) → VARCHAR(36)💡 P3 优化建议(不阻塞合并)
P3-1:迁移脚本建议显式指定 existing_nullable
alembic/versions/036_expand_uuid_fields_to_36.pyexisting_nullable=None让 Alembic 自动检测 nullable 属性,虽然 PostgreSQL 场景下没问题,但显式指定更安全可靠,避免不同数据库行为差异existing_nullable=True/FalseP3-2:建议低峰期执行迁移并提前验证
P3-3:紧急修复分支建议从 develop 独立检出
feature/unified-rendering-and-pipeline(PR #202)开发,包含了 PR #201 和 #202 的全部功能代码🔍 已验证项
varchar(32)UUID 字段均已覆盖,无遗漏结论:通过,可合并。 生产紧急修复质量达标,P0 问题彻底解决,3 个 P3 为最佳实践建议,不影响上线。