checkin status tool

This commit is contained in:
2025-09-06 06:15:35 +09:00
parent 290a5a8c2f
commit e65da5fd8f
9 changed files with 1328 additions and 13 deletions

View File

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