mxivideo/test_segment_rename_debug.md

141 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 片段重命名调试指南
## 问题诊断步骤
### 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 <template_id> <segment_id> "新名称" --user-id <user_id> --verbose
# 测试获取模板详情
python -m python_core.cli template detail <template_id> --user-id <user_id> --verbose
```
### 检查数据库状态
```sql
-- 查看模板的 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>';
```
## 预期行为
### 正常流程
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. 验证数据库中的数据是否正确更新
通过这些步骤可以准确定位问题所在。