Skip to content

refactor(classroom): クラス管理サブ画面のレイアウトを評価画面に統一 (#1122) - #1127

Open
smalruby3-editor-bot[bot] wants to merge 3 commits into
developfrom
topic/autopilot-1122
Open

refactor(classroom): クラス管理サブ画面のレイアウトを評価画面に統一 (#1122)#1127
smalruby3-editor-bot[bot] wants to merge 3 commits into
developfrom
topic/autopilot-1122

Conversation

@smalruby3-editor-bot

Copy link
Copy Markdown

Summary

クラス管理の各サブ画面のスタイルがバラバラだったのを、基準となる 評価画面
(teacher-evaluation.jsx)
のレイアウトに統一しました。枠なし・濃い太字タイトル・
パンくず左端にそろえたマージン・プライマリ/セカンダリの統一ボタンにそろえています。

ベースブランチについて: Issue の autopilot-base: feature/assignment-sharing
既に develop へマージされ削除済みだったため、本 PR は develop をベースにしています
(分岐元コミットは develop 上にあり、追加は本 PR の 1 コミットのみ)。

Changes Made

packages/scratch-gui/src/components/classroom-modal/classroom-modal.css(+合言葉画面の
コンテナ差し替え)で以下を統一(すべて既存クラスの見た目変更なので data-testid は不変):

  • みんなの課題カタログ (.shared-catalog): 紫の枠を撤去して枠なしにし、課題ボードの
    本文幅にそのまま乗せてパンくず左端にマージンをそろえた。カタログ/詳細の見出し
    (.shared-form-title) の紫をやめ、評価画面と同じ濃い太字 (#575e75/bold/1.3rem) に。
  • 合言葉で取り込み (teacher-passcode-import.jsx): 課題ボード内に描画されるのに
    .post-assignment-container が水平パディングを二重に足して左端がずれていたので、
    専用の .passcode-import-view(水平パディング 0)に差し替えて左端をそろえた。
  • クラス設定 (.class-settings-form): 紫枠を中立の枠線に。保存ボタンを青塗りに。
  • 課題を作る / 再利用 (.board-popover / .board-inline-create / reuse): カードの枠・
    影を撤去して枠なしに。作成ボタンを青塗り、コピー/キャンセルを白地+中立枠線に。
  • ボタンの統一: プライマリ = 青塗り (#4c97ff、評価画面の「提出を読み込む」等と同じ)、
    セカンダリ = 白地 + 中立の枠線 (#d9d9d9/#575e75)。紫だったプライマリ
    (board-create-button / class-list-create-button / board-inline-create /
    class-settings-save / shared-form-submit) と紫アウトラインのセカンダリ
    (board-reuse-button / class-list-import-button / reuse-row-copy / popover-cancel)
    をこの 2 系統に置き換え、hover も付与。
  • パンくずリンク(紫)は評価画面と共通の TeacherBreadcrumbs なのでそのまま維持。

Test Coverage

  • 既存の classroom unit テストが全て通過(teacher-passcode-import / shared-assignment-catalog
    / teacher-class-list / teacher-assignment-board / teacher-class-detail /
    shared-assignment-form = 57 tests)。data-testid は不変。
  • npm run lint(eslint --max-warnings 0 + prettier --check)0 エラー 0 警告。

Scope(重複回避)

Follow-up(要人手)

  • スクリーンショット更新 (docs/classroom/screenshots/0210 / 0211 / 0215 等) は
    クラス管理のライブ API + 教師ログインが必要で、headless の autopilot ワークツリーからは
    再撮影できませんでした。UI が視覚的に変わっているため、レビュー時に再撮影をお願いします
    (DoD 該当項目)。

Related Issues

Closes #1122

みんなの課題カタログ・合言葉で取り込み・課題作成/再利用・クラス設定の各サブ画面を

評価画面(teacher-evaluation)のレイアウトにそろえた。

- カタログの紫枠を撤去して課題ボードの本文幅にそろえ、パンくず左端にマージンを統一

- 合言葉で取り込みの二重パディングを解消(.passcode-import-view)

- 見出しの紫(.shared-form-title)をやめ、評価画面と同じ濃い太字に統一

- プライマリを青塗り・セカンダリを白地+中立枠線に統一(紫のボタン群を置換)

- クラス設定の紫枠・ポップオーバーのカード枠/影を撤去して枠なしに統一

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@smalruby3-editor-bot smalruby3-editor-bot Bot added the 🤖 autopilot autopilot が処理対象にした Issue/PR(daemon が付与) label Jul 26, 2026
@smalruby3-editor-bot

smalruby3-editor-bot Bot commented Jul 26, 2026

Copy link
Copy Markdown
Author

🤖 autopilot status

field value
Status Blocked
AI Status Addressing Comments
HITL Yes
Size middle

Linked issue #1122. Maintained by autopilot (single writer); do not edit.

@github-actions

Copy link
Copy Markdown

🚀 Preview deployed: https://smalruby.jp/smalruby3-editor/topic/autopilot-1122/

@smalruby3-editor-bot

Copy link
Copy Markdown
Author

[Question] 共有ステップ (teacher-share-step.jsx) だけ左端がそろわない可能性

本 PR は課題ボード (.assignment-board、水平パディング 2rem) 内に描画される
サブビューのうち、みんなの課題カタログ (.shared-catalog → パディング撤去) と
合言葉で取り込み (.passcode-import-view → 水平パディング 0) をパンくず左端に
そろえました。

一方、同じボード内の兄弟ビューである 共有ステップ (TeacherShareStep
teacher-assignment-board.jsx:505.assignment-board 内に描画) は、
引き続き .post-assignment-containerpadding: 0 2rem 1.25rem)を使っています。
.assignment-board2rem と二重に効くため、共有ステップだけ左端が 2rem 余分に
インデント
され、今回そろえた 2 ビューと不整合になります(合言葉の受け取り側と
共有=渡す側で左端がずれる)。

なお .post-assignment-container は配信画面 (TeacherPostAssignment) でも使われますが、
そちらは .main-relative 直下(ボード外)で描画されるため 2rem が正しく、
.post-assignment-container をそのまま直すことはできません。共有ステップも
teacher-assignment-board.jsx からのみ描画される(=常にボード内)ので、合言葉と同様に
ボード内専用のパディング 0 コンテナへ差し替えれば整います。

本 PR の「Changes Made」に共有ステップは挙がっておらず、意図的に対象外にした可能性も
あるため、クラス名の付け方(passcode-import-view を汎用名にするか別クラスにするか)も
含めて人手の判断に委ねます。ライブ UI を見られるレビュアーで、そろえるべきか確認を。

@smalruby3-editor-bot

Copy link
Copy Markdown
Author

[FYI] スクリーンショット未更新(DoD)

.claude/rules/documentation.md の DoD では UI に視覚的変更がある場合
docs/classroom/screenshots/0210/0211/0215 等)の更新が必要ですが、
本 PR は headless の autopilot ワークツリー(ライブ API + 教師ログイン不可)から
再撮影できず未更新です。PR 本文の Follow-up にも記載済みで、コードとしての対応は
不要と判断します。人手レビュー時に再撮影をお願いします(ファイル名は据え置き)。

@smalruby3-editor-bot

Copy link
Copy Markdown
Author

🤖 敵対的レビュー完了。指摘 2 件(Must 0 / Question 1 / FYI 1)。Must なし(修正不要)。核心のレイアウト修正(合言葉画面の二重パディング解消)は正しく、:not(.popover-cancel) セレクタも妥当(従来キャンセルボタンが紫になっていた副次バグも解消)。CSS モジュールのクラス改名に取りこぼし参照なし、prettier OK。Question/FYI は人間レビューへ。

@smalruby3-editor-bot smalruby3-editor-bot Bot added the 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影) label Jul 26, 2026
@smalruby3-editor-bot
smalruby3-editor-bot Bot marked this pull request as ready for review July 26, 2026 14:04

@takaokouji takaokouji left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Question] 共有ステップ (teacher-share-step.jsx) だけ左端がそろわない可能性

これは合わせて。
クラス管理全般をできるかぎり共通コンポーネントとすることで、今後のコピペ時に、自然にスタイルが合うようにするためです。

また、FYIであげてもらったスクショの更新もここでお願いします。

これをもってUIの完成としたいです。

@takaokouji takaokouji removed the 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影) label Jul 27, 2026
共有ステップ (teacher-share-step) が .post-assignment-container を使い、課題ボードの
2rem と二重に効いて左端が余分にインデントされていた。合言葉で取り込みと同じく
ボード内専用のパディング 0 コンテナに差し替えて左端をそろえた。

