Files
rogaining_srv/EVENT_REGISTRATION_README.md
2025-09-06 06:15:35 +09:00

6.3 KiB
Raw Blame History

イベントユーザー登録システム

外部システムAPI仕様書.mdを前提に、ユーザーデータCSVから各ユーザーごとにユーザー登録、チーム登録、エントリー登録、イベント参加を行うPythonスクリプトです。

概要

このシステムは以下の処理を自動化します:

  1. カスタムユーザー登録 API

    • メールアドレスをキーに既存ユーザーを取得
    • 検索がヒットしなければ、ユーザー登録
    • 検索がヒットすれば、パスワードを更新
    • event_codeに指定event_codeを設定
    • zekken_number にゼッケン番号を入力
    • team_name にチーム名を入力
  2. チーム登録、メンバー登録

    • 部門・時間・チーム名でチーム登録
    • メンバーを1名ずつ7名まで登録
    • それぞれダミーメールアドレスと名前と生年月日でメンバー登録
  3. エントリー登録

    • 指定されたイベントにチームを登録
  4. イベント参加

    • 登録したエントリーでイベント参加

CSVファイル形式

CSVファイルCPLIST/input/team2025.csv)は以下の項目を持ちます:

部門別数,時間,部門,チーム名,メール,パスワード,電話番号,氏名1,誕生日1,氏名2,誕生日2,氏名3,誕生日3,氏名4,誕生日4,氏名5,誕生日5,氏名6,誕生日6,氏名7,誕生日7,,

項目説明

  • 部門別数: 部門の番号
  • 時間: 競技時間
  • 部門: 競技部門名
  • チーム名: チーム名
  • メール: 代表者メールアドレス
  • パスワード: パスワード
  • 電話番号: 代表者電話番号
  • 氏名1〜7: チームメンバーの氏名最大7名
  • 誕生日1〜7: チームメンバーの生年月日YYYY/MM/DD形式

使用方法

1. 基本的な実行

# デフォルトイベントコード大垣2509で実行
./run_event_registration.sh

# 指定したイベントコードで実行
./run_event_registration.sh "大垣2509"

2. テスト実行DRY RUN

実際のAPI呼び出しを行わずに処理の流れを確認

./run_event_registration.sh "大垣2509" --dry-run

3. カスタムCSVファイルを使用

./run_event_registration.sh "大垣2509" --csv-file CPLIST/input/custom_teams.csv

4. カスタムAPI URLを指定

./run_event_registration.sh "大垣2509" --base-url http://production-server:8000

5. Pythonスクリプトを直接実行

python register_event_users.py --event_code "大垣2509" --csv_file CPLIST/input/team2025.csv --dry_run

Docker Composeでの実行

環境変数設定

export EVENT_CODE="大垣2509"
export CSV_FILE="CPLIST/input/team2025.csv"
export BASE_URL="http://web:8000"
export DRY_RUN="true"  # テスト実行の場合

実行

docker-compose -f docker-compose.event-registration.yml up --build

オプション

オプション 説明 デフォルト値
--event_code イベントコード 必須
--csv_file CSVファイルパス CPLIST/input/team2025.csv
--base_url APIベースURL http://localhost:8000
--dry_run テスト実行フラグ False

ログ

  • 実行ログは logs/register_event_users.log に出力されます
  • コンソールにも同時出力されます

処理統計

処理完了後、以下の統計情報が表示されます:

  • 処理完了チーム数
  • 作成ユーザー数
  • 更新ユーザー数
  • 登録チーム数
  • 作成エントリー数
  • 参加登録数
  • エラー数とその詳細

注意事項

  1. API認証: システムが稼働していることを確認してください
  2. CSVファイル: 必要な項目が正しく入力されていることを確認してください
  3. 重複処理: 同じデータを複数回実行すると重複エラーが発生する可能性があります
  4. メール認証: 新規ユーザー登録時はメール認証が必要な場合があります

トラブルシューティング

よくあるエラー

  1. CSVファイルが見つからない

    エラー: CSVファイルが見つかりません: CPLIST/input/team2025.csv
    

    → CSVファイルのパスを確認してください

  2. API接続エラー

    エラー: APIサーバーに接続できません
    

    → BASE_URLが正しいか、サーバーが稼働しているか確認してください

  3. 重複ゼッケン番号エラー

    チーム登録エラー: このゼッケン番号は既に使用されています
    

    → 既に登録済みのデータを再実行しようとしています

ログの確認

# リアルタイムでログを確認
tail -f logs/register_event_users.log

# エラーのみを確認
grep ERROR logs/register_event_users.log

開発者向け情報

ファイル構成

rogaining_srv/
├── register_event_users.py                    # メインスクリプト
├── run_event_registration.sh                  # 実行スクリプト
├── docker-compose.event-registration.yml      # Docker Compose設定
├── Dockerfile.event_registration              # Dockerfile
├── CPLIST/input/team2025.csv                 # CSVデータファイル
└── logs/register_event_users.log             # ログファイル

API エンドポイント

使用するAPIエンドポイント

  • POST /api/register/ - ユーザー仮登録
  • POST /api/login/ - ログイン
  • POST /api/register_team - チーム登録
  • POST /api/teams/{team_id}/members/ - メンバー追加
  • POST /api/entry/ - エントリー登録
  • POST /api/start_from_rogapp - イベント参加

カスタマイズ

処理をカスタマイズする場合は、register_event_users.pyの以下のメソッドを編集してください:

  • get_or_create_user() - ユーザー登録ロジック
  • register_team_and_members() - チーム登録ロジック
  • create_event_entry() - エントリー登録ロジック
  • participate_in_event() - イベント参加ロジック

ライセンス

このプロジェクトはロゲイニングシステムの一部です。