#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Document Processing Usage Example
文档处理使用示例 - 展示如何使用重构后的文档处理功能
"""

import asyncio
from pathlib import Path

# 导入算法包
from travel_algorithms import (
    create_document_pipeline,
    create_default_config,
    DocumentProcessor,
    TextExtractor,
    ContentIntegrator,
    ContentTransformer
)


async def simple_document_processing_example():
    """简单的文档处理示例"""
    
    print("📄 文档处理使用示例")
    print("=" * 40)
    
    # 1. 创建配置（指向你的资源目录）
    config = create_default_config(
        resource_base_directory="./resource",  # 你的提示词目录
        ai_model="qwen-plus"  # 可以换成其他模型
    )
    
    # 2. 创建文档处理流水线
    pipeline = create_document_pipeline(config)
    document_processor = pipeline["document_processor"]
    
    print("✅ 文档处理流水线创建成功")
    
    # 3. 创建示例文档
    sample_dir = Path("sample_documents")
    sample_dir.mkdir(exist_ok=True)
    
    # 创建景区介绍文档
    attraction_doc = sample_dir / "attraction_info.txt"
    with open(attraction_doc, 'w', encoding='utf-8') as f:
        f.write("""
张家界国家森林公园

张家界国家森林公园位于湖南省张家界市，是中国第一个国家森林公园，也是世界自然遗产地。

基本信息：
- 面积：130平方公里
- 最高峰：黄石寨，海拔1200米
- 气候：亚热带季风气候
- 最佳游览时间：春秋两季

主要景点：
1. 黄石寨 - 有"不到黄石寨，枉到张家界"之说
2. 金鞭溪 - 世界上最美丽的峡谷之一
3. 袁家界 - 电影《阿凡达》拍摄地
4. 天子山 - 有"峰林之王"的美誉

门票价格：
- 成人票：248元（4天有效）
- 学生票：163元
- 老人票：163元（65岁以上）
- 儿童：1.3米以下免费

交通指南：
- 飞机：张家界荷花机场，距市区5公里
- 火车：张家界火车站
- 汽车：长沙、广州等地有直达班车

住宿推荐：
- 景区内：天子山、袁家界有农家乐
- 市区内：各档次酒店齐全

游览贴士：
1. 景区较大，建议安排2-3天游览
2. 山路较多，建议穿舒适的运动鞋
3. 天气多变，建议携带雨具
4. 保护环境，不要乱扔垃圾
""")
    
    # 创建价格信息CSV
    price_csv = sample_dir / "pricing.csv"
    with open(price_csv, 'w', encoding='utf-8') as f:
        f.write("""项目,价格,说明
门票,248元,4天有效期
索道,单程65元,往返118元
观光电梯,单程72元,往返144元
小火车,单程40元,往返80元
导游服务,150元/天,专业导游
餐饮,人均80-120元,农家菜为主
住宿,100-500元/晚,根据档次不同""")
    
    print(f"✅ 示例文档创建完成: {sample_dir}")
    
    # 4. 处理文档并转换为不同格式
    
    # 4a. 转换为景区标准信息格式
    print("\n🏞️ 转换为景区标准信息格式...")
    attraction_result = await document_processor.process_documents(
        sources=sample_dir,
        target_format="attraction_standard",
        additional_requirements="重点突出景区特色和实用信息"
    )
    
    # 保存结果
    output_dir = Path("output/document_processing")
    output_dir.mkdir(parents=True, exist_ok=True)
    
    with open(output_dir / "attraction_standard.txt", 'w', encoding='utf-8') as f:
        f.write(attraction_result['final_output'])
    
    print("✅ 景区标准信息已生成并保存")
    
    # 4b. 转换为旅游攻略格式
    print("\n🗺️ 转换为旅游攻略格式...")
    guide_result = await document_processor.process_documents(
        sources=sample_dir,
        target_format="travel_guide",
        additional_requirements="重点介绍游览路线和实用贴士"
    )
    
    with open(output_dir / "travel_guide.txt", 'w', encoding='utf-8') as f:
        f.write(guide_result['final_output'])
    
    print("✅ 旅游攻略已生成并保存")
    
    # 4c. 转换为营销文案格式
    print("\n📢 转换为营销文案格式...")
    marketing_result = await document_processor.process_documents(
        sources=sample_dir,
        target_format="marketing_copy",
        additional_requirements="突出景区独特性和吸引力，激发游客兴趣"
    )
    
    with open(output_dir / "marketing_copy.txt", 'w', encoding='utf-8') as f:
        f.write(marketing_result['final_output'])
    
    print("✅ 营销文案已生成并保存")
    
    # 4d. 转换为结构化数据格式
    print("\n📊 转换为结构化数据格式...")
    structured_result = await document_processor.process_documents(
        sources=sample_dir,
        target_format="structured_data",
        additional_requirements="提取所有关键数据，便于系统处理"
    )
    
    with open(output_dir / "structured_data.json", 'w', encoding='utf-8') as f:
        import json
        if structured_result['transformed_content']['structured_data']:
            json.dump(
                structured_result['transformed_content']['structured_data'],
                f, 
                ensure_ascii=False, 
                indent=2
            )
        else:
            f.write(structured_result['final_output'])
    
    print("✅ 结构化数据已生成并保存")
    
    # 5. 显示处理统计
    print("\n📊 处理统计:")
    for format_name, result in [
        ("景区标准信息", attraction_result),
        ("旅游攻略", guide_result), 
        ("营销文案", marketing_result),
        ("结构化数据", structured_result)
    ]:
        print(f"  {format_name}:")
        print(f"    - 处理文档数: {result['processing_summary']['total_documents']}")
        print(f"    - 输出长度: {len(result['final_output'])} 字符")
        print(f"    - 质量评分: {result['transformed_content']['quality_score']:.2f}")
    
    print(f"\n📁 所有结果已保存至: {output_dir}")


async def advanced_document_processing_example():
    """高级文档处理示例"""
    
    print("\n🚀 高级文档处理示例")
    print("=" * 40)
    
    # 创建配置
    config = create_default_config(resource_base_directory="./resource")
    pipeline = create_document_pipeline(config)
    
    # 分步骤处理示例
    print("\n📝 分步骤处理示例...")
    
    # 步骤1：仅提取文档
    text_extractor = pipeline["text_extractor"]
    sample_file = Path("sample_documents/attraction_info.txt")
    
    if sample_file.exists():
        extracted_doc = text_extractor.extract_from_file(sample_file)
        print(f"✅ 文档提取完成:")
        print(f"  - 文件: {extracted_doc.filename}")
        print(f"  - 内容长度: {len(extracted_doc.content)} 字符")
        print(f"  - 词数: {extracted_doc.metadata.get('word_count', 0)}")
        
        # 步骤2：仅内容整合
        content_integrator = pipeline["content_integrator"]
        integrated_content = content_integrator.integrate_documents([extracted_doc])
        print(f"✅ 内容整合完成:")
        print(f"  - 关键主题: {integrated_content.key_topics}")
        print(f"  - 内容摘要长度: {len(integrated_content.content_summary)} 字符")
        
        # 步骤3：仅格式转换
        content_transformer = pipeline["content_transformer"]
        
        # 尝试多种格式
        formats = ['summary', 'blog_post', 'faq']
        
        for fmt in formats:
            try:
                transformed = await content_transformer.transform_content(
                    integrated_content=integrated_content,
                    format_type=fmt
                )
                print(f"✅ {fmt} 格式转换完成，质量评分: {transformed.quality_score:.2f}")
            except Exception as e:
                print(f"❌ {fmt} 格式转换失败: {e}")


async def batch_processing_example():
    """批量处理示例"""
    
    print("\n📦 批量处理示例")
    print("=" * 40)
    
    config = create_default_config(resource_base_directory="./resource")
    pipeline = create_document_pipeline(config)
    document_processor = pipeline["document_processor"]
    
    # 创建多个测试目录
    test_dirs = []
    for i in range(2):
        test_dir = Path(f"batch_test_{i+1}")
        test_dir.mkdir(exist_ok=True)
        
        # 在每个目录创建测试文件
        with open(test_dir / f"info_{i+1}.txt", 'w', encoding='utf-8') as f:
            f.write(f"这是批量测试目录 {i+1} 的内容。\n包含一些测试信息用于验证批量处理功能。")
        
        test_dirs.append(test_dir)
    
    try:
        # 执行批量处理
        batch_results = await document_processor.batch_process_directories(
            directories=test_dirs,
            target_format='summary'
        )
        
        print(f"✅ 批量处理完成，处理了 {len(batch_results)} 个目录")
        
        for dir_name, result in batch_results.items():
            if 'error' in result:
                print(f"❌ {dir_name}: {result['error']}")
            else:
                print(f"✅ {dir_name}: 成功处理")
                
    finally:
        # 清理测试目录
        for test_dir in test_dirs:
            for file in test_dir.iterdir():
                file.unlink()
            test_dir.rmdir()


def show_supported_formats():
    """显示支持的格式"""
    
    print("\n📋 支持的格式")
    print("=" * 40)
    
    config = create_default_config()
    pipeline = create_document_pipeline(config)
    document_processor = pipeline["document_processor"]
    
    formats = document_processor.get_supported_formats()
    
    print("📥 支持的输入格式:")
    for ext, desc in formats['input_formats'].items():
        print(f"  {ext}: {desc}")
    
    print("\n📤 支持的输出格式:")
    for fmt, desc in formats['output_formats'].items():
        print(f"  {fmt}: {desc}")


async def main():
    """主函数"""
    
    print("🚀 文档处理系统使用示例")
    print("📖 本示例展示了重构后的文档处理功能")
    print("\n包含的新功能:")
    print("  ✨ 多格式文档提取和解析")
    print("  ✨ 智能内容整合和主题分析")
    print("  ✨ AI驱动的多格式转换")
    print("  ✨ 质量评分和处理统计")
    print("  ✨ 批量处理和流水线管理")
    print("  ✨ 灵活的配置和扩展机制")
    print("\n" + "=" * 50)
    
    # 显示支持的格式
    show_supported_formats()
    
    # 简单处理示例
    await simple_document_processing_example()
    
    # 高级处理示例
    await advanced_document_processing_example()
    
    # 批量处理示例
    await batch_processing_example()
    
    print("\n" + "=" * 50)
    print("🎊 示例演示完成！")
    print("\n📁 生成的文件:")
    print("  - sample_documents/ - 示例文档目录")
    print("  - output/document_processing/ - 处理结果")
    print("📖 查看生成的文件了解处理效果")
    print("\n💡 使用建议:")
    print("  1. 根据实际需求选择合适的输出格式")
    print("  2. 使用自定义提示词优化转换效果")
    print("  3. 利用批量处理功能提高工作效率")
    print("  4. 关注质量评分，调整处理参数")


if __name__ == "__main__":
    asyncio.run(main()) 