#!/usr/bin/env python3
import os
import sys
import django

# プロジェクト設定
sys.path.append('/app')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
django.setup()

from rog.models import Entry, Team, NewEvent2, Member
from django.db.models import Q
import logging

# ログ設定
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def analyze_fc_gifu_data():
    """FC岐阜関連のイベント・チーム・エントリーデータを詳細分析"""
    
    print("=== FC岐阜イベント・データ詳細分析 ===")
    
    # 1. FC岐阜関連イベントを検索
    print("\n1. FC岐阜関連イベント検索:")
    fc_events = NewEvent2.objects.filter(
        Q(event_name__icontains='FC岐阜') | 
        Q(event_name__icontains='fc岐阜') |
        Q(event_name__icontains='岐阜')
    )
    
    if fc_events.exists():
        for event in fc_events:
            print(f"  - ID:{event.id}, Name:{event.event_name}, Date:{event.event_day}")
            
            # イベントに関連するエントリーを確認
            entries = Entry.objects.filter(event=event)
            print(f"    関連エントリー数: {entries.count()}")
            
            # エントリーのチーム情報を表示
            if entries.exists():
                print("    エントリー詳細:")
                for entry in entries[:10]:  # 最初の10件のみ表示
                    team = entry.team
                    print(f"      Entry ID:{entry.id}, Team ID:{team.id}, Team Name:{team.name}, Zekken:{team.zekken_number}")
            
            # イベントに関連するチームを直接検索
            teams = Team.objects.filter(event=event)
            print(f"    関連チーム数: {teams.count()}")
            
            if teams.exists():
                print("    チーム詳細:")
                for team in teams[:10]:  # 最初の10件のみ表示
                    print(f"      Team ID:{team.id}, Name:{team.name}, Zekken:{team.zekken_number}")
    else:
        print("  FC岐阜関連イベントが見つかりません")
    
    # 2. 全イベント一覧を確認
    print("\n2. 全イベント一覧:")
    all_events = NewEvent2.objects.all()
    for event in all_events:
        entry_count = Entry.objects.filter(event=event).count()
        team_count = Team.objects.filter(event=event).count()
        print(f"  - ID:{event.id}, Name:{event.event_name}, Date:{event.event_day}, Entry:{entry_count}, Team:{team_count}")
    
    # 3. ゼッケン番号が設定されているチームを確認
    print("\n3. ゼッケン番号付きチーム:")
    teams_with_zekken = Team.objects.exclude(zekken_number__isnull=True).exclude(zekken_number='')
    print(f"  ゼッケン番号付きチーム数: {teams_with_zekken.count()}")
    
    if teams_with_zekken.exists():
        print("  サンプル:")
        for team in teams_with_zekken[:10]:
            print(f"    ID:{team.id}, Name:{team.name}, Zekken:{team.zekken_number}, Event:{team.event.event_name if team.event else 'None'}")
    
    # 4. 特定のイベントID（仮に100とする）を詳細調査
    print("\n4. イベントID 100 詳細調査:")
    try:
        event_100 = NewEvent2.objects.get(id=100)
        print(f"  イベント: {event_100.event_name} ({event_100.event_day})")
        
        # エントリー確認
        entries_100 = Entry.objects.filter(event=event_100)
        print(f"  エントリー数: {entries_100.count()}")
        
        # チーム確認
        teams_100 = Team.objects.filter(event=event_100)
        print(f"  チーム数: {teams_100.count()}")
        
        # ゼッケン番号付きチーム確認
        teams_100_with_zekken = teams_100.exclude(zekken_number__isnull=True).exclude(zekken_number='')
        print(f"  ゼッケン番号付きチーム数: {teams_100_with_zekken.count()}")
        
        if teams_100_with_zekken.exists():
            print("  ゼッケン番号付きチーム:")
            for team in teams_100_with_zekken:
                print(f"    ID:{team.id}, Name:{team.name}, Zekken:{team.zekken_number}")
        
    except NewEvent2.DoesNotExist:
        print("  イベントID 100は存在しません")
    
    # 5. Entryテーブルとチームの関係確認
    print("\n5. Entry-Team関係確認:")
    total_entries = Entry.objects.all().count()
    entries_with_teams = Entry.objects.exclude(team__isnull=True).count()
    print(f"  総エントリー数: {total_entries}")
    print(f"  チーム関連付けありエントリー数: {entries_with_teams}")
    
    # サンプルエントリーの詳細
    print("  サンプルエントリー詳細:")
    sample_entries = Entry.objects.all()[:5]
    for entry in sample_entries:
        team = entry.team
        event = entry.event
        print(f"    Entry ID:{entry.id}, Team:{team.name if team else 'None'}({team.id if team else 'None'}), Event:{event.event_name if event else 'None'}({event.id if event else 'None'})")
        if team:
            print(f"      Team Zekken:{team.zekken_number}, Team Event:{team.event.event_name if team.event else 'None'}")

if __name__ == "__main__":
    try:
        analyze_fc_gifu_data()
    except Exception as e:
        print(f"❌ エラーが発生しました: {e}")
        import traceback
        traceback.print_exc()
