Fix try-except structure and docstring in checkin API
- Correct indentation for except block - Fix broken docstring formatting - Ensure proper Python syntax compliance - Resolve remaining syntax errors
This commit is contained in:
@ -670,53 +670,54 @@ def checkin_from_rogapp(request):
|
|||||||
"requires_manual_review": bool(gps_coordinates.get('accuracy', 0) > 10), # 10m以上は要審査
|
"requires_manual_review": bool(gps_coordinates.get('accuracy', 0) > 10), # 10m以上は要審査
|
||||||
"image_url": s3_image_url # S3画像URLを返す
|
"image_url": s3_image_url # S3画像URLを返す
|
||||||
})
|
})
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# より詳細なエラー情報をログに記録
|
# より詳細なエラー情報をログに記録
|
||||||
import traceback
|
import traceback
|
||||||
error_details = {
|
error_details = {
|
||||||
"error_type": type(e).__name__,
|
"error_type": type(e).__name__,
|
||||||
"error_message": str(e),
|
"error_message": str(e),
|
||||||
"traceback": traceback.format_exc(),
|
"traceback": traceback.format_exc(),
|
||||||
"request_data": request.data if hasattr(request, 'data') else "No data",
|
"request_data": request.data if hasattr(request, 'data') else "No data",
|
||||||
"user_agent": user_agent if 'user_agent' in locals() else "Unknown",
|
"user_agent": user_agent if 'user_agent' in locals() else "Unknown",
|
||||||
"client_ip": client_ip if 'client_ip' in locals() else "Unknown"
|
"client_ip": client_ip if 'client_ip' in locals() else "Unknown"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.error(f"[CHECKIN] ❌ DETAILED ERROR: {error_details}")
|
||||||
|
|
||||||
|
# より具体的なエラーメッセージを返す
|
||||||
|
if "データベース" in str(e).lower() or "database" in str(e).lower():
|
||||||
|
error_message = "データベースの構造に問題があります。アプリを再起動してください。"
|
||||||
|
elif "s3" in str(e).lower() or "boto" in str(e).lower():
|
||||||
|
error_message = "画像アップロードに問題があります。しばらく後に再試行してください。"
|
||||||
|
elif "import" in str(e).lower() or "module" in str(e).lower():
|
||||||
|
error_message = "サーバーモジュールの読み込みエラーです。管理者にお問い合わせください。"
|
||||||
|
else:
|
||||||
|
error_message = "サーバーエラーが発生しました。しばらく後に再試行してください。"
|
||||||
|
|
||||||
logger.error(f"[CHECKIN] ❌ DETAILED ERROR: {error_details}")
|
return Response({
|
||||||
|
"status": "ERROR",
|
||||||
# より具体的なエラーメッセージを返す
|
"message": error_message,
|
||||||
if "データベース" in str(e).lower() or "database" in str(e).lower():
|
"error_code": "CHECKIN_API_ERROR"
|
||||||
error_message = "データベースの構造に問題があります。アプリを再起動してください。"
|
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||||
elif "s3" in str(e).lower() or "boto" in str(e).lower():
|
|
||||||
error_message = "画像アップロードに問題があります。しばらく後に再試行してください。"
|
|
||||||
elif "import" in str(e).lower() or "module" in str(e).lower():
|
|
||||||
error_message = "サーバーモジュールの読み込みエラーです。管理者にお問い合わせください。"
|
|
||||||
else:
|
|
||||||
error_message = "サーバーエラーが発生しました。しばらく後に再試行してください。"
|
|
||||||
|
|
||||||
return Response({
|
|
||||||
"status": "ERROR",
|
|
||||||
"message": error_message,
|
|
||||||
"error_code": "CHECKIN_API_ERROR"
|
|
||||||
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
解説
|
Goal API from rogapp - 解説
|
||||||
この実装では以下の処理を行っています:
|
この実装では以下の処理を行っています:
|
||||||
|
|
||||||
1.イベントコード、チーム名、画像URL、ゴール時間のパラメータを受け取ります
|
1. イベントコード、チーム名、画像URL、ゴール時間のパラメータを受け取ります
|
||||||
2.パラメータが不足している場合はエラーを返します
|
2. パラメータが不足している場合はエラーを返します
|
||||||
3.指定されたイベントとチームの存在を確認します
|
3. 指定されたイベントとチームの存在を確認します
|
||||||
4.チームがスタートしているかを確認します
|
4. チームがスタートしているかを確認します
|
||||||
- スタートしていない場合はエラーを返します
|
- スタートしていない場合はエラーを返します
|
||||||
5.既にゴールしているかチェックします
|
5. 既にゴールしているかチェックします
|
||||||
- ゴール済みの場合は警告メッセージを返します
|
- ゴール済みの場合は警告メッセージを返します
|
||||||
6.ゴール時間を処理します(提供されていない場合は現在時刻を使用)
|
6. ゴール時間を処理します(提供されていない場合は現在時刻を使用)
|
||||||
7.チームのスコアを計算します
|
7. チームのスコアを計算します
|
||||||
8.スコアボードを生成します(実際の生成ロジックは実装によって異なります)
|
8. スコアボードを生成します(実際の生成ロジックは実装によって異なります)
|
||||||
9.ゴール情報を登録します
|
9. ゴール情報を登録します
|
||||||
10.成功した場合、ゴール情報、スコア、スコアボードURLを含む成功メッセージを返します
|
10. 成功した場合、ゴール情報、スコア、スコアボードURLを含む成功メッセージを返します
|
||||||
|
|
||||||
スコアボードの生成部分は、実際のシステムの要件に合わせて詳細に実装する必要があります。
|
スコアボードの生成部分は、実際のシステムの要件に合わせて詳細に実装する必要があります。
|
||||||
この例では、単純にPDFファイルのパスとURLを生成していますが、
|
この例では、単純にPDFファイルのパスとURLを生成していますが、
|
||||||
|
|||||||
Reference in New Issue
Block a user