Appearance
画面設計: 管理者 試験成績管理・採点入力
関連: requirements.md F-A-05 / api.md §4 / data-model.md
スコープ
M1 は 紙試験の結果記録を主とする(F-A-05)。オンライン試験機能(F-A-05b)は Should で、本画面では項目としての切替のみ保持。
URL
/admin/exam— 試験一覧/admin/exam/new— 作成/admin/exam/:id— 詳細・採点/admin/exam/:id/results— 結果一覧・入力
1. 一覧 /admin/exam
- カラム:試験名/対象コホート/実施日/提出者数/平均/ステータス
- 作成ボタン(TA 担当クラス/OA 自組織)
- 検索・フィルタ
2. 作成 /admin/exam/new
- 試験名、説明、対象コホート、実施日、満点
- 採点方式(合計のみ/セクション別)
- 表示制御:結果公開可否、公開日時
3. 詳細 /admin/exam/:id
- メタ情報、対象学習者一覧、提出状況
- タブ:
- 受験者一覧・採点入力
- 統計(平均、ヒストグラム、分布)
- 問題別正答率(セクションごと)
4. 結果入力 /admin/exam/:id/results
- インライン編集のテーブル(学習者 × 点数/セクション)
- 一括 CSV インポート(書式テンプレート提供)
- 保存時バリデーション(0-満点、必須欄)
- 誤入力訂正履歴を監査ログに記録
API(api.md §4 の既存 POST /admin/exams / POST /admin/exams/:id/results を拡張・追補)
GET /admin/exams(追加)POST /admin/exams(既存)GET /admin/exams/:id(追加)PATCH /admin/exams/:id(追加)GET /admin/exams/:id/results(追加)POST /admin/exams/:id/results(既存。個別・一括両対応)PATCH /admin/exams/:id/results/:resultId(追加、訂正)
追加分は api.md の改訂 issue で正式に追補する(未追補は本書参照)。
データモデル追補
既存 Exam / ExamResult(data-model.md §1 一覧)に以下カラムを追補対象とする:
Exam
| カラム | 型 | 備考 |
|---|---|---|
| id | uuid | PK |
| cohort_id | uuid | 対象コホート |
| name | text | |
| description | text | |
| held_on | date | 実施日 |
| total_points | int | 満点 |
| grading_mode | text | total_only / by_section |
| sections | jsonb | [{ id, name, maxPoints }, ...](by_section 時) |
| results_publicity | text | private / after_date / immediate |
| published_at | timestamptz | 公開日時 |
ExamResult
| カラム | 型 | 備考 |
|---|---|---|
| id | uuid | PK |
| exam_id | uuid | FK |
| user_id | uuid | FK |
| status | text | pending / scored / absent |
| total_score | int | |
| section_scores | jsonb | { sectionId: score }(by_section 時) |
| graded_by | uuid | FK → User |
| graded_at | timestamptz |
data-model.md 正式更新は別 issue で対応。
RBAC
- TA:担当コホートの作成・採点
- OA:自組織全試験の閲覧・編集・削除
- TM:引継ぎ学習者の結果閲覧のみ
- LR:自分の結果のみ閲覧(画面は /app/exam、別 issue)
- EM:該当候補者の要約のみ(生点数は開示範囲に従う)
- SA:集計のみ(
/org/reports) - SU:本画面不可
バリデーション・エッジ
- 実施日未来:ステータス「予定」、採点不可
- 未入力の学習者はステータス「未採点」
- 点数が満点超過:422
文言
- 成績は学習支援目的。賞罰的掲示は避ける
- 公開時は学習者本人に通知
モック(M1)
- 3 試験サンプル(予定/進行中/完了)
- 採点入力 UI 動作(保存はモック)
未確定
- F-A-05b(オンライン試験)の仕様:別 issue で設計
- 試験問題プール管理(Exam ↔ QuestionBank)の有無