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であることが観測されており、分岐と違って優先順位の概念が薄い可能性がある。本システムでは並び順を保持している