You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.4 KiB
4.4 KiB
修复:init_data.py 缺少 capabilities 迁移步骤
日期: 2026-02-13
类型: Bug Fix
影响范围: 数据初始化流程
问题描述
init_data.py 统一初始化脚本缺少 migrate_model_capabilities.py 步骤,导致新初始化的数据库中 AI 模型缺少 capabilities 配置。
症状
执行 docker exec jointo-server-app python scripts/init_data.py 后:
- ✅ AI 模型基本信息已同步(
model_name,display_name,model_type等) - ❌
capabilities字段为空(NULL) - ❌ 前端无法获取模型支持的参数(分辨率、时长、宽高比等)
- ❌ AI 生成功能无法正常工作
根本原因
init_data.py 的执行流程:
# 修复前(错误)
SCRIPTS = [
("同步 AI 模型", "sync_all_models.py"), # ✅ 同步模型基本信息
("更新模型本地化配置", "update_model_localization.py"), # ⚠️ 缺少 capabilities
("初始化积分定价配置", "init_pricing_configs.py"),
("同步 AI 技能", "sync_ai_skills.py"),
]
sync_all_models.py 只从 AIHubMix/ElevenLabs API 同步模型的基本信息,不包含 capabilities 配置(因为 capabilities 是项目内维护的手工配置)。
解决方案
修改内容
在 sync_all_models.py 和 update_model_localization.py 之间插入 migrate_model_capabilities.py:
# 修复后(正确)
SCRIPTS = [
("同步 AI 模型", "sync_all_models.py"), # 1️⃣ 同步模型基本信息
("迁移模型 capabilities 配置", "migrate_model_capabilities.py"), # 2️⃣ ✅ 新增!写入 capabilities
("更新模型本地化配置", "update_model_localization.py"), # 3️⃣ 更新本地化和可见性
("初始化积分定价配置", "init_pricing_configs.py"), # 4️⃣ 初始化定价
("同步 AI 技能", "sync_ai_skills.py"), # 5️⃣ 同步技能
]
执行顺序说明
| 步骤 | 脚本 | 作用 | 依赖 |
|---|---|---|---|
| 1 | sync_all_models.py |
从 API 同步模型基本信息 | 无 |
| 2 | migrate_model_capabilities.py |
为模型写入 capabilities 配置 | 依赖步骤 1(需要模型已存在) |
| 3 | update_model_localization.py |
更新本地化和可见性 | 依赖步骤 2(需要 capabilities 已写入) |
| 4 | init_pricing_configs.py |
初始化积分定价 | 依赖步骤 3(需要模型已配置) |
| 5 | sync_ai_skills.py |
同步 AI 技能 | 独立 |
验证
自动验证脚本
创建了 verify_init_data.py 来验证配置:
docker exec jointo-server-app python scripts/verify_init_data.py
输出:
✅ 所有检查通过!init_data.py 配置正确。
手动验证
执行完整初始化流程:
# 1. 执行初始化
docker exec jointo-server-app python scripts/init_data.py
# 2. 检查 capabilities 是否已写入
docker exec jointo-server-postgres psql -U jointoAI -d jointo -c "
SELECT
model_name,
CASE
WHEN capabilities IS NULL THEN '❌ NULL'
WHEN capabilities::text = '{}' THEN '⚠️ 空对象'
ELSE '✅ 已配置'
END as capabilities_status,
jsonb_pretty(capabilities)
FROM ai_models
LIMIT 5;
"
预期所有模型的 capabilities_status 应为 ✅ 已配置。
影响范围
✅ 已修复
- 新环境初始化时,模型
capabilities字段正确填充 init_data.py执行流程完整且顺序正确
⚠️ 需要手动处理的场景
如果您在修复前已经执行过 init_data.py,需要手动补充 capabilities:
# 单独执行 capabilities 迁移
docker exec jointo-server-app python scripts/migrate_model_capabilities.py
相关文件
| 文件 | 变更类型 | 说明 |
|---|---|---|
server/scripts/init_data.py |
修改 | 添加 migrate_model_capabilities.py 到执行列表 |
server/scripts/verify_init_data.py |
新增 | 验证脚本配置正确性 |
docs/server/changelogs/2026-02-13-init-data-capabilities-fix.md |
新增 | 本文档 |
测试
测试步骤
- ✅ 执行
verify_init_data.py验证配置 - ✅ 清空数据库并重新执行
init_data.py - ✅ 验证所有模型的
capabilities字段非空 - ✅ 前端能正确获取模型参数
- ✅ AI 生成功能正常工作
测试结果
所有测试通过 ✅
修复人员: AI Assistant
审核人员: 待定
状态: ✅ 已完成