今後のコピペで自然にスタイルが合うよう、合言葉画面専用だった .passcode-import-view を
課題ボード内サブビュー共通の .board-inner-view にリネームし、共有ステップと共有した。
配信画面 (teacher-post-assignment) はボード外に描画され 2rem が正しいため
.post-assignment-container のまま据え置き。data-testid は不変。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@smalruby3-editor-bot

Copy link
Copy Markdown
Author

🤖 レビュー対応まとめ(address-review)

いただいたレビューへの対応です。指摘 2 件 → 対応 1 件 / 人手依頼 1 件

✅ 対応: 共有ステップ (teacher-share-step.jsx) の左端をそろえた

ご指摘(および事前に [Question] であげた点)のとおり、共有ステップだけ
.post-assignment-container を使っており、課題ボード(.assignment-board = 水平
パディング 2rem)と二重に効いて左端が 2rem 余分にインデントされていました。

合言葉で取り込みと同じくボード内専用のパディング 0 コンテナに差し替えて、
みんなの課題カタログ・合言葉で取り込み・共有ステップの左端をパンくずにそろえました。

「クラス管理全般をできるかぎり共通コンポーネントに」というご意図に沿って、
合言葉画面専用だった .passcode-import-view課題ボード内サブビュー共通の
.board-inner-view
にリネームし、共有ステップと共有しました。CSS のコメントにも
「ボード内に新しいサブビューを足すときもこのクラスを使う」と明記したので、今後の
コピペで自然に左端がそろいます。

  • 配信画面 (teacher-post-assignment.jsx) はボード.main-relative 直下)に
    描画され 2rem が正しいため、.post-assignment-container のまま据え置いています。
  • data-testid は不変。teacher-share-step / teacher-passcode-import /
    teacher-assignment-board の unit テスト(24 tests)・lint・prettier いずれも green。

