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