Files
rogaining_srv/analyze_fc_gifu_data.py
2025-08-29 09:11:20 +09:00

126 lines
5.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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()