🙏 人手依頼: スクリーンショット更新(docs/classroom/screenshots/

「スクショの更新もここで」の件ですが、クラス管理の再撮影にはライブのクラス管理
API + 教師ログイン
が必要で、headless の autopilot ワークツリーからは再撮影できません
([FYI] であげたとおりの制約です)。恐れ入りますが、ライブ環境をお持ちのレビュアーの
方に 0210 / 0211 / 0215 等の再撮影(ファイル名は据え置き)をお願いします。
今回の左端そろえで共有ステップの見た目も変わっているため、そちらもあわせてご確認ください。

以上、再レビュー・マージ判断をお願いします 🙇

@smalruby3-editor-bot smalruby3-editor-bot Bot added the 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影) label Jul 27, 2026

@takaokouji takaokouji left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

「スクショの更新もここで」の件ですが、クラス管理の再撮影にはライブのクラス管理
API + 教師ログインが必要で、headless の autopilot ワークツリーからは再撮影できません
([FYI] であげたとおりの制約です)。

こちらは、 DEV_BYPASS_TOKEN=smalruby-dev-test-2026 を設定してありますので、ローカルであれば、こちらをつかってバイパスしてクラス管理にアクセス可能です。
あらためて依頼です。スクショを更新して。

@takaokouji takaokouji removed the 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影) label Jul 27, 2026
@smalruby3-editor-bot smalruby3-editor-bot Bot added the 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影) label Jul 27, 2026
@smalruby3-editor-bot
smalruby3-editor-bot Bot marked this pull request as draft July 27, 2026 07:57
@smalruby3-editor-bot

