コンテンツにスキップ

survey_version_question_visibility_rules

概要

表示ロジックのルールを管理するテーブル。条件が成立したときに特定の選択肢を非表示にする。CS の visibilities に相当する。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
表示ルール survey_version_question_visibility_rules id uuid ◯ gen_random_uuid() 設問の更新のたびに新しい値が振られる
question_id uuid survey_version_questions:id (cascade)
sort_order integer 0 ルールの並び順
logical_operator branch_logical_operator AND / OR
created_at timestamptz now()
updated_at timestamptz now()

リレーション

  • question_id → survey_version_questions.id (onDelete: cascade)
  • 参照される側: survey_version_question_visibility_conditions.visibility_rule_id(cascade)
  • 参照される側: survey_version_question_visibility_targets.visibility_rule_id(cascade)

インデックス

  • 主キー (id)
  • UNIQUE INDEX: survey_version_question_visibility_rules_question_order_idx (question_id, sort_order)

分岐ルールとの違い

表示ロジックは分岐ルールと 対称な構造 を持つ。違いは「何を出力するか」だけ。

項目 分岐ルール 表示ロジック
条件 branch_conditions visibility_conditions(同一のカラム構成)
論理演算子 branch_logical_operator(共有) branch_logical_operator(共有)
条件演算子 branch_operator(共有) branch_operator(共有)
出力 分岐先の設問コード + メッセージ 非表示対象のリスト

注記

  • この対称性は、CS が logics(分岐)と visibilities(表示ロジック)を対称な別系統 API として持っていることに合わせた設計
  • enum は分岐側のものをそのまま再利用しているため、条件の意味論は分岐とまったく同じ
  • CS 側では visibility の order_index が null であることが観測されており、分岐と違って優先順位の概念が薄い可能性がある。本システムでは並び順を保持している