6.3 KiB
6.3 KiB
イベントユーザー登録システム
外部システムAPI仕様書.mdを前提に、ユーザーデータCSVから各ユーザーごとにユーザー登録、チーム登録、エントリー登録、イベント参加を行うPythonスクリプトです。
概要
このシステムは以下の処理を自動化します:
-
カスタムユーザー登録 API
- メールアドレスをキーに既存ユーザーを取得
- 検索がヒットしなければ、ユーザー登録
- 検索がヒットすれば、パスワードを更新
- event_codeに指定event_codeを設定
- zekken_number にゼッケン番号を入力
- team_name にチーム名を入力
-
チーム登録、メンバー登録
- 部門・時間・チーム名でチーム登録
- メンバーを1名ずつ7名まで登録
- それぞれダミーメールアドレスと名前と生年月日でメンバー登録
-
エントリー登録
- 指定されたイベントにチームを登録
-
イベント参加
- 登録したエントリーでイベント参加
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に出力されます - コンソールにも同時出力されます
処理統計
処理完了後、以下の統計情報が表示されます:
- 処理完了チーム数
- 作成ユーザー数
- 更新ユーザー数
- 登録チーム数
- 作成エントリー数
- 参加登録数
- エラー数とその詳細
注意事項
- API認証: システムが稼働していることを確認してください
- CSVファイル: 必要な項目が正しく入力されていることを確認してください
- 重複処理: 同じデータを複数回実行すると重複エラーが発生する可能性があります
- メール認証: 新規ユーザー登録時はメール認証が必要な場合があります
トラブルシューティング
よくあるエラー
-
CSVファイルが見つからない
エラー: CSVファイルが見つかりません: CPLIST/input/team2025.csv→ CSVファイルのパスを確認してください
-
API接続エラー
エラー: APIサーバーに接続できません→ BASE_URLが正しいか、サーバーが稼働しているか確認してください
-
重複ゼッケン番号エラー
チーム登録エラー: このゼッケン番号は既に使用されています→ 既に登録済みのデータを再実行しようとしています
ログの確認
# リアルタイムでログを確認
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()- イベント参加ロジック
ライセンス
このプロジェクトはロゲイニングシステムの一部です。