Copy link
Copy Markdown
Author

🤖 スクショ更新の再挑戦 — あと 1 点、ポート 8601 の解放をお願いします

DEV_BYPASS_TOKEN=smalruby-dev-test-2026 での再撮影に挑戦しました。バイパス自体は
成功
していて、教師ログイン(認証)はクリアできました。ただ headless の autopilot
コンテナからは、あと 1 点だけ環境要因で撮影まで到達できませんでした。切り分け結果を
共有します。

✅ 検証できたこと(ここまでは動く)

  • devlogin バイパス: ?devlogin=<token> で教師として自動ログイン成功。
  • stg API 到達性 & データ: Authorization: Bearer smalruby-dev-test-2026
    stg.classroom.api.smalruby.app に到達でき、この教師アカウントには
    クラス(組)と課題のデータが実在します(/classroom-groups に「自動検証-411400」
    ほか複数、role: owner)。→ クラス一覧・課題ボード・設定は本来なら描画できる状態。
  • 本 PR のビルド: worktree から webpack を起動し compiled successfully
    以前の継続メモにあった avatar-menu.jsx 未解決は 誤診でした(実際の import は
    ./teacher-avatar-menu.jsx で存在。当時の壊れた別プロセスを見ていたようです)。
  • ロケール: headless では既定 en 表示ですが、Playwright の locale: 'ja-JP'
    日本語に強制できる見込み(既存スクショと同じ日本語で撮れます)。

❌ 残る 1 点の壁 — CORS 許可オリジン http://localhost:8601

stg のクラス管理 API は CORS 許可オリジンが http://localhost:8601 のみです
(プリフライトで実測。8602/8603 や preview 用オリジンは弾かれる)。つまり撮影には
本 PR のビルドを :8601 で配信する必要があります。ところがこのコンテナでは:

  • :8601常駐の main(/app = develop)dev server が占有しています。これは私が
    起動したものではない共有プロセスなので、勝手に停止すべきでないと判断しました
    (自動 mode でも安全ガードに止められました。正しい挙動だと思います)。
  • ブランチ preview(smalruby.jp/.../topic/autopilot-1122/)は現在 404(失効)で、
    こちらのオリジン経由も使えませんでした。
  • 「Origin を偽装して API の CORS を迂回するローカルプロキシ」も考えましたが、
    サーバ側のセキュリティ制御を回避する行為なので採用しません(こちらもガードで停止)。

🙏 お願い(どれか 1 つで解消します)

  1. ポート 8601 を空けてください(main の dev server を一時停止)。そのうえで 🙋 を
    外していただければ、本 PR の worktree ビルドを :8601 で配信して ?devlogin=
    自動ログインし、ja ロケールで 0210(クラス一覧)/ 0211(課題ボード)/ 0215
    (クラス設定・アーカイブ確認)を撮影 → docs/classroom/screenshots/ に上書きして
    コミットします(ファイル名は据え置き)。撮影スクリプト tmp/shot-classroom.mjs
    実装済みで、あとは配信オリジンだけの問題です。
  2. もし手元でサッと済ませたい場合も同じ手順で撮れます(worktree を :8601 で配信 →
    http://localhost:8601/?no_beforeunload=1&devlogin=smalruby-dev-test-2026 を開く →
    クラス管理へ)。

コード面(共有ステップの左端そろえ含む)は前回対応済みで、残りはこのスクショだけです。
:8601 さえ空けば headless でも撮り切れる見込みです。お手数ですがご確認ください 🙇

@smalruby3-editor-bot
smalruby3-editor-bot Bot marked this pull request as ready for review July 27, 2026 16:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🤖 autopilot autopilot が処理対象にした Issue/PR(daemon が付与) 🙋 HITL 人間の対応待ち(Project HITL=Yes の投影)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(classroom): クラス管理サブ画面のレイアウトを評価画面に統一(枠なし/タイトル/マージン/ボタン)

1 participant