申請システム ユーザーフロー
システム構成
Discord ユーザー
↕ discord.js (form-bot / vps)
form-worker (Cloudflare Workers)
↕ D1 (SQLite)
sho-room (React SPA / 実行委員UI)
Phase 1 — 基礎情報申請
1. 申請開始
- 実行委員が
/setupコマンドでサーバー設定を登録済であること - 申請者が任意のチャンネルで「申請を開始する」ボタンを押す
- 団体名モーダル が表示される
- 団体名
- 団体名(フリガナ)
2. チャンネル作成
- モーダル送信後、申請専用チャンネルが自動作成される(
#申請-{団体名}など) - form-worker に申請レコードが新規作成される(ステータス:
in_progress) - 申請者に専用チャンネルへの誘導メッセージが返る
3. 代表者情報入力
申請チャンネルで以下を入力:
- 代表者氏名 / フリガナ
- 学籍番号(教員は空欄可)
- 電話番号
- メールアドレス
4. 申請者情報
「代表者と同一ですか?」ボタンで分岐:
| 選択 | 動作 |
|---|---|
| 同一 | 申請者情報をスキップ |
| 異なる | 申請者氏名 / フリガナ / 学籍番号 / 電話 / メールを追加入力 |
5. 企画情報入力
- 企画名
- 企画詳細・説明
6. 参加形式・日程選択
セレクトメニューで選択:
| 項目 | 選択肢 |
|---|---|
| 参加形式 | ステージ / 講堂 / 屋外露店 / 講義棟 |
| 参加日 | 土曜日 / 日曜日 / 両日 |
「確定する」ボタンで確定。
7. 受付完了・来室案内
- 参加形式・日程を確定した時点で基礎情報を form-worker に PUT し、ステータスを
pending_basicに更新 - 申請チャンネルに基礎情報確認メッセージ(承認/修正依頼/却下 ボタン付き)が投稿される
- 申請者には以下の案内メッセージが表示される:
- 署名済みの同意書(印刷・直筆署名したもの)を持参
- 一時預かり金を持参
- 学祭室へ来室するよう案内
Phase 1 審査(実行委員)
基礎情報確認メッセージのボタン、または sho-room の申請詳細ページから操作。
| 操作 | ステータス遷移 | 動作 |
|---|---|---|
| 基礎情報 承認 | → approved_basic | チャンネル昇格・ロール付与、基礎情報確認書PDF送信、Phase2 開始案内送信 |
| 修正依頼 | → revision_basic | コメントをチャンネルに通知、再入力ボタン表示 |
| 却下 | → rejected | チャンネルに却下通知、ログチャンネルに記録 |
Phase 2 — 詳細情報申請
「詳細情報入力を開始する」ボタンで開始。参加形式によってフローが分岐する。
共通ステップ
- 電力申請 — 電気機器名・電力量をモーダルで入力
- 貸出備品申請 — 机・椅子・ホワイトボード等(参加形式別に追加フィールドあり)
参加形式別フロー
ステージ / 講堂
電力申請
→ 発表時間選択(15分刻み、セレクトメニュー)
→ 備品申請
→ レイアウト図アップロード(JPEG)
→ メンバーリスト CSV アップロード
→ 特記事項(任意)
→ 提出
備品追加フィールド:
- ステージ: 小ステージ台数
- 講堂: 長机台数
屋外露店
電力申請
→ 備品申請(布パーテーション含む)
→ ガス申請(あり/なし)
→ あり: コンロ数・着火器具・持込火器等を入力
→ 販売物(あり/なし)
→ あり: 販売物詳細表 CSV アップロード
→ 食品販売(あり/なし)
→ あり: 材料表・調理過程・車搬送有無を入力
→ レイアウト図アップロード(JPEG)
→ メンバーリスト CSV アップロード
→ 特記事項(任意)
→ 提出
講義棟
電力申請
→ 備品申請(布パーテーション・プロジェクター含む)
→ 販売物(あり/なし)
→ あり: 販売物詳細表 CSV アップロード
→ レイアウト希望 第1希望〜第3希望(各 JPEG + 希望位置ラジオ)
→ メンバーリスト CSV アップロード
→ 特記事項(任意)
→ 提出
レイアウト位置:
- 全体 / 前方のみ / 後方のみ
提出処理
- 詳細情報を form-worker に PUT
- 備品申請・メンバーリストを PUT(CSV はパースして登録)
- ステータスを
pending_detailに更新 - 申請チャンネルに詳細情報確認メッセージ(承認/修正依頼/却下 ボタン付き)を投稿
Phase 2 審査(実行委員)
sho-room の申請詳細ページ(/forms/:id)からのみ操作可能。Discord ボット側には審査ボタンを配置しない。
| 操作 | ステータス遷移 | 動作 |
|---|---|---|
| 詳細情報 承認 | → approved | 詳細情報確認書 PDF 送信、最終承認メッセージ送信、ログ記録 |
| 修正依頼 | → revision_detail | ステータス更新のみ(Discord 通知なし) |
| 却下 | → rejected | ステータス更新のみ(Discord 通知なし) |
ステータス遷移図
in_progress
↓ 参加形式・日程確定(基礎情報送信)
pending_basic
↓ 承認 → approved_basic
↓ 修正依頼 → revision_basic → (再入力) → pending_basic
↓ 却下 → rejected
approved_basic
↓ Phase2 開始・提出
pending_detail
↓ 承認 → approved(最終)
↓ 修正依頼 → revision_detail → (再入力) → pending_detail
↓ 却下 → rejected
ファイルフォーマット仕様
| ファイル | 形式 | 上限 | バリデーション |
|---|---|---|---|
| 電力申請 | CSV | 5 MB | .csv 拡張子 |
| レイアウト図 | JPEG | 10 MB | .jpg / .jpeg 拡張子 |
| メンバーリスト | CSV | 5 MB | ヘッダなし、列: 学籍番号,氏名 |
| 販売物詳細表 | CSV | 5 MB | .csv 拡張子 |
実行委員向け管理コマンド(form-bot)
| コマンド | 説明 |
|---|---|
/setup | チャンネル・ロール等のサーバー設定 |
/list | 申請一覧表示(ステータス・形式フィルタ可) |
/deadline set | 申請締め切り日時を設定 |
/deadline clear | 締め切りを解除 |
/timetable | タイムテーブル生成(stage/hall向け) |
/export pdf | 指定申請の確認書 PDF を再出力 |
sho-room(審査管理UI)
/forms — 申請一覧(ステータス・参加形式でフィルタ可)
/forms/:id — 申請詳細
- 基礎情報・詳細情報・メンバー・備品の表示
- 審査操作(
FORM_SUBMISSION_APPROVE権限が必要)- 承認 / 修正依頼 / 却下
PATCH /api/forms/applications/:id/statusを呼び出す