// 測試視覺分片處理器
use momentry_core::core::chunk::types::{Chunk, ChunkRule, ChunkType};
use momentry_core::core::processor::visual_chunk::process_visual_chunk;
use momentry_core::core::processor::yolo::{YoloFrame, YoloObject, YoloResult};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("=== 測試視覺分片處理器 ===");

    // 創建一個簡單的 YOLO 結果用於測試
    let mut yolo_result = YoloResult {
        frame_count: 100,
        fps: 30.0,
        frames: Vec::new(),
    };

    // 創建一些測試幀
    for i in 0..10 {
        let objects = vec![
            YoloObject {
                class_name: "person".to_string(),
                class_id: 0,
                x: 100,
                y: 200,
                width: 50,
                height: 100,
                confidence: 0.85,
            },
            YoloObject {
                class_name: "car".to_string(),
                class_id: 2,
                x: 300,
                y: 150,
                width: 80,
                height: 60,
                confidence: 0.90,
            },
        ];

        let frame = YoloFrame {
            frame: i * 10,
            timestamp: (i * 10) as f64 / 30.0,
            objects,
        };

        yolo_result.frames.push(frame);
    }

    println!("創建了測試 YOLO 結果: {} 幀", yolo_result.frames.len());

    // 測試 process_visual_chunk 函數
    let result = process_visual_chunk(
        1,
        "test_uuid".to_string(),
        "/test/path/video.mp4",
        &yolo_result,
        0,
        30.0,
    )
    .await?;

    println!("視覺分片處理器執行成功!");
    println!("生成分片數量: {}", result.chunk_count);
    println!("處理總幀數: {}", result.total_frames);
    println!("檢測物件總數: {}", result.total_objects);
    println!("唯一物件類別數: {}", result.unique_classes);

    // 顯示前幾個分片的摘要
    for (i, chunk) in result.chunks.iter().take(3).enumerate() {
        println!("分片 {}:", i);
        println!("  ID: {}", chunk.chunk_id);
        println!("  類型: {:?}", chunk.chunk_type);
        println!("  規則: {:?}", chunk.rule);
        println!("  幀範圍: {} - {}", chunk.start_frame, chunk.end_frame);
        println!("  持續時間: {:.2}s", chunk.duration_seconds());
        println!("  物件統計: {:?}", chunk.visual_stats);
    }

    println!("\n=== 測試完成 ===");
    Ok(())
}
