141 lines
3.8 KiB
Markdown
141 lines
3.8 KiB
Markdown
# 片段重命名调试指南
|
||
|
||
## 问题诊断步骤
|
||
|
||
### 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. 验证数据库中的数据是否正确更新
|
||
|
||
通过这些步骤可以准确定位问题所在。
|