Fix history issue

This commit is contained in:
2025-09-05 23:50:50 +09:00
parent 33b122b7e8
commit 86ea3a4b0c
2 changed files with 69 additions and 13 deletions

View File

@ -18,6 +18,12 @@ from urllib.parse import urljoin
logger = logging.getLogger(__name__)
def get_next_serial_number():
"""次のserial_numberを取得"""
from django.db.models import Max
max_serial = GpsLog.objects.aggregate(Max('serial_number'))['serial_number__max']
return (max_serial or 0) + 1
"""
解説
この実装では以下の処理を行っています:
@ -246,10 +252,7 @@ def start_checkin(request):
event_code=event_code,
cp_number="START",
serial_number=0,
latitude=0.0,
longitude=0.0,
checkin_time=timezone.now(),
extra_data={"source": "admin_start"}
checkin_time=timezone.now()
)
logger.info(f"Team {entry.team.team_name} (zekken: {zekken_number}) started at {start_info.checkin_time}")
@ -344,7 +347,7 @@ def add_checkin(request):
"message": "指定されたゼッケン番号のチームが見つかりません"
}, status=status.HTTP_404_NOT_FOUND)
logger.info(f"[ADMIN_CHECKIN] ✅ Team found - ID: {request_id}, team_name: '{entry.team_name}', zekken: {zekken_number}, entry_id: {entry.id}")
logger.info(f"[ADMIN_CHECKIN] ✅ Team found - ID: {request_id}, team_name: '{entry.team.team_name}', zekken: {zekken_number}, entry_id: {entry.id}")
# チームがスタートしているか確認(オプション)
start_record = GpsLog.objects.filter(
@ -358,16 +361,13 @@ def add_checkin(request):
# スタート情報がない場合は自動的にスタートさせる
# 注意: 管理画面からの操作なので、自動スタートを許可
GpsLog.objects.create(
serial_number=get_next_serial_number(),
zekken_number=zekken_number,
event_code=event_code,
cp_number="START",
serial_number=0,
latitude=0.0,
longitude=0.0,
checkin_time=timezone.now(),
extra_data={"auto_start": True, "source": "admin_bulk_checkin"}
checkin_time=timezone.now()
)
logger.info(f"[ADMIN_CHECKIN] ✅ Auto-started team - ID: {request_id}, team_name: '{entry.team_name}', zekken: {zekken_number}")
logger.info(f"[ADMIN_CHECKIN] ✅ Auto-started team - ID: {request_id}, team_name: '{entry.team.team_name}', zekken: {zekken_number}")
# チェックポイントリストを解析
cp_list = [cp.strip() for cp in cp_list_string.split(',') if cp.strip()]
@ -412,11 +412,11 @@ def add_checkin(request):
# チェックポイント登録
checkpoint = GpsLog.objects.create(
serial_number=get_next_serial_number(),
zekken_number=zekken_number,
event_code=event_code,
cp_number=cp_number,
checkin_time=timezone.now(),
is_service_checked=event_cp.is_service_cp if event_cp else False
checkin_time=timezone.now()
)
logger.info(f"Successfully registered CP {cp_number} for team: {entry.team_name} (zekken: {zekken_number})")