
# ロゲイニング大会管理システム 概要設計書

## 1. システム概要

ロゲイニング大会の運営と参加者管理を支援するWebシステムです。ロゲイニングとは、チームがチェックポイントを回って得点を獲得するアウトドアスポーツであり、本システムでは大会の参加者登録、チェックポイント管理、リアルタイムでのスコア集計、ランキング表示などの機能を提供します。

## 2. システム構成

### 2.1 全体構成

本システムはマイクロサービスアーキテクチャを採用し、Docker Composeによって複数のコンテナを連携させています。


### 2.2 コンポーネント構成

#### 2.2.1 バックエンドAPI (apiサービス)
- **技術スタック**: Python/Django, GDAL
- **役割**: データ処理、ビジネスロジック、APIエンドポイントの提供
- **主要機能**:
  - 参加チーム管理
  - チェックポイント管理
  - スコア計算
  - ランキング生成
  - 地理空間データ処理

#### 2.2.2 フロントエンドサーバー (supervisor-webサービス)
- **技術スタック**: Nginx
- **役割**: 静的ファイル配信、APIプロキシ
- **主要機能**:
  - HTMLページ配信
  - メディアファイル提供
  - API呼び出しの中継

#### 2.2.3 データベース (PostgreSQL/PostGIS)
- **役割**: データ永続化、地理空間情報の管理
- **主要データ**:
  - イベント情報
  - チーム情報
  - カテゴリ情報
  - チェックポイント情報
  - スコア情報

## 3. 主要機能

### 3.1 イベント管理
- 複数大会の管理機能
- 各大会のカテゴリ（クラス）設定

### 3.2 チーム・参加者管理
- チーム登録・管理
- ゼッケン番号割り当て
- チーム状態管理（参加中、ゴール、棄権など）

### 3.3 ランキング表示
- カテゴリ別ランキング表示
- TOP3ランキング表示
- リアルタイムスコア更新
- 失格チーム情報表示

### 3.4 地図・チェックポイント管理
- 地理空間データを活用したチェックポイント管理
- コース設計支援

## 4. 技術アーキテクチャ

### 4.1 開発環境
- Docker/Docker Compose による開発環境の統一
- 環境変数による設定管理

### 4.2 デプロイ構成
- コンテナ化されたサービス
- ボリュームによるデータ永続化
- Nginx によるリバースプロキシ

### 4.3 ネットワーク構成
- 内部ブリッジネットワーク (rog-api)
- 外部公開ポート: 8000(API), 8100(Web)

## 5. データフロー

1. クライアント（ブラウザ）がsupervisor-webにリクエスト
2. 静的コンテンツはsupervisor-webから直接配信
3. API呼び出しはapiサービスに転送
4. apiサービスがデータベースからデータ取得・処理
5. 結果がクライアントに返却される

## 6. セキュリティ設計

- 読み取り専用ボリュームによるファイル保護
- 適切なネットワーク分離
- 環境変数による認証情報の分離

## 7. 拡張性・保守性

- マイクロサービスアーキテクチャによる個別スケーリング
- ボリュームによるデータ永続化
- コンテナ再起動ポリシーによる障害対応

以上の設計に基づき、本システムはロゲイニング大会の運営効率化と参加者体験の向上を実現します。
EOT