import requests
import json

def test_complete_workflow():
    """
    测试完整的数据获取流程
    """
    base_url = "http://localhost:8000/api"
    
    print("开始测试完整数据获取流程...")
    
    # 1. 获取国家列表
    try:
        response = requests.get(f"{base_url}/countries/")
        countries = response.json()
        country = None
        # 查找一个有球队的国家
        for c in countries['results']:
            team_response = requests.get(f"{base_url}/teams/?country={c['id']}")
            teams = team_response.json()
            if len(teams.get('results', [])) > 0:
                country = c
                print(f"选择国家: {country['name']} (ID: {country['id']})，该国家有 {len(teams.get('results', []))} 个球队")
                break
        
        if not country:
            print("没有找到有关联球队的国家")
            return
            
    except Exception as e:
        print(f"获取国家列表失败: {str(e)}")
        return
    
    # 2. 根据国家ID获取球队列表
    try:
        response = requests.get(f"{base_url}/teams/?country={country['id']}")
        teams = response.json()
        team = teams['results'][0] if teams.get('results') else None
        print(f"2. 获取到 {len(teams.get('results', []))} 个球队，选择第一个: {team['name'] if team else 'None'}")
    except Exception as e:
        print(f"获取球队列表失败: {str(e)}")
        return
    
    if not team:
        print("没有获取到球队数据")
        return
    
    # 3. 根据球队ID获取球员列表
    try:
        response = requests.get(f"{base_url}/players/?stats__team={team['id']}")
        players = response.json()
        player = players['results'][0] if players.get('results') else None
        print(f"3. 获取到 {len(players.get('results', []))} 个球员，选择第一个: {player['name'] if player else 'None'}")
    except Exception as e:
        print(f"获取球员列表失败: {str(e)}")
        return
    
    if not player:
        print("没有获取到球员数据")
        return
    
    # 4. 根据球员ID获取统计数据
    try:
        response = requests.get(f"{base_url}/player-stats/?player={player['id']}")
        player_stats = response.json()
        stat = player_stats['results'][0] if player_stats.get('results') else None
        print(f"4. 获取到 {len(player_stats.get('results', []))} 条球员统计数据")
    except Exception as e:
        print(f"获取球员统计数据失败: {str(e)}")
        return
    
    # 5. 检查关键字段是否存在
    if player:
        print(f"5. 球员关键字段检查:")
        print(f"   - ID: {player.get('id', '缺失')}")
        print(f"   - 姓名: {player.get('name', '缺失')}")
        print(f"   - Slug: {player.get('slug', '缺失')}")
        print(f"   - 国籍: {player.get('nationality', '缺失')}")
    
    if team:
        print(f"6. 球队关键字段检查:")
        print(f"   - ID: {team.get('id', '缺失')}")
        print(f"   - 名称: {team.get('name', '缺失')}")
        print(f"   - Slug: {team.get('slug', '缺失')}")
    
    if stat:
        print(f"7. 统计数据关键字段检查:")
        print(f"   - ID: {stat.get('id', '缺失')}")
        print(f"   - 联赛: {stat.get('tournament', '缺失')}")
        print(f"   - 出场次数: {stat.get('appearances', '缺失')}")
        print(f"   - 评分: {stat.get('rating', '缺失')}")
        print(f"   - 球员Slug: {stat.get('player_slug', '缺失')}")
        print(f"   - 球队Slug: {stat.get('team_slug', '缺失')}")

    print("完整数据获取流程测试完成!")

if __name__ == "__main__":
    test_complete_workflow()