Files
rogaining_srv/MObServer_仕様書.md
2025-08-20 19:15:19 +09:00

419 lines
13 KiB
Markdown
Raw Permalink 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.

岐阜ロゲGifuTabiサーバー API 仕様書
このドキュメントでは、MobServer_gifurogeのAPIエンドポイントとその機能を解説します。このシステムはロゲイニングイベント管理のためのサーバーサイドAPIを提供しています。
目次
1. 認証関連 API
2. チーム・ユーザー管理 API
3. チェックポイント関連 API
4. ルート・位置情報関連 API
5. ランキング関連 API
6. レポート・スコアボード関連 API
7. 管理機能 API
8. その他の API
# 認証関連 API
## /callback_gifuroge (POST)
機能: LINE Botのウェブフック。ユーザーからのメッセージ処理。
利用: LINE Platformから自動的に呼び出される。
## /check_event_code (GET)
パラメータ:
zekken_number: ゼッケン番号
pw: パスワード
戻り値: イベントコードまたはエラー情報
機能: ゼッケン番号とパスワードの組み合わせが正しいか確認し、イベントコードを返す。
# チーム・ユーザー管理 API
## /get_team_list (GET)
パラメータ:
event_code: イベントコード(省略可)
戻り値: チームリスト
機能: 指定されたイベントのチームリスト、または全イベントのチームリストを取得。
## /get_zekken_list (GET)
パラメータ:
event: イベントコード
戻り値: ゼッケン番号のリスト
機能: 指定されたイベントの全ゼッケン番号を取得。
## /register_team (POST)
パラメータ:
zekken_number: ゼッケン番号
event_code: イベントコード
team_name: チーム名
class_name: クラス名
password: パスワード
戻り値: 登録結果
機能: 新しいチームを登録。
## /update_team_name (POST)
パラメータ:
zekken_number: ゼッケン番号
new_team_name: 新しいチーム名
event_code: イベントコード
戻り値: 更新結果
機能: チーム名を更新。
## /teamClassChanger (GET)
パラメータ:
zekken: ゼッケン番号
event: イベントコード
new_class: 新しいクラス名
戻り値: 変更結果
機能: チームのクラスを変更。
## /teamRegister (GET)
パラメータ:
event: イベントコード
class: クラス名
zekken: ゼッケン番号
team: チーム名
pass: パスワード
戻り値: 登録結果
機能: チームを登録(管理者用)。
## /zekkenMaxNum (GET)
パラメータ:
event: イベントコード
戻り値: 最大ゼッケン番号
機能: 指定イベントで使用されている最大のゼッケン番号を取得。
## /zekkenDoubleCheck (GET)
パラメータ:
zekken: ゼッケン番号
event: イベントコード
戻り値: 重複チェック結果
機能: 指定ゼッケン番号が既に使用されているか確認。
## /get_chatlog (GET)
パラメータ:
event: イベントコード
zekken: ゼッケン番号
戻り値: チャットログ
機能: 指定チームのLINE Botとのチャットログを取得。
# チェックポイント関連 API
## /input_cp (POST)
パラメータ:
zekken_number: ゼッケン番号
event_code: イベントコード
cp_number: チェックポイント番号
image_address: 画像アドレス
戻り値: 処理結果
機能: チェックポイント通過情報を登録。
## /getCheckpointList (GET)
パラメータ:
event: イベントコード
戻り値: チェックポイントリスト
機能: 指定イベントの全チェックポイント情報を取得。
## /start_from_rogapp (POST)
パラメータ:
event_code: イベントコード
team_name: チーム名
戻り値: 処理結果
機能: アプリからスタート処理を実行。
## /checkin_from_rogapp (POST)
パラメータ:
event_code: イベントコード
team_name: チーム名
cp_number: チェックポイント番号
image: 画像URL
戻り値: 処理結果
機能: アプリからチェックイン処理を実行。
## /goal_from_rogapp (POST)
パラメータ:
event_code: イベントコード
team_name: チーム名
image: 画像URL
goal_time: ゴール時間
戻り値: 処理結果とスコアボードURL
機能: アプリからゴール処理を実行し、スコアボードを生成。
## /remove_checkin_from_rogapp (POST)
パラメータ:
event_code: イベントコード
team_name: チーム名
cp_number: チェックポイント番号
戻り値: 処理結果
機能: アプリからチェックイン記録を削除。
## /startCheckin (GET)
パラメータ:
event: イベントコード
zekken: ゼッケン番号
戻り値: 処理結果
機能: 管理画面からスタート処理を実行。
## /addCheckin (GET)
パラメータ:
event: イベントコード
zekken: ゼッケン番号
list: カンマ区切りのチェックポイント番号リスト
戻り値: 処理結果
機能: 管理画面から複数チェックポイントを一括登録。
## /deleteCheckin (GET)
パラメータ:
zekken: ゼッケン番号
event_code: イベントコード
sn: シリアル番号
戻り値: 処理結果
機能: チェックイン記録を削除。
## /moveCheckin (GET)
パラメータ:
zekken: ゼッケン番号
event_code: イベントコード
old_sn: 移動元シリアル番号
new_sn: 移動先シリアル番号
戻り値: 処理結果
機能: チェックイン記録を移動(順序変更)。
## /goalCheckin (GET)
パラメータ:
event: イベントコード
zekken: ゼッケン番号
goal_time: ゴール時間
戻り値: 処理結果
機能: 管理画面からゴール処理を実行。
## /changeGoalTimeCheckin (GET)
パラメータ:
event: イベントコード
zekken: ゼッケン番号
goal_time: 新しいゴール時間
戻り値: 処理結果
機能: ゴール時間を変更。
## /getCheckinList (GET)
パラメータ:
zekken: ゼッケン番号
event: イベントコード
戻り値: チェックイン記録リスト
機能: 指定チームのチェックイン記録を取得。
## /serviceCheckTrue、/serviceCheckFalse (GET)
パラメータ:
event: イベントコード
zekken: ゼッケン番号
sn: シリアル番号
戻り値: 処理結果
機能: サービスチェックのフラグをTrue/Falseに設定。
## /getYetCheckSeeviceList (GET)
パラメータ:
event: イベントコード
戻り値: 未チェックのサービスリスト
機能: 未チェックのサービスチェックポイントリストを取得。
# ルート・位置情報関連 API
## /get_waypoint_datas_from_rogapp (POST)
パラメータ:
team_name: チーム名
event_code: イベントコード
waypoints: ウェイポイントデータの配列
戻り値: 処理結果
機能: アプリからウェイポイントデータを受信し保存。
## /getRoute (GET)
パラメータ:
team: チーム名
event_code: イベントコード
戻り値: ルートデータ
機能: 指定チームのルート情報を取得。
## /fetchUserLocations (GET)
パラメータ:
zekken_number: ゼッケン番号
event_code: イベントコード
戻り値: 位置情報データ
機能: ユーザーの位置情報履歴を取得。
## /getAllRoutes (GET)
パラメータ:
event_code: イベントコード
class_name: クラス名(省略可)
戻り値: 全チームのルートデータ
機能: 指定イベントの全チームのルート情報を取得。
## /getStartPoint (GET)
パラメータ:
event: イベントコード
戻り値: スタートポイント情報
機能: イベントのスタートポイント情報を取得。
## /analyze_point (GET)
パラメータ:
lat: 緯度
lng: 経度
team_name: チーム名
event_code: イベントコード
戻り値: 分析結果
機能: 指定地点の情報を分析(速度、移動タイプなど)。
## /top_users_routes (GET)
パラメータ:
event_code: イベントコード
class_name: クラス名
戻り値: トップユーザーのルート
機能: 指定クラスのトップ選手のルート情報を取得。
## /generate_route_image (GET)
パラメータ:
event_code: イベントコード
zekken_number: ゼッケン番号
戻り値: 生成された画像URL
機能: チームのルートを可視化した画像を生成。
## /realtimeMonitor、/realtimeMonitor_zekken_narrow (GET)
パラメータ:
event_code: イベントコード
class: クラス名(省略可)
zekken: ゼッケン番号narrow版のみ
戻り値: リアルタイムモニタリングデータ
機能: リアルタイムのチーム位置情報を取得。
# ランキング関連 API
## /get_ranking (GET)
パラメータ:
class: クラス名
event: イベントコード
戻り値: ランキングデータ
機能: 指定クラスのランキングを取得。
## /all_ranking_top3 (GET)
パラメータ:
event: イベントコード
戻り値: 全クラスのトップ3ランキング
機能: 指定イベントの全クラスにおけるトップ3選手のランキングを取得。
## /all_ranking_top3_for_fcgifu (GET)
パラメータ: なし
戻り値: FC岐阜用のトップ3ランキング
機能: FC岐阜イベント用の全クラスのトップ3ランキングとルート情報を取得。
## /all_ranking_for_fcgifu (GET)
パラメータ: なし
戻り値: FC岐阜用の全ランキング
機能: FC岐阜イベント用の全ランキングとルート情報を取得。
# レポート・スコアボード関連 API
## /get_photo_list、/get_photo_list_prod (GET)
パラメータ:
zekken: ゼッケン番号
pw: パスワードprod版のみ
event: イベントコード
戻り値: 写真リストとレポートURL
機能: チームの写真とレポートURLを取得。
## /getScoreboard (GET)
パラメータ:
z_num: ゼッケン番号
event: イベントコード
戻り値: スコアボードExcelファイル
機能: チームのスコアボードをダウンロード。
## /download_scoreboard (GET)
パラメータ:
event_code: イベントコード
zekken_number: ゼッケン番号
戻り値: スコアボードPDFファイル
機能: チームのスコアボードPDFをダウンロード。
## /reprint (GET)
パラメータ:
event: イベントコード
zekken: ゼッケン番号
戻り値: 処理結果
機能: スコアボードを再生成。
## /makeAllScoreboard (GET)
パラメータ:
event: イベントコード
戻り値: 処理結果
機能: 指定イベントの全チームのスコアボードを一括生成。
## /makeCpListSheet (POST)
パラメータ:
event: イベントコード
cp_csv: チェックポイントCSVファイル
sponsor_csv: スポンサーCSVファイル
戻り値: CPリストシートExcelファイル
機能: チェックポイントリストのシートを生成。
# 管理機能 API
## /rogainingSimulator (GET)
パラメータ:
event_code: イベントコード
course_time: コース時間
pause_time_free: 無料CP停止時間
pause_time_paid: 有料CP停止時間
spare_time: 予備時間
target_velocity: 目標速度
free_node_to_visit: 訪問する無料ノード
paid_node_to_visit: 訪問する有料ノード
戻り値: シミュレーション結果
機能: ロゲイニングのルートシミュレーションを実行。
その他の API
## /test_gifuroge (GET)
機能: サーバーの動作テスト用エンドポイント。
## /practice (GET)
機能: 練習用エンドポイント。
以上が岐阜ロゲサーバーのAPI仕様です。各APIは特定の機能を実行し、JSONまたはファイル形式でレスポンスを返します。多くのAPIはイベント管理者用のバックエンド機能として設計されていますが、一部はロゲイニングアプリからも利用できます。
移行:
remove all migration file
drop database and table
create database rogdb
python manage.py makemigrations
python manage.py migrate
restore db from backup
テスト:
# すべてのテストを実行
docker compose exec app python manage.py test
# rogアプリケーションのテストのみ実行
docker compose exec app python manage.py test rog.tests
# 詳細な出力でテストを実行(エラーの詳細を確認したい場合)
docker compose exec app python manage.py test rog.tests --verbosity=2
# 特定のテストクラスのみ実行
docker compose exec app python manage.py test rog.tests.TestLocationModel
# 特定のテストメソッドのみ実行
docker compose exec app python manage.py test rog.tests.TestLocationModel.test_create_location
# covreageをインストール初回のみ
docker compose exec app pip install coverage
# カバレッジを計測してテスト実行
docker compose exec app coverage run --source='.' manage.py test rog
# レポート表示
docker compose exec app coverage report
docker compose run app python manage.py import_event_data <CSVファイルパス> <イベントコード>
docker compose run app python manage.py import_event_data /app/rog/data/参加者システムテスト.csv 中津川