initial setting at 20-Aug-2025

This commit is contained in:
2025-08-20 19:15:19 +09:00
parent eab529bd3b
commit 1ba305641e
149 changed files with 170449 additions and 1802 deletions

241
機能設計書.md Normal file
View File

@ -0,0 +1,241 @@
# ロゲイニング大会管理システム 機能設計書
## 1. システム概要
本システムは、ロゲイニング大会の参加者登録からゴール時のスコアボード印刷まで、大会運営に必要な全機能を提供するWebアプリケーションです。
## 2. 機能一覧
### 2.1 認証・ユーザー管理機能
#### 2.1.1 ユーザー登録
- **機能概要**: 新規参加者の登録
- **API エンドポイント**: `/api/auth/register/`
- **主要機能**:
- メールアドレスによる一意識別
- パスワード設定
- 基本情報登録(名前、性別、生年月日)
- メール認証による本登録
#### 2.1.2 ログイン/ログアウト
- **機能概要**: システムへの認証
- **API エンドポイント**: `/api/auth/login/`, `/api/auth/logout/`
- **主要機能**:
- トークンベース認証
- セッション管理
#### 2.1.3 パスワード管理
- **機能概要**: パスワードの変更・リセット
- **API エンドポイント**: `/api/auth/change-password/`, `/api/auth/password-reset/`
### 2.2 イベント管理機能
#### 2.2.1 イベント作成・管理
- **機能概要**: 大会の基本情報管理
- **データモデル**: `NewEvent2`
- **主要機能**:
- イベント名、開催期間の設定
- 参加締切日時の設定
- 公開/非公開設定
- イベントコードによる識別
#### 2.2.2 カテゴリ管理
- **機能概要**: 競技クラスの管理
- **データモデル**: `NewCategory`
- **API エンドポイント**: `/api/categories/`
- **主要機能**:
- カテゴリ名3時間、5時間、ファミリー
- 制限時間設定
- 参加人数制限
- 性別・年齢制限
- ゼッケン番号の自動発番
### 2.3 チーム・参加者管理機能
#### 2.3.1 チーム作成・管理
- **機能概要**: 参加チームの管理
- **データモデル**: `Team`
- **API エンドポイント**: `/api/teams/`
- **主要機能**:
- チーム名設定
- チームオーナー機能
- カテゴリ選択
- メンバー招待機能
#### 2.3.2 メンバー管理
- **機能概要**: チームメンバーの管理
- **データモデル**: `Member`
- **API エンドポイント**: `/api/teams/{team_id}/members/`
- **主要機能**:
- メンバー追加・削除
- 仮メンバー機能(メールアドレス未登録者)
- メンバー招待メール送信
#### 2.3.3 エントリー管理
- **機能概要**: 大会参加申し込み
- **データモデル**: `Entry`
- **API エンドポイント**: `/api/entries/`
- **主要機能**:
- 参加日選択
- ゼッケン番号自動割り当て
- 参加条件検証(年齢、性別、人数制限)
- 外部システム連携(岐阜ロゲシステム)
### 2.4 大会運営機能
#### 2.4.1 チェックポイント管理
- **機能概要**: コース上のチェックポイント管理
- **データモデル**: `Location`
- **API エンドポイント**: `/api/locations/`
- **主要機能**:
- 地理座標による位置管理
- ポイント値設定
- カテゴリ別表示制御
#### 2.4.2 競技中管理
- **API エンドポイント群**:
- `/api/start_from_rogapp/` - スタート記録
- `/api/checkin_from_rogapp/` - チェックイン記録
- `/api/goal_from_rogapp/` - ゴール記録
#### 2.4.3 リアルタイムモニタリング
- **機能概要**: 競技中の状況把握
- **API エンドポイント**:
- `/api/realtimeMonitor/` - 全チーム監視
- `/api/realtimeMonitor_zekken_narrow/` - 特定チーム詳細監視
- **主要機能**:
- GPS位置情報表示
- チーム状態監視(未スタート、競技中、ゴール済)
- ルート表示
- GeoJSON形式データ提供
### 2.5 ランキング・結果表示機能
#### 2.5.1 ランキング表示
- **機能概要**: カテゴリ別ランキング表示
- **API エンドポイント**:
- `/api/rankings/{event_code}/{category_name}/`
- `/api/rankings/top3/{event_code}/`
- **主要機能**:
- スコア順ランキング
- TOP3ランキング表示
- 失格チーム表示
### 2.6 スコアボード・印刷機能
#### 2.6.1 スコアボード生成
- **機能概要**: ゴール時のスコアボード自動生成
- **実装場所**: `MobServer_gifuroge.rb`
- **主要機能**:
- Excelテンプレートからスコアボード生成
- PDF変換
- S3へのアップロード
- 印刷システムとの連携
#### 2.6.2 自動印刷システム
- **機能概要**: スコアボードの自動印刷
- **実装場所**: `rogaining_autoprint/`
- **主要機能**:
- S3監視による自動印刷
- 印刷ジョブ状態管理
- 再印刷機能
### 2.7 データ管理機能
#### 2.7.1 CSV一括登録
- **機能概要**: 参加者データの一括インポート
- **実装場所**: Django Admin + `EntryCSVProcessor`
- **主要機能**:
- チーム・メンバー一括登録
- データ検証
- 招待メール自動送信
#### 2.7.2 ウェイポイント・GPS管理
- **機能概要**: 位置情報データの管理
- **データモデル**: `GpsLog`, `UserTracks`
- **API エンドポイント**:
- `/api/get_waypoint_datas_from_rogapp/`
- `/api/get_route/`
### 2.8 地図・地理情報機能
#### 2.8.1 地図表示
- **機能概要**: インタラクティブ地図による情報表示
- **API エンドポイント**:
- `/api/LocationInBound/` - 範囲内地点検索
- `/api/ExtentForLocations/` - 地図範囲取得
#### 2.8.2 ルート表示
- **機能概要**: 参加者の移動ルート可視化
- **API エンドポイント**: `/api/top_users_routes/`
- **主要機能**:
- GeoJSON形式でのルート配信
- 上位チームのルート表示
- チェックポイント通過状況表示
## 3. 外部システム連携
### 3.1 岐阜ロゲシステム連携
- **機能**: チーム登録、更新の同期
- **API**:
- `/gifuroge/register_team`
- `/gifuroge/update_team_name`
### 3.2 AWS S3連携
- **機能**: ファイルストレージ
- **用途**:
- スコアボード保存
- 画像ファイル保存
## 4. データモデル概要
### 4.1 主要エンティティ
- **CustomUser**: ユーザー情報
- **NewEvent2**: イベント情報
- **NewCategory**: カテゴリ情報
- **Team**: チーム情報
- **Member**: メンバー情報
- **Entry**: エントリー情報
- **Location**: チェックポイント情報
- **GpsLog**: GPS記録
### 4.2 データ関連
- User ← (1:N) → Team ← (1:N) → Member
- Team ← (1:N) → Entry → (N:1) → Event
- Entry → (N:1) → Category
- Location ← (1:N) → GpsLog
## 5. セキュリティ機能
### 5.1 認証・認可
- **トークンベース認証**: Knox認証使用
- **権限制御**: チームオーナー、メンバー権限
- **API権限**: 読み取り専用・認証必須の分離
### 5.2 データ保護
- **パスワードハッシュ化**: Django標準機能使用
- **CSRF保護**: Django CSRF機能
- **入力検証**: シリアライザーによる検証
## 6. パフォーマンス最適化
### 6.1 データベース最適化
- **インデックス**: 地理空間データ用GiSTインデックス
- **クエリ最適化**: select_related, prefetch_related使用
### 6.2 API最適化
- **ページネーション**: 大量データの分割配信
- **キャッシュ**: 適切なHTTPキャッシュヘッダー
## 7. 運用機能
### 7.1 ログ機能
- **アクセスログ**: API使用状況記録
- **エラーログ**: システムエラー記録
- **業務ログ**: 重要操作の記録
### 7.2 監視機能
- **システム監視**: サービス稼働状況
- **リアルタイム監視**: 競技中のチーム状況
このシステムは、ロゲイニング大会の全運営フローを網羅し、参加者・運営者双方の利便性を高める包括的なソリューションとして設計されています。