Skip to content

法務文書の版管理 ​

概要 ​

利用規約・プライバシーポリシー・特定商取引法表記の本文を db_legal_document_version で版管理する。過去版は DB に残し、管理画面で現行を切り替える。

項目内容
テーブルdb_legal_document_version
管理画面サイト運営 → 法務文書(ADM-026)
本文の正本コード(LegalPagesCopy)。Admin は取り込み・確認・公開・履歴復元が主
WP 同期「現行版にする(公開/復元)」時に /terms/ /privacy-policy/ /tokushoho/ を更新
会員再同意利用規約の現行 version のみ(PP・特商法改定では再同意しない)
特商法HTML 本文を DB 管理。Tokusho Generator / [tokusho] 非依存
FAQ版管理対象外。管理画面の「シードから FAQ を同期」で固定ページを更新

シード用の文案正本は LegalPagesCopy(会員登録・同意まわり中心。有料記事の販売は codoc ペイウォール前提で、サイト内決済条項は含めない。)。

初期シード ​

初回 init でテーブル作成後、各 document_type が空なら初期版を投入する。

  • 既存 WP 固定ページがある場合: その本文を DB に取り込み、固定ページは上書きしない
  • ページ未作成時のみ: LegalPagesCopy 定数から投入し固定ページを作成する
  • その後 ensure_current_pages_exist() が、DB 現行があるのにページ欠落している種別を DB 現行本文で作成する(定数から作り直さない)
  • FAQ は LegalPagesInstaller → LegalPagesPublisher::publish_faq(false) が不足時のみ作成する(既存は上書きしない)
  • 公開事業者名(屋号)・公開用メールは LegalOperatorBuildValues(リポジトリはプレースホルダのみ)
    • 本番ビルド: config/local.env の LEGAL_OPERATOR_NAME / LEGAL_PUBLIC_CONTACT_EMAIL を bin/build.sh → bin/embed-legal-operator.sh が成果物へ埋め込む(スペースを含む屋号はダブルクォートで囲む)
    • ローカル _src: ./bin/generate-legal-operator-local.sh で LegalOperatorBuildValues.local.php(gitignore)を生成
    • 未設定時は事業者情報が必要なページ・シードをスキップし、error_log に 1 回だけ記録する
    • 特商法の販売事業者・運営統括責任者も同一の公開事業者名(屋号)を掲載する。本名はサイト非掲載とし、所在地・電話と同様に請求があれば遅滞なく開示する運用とする

会員同意判定で DB に現行 terms が無い場合は MemberTermsConsentConstants::CURRENT_VERSION にフォールバックする。

正規運用(コード正本) ​

LegalPagesCopy や CURRENT_VERSION を変更しても、既にシード済みの DB 行・固定ページは自動更新されない。

利用規約 / プライバシーポリシー / 特商法 ​

  1. コードで LegalPagesCopy を更新してデプロイする
  2. 管理画面「法務文書」で該当タブを開き 「シードから下書き版を作成」 する
    • 既存の現行版は履歴として残る(=既存記載の保存)
    • 新規版は非現行の下書きとして取り込まれる
    • version 文字列は原則日付形式(例: 2026-08-01)
  3. 作成後は 閲覧画面 で内容を確認する(まだ公開されない。閲覧は HTML ソースのエスケープ表示で、管理画面上ではスクリプトを実行しない)
  4. 問題なければ 「現行版にする(公開/復元)」 で固定ページへ反映する
  5. terms を現行版にすると、旧版に同意済みの会員は再同意対象になる(PP・特商法のみの改定では再同意しない)
  6. 過去版は版一覧からいつでも 閲覧 でき、「現行版にする(公開/復元)」 で復元できる(削除操作はない)

固定ページを削除して再作成する運用は行わない。ページが欠落している場合は init 時に DB 現行から復元される。

非常用の手動編集 ​

日常運用では使わない。Admin の折りたたみ「非常用: 手動で版を作成・編集」から HTML を直接編集できる。

  • 「現行記載を入力フォームに入れる」: 現行版のタイトル・本文を新規作成フォームへプリフィルする(サーバ側 GET)
  • 空のまま作成すると従来どおり現行版本文をコピーする

FAQ ​

  1. コードで LegalPagesCopy::FAQ_PAGE_CONTENT を更新してデプロイする
  2. 管理画面「法務文書」で 「シードから FAQ を同期」 を実行する
  3. デプロイだけでは既存 /faq/ は上書きされない(手動編集を黙って潰さないため)

関連クラス ​

  • LegalDocumentVersionInstaller / LegalDocumentVersionRepository / LegalDocumentVersionService
  • LegalPagesPublisher(版管理3文書の publish / FAQ の publish_faq) / LegalPagesInstaller(publish_faq(false) への薄い委譲)
  • LegalOperatorBuildValues
  • MemberTermsConsentService(現行 terms.version 参照)
  • LegalDocumentVersionAdminPage

関連ドキュメント ​