コンテンツにスキップ

2026-05 紙同意ハガキ必須フロー

  • 作成日: 2026-05-08
  • 改訂日: 2026-05-27 (ハガキを SKU 化し OrderLine 自動付与方式へ切替)
  • 種別: 追加要件の正本補足

目的

電子的な同意だけでなく、紙の同意書(はがき)の到着確認を発送条件に含める商品を、 同意テンプレート単位で管理できるようにする。 ハガキを 独立した商品 (ProductVariant) として扱い、対象商品がカートに入った際に OrderLine として自動付与 する。受領待ちは line と並存する paperConsentStatus で発送ゲートする。

決定事項

  • 同意テンプレートに paperConsentRequiredpaperConsentNoticeText、 および postcardProductVariantId (nullable) を持たせる。
  • paperConsentRequired = true のテンプレートは paperConsentNoticeTextpostcardProductVariantId を必須とする。
  • ハガキ ProductVariant の粒度は 同意テンプレートごとに 1 個 とする (1 テンプレ = 1 postcard ProductVariant)。
  • ハガキの価格は ¥0trackInventory=false、非課税、送料計算除外とする。
  • 商品・Variant の同意解決は既存どおり Variant 優先 / Product フォールバック とし、紙同意設定も同じ規則で解決する。
  • 紙同意対象商品を 1 件でも含む注文は、注文全体を紙同意待ちとして扱う。
  • 紙同意待ちの注文は SMILE エクスポート対象外とし、発送しない扱いとする。
  • 紙同意の到着確認は React Dashboard から手動で記録する。

カート挙動 (line 自動付与)

  • 対象商品 (paperConsentRequired テンプレに紐づく商品) がカートに追加されたとき、 対象テンプレに対応する postcard ProductVariant を 数量 1 で OrderLine として自動付与 する。
  • 同じテンプレに紐づく対象商品が複数あっても、postcard line は テンプレあたり 1 本 に集約する (同意 1 通 = ハガキ 1 枚/注文)。
  • 異なるテンプレが混在する注文では、テンプレごとに別の postcard line を 1 本ずつ付与する。
  • 対象商品がカートから全て取り除かれたら、対応する postcard line も自動で削除する。
  • postcard line 自身の数量変更・削除・カート操作は サーバー側で拒否 する。
  • マーカー: OrderLine custom field isAutoPostcard: booleanrelatedConsentTemplateId: ID を Shop API に公開する。

Storefront 要件

  • 商品詳細では、通常の同意注意より優先して紙同意待ちの案内文面を表示する。
  • カート投入前の同意導線では、電子同意に加えて紙同意待ちの案内文面を表示する。
  • checkout の決済前でも、紙同意待ちの案内文面を再表示する。
  • 紙同意待ちの案内文面はテンプレート設定をそのまま表示し、未設定で進ませない。
  • カート画面では postcard line を「同意ハガキ(自動付与)」として明示表示 し、 quantity stepper・remove ボタンを非表示にする。¥0 として表示する。

React Dashboard 要件

  • 同意テンプレート編集画面で 紙同意必須紙同意案内文面、 および ハガキ商品 Variant を編集できる。
  • 紙同意必須=true のとき ハガキ商品 Variant を必須入力とする。
  • 注文詳細で paperConsentStatus、確認日時、確認者を表示する。
  • 注文詳細から 到着確認済みにする 操作を実行できる。
  • 到着確認操作は監査のため order note を残す。

注文状態要件

  • 注文 custom fields に以下を保持する。
  • paperConsentRequired
  • paperConsentStatus
  • paperConsentConfirmedAt
  • paperConsentConfirmedBy
  • paperConsentStatusNOT_REQUIRED / PENDING / RECEIVED の 3 値とする。
  • 注文確定時の紙同意要否評価は isAutoPostcard=true の OrderLine の有無で判定 する。
  • 手動確認後は RECEIVED に更新する。

注意: paperConsent* フィールドは Vendure / React Dashboard の管理コンテキスト専用。 ストアフロントの GET_ACTIVE_ORDER_CONTEXT クエリには含めず、顧客向けには paperConsentNoticeText(テンプレート側フィールド)経由で案内文面のみ表示する。 postcard line 自体は Shop API で公開する(顧客がカートで認識できるよう)。

SMILE 連携要件

  • paperConsentStatus = PENDING の注文は通常の SMILE エクスポート対象から除外する。
  • エクスポート結果には、紙同意待ち除外件数を含める。
  • 除外の ON/OFF 切替は設けず、常時除外を正とする。
  • postcard line 自体は SMILE CSV 出力対象から常時除外 する(¥0 line を SMILE に流さない)。 ハガキの社内オペレーション情報は paperConsentStatus 経由でのみ参照する。

SKU 命名・運用

  • postcard ProductVariant の SKU は POSTCARD-<consentId>-<version> を推奨する。
  • 価格は ¥0trackInventory=false、税区分=非課税、送料計算除外 facet を必ず付与する。
  • 新規 postcard variant は Admin で手動作成し、同意テンプレート編集画面で紐付ける。
  • 既存 paperConsentRequired=true のテンプレに postcard variant が未割当の場合は、 起動時に warning ログを出す (apps/vendure-server/src/scripts/check-postcard-assignments.ts)。

関連資料