#!/usr/bin/env python3
"""
Test script to debug pagination issue
"""
import asyncio
import json
import sys
from pathlib import Path

# Add backend directory to path
backend_dir = Path(__file__).parent / 'backend'
sys.path.insert(0, str(backend_dir))

from app.core.database import get_db
from app.models.procurement_orders import ProcurementOrder
from sqlalchemy import select, func

async def test_pagination():
    """Test that pagination returns different data for different pages"""

    # Get database session
    async for db in get_db():
        try:
            # Test with page_size=10 for easier visibility
            page_size = 10

            print("\n" + "="*60)
            print("🧪 测试分页功能")
            print("="*60)

            # Get total count
            count_query = select(func.count(ProcurementOrder.id))
            result = await db.execute(count_query)
            total = result.scalar()
            print(f"\n📊 总订单数: {total}")

            # Test page 1
            print(f"\n📄 获取第1页 (offset=0, limit={page_size}):")
            query1 = select(ProcurementOrder).limit(page_size).offset(0)
            result1 = await db.execute(query1)
            orders1 = result1.scalars().all()
            ids1 = [o.id for o in orders1]
            print(f"   订单ID: {ids1}")

            # Test page 2
            print(f"\n📄 获取第2页 (offset={page_size}, limit={page_size}):")
            query2 = select(ProcurementOrder).limit(page_size).offset(page_size)
            result2 = await db.execute(query2)
            orders2 = result2.scalars().all()
            ids2 = [o.id for o in orders2]
            print(f"   订单ID: {ids2}")

            # Test page 3
            print(f"\n📄 获取第3页 (offset={page_size*2}, limit={page_size}):")
            query3 = select(ProcurementOrder).limit(page_size).offset(page_size*2)
            result3 = await db.execute(query3)
            orders3 = result3.scalars().all()
            ids3 = [o.id for o in orders3]
            print(f"   订单ID: {ids3}")

            # Compare
            print("\n" + "="*60)
            print("🔍 比较结果:")
            print("="*60)

            if ids1 == ids2:
                print("❌ 第1页和第2页返回相同的数据！这是BUG")
            else:
                print("✅ 第1页和第2页数据不同 - 分页正常")

            if ids2 == ids3:
                print("❌ 第2页和第3页返回相同的数据！这是BUG")
            else:
                print("✅ 第2页和第3页数据不同 - 分页正常")

            # Show overlap
            overlap_1_2 = set(ids1) & set(ids2)
            overlap_2_3 = set(ids2) & set(ids3)

            if overlap_1_2:
                print(f"⚠️  第1页和第2页有重叠ID: {overlap_1_2}")
            else:
                print(f"✅ 第1页和第2页无重叠")

            if overlap_2_3:
                print(f"⚠️  第2页和第3页有重叠ID: {overlap_2_3}")
            else:
                print(f"✅ 第2页和第3页无重叠")

            print("\n" + "="*60)

        finally:
            await db.close()
            break

if __name__ == '__main__':
    asyncio.run(test_pagination())
