import json
import os
import httpx


async def process_pdf_logic(pdf_file):
    """
    接收 PDF 文件并转发到解析服务
    """
    # 验证文件类型
    if not pdf_file.content_type.startswith("application/pdf"):
        raise Exception(400, "仅支持 PDF 文件")

    try:
        # 读取文件内容
        # file_content = await pdf_file.read()
        # 配置目标接口参数
        target_url = os.getenv("Mineru_URL","http://172.18.30.122:9988")
        target_url = target_url + "/analyze-pdf"
        # target_url = os.getenv("Mineru_URL","http://172.18.127.124:9088/pdf_parse")
        # target_url = "http://172.18.30.122:8998/pdf_parse"
        # params = {
        #     "parse_method": "auto",
        #     "is_json_md_dump": "true",
        #     "output_dir": "output"
        # }
        
        # 构建文件上传格式
        files = {
            "file": (pdf_file.filename, pdf_file.file, "application/pdf")
            # "pdf_file": (pdf_file.filename, pdf_file.file, "application/pdf")
        }

        # 发送请求到解析服务
        async with httpx.AsyncClient(timeout=1200.0) as client:
            response = await client.post(
                target_url,
                # params=params,
                files=files,
                headers={"Accept": "application/json"}
            )
            response.raise_for_status()
            result = response.json()
            
            full_content = result.get("data", {}).get("full_content", "")
            content_list = result.get("data", {}).get("content_list", [])
            # markdown_content =""
            # for content in content_list:
            #     text = content["text"]

            return full_content,content_list

    except httpx.RequestError as e:
        raise Exception(503, f"无法连接到解析服务: {str(e)}")
    except Exception as e:
        raise Exception(500, f"服务器内部错误: {str(e)}")
    
import asyncio
from pathlib import Path

async def test_request(path):
    pdf_path = Path(path)
    async with httpx.AsyncClient() as client:
        with open(pdf_path, "rb") as f:
            files = {"file": (pdf_path.name, f, "application/pdf")}
            response = await client.post(
                "http://172.18.30.122:9988/analyze-pdf",
                files=files,
                timeout=120
            )
        result = response.json()
            
        full_content = result.get("data", {}).get("full_content", "")
        content_list = result.get("data", {}).get("content_list", [])
        combined_json = ''.join(content_list)
        content_data = json.loads(combined_json)
        for item in content_data:
            if isinstance(item, dict):  # 确保是字典类型
                text = item.get("text", "")
                page_idx = item.get("page_idx", -1)  # 默认值 -1 表示缺失
                print(f"Text: {text}\nPage Index: {page_idx}\n{'-'*50}")

if __name__ == "__main__":
    # asyncio.run(test_request("/Users/lijinxuan/PycharmProjects/Sea/AutoRag/src/examples/邱茜茜.pdf"))
    asyncio.run(test_request("/Users/lijinxuan/PycharmProjects/Sea/AutoRag/src/examples/邱茜茜.pdf"))
