コンテンツにスキップ

survey_version_question_visibility_conditions

概要

表示ロジックのルールに属する条件を管理するテーブル。カラム構成は 分岐条件 とまったく同じ。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
表示条件 survey_version_question_visibility_conditions id uuid ◯ gen_random_uuid()
visibility_rule_id uuid survey_version_question_visibility_rules:id (cascade)
source_question_code varchar(100) 参照元の設問コード。intro 設問は指定できない
operator branch_operator 条件演算子。分岐条件と同じ enum を共有する
comparison_value text 比較値。選択肢ラベル / マトリクスの行ラベル / FA の照合テキスト
sub_comparison_value text ◯ マトリクスの列ラベル / FA の対象欄ラベル。null = いずれかの欄
sub_question_index integer ◯ SA / MA のサブ設問インデックス。null = 全サブ設問をフラット扱い
sort_order integer ルール内での並び順
created_at timestamptz now()

リレーション

  • visibility_rule_id → survey_version_question_visibility_rules.id (onDelete: cascade)

インデックス

  • 主キー (id)
  • UNIQUE INDEX: visibility_conditions_rule_order_idx (visibility_rule_id, sort_order)

条件演算子

分岐条件と同じ branch_operator enum を使う。意味論も同一。

値 UI ラベル
equals が該当
includes を含む
not_includes を含まない(未回答も成立)
only だけである
not_only だけではない(未回答も成立)
has_other 以外にある
answered に回答

詳細は survey_version_question_branch_conditions を参照。

注記

  • テーブルを分けている理由: 分岐と表示ロジックは条件の形が同じでも、親ルールが持つ出力(分岐先 / 非表示対象)が異なるため、別系統として正規化している。CS も logic_items と visibility_items を別テーブルとして持つ
  • enum を共有する理由: 条件の意味論が完全に同じであるため、演算子の追加・変更が片方だけに適用される事故を防げる
  • CS の visibility_items は logic_items と同一形状(verb / answer_item_id / sub_item_id / value / score_group_id)であることが実機ログで確認されている