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