external_logic_items
概要
外部ツールから取り込んだ分岐条件(CS の logic_item)を保管するテーブル。同一 logic 内の複数の条件は AND で結合される。
テーブル定義
| 論理名 | 物理名 | カラム名 | データ型 | 主キー | リレーション | ユニーク | NULL許可 | デフォルト値 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| 外部分岐条件 | external_logic_items | id | uuid | ◯ | gen_random_uuid() | ||||
| external_logic_id | uuid | external_logics:id (cascade) | |||||||
| external_id | bigint | CS 側の logic_item ID | |||||||
| cond_question_external_id | bigint | ◯ | 条件の参照元となる設問 ID | ||||||
| cond_answer_item_external_id | bigint | ◯ | 条件の対象となる選択肢 ID。null も許容される | ||||||
| cond_sub_item_external_id | bigint | ◯ | マトリクスの列 ID。行 × 列でセル単位の条件になる | ||||||
| value | text | ◯ | 比較値。選択系では空文字、プルダウン・FA では文字列 | ||||||
| verb | integer | ◯ | 条件演算子 | ||||||
| order_index | integer | ◯ | logic 内での並び順。重複することがある | ||||||
| raw | jsonb | logic_item オブジェクトの生 JSON |
リレーション
- external_logic_id → external_logics.id (onDelete: cascade)
インデックス
- 主キー (id)
- UNIQUE INDEX: external_logic_items_logic_external_id_idx (external_logic_id, external_id)
verb(条件演算子)
CS の実機トラフィックから確定した対応表。
| verb | CS の UI ラベル | 設計ツールの演算子 |
|---|---|---|
| 0 | を含む | equals / includes |
| 1 | を含まない | not_includes |
| 2 | だけである | only |
| 3 | 以外にある | has_other |
| 4 | だけではない | not_only |
answered(FA の回答あり)に対応する専用の verb はなく、verb 3 + value が空文字(=「空以外の入力がある」)で表現する。
設問タイプ別の条件表現
| 設問タイプ | 選択肢の特定方法 | value |
|---|---|---|
| 選択(SA / MA) | cond_answer_item_external_id |
空文字 |
| マトリクス | cond_answer_item_external_id(行)+ cond_sub_item_external_id(列) |
空文字 |
| プルダウン | 先頭の answer_item_id を共有 |
選択肢の文言(例: 福岡県) |
| テキスト入力(FA) | cond_answer_item_external_id(欄。-1 = いずれか、-2 = すべて) |
照合するテキスト |
注記
- 選択系とプルダウンで表現が異なる: 選択系は
answer_item_idで対象を特定してvalueを空文字にするのに対し、プルダウンはvalueの文字列で判定する。CS へ投入する際はこの違いを踏まえた変換が必要 - FA のテキストマッチ: CS は自由回答の内容による分岐ができる(「を含む」なので部分一致とみられる)。設計ツール側は
includes/not_includesを流用してこれを表現する rawにはscore_group_id/scoreフィールドも含まれる。CS のスコアロジックは logic_items に載る構造だが、本システムでは対応しない