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

205 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# イベントユーザー登録システム
外部システム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()` - イベント参加ロジック
## ライセンス
このプロジェクトはロゲイニングシステムの一部です。