Files
rogaining_srv/機能設計書.md
2025-08-20 19:15:19 +09:00

7.8 KiB
Raw Blame History

ロゲイニング大会管理システム 機能設計書

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 監視機能

  • システム監視: サービス稼働状況
  • リアルタイム監視: 競技中のチーム状況

このシステムは、ロゲイニング大会の全運営フローを網羅し、参加者・運営者双方の利便性を高める包括的なソリューションとして設計されています。