debug: 添加素材片段检查日志,确认虚拟片段问题

## 问题发现
从日志显示素材片段时长10.042秒,这是原始素材而不是二次切分片段。

## 添加的日志
1. **素材检查日志**:
   - 素材名称和ID
   - 素材片段数量
   - 分类记录数量

2. **虚拟片段创建日志**:
   - 当素材未切分时的警告
   - 原始素材时长
   - 虚拟片段的segment_id和category
   - 虚拟片段时长

3. **真实片段使用日志**:
   - 当素材已切分时的确认
   - 真实片段的id、时长和category

## 问题分析
匹配逻辑中的问题:
- 当material.segments.is_empty()时,创建虚拟片段
- 虚拟片段使用原始素材的完整时长(如10.042秒)
- 与模板要求时长(如1.267秒)比较,导致超出692.8%

## 根本原因
素材没有被正确切分,导致匹配时使用原始素材时长而不是切分后的片段时长。

这些日志将帮助确认:
1. 素材是否被正确切分
2. 为什么会创建虚拟片段
3. 虚拟片段vs真实片段的使用情况
This commit is contained in:
imeepos 2025-07-18 13:45:59 +08:00
parent c0ab039de9
commit 7909a62e64
1 changed files with 12 additions and 0 deletions

View File

@ -406,11 +406,17 @@ impl MaterialMatchingService {
continue;
}
println!("🔍 检查素材: {} ({})", material.name, material.id);
println!(" 素材片段数量: {}", material.segments.len());
println!(" 分类记录数量: {}", records.len());
// 检查是否有素材片段
if material.segments.is_empty() {
println!(" ⚠️ 素材未切分,创建虚拟片段");
// 如果素材没有被切分,但有分类记录,我们需要为每个分类记录创建对应的虚拟片段
// 因为每个分类记录的segment_id对应一个具体的片段
if let Some(duration) = material.get_duration() {
println!(" 原始素材时长: {:.3}", duration);
// 为每个分类记录创建一个虚拟片段
for record in records {
// 检查该片段是否已被使用
@ -418,6 +424,8 @@ impl MaterialMatchingService {
continue; // 跳过已使用的片段
}
println!(" 创建虚拟片段: segment_id={}, category={}", record.segment_id, record.category);
// 创建虚拟片段使用分类记录中的segment_id
let virtual_segment = MaterialSegment {
id: record.segment_id.clone(), // 使用分类记录中的segment_id
@ -435,10 +443,12 @@ impl MaterialMatchingService {
created_at: chrono::Utc::now(),
};
println!(" 虚拟片段时长: {:.3}", virtual_segment.duration);
classified_segments.push((virtual_segment, record.category.clone()));
}
}
} else {
println!(" ✅ 素材已切分,使用真实片段");
// 为每个素材片段查找对应的分类记录
for segment in &material.segments {
// 检查该片段是否已被使用
@ -448,6 +458,8 @@ impl MaterialMatchingService {
// 查找该片段的分类记录
if let Some(record) = records.iter().find(|r| r.segment_id == segment.id) {
println!(" 真实片段: id={}, 时长={:.3}秒, category={}",
segment.id, segment.duration, record.category);
classified_segments.push((segment.clone(), record.category.clone()));
}
}