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)であることが実機ログで確認されている