"""
简化版 PDF 处理测试脚本
"""

import sys
from pathlib import Path

# 添加项目路径
project_root = Path(__file__).parent.parent.parent.parent.parent
sys.path.insert(0, str(project_root))

from core.construction_review.component.doc_worker.pdf_worker import (
    PdfTextSplitter,
    PdfFullTextExtractor,
    build_pdf_facade,
)
from core.construction_review.component.doc_worker.interfaces import DocumentSource


def test_splitter():
    """测试切分器"""
    print("=" * 60)
    print("测试 PdfTextSplitter")
    print("=" * 60)

    # 模拟PDF文本
    sample_text = """
四川路桥建设集团股份有限公司

第一章 编制依据
1.1 法律法规
《建筑法》相关内容
《安全生产法》相关规定

1.2 标准规范
GB 50017 钢结构设计标准

第二章 工程概况
2.1、项目简介
本项目位于某市某区

2.2、地形地貌
场地较为平坦

第三章 施工计划
3.1、施工进度
计划工期30天
    """

    splitter = PdfTextSplitter(enable_validation=True)

    # 模拟页面内容
    pages_content = [
        {"page_num": 1, "text": sample_text, "start_pos": 0, "end_pos": len(sample_text)}
    ]

    chunks = splitter.split_by_hierarchy(
        classification_items=[],
        pages_content=pages_content,
        toc_info={},
        target_level=1,
        max_chunk_size=10000,
        min_chunk_size=10,
    )

    print(f"\n生成 {len(chunks)} 个内容块:\n")
    for chunk in chunks:
        print(f"  [{chunk['chunk_id']}] {chunk['section_label']}")
        content_preview = chunk['review_chunk_content'][:80].replace('\n', ' ')
        print(f"      内容: {content_preview}...")

    # 验证报告
    report = splitter.get_validation_report()
    print(f"\n验证报告:")
    print(f"  总章节: {report['summary']['total']}")
    print(f"  规范: {report['summary']['valid']}")
    print(f"  异常: {report['summary']['invalid']}")

    if report['warnings']:
        print(f"\n  警告:")
        for w in report['warnings'][:3]:
            print(f"    ! {w}")

    return len(chunks) > 0


def test_facade():
    """测试 facade"""
    print("\n" + "=" * 60)
    print("测试 build_pdf_facade")
    print("=" * 60)

    # 获取测试PDF路径
    # pdf_path = input("\n请输入测试PDF文件路径（或按Enter跳过）: ").strip('" ')

    # 自动跳过 facade 测试（需要实际PDF文件）
    print("\n跳过 facade 测试（需要实际PDF文件）")
    return True


def main():
    print("\n简化版 PDF Worker 测试")
    print("=" * 60)

    # 测试切分器
    success1 = test_splitter()

    # 测试 facade
    success2 = test_facade()

    print("\n" + "=" * 60)
    if success1 and success2:
        print("✓ 所有测试通过")
    else:
        print("✗ 测试失败")
    print("=" * 60)


if __name__ == "__main__":
    main()
