コンテンツにスキップ

external_logics

概要

外部ツールから取り込んだ分岐ロジック(CS の logic)を保管するテーブル。1 つの logic が設計ツールの「1 つの分岐ルール」に相当する。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
外部分岐ロジック external_logics id uuid ◯ gen_random_uuid()
external_question_id uuid external_questions:id (cascade)
external_id bigint CS 側の logic ID
order_index integer ◯ 評価順。上位優先。CS の並べ替えはこの値の書き換えで行う
action_question_external_id bigint ◯ 分岐先の設問 ID(logic_action.question_id)
action_is_random boolean false 分岐先をランダムにするか(logic_action.is_random)
raw jsonb logic オブジェクトの生 JSON

リレーション

  • external_question_id → external_questions.id (onDelete: cascade)
  • 参照される側: external_logic_items.external_logic_id(cascade)

インデックス

  • 主キー (id)
  • UNIQUE INDEX: external_logics_question_external_id_idx (external_question_id, external_id)

CS の分岐構造との対応

CS 設計ツール
1 つの logic 1 つの分岐ルール
logic 内の複数 logic_item ルール内の複数条件(AND)
同一設問の複数 logic 複数のルール(OR)
logic.order_index ルールの sort_order(先勝ち評価)
logic_action.question_id 分岐先の設問コード
logic_action.message ルールの message

注記

  • AND / OR の表現: CS には 1 つの logic 内で AND と OR を混在させる構造がない。設計ツールと同じフラット構造
  • 排他設定: logic_action.question_id に自分自身の設問 ID を指定し、logic_action.message にメッセージを入れると、進行を止める排他設定になる
  • 分岐先ランダム: action_is_random と logic_random_destinations は CS に存在するが、本システムでは対応しない(is_random: false を送るのみ)
  • 削除のセマンティクス: CS では PUT /questions/{id}/logics/import は送った logic の更新のみを行い、送らなかった logic は削除されない。削除には専用の DELETE /logics/{id} を使う
  • raw には logic_action.message やランダム分岐先の構造も含まれる