📝 実装注記
★ 受講履歴確認(F-CORP-004)との差分
本画面は「事業所管理者」専用。F-CORP-004(法人管理者版)とほぼ同構成だが、以下の差分がある。
①スコープ制限: 自事業所+所属個人アカウントのみ表示(法人横断・他事業所データは取得しない)。フィルタに「事業所」選択肢なし(自事業所固定。API側で `WHERE site_id = :current_site_id` を強制付与)。
②EXCELダウンロード: 本画面(事業所版)ではExcelダウンロードを有効とし、ページヘッダー右上に「📥 Excelダウンロード」ボタンを活性状態で表示する(法人版F-CORP-004では非活性)。ダウンロード対象は現在の集計条件で絞り込んだ自事業所分のみ。
③サイドバー: 「法人管理」セクションを「事業所管理」に差し替え(所属スタッフ管理・契約情報閲覧のみ)。
④集計軸(行)の「事業所別」選択肢を削除(個人別・講座別・月別のみ)。クロス集計デフォルト軸は「個人別」。
1. 画面構成
左サイドバー(220px固定)+メインエリアの2カラムレイアウト、一覧・分析型テンプレートに準拠。メインは事業所スコープバー→KPI(5枚)→フィルタパネル→タブ切替(クロス集計/一覧表示)の順。修了証KPIは研修計画単位(全課程完了時)の指標として表示。修了証列は一覧表示に含め、クロス集計の「集計軸(列)」にも「修了証」選択肢を設ける。クロス集計タブがデフォルト表示。
2. 権限制御
事業所管理者アカウント(F-SITE-005)のみアクセス可。F-AUTH-004(アカウント種別判定)で `site_manager` ロールを確認。自事業所(`site_id`)に紐づくデータのみ返却し、他事業所や法人横断の集計は行わない。EXCELダウンロードも同スコープ内のみ。法人管理者(F-CORP-004)は同URLにアクセスした場合、F-CORP-004にリダイレクト。
3. データ表示
KPIカードはAPI(/wp-json/lms/v1/history/summary?site_id=:id)から取得。クロス集計はlms_viewing_logs+lms_certificates+lms_completion_recordsを自事業所スコープでJOINし動的生成。修了証はlms_completion_recordsの `type=course_plan` レコードを参照。一覧は直近順8件/ページのサーバーサイドページネーション。ダミーデータは2026年度上半期(4月〜9月)実績を想定(自事業所スタッフ6名)。
4. インタラクション
「集計する」ボタンクリック→KPI・クロス集計・一覧を再描画。タブ切替→クロス集計/一覧を切替。「再集計」ボタン→キャッシュバイパスし最新データで再集計。「📥 Excelダウンロード(Phase1有効)」ボタン→現在の集計条件でExcelファイルを生成しダウンロード(Python+openpyxlによるサーバー側生成・Meiryoフォント適用)。一覧の受講者名クリック→該当スタッフのユーザー詳細(F-SITE-006)に遷移。フィルタは折りたたみ可。
5. レスポンシブ
PC表示(1200px)を基準設計。タブレット(768px以下)ではサイドバーをハンバーガーメニューに格納し1カラム表示。フィルタグリッドは4列→2列にブレイク。クロス集計テーブルは横スクロール対応(月別12列+合計列のため必須)。一覧テーブルも横スクロール。スマホ(480px以下)ではKPI5枚を2列×3行(最後1枚全幅)に変更。タブは横スクロール可能にする。
6. パフォーマンス・セキュリティ
クロス集計は自事業所スコープ限定のため法人版より軽量だが、事業所規模によっては個人×講座×月の3次元集計が大きくなりうる。日次バッチで集計テーブル(lms_history_aggregation)を更新しキャッシュ利用(TTL: 10分)。Excelダウンロードは非同期生成(ジョブキュー)を推奨:件数が多い場合(100件超)はバックグラウンド生成+完了通知メール送付を検討。APIレスポンスは事業所管理者ロール必須。行レベルセキュリティ `WHERE site_id = :current_site_id` を全クエリに強制付与し他事業所データへのアクセスを防ぐ。Excelファイルには個人名等PIIを含むため生成後のURLは署名付き一時URLとし有効期限(5分)を設ける。
💡 本ワイヤーフレームはPC表示(1200px幅)を基準としています。タブレット・スマホ表示は別途レスポンシブ設計が必要です。