3.8 KiB
3.8 KiB
片段重命名调试指南
问题诊断步骤
1. 检查前端调用
在浏览器开发者工具的控制台中查看以下日志:
// 当用户重命名片段时,应该看到:
"Segment {segmentId} renamed to: {newName} - saved to database"
"Template detail reloaded from database"
// 以及模板详情加载日志:
"Template detail loaded: {templateId: ..., tracksCount: ..., segments: [...]}"
2. 检查后端日志
在后端日志中查看以下信息:
INFO - Searching for segment {segment_id} in {track_count} tracks
INFO - Track {track_idx} has {segment_count} segments
INFO - Segment {seg_idx}: id={seg_id}, name={seg_name}
INFO - Updated segment {segment_id}: '{old_name}' -> '{new_name}'
3. 验证数据库更新
可以通过以下方式验证:
-
前端验证:
- 重命名片段后,刷新页面
- 检查片段名称是否保持新名称
-
后端验证:
- 查看数据库中的
draft_content字段 - 确认片段名称已更新
- 查看数据库中的
4. 常见问题排查
问题1:片段ID不匹配
- 症状:后端日志显示"片段不存在"
- 原因:前端传递的 segmentId 与数据库中的不匹配
- 解决:检查片段ID的生成和传递逻辑
问题2:权限问题
- 症状:后端返回"无权限修改模板"
- 原因:用户ID不匹配或权限验证失败
- 解决:检查用户认证状态
问题3:数据库连接问题
- 症状:更新操作失败
- 原因:数据库连接或事务问题
- 解决:检查数据库连接和事务处理
问题4:前端状态不同步
- 症状:本地显示更新但刷新后恢复
- 原因:后端更新失败但前端没有回滚
- 解决:检查错误处理和状态回滚逻辑
调试命令
手动测试后端API
# 测试更新片段名称
python -m python_core.cli template update-segment <template_id> <segment_id> "新名称" --user-id <user_id> --verbose
# 测试获取模板详情
python -m python_core.cli template detail <template_id> --user-id <user_id> --verbose
检查数据库状态
-- 查看模板的 draft_content
SELECT id, name, draft_content FROM templates WHERE id = '<template_id>';
-- 检查片段名称
SELECT
id,
name,
JSON_EXTRACT(draft_content, '$.tracks[*].segments[*].name') as segment_names
FROM templates
WHERE id = '<template_id>';
预期行为
正常流程
- 用户操作:双击片段 → 选择分类 → 确认
- 前端处理:
- 立即更新本地状态(UI响应)
- 调用后端API保存
- 重新加载模板详情
- 后端处理:
- 验证权限和数据
- 更新数据库中的 draft_content
- 返回成功状态
- 结果验证:
- 页面刷新后名称保持
- 控制台显示成功日志
错误处理
- 网络错误:显示错误提示,回滚本地状态
- 权限错误:显示权限提示
- 数据错误:显示数据错误提示,回滚状态
修复历史
已修复的问题
- ✅ 后端API缺失:添加了
update-segmentCLI命令 - ✅ 前端调用缺失:添加了
updateSegmentName方法 - ✅ 状态同步问题:添加了重新加载逻辑
- ✅ 错误处理:添加了完善的错误处理和回滚
当前状态
- ✅ Python CLI命令:
template update-segment - ✅ Rust Tauri命令:
update_template_segment_cli - ✅ TypeScript服务方法:
updateSegmentName - ✅ 前端处理逻辑:
handleSegmentNameChange - ✅ 错误处理和状态回滚
- ✅ 调试日志和验证
下一步
如果问题仍然存在,请:
- 检查浏览器控制台的日志输出
- 检查后端服务的日志
- 手动测试后端CLI命令
- 验证数据库中的数据是否正确更新
通过这些步骤可以准确定位问题所在。