EPIC #1129 の B(課題に親クラスの状態を出す) を担当する leaf。
背景
mapClassroomForAdmin(infra/smalruby-admin/lambda/handler.ts:501 付近)は groupId を返すだけで親クラスの status を返さない。そのため課題が active なら Admin は 🟢「利用中」と表示するが、親クラス(ClassroomGroups)が archived だと先生の画面にはその課題は表示されない。運用者が「生きている=先生に見えている」と誤読したのが今回の誤認の直接原因。
やること
- Admin API の課題レスポンスに親クラス情報(
groupId / クラス名 / groupStatus)を含める。GROUPS_TABLE の読み取りを追加し、一覧はバッチ取得で N+1 を避ける。
- 課題一覧・詳細に「親クラスがアーカイブ中 — 先生には表示されません」という警告バッジ/注意文を出す。課題単体が
active でも実効的に不可視であることが一目で分かること。
restore-admin-alive の文言を、課題が生きている場合と親クラスがアーカイブ中の場合で出し分ける。後者では先生に案内すべき正確な操作手順(クラス一覧 → アーカイブ済みのクラス → 元に戻す)を提示する。現状の classrooms-view.jsx:376 の「このクラスはまだ存在しています。アーカイブからの復旧は先生自身のクラス管理画面から行えます。」は親クラスアーカイブ中のケースで誤誘導になる。
前提
先行 leaf #1131 で決めた用語辞典(クラス = Group / 課題 = Classroom)に従って命名・文言を書く。classrooms-view.jsx と handler.ts を共有編集するため #1131 の後に着手する。
スコープ外
- Admin からのクラス検索・アーカイブ解除(EPIC の C。後続 leaf)
DoD
Part of #1129
EPIC #1129 の B(課題に親クラスの状態を出す) を担当する leaf。
背景
mapClassroomForAdmin(infra/smalruby-admin/lambda/handler.ts:501付近)はgroupIdを返すだけで親クラスのstatusを返さない。そのため課題がactiveなら Admin は 🟢「利用中」と表示するが、親クラス(ClassroomGroups)がarchivedだと先生の画面にはその課題は表示されない。運用者が「生きている=先生に見えている」と誤読したのが今回の誤認の直接原因。やること
groupId/ クラス名 /groupStatus)を含める。GROUPS_TABLEの読み取りを追加し、一覧はバッチ取得で N+1 を避ける。activeでも実効的に不可視であることが一目で分かること。restore-admin-aliveの文言を、課題が生きている場合と親クラスがアーカイブ中の場合で出し分ける。後者では先生に案内すべき正確な操作手順(クラス一覧 → アーカイブ済みのクラス → 元に戻す)を提示する。現状のclassrooms-view.jsx:376の「このクラスはまだ存在しています。アーカイブからの復旧は先生自身のクラス管理画面から行えます。」は親クラスアーカイブ中のケースで誤誘導になる。前提
先行 leaf #1131 で決めた用語辞典(クラス = Group / 課題 = Classroom)に従って命名・文言を書く。
classrooms-view.jsxとhandler.tsを共有編集するため #1131 の後に着手する。スコープ外
DoD
restore-admin-aliveの文言が、課題生存/親クラスアーカイブ中で正しく出し分けられているclassrooms-viewの表示分岐)docs/admin/README.mdを更新docs/admin/screenshots/を更新(docs/_screenshot-guidelines.mdに従う)Part of #1129