# イベントユーザー登録システム 外部システム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. 基本的な実行 ```bash # デフォルトイベントコード(大垣2509)で実行 ./run_event_registration.sh # 指定したイベントコードで実行 ./run_event_registration.sh "大垣2509" ``` ### 2. テスト実行(DRY RUN) 実際のAPI呼び出しを行わずに処理の流れを確認: ```bash ./run_event_registration.sh "大垣2509" --dry-run ``` ### 3. カスタムCSVファイルを使用 ```bash ./run_event_registration.sh "大垣2509" --csv-file CPLIST/input/custom_teams.csv ``` ### 4. カスタムAPI URLを指定 ```bash ./run_event_registration.sh "大垣2509" --base-url http://production-server:8000 ``` ### 5. Pythonスクリプトを直接実行 ```bash python register_event_users.py --event_code "大垣2509" --csv_file CPLIST/input/team2025.csv --dry_run ``` ## Docker Composeでの実行 ### 環境変数設定 ```bash export EVENT_CODE="大垣2509" export CSV_FILE="CPLIST/input/team2025.csv" export BASE_URL="http://web:8000" export DRY_RUN="true" # テスト実行の場合 ``` ### 実行 ```bash 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. **重複ゼッケン番号エラー** ``` チーム登録エラー: このゼッケン番号は既に使用されています ``` → 既に登録済みのデータを再実行しようとしています ### ログの確認 ```bash # リアルタイムでログを確認 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()` - イベント参加ロジック ## ライセンス このプロジェクトはロゲイニングシステムの一部です。