感想・振り返りを入力してください
※ 本フローは暫定案です。確定仕様はクライアント確認事項(docs/client/F-WEB-007_受講証明書発行フロー.md)に依存します。
フォーム・作成型テンプレートに準拠した3ステートウィザード形式(入力→確認→発行完了)。全ステートを1ファイルに内包し、ステッパーUI(`.stepper`)と`.flow-state`のJS切替で状態を管理する。上部に固定のステッパーを配置し、現在のステップを`.active`・`.done`クラスで視覚的に表現。本フローは暫定案であり、確定仕様はクライアント確認事項(`docs/client/F-WEB-007_受講証明書発行フロー.md`)に依存する。F-WEB-003(Web講義ページ)の「受講証明書を発行」ボタンからページ遷移して本画面に入る想定。
本画面は受講済み(「受講しました!」フラグが立っている)の個人アカウント・事業所アカウントのみアクセス可能。未受講状態でURLを直接入力した場合はF-WEB-003(講義ページ)にリダイレクト。法人管理者・事業所管理者が他メンバーの証明書を代理発行する機能はPh1では対象外。発行済みの証明書に対して再度本フローを踏むことは不可(マイページから再ダウンロードへ誘導)。権限チェックはREST APIハンドラ(`/wp-json/lms/v1/certificates`)のcapabilityで担保する。
入力フォームのダミーデータ(受講者名・事業所名・受講日)は`wp_get_current_user()`および`lms_user_meta`テーブルから自動取得。確認画面の「証明書番号」は仮番号で、実発行時に`lms_certificates`テーブルへの挿入と同時に採番する。発行完了画面のPDFファイル名はシステムが自動生成(講座ID・受講者ID・発行日を結合)。「これから取り組みたいこと」「感想・気づき」のテキストは`lms_certificates`テーブルの`reflection_text`・`action_plan_text`カラムに保存し、PDF生成にも使用する。
ステッパー切替: `goToConfirm()`・`goToInput()`・`goToComplete()`関数で`.flow-state`の`active`クラスと`.step-circle`・`.step-label`・`.step-connector`の状態クラスをトグル。「入力に戻る」クリック時は入力フォームの値を保持する(DOM上に値が残るため対応不要)。「← 講義ページに戻る」は`history.back()`またはF-WEB-003のURLに遷移。「受講証明書を発行する」クリック後はサーバーへのPOSTリクエスト(実装時)でPDFを生成し、ダウンロードURLを受け取る。ワイヤー上はJS状態切替でステート3に遷移する。
PC表示(1200px幅)を基準設計。タブレット(768px以下)ではステッパーのコネクター幅を60pxに縮小し、ステップラベルを非表示にする。フォームの入力エリアは100%幅を維持。発行完了画面の`.complete-dl-box`はパディングを縮小し、ボタンを縦積みに変更。スマホ(480px以下)ではカードの左右パディングを16pxに縮小する。
受講証明書の発行リクエストにはCSRF保護(`wp_nonce`)を適用。発行APIエンドポイント(`POST /wp-json/lms/v1/certificates`)では認証チェック・受講済みチェック・重複発行チェックをサーバーサイドで行い、二重発行を防止する。PDF生成はサーバーサイドで実行(mpdf / TCPDF等)し、生成済みPDFは`/wp-content/uploads/lms/certificates/`に保存してユーザーIDで名前空間を分離する。PDFへの直接URLアクセスはWordPressの認証チェックを挟んで制御(.htaccessまたはPHP proxy)。感想テキストのXSS対策として`wp_kses_post()`でサニタイズを実施。テキスト入力の文字数上限はサーバーサイドでもバリデーションする(推奨: 感想2,000文字・取り組み1,000文字)。本フローは暫定案。確定仕様はクライアント確認事項に依存するため、実装前に必ず確認事項ドキュメントを参照すること。