import json
import os

def generate_markdown_report():
    """生成Markdown格式的分析报告"""
    
    # 读取分析结果
    with open('analysis_results.json', 'r', encoding='utf-8') as f:
        results = json.load(f)
    
    # 读取完整数据
    with open('samples_data.json', 'r', encoding='utf-8') as f:
        full_data = json.load(f)
    
    # 开始生成报告
    report = []
    report.append("# 样本文件分析报告\n")
    report.append(f"**分析时间**: 2024\n")
    report.append(f"**文件总数**: {len(results)}\n")
    report.append("\n---\n")
    
    # 统计信息
    report.append("\n## 📊 文件类型统计\n")
    type_count = {}
    for item in results:
        file_type = item['type']
        type_count[file_type] = type_count.get(file_type, 0) + 1
    
    for file_type, count in type_count.items():
        report.append(f"- **{file_type}**: {count} 个\n")
    
    report.append("\n---\n")
    
    # 详细分析
    report.append("\n## 📝 文件详细分析\n")
    
    for idx, item in enumerate(results, 1):
        filename = item['filename']
        file_type = item['type']
        
        report.append(f"\n### {idx}. {filename}\n")
        report.append(f"\n**文件类型**: {file_type}\n")
        
        # 获取完整文件信息
        file_info = full_data.get(filename, {})
        if 'format' in file_info:
            report.append(f"**文件格式**: {file_info['format']}\n")
        if 'encoding' in file_info:
            report.append(f"**文件编码**: {file_info['encoding']}\n")
        if 'length' in file_info:
            report.append(f"**文件长度**: {file_info['length']:,} 字符\n")
        
        # 根据类型添加特定信息
        if file_type == '网络小说':
            if 'author' in item:
                report.append(f"**作者**: {item['author']}\n")
            if 'intro' in item:
                report.append(f"\n**内容简介**:\n```\n{item['intro']}\n```\n")
            if 'chapters_preview' in item and item['chapters_preview']:
                report.append(f"\n**章节预览**:\n")
                for chapter in item['chapters_preview'][:5]:
                    report.append(f"- {chapter}\n")
        
        elif '剧本' in file_type:
            if 'scenes' in item and item['scenes'] > 0:
                report.append(f"**场景数量**: {item['scenes']} 个（前10000字统计）\n")
            if 'characters' in item and item['characters']:
                report.append(f"\n**主要人物**:\n")
                for char in item['characters'][:10]:
                    report.append(f"- {char}\n")
        
        report.append(f"\n**结构特征**: {item['structure_notes']}\n")
        
        # 添加前3000字预览
        report.append(f"\n**前3000字内容预览**:\n")
        report.append("```\n")
        preview = item['first_3000'][:3000]
        report.append(preview)
        report.append("\n```\n")
        
        report.append("\n---\n")
    
    # 总结
    report.append("\n## 📌 分析总结\n")
    report.append("\n### 网络小说特征\n")
    report.append("- 采用章节式结构，通常有\"第X章\"标记\n")
    report.append("- 包含作者信息和内容简介\n")
    report.append("- 文件通常较大（几十万到几百万字符）\n")
    report.append("- 常见编码：GBK、GB18030\n")
    
    report.append("\n### 剧本特征\n")
    report.append("- 采用场景编号格式（如\"1-1\"、\"2-1\"）\n")
    report.append("- 包含人物列表、对话和动作描述\n")
    report.append("- 使用特殊符号标记（如▲表示动作）\n")
    report.append("- 包含场景时间地点标注（日/夜、内/外）\n")
    
    report.append("\n### 编码处理经验\n")
    report.append("- TXT文件主要使用GBK和GB18030编码\n")
    report.append("- 需要尝试多种编码方式进行读取\n")
    report.append("- PDF和DOCX文件可以直接使用相应库读取\n")
    
    return ''.join(report)

def main():
    # 生成报告
    report = generate_markdown_report()
    
    # 确保目录存在
    os.makedirs('knowledge', exist_ok=True)
    
    # 保存报告
    output_path = 'knowledge/samples_overview.md'
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(report)
    
    print(f"报告已生成: {output_path}")
    print(f"报告长度: {len(report)} 字符")

if __name__ == '__main__':
    main()
