-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdiagnose_flow.js
More file actions
102 lines (85 loc) · 3.23 KB
/
diagnose_flow.js
File metadata and controls
102 lines (85 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// 诊断流水线问题
const path = require('path');
const fs = require('fs');
console.log('[诊断] 开始检查流水线数据...\n');
// 1. 检查预处理文件
const preprocessDir = path.join(__dirname, 'temp', 'preprocess');
console.log('[1] 检查预处理目录:', preprocessDir);
if (!fs.existsSync(preprocessDir)) {
console.log('❌ 预处理目录不存在');
process.exit(1);
}
const files = fs.readdirSync(preprocessDir);
console.log(`✅ 找到 ${files.length} 个文件\n`);
// 2. 检查 .ts 文件
const tsFiles = files.filter(f => f.endsWith('.ts'));
console.log('[2] 标准化视频文件 (.ts):');
tsFiles.forEach(f => {
const filePath = path.join(preprocessDir, f);
const stats = fs.statSync(filePath);
console.log(` - ${f} (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
});
// 3. 检查是否有 0.00 时长的文件
const zeroDurFiles = tsFiles.filter(f => f.includes('_dur_0.00'));
if (zeroDurFiles.length > 0) {
console.log(`\n⚠️ 发现 ${zeroDurFiles.length} 个时长为 0.00 的文件:`);
zeroDurFiles.forEach(f => console.log(` - ${f}`));
} else {
console.log('\n✅ 没有时长为 0.00 的文件');
}
// 4. 检查重复后缀的文件
const duplicateSuffixFiles = tsFiles.filter(f => {
const matches = f.match(/_balanced_dur_/g);
return matches && matches.length > 1;
});
if (duplicateSuffixFiles.length > 0) {
console.log(`\n⚠️ 发现 ${duplicateSuffixFiles.length} 个重复后缀的文件:`);
duplicateSuffixFiles.forEach(f => console.log(` - ${f}`));
} else {
console.log('\n✅ 没有重复后缀的文件');
}
// 5. 测试 Map-Reduce 脚本加载
console.log('\n[3] 测试 Map-Reduce 脚本加载:');
const SCRIPTS_DIR = path.resolve(__dirname, 'scripts');
const MAPREDUCE_SCRIPT = path.join(SCRIPTS_DIR, 'mapreduce-refactor.js');
try {
delete require.cache[require.resolve(MAPREDUCE_SCRIPT)];
const MapReduceModule = require(MAPREDUCE_SCRIPT);
console.log('✅ Map-Reduce 脚本加载成功');
console.log(' 导出函数:', Object.keys(MapReduceModule));
// 6. 测试 calculateTasks
console.log('\n[4] 测试 calculateTasks 函数:');
// 模拟一个简单的 clip
const testClips = [
{
cardId: 'test_1',
title: 'Test Clip 1',
path: path.join(preprocessDir, tsFiles[0]),
start: 0,
end: 10,
duration: 10,
preprocessed: true
}
];
const testSettings = {
backgroundPath: path.join(__dirname, 'segments', 'background.mp4'),
tempDir: path.join(__dirname, 'temp'),
fadeInDuration: 0.5,
fadeOutDuration: 0.5,
transitionAudioDuration: 3.8,
qualityMode: 'balanced'
};
console.log(' 测试 clips:', testClips.map(c => ({ title: c.title, start: c.start, end: c.end, dur: c.duration })));
const tasks = MapReduceModule.calculateTasks(testClips, testSettings);
console.log(`✅ calculateTasks 执行成功,返回 ${tasks.length} 个任务`);
if (tasks.length > 0) {
console.log('\n 第一个任务:');
const task = tasks[0];
console.log(' - durations:', task.durations);
console.log(' - backgroundSeeks:', task.backgroundSeeks);
}
} catch (error) {
console.log('❌ Map-Reduce 脚本错误:', error.message);
console.log(' 错误堆栈:', error.stack);
}
console.log('\n[诊断] 完成');