Appearance
法務文書の版管理
概要
利用規約・プライバシーポリシー・特定商取引法表記の本文を 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 行・固定ページは自動更新されない。
利用規約 / プライバシーポリシー / 特商法
- コードで
LegalPagesCopyを更新してデプロイする - 管理画面「法務文書」で該当タブを開き 「シードから下書き版を作成」 する
- 既存の現行版は履歴として残る(=既存記載の保存)
- 新規版は非現行の下書きとして取り込まれる
version文字列は原則日付形式(例:2026-08-01)
- 作成後は 閲覧画面 で内容を確認する(まだ公開されない。閲覧は HTML ソースのエスケープ表示で、管理画面上ではスクリプトを実行しない)
- 問題なければ 「現行版にする(公開/復元)」 で固定ページへ反映する
termsを現行版にすると、旧版に同意済みの会員は再同意対象になる(PP・特商法のみの改定では再同意しない)- 過去版は版一覧からいつでも 閲覧 でき、「現行版にする(公開/復元)」 で復元できる(削除操作はない)
固定ページを削除して再作成する運用は行わない。ページが欠落している場合は init 時に DB 現行から復元される。
非常用の手動編集
日常運用では使わない。Admin の折りたたみ「非常用: 手動で版を作成・編集」から HTML を直接編集できる。
- 「現行記載を入力フォームに入れる」: 現行版のタイトル・本文を新規作成フォームへプリフィルする(サーバ側 GET)
- 空のまま作成すると従来どおり現行版本文をコピーする
FAQ
- コードで
LegalPagesCopy::FAQ_PAGE_CONTENTを更新してデプロイする - 管理画面「法務文書」で 「シードから FAQ を同期」 を実行する
- デプロイだけでは既存
/faq/は上書きされない(手動編集を黙って潰さないため)
関連クラス
LegalDocumentVersionInstaller/LegalDocumentVersionRepository/LegalDocumentVersionServiceLegalPagesPublisher(版管理3文書の publish / FAQ のpublish_faq) /LegalPagesInstaller(publish_faq(false)への薄い委譲)LegalOperatorBuildValuesMemberTermsConsentService(現行 terms.version 参照)LegalDocumentVersionAdminPage