#!/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 django.db import connection
import logging

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

def investigate_team_table_structure():
    """チームテーブルの構造とFC岐阜問題を調査"""
    
    print("=== Team テーブル構造とFC岐阜問題調査 ===")
    
    with connection.cursor() as cursor:
        # 1. rog_teamテーブルの構造確認
        print("\n1. rog_teamテーブル構造:")
        cursor.execute("""
            SELECT column_name, data_type, is_nullable 
            FROM information_schema.columns 
            WHERE table_name = 'rog_team' 
            ORDER BY ordinal_position;
        """)
        columns = cursor.fetchall()
        for col in columns:
            print(f"  - {col[0]}: {col[1]} ({'NULL' if col[2] == 'YES' else 'NOT NULL'})")
        
        # 2. rog_teamテーブルの総件数
        print("\n2. rog_teamテーブルの状況:")
        cursor.execute("SELECT COUNT(*) FROM rog_team;")
        total_teams = cursor.fetchone()[0]
        print(f"  総チーム数: {total_teams}")
        
        # 3. FC岐阜イベント（ID:10）の詳細調査
        print("\n3. FC岐阜イベント（ID:10）詳細調査:")
        cursor.execute("SELECT COUNT(*) FROM rog_entry WHERE event_id = 10;")
        fc_entries = cursor.fetchone()[0]
        print(f"  FC岐阜イベントエントリー数: {fc_entries}")
        
        # 4. FC岐阜エントリーのサンプル表示
        print("\n4. FC岐阜エントリーサンプル:")
        cursor.execute("""
            SELECT id, team_id, event_id, date 
            FROM rog_entry 
            WHERE event_id = 10 
            LIMIT 10;
        """)
        fc_entry_samples = cursor.fetchall()
        for entry in fc_entry_samples:
            print(f"  Entry ID:{entry[0]}, Team ID:{entry[1]}, Event ID:{entry[2]}, Date:{entry[3]}")
        
        # 5. FC岐阜エントリーのteam_idを調べる
        print("\n5. FC岐阜エントリーのteam_id分析:")
        cursor.execute("""
            SELECT team_id, COUNT(*) as count
            FROM rog_entry 
            WHERE event_id = 10 
            GROUP BY team_id 
            ORDER BY count DESC;
        """)
        team_id_stats = cursor.fetchall()
        for stat in team_id_stats:
            print(f"  Team ID:{stat[0]}, エントリー数:{stat[1]}")
        
        # 6. 実際のteam_idでチーム情報を確認
        print("\n6. 実際のチーム情報確認:")
        if team_id_stats:
            sample_team_ids = [stat[0] for stat in team_id_stats[:5]]
            for team_id in sample_team_ids:
                cursor.execute("SELECT * FROM rog_team WHERE id = %s;", [team_id])
                team_info = cursor.fetchone()
                if team_info:
                    print(f"  Team ID:{team_id} 存在する: {team_info}")
                else:
                    print(f"  Team ID:{team_id} 存在しない")
        
        # 7. ゼッケン番号付きチームの確認（実際のカラム名を使用）
        print("\n7. ゼッケン番号関連調査:")
        if 'zekken_number' in [col[0] for col in columns]:
            cursor.execute("""
                SELECT COUNT(*) 
                FROM rog_team 
                WHERE zekken_number IS NOT NULL AND zekken_number != '';
            """)
            zekken_count = cursor.fetchone()[0]
            print(f"  ゼッケン番号付きチーム数: {zekken_count}")
            
            if zekken_count > 0:
                cursor.execute("""
                    SELECT id, zekken_number, event_id
                    FROM rog_team 
                    WHERE zekken_number IS NOT NULL AND zekken_number != ''
                    LIMIT 10;
                """)
                zekken_teams = cursor.fetchall()
                print("  ゼッケン番号付きチームサンプル:")
                for team in zekken_teams:
                    print(f"    Team ID:{team[0]}, Zekken:{team[1]}, Event ID:{team[2]}")
        
        # 8. 通過審査管理画面の問題の原因を特定
        print("\n8. 通過審査管理画面問題の分析:")
        print("  FC岐阜イベント（ID:10）について:")
        print(f"    - エントリー数: {fc_entries}")
        print(f"    - 関連チーム情報の確認が必要")
        
        # 実際に存在するチームを探す
        if team_id_stats:
            existing_teams = []
            missing_teams = []
            for team_id, count in team_id_stats:
                cursor.execute("SELECT COUNT(*) FROM rog_team WHERE id = %s;", [team_id])
                exists = cursor.fetchone()[0] > 0
                if exists:
                    existing_teams.append((team_id, count))
                else:
                    missing_teams.append((team_id, count))
            
            print(f"    - 存在するチーム: {len(existing_teams)}")
            print(f"    - 存在しないチーム: {len(missing_teams)}")
            
            if missing_teams:
                print("  🔴 問題発見: エントリーが参照するチームが存在しない！")
                for team_id, count in missing_teams[:3]:
                    print(f"    Missing Team ID:{team_id} ({count}エントリー)")

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