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

242 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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