書類提出 — DocumentSubmission
これは何か
サークルが実際に書類を提出し、運営スタッフが審査する流れ全体を管理します。
書類定義(DocumentType)がひな形なら、書類提出(DocumentSubmission)はそのひな形に対してサークルが記入して送ってきた実体です。
提出の状態遷移
NOT_SUBMITTED → PENDING → APPROVED
↓
REJECTED
| ステータス | 意味 |
|---|---|
NOT_SUBMITTED | まだ提出されていない |
PENDING | 提出済み。承認待ち。 |
APPROVED | すべての承認ステージを通過した。 |
REJECTED | 運営に却下された。修正して再提出が必要。 |
バージョンと審査の関係
書類は「バージョン」単位で管理されます。サークルが修正して再提出するたびにバージョンが上がります。
- 審査は常に最新バージョンに対して行われます
- 過去のバージョンは履歴として保持されます
- 却下されたバージョンのファイルも削除しません
各バージョンには4種類の状態があります。
| 状態 | 意味 |
|---|---|
PENDING | 審査待ち |
APPROVED | 承認された |
REJECTED | 却下された |
REVISION_REQUESTED | 修正依頼が出た |
多段階承認の仕組み
DocumentTypeに複数の承認ステージが定義されている場合、1段階目のステージが承認されると2段階目に進みます。すべてのステージを通過して初めてステータスが APPROVED になります。
DocumentApprovalRecord は「誰が・いつ・どのバージョンに対して・どのステージで・どんな判断をしたか」を記録する監査ログです。
誰が使うか
- サークル:書類をアップロードして提出する。却下されたら修正して再提出する。
- 運営スタッフ:提出された書類を確認して承認または却下する。
できなければならないこと
- サークルがファイルをアップロードして書類を提出できる(DocumentSubmissionVersion が作られる)
- サークルがテキストを入力して書類を提出できる(acceptsFreetext の場合)
- 承認ステージに対応した権限を持つ運営スタッフが提出を承認または却下できる
- 運営スタッフが却下理由(rejectionReason)を記録できる
- 却下されたらサークルが修正した書類を再提出できる(バージョンが上がる)
- 運営スタッフが全サークルの提出状況を一覧で確認できる
- 承認記録(DocumentApprovalRecord)が誰がいつ何に対して判断したかを残す
できてはいけないこと
- 提出期限(deadline)を過ぎた後、
lateSubmissionPolicy = NONEの書類を初回提出すること - 提出期限を過ぎた後、
lateSubmissionPolicy = RESUBMISSION_ONLYの書類を初回提出すること(再提出は可) APPROVEDになった書類をサークルが差し替えること(既に完了した審査を覆す)- 現在の承認ステージよりも先のステージを審査すること(ステージは順番に進む)
- 審査権限のないユーザーが書類を承認・却下すること
- アップロードされたファイルを、許可された拡張子(allowedExtensions)以外のもので提出すること
- ファイルサイズが上限(maxFileSize)を超えるファイルを提出すること
- 提出記録や承認記録を物理削除すること(すべて履歴として保持する)
- サークルが他のサークルの書類を閲覧・操作すること