# ロゲイニング大会管理システム 機能設計書 ## 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 監視機能 - **システム監視**: サービス稼働状況 - **リアルタイム監視**: 競技中のチーム状況 このシステムは、ロゲイニング大会の全運営フローを網羅し、参加者・運営者双方の利便性を高める包括的なソリューションとして設計されています。