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