コンテンツにスキップ

external_surveys

概要

Creative Survey(CS)などの外部ツールから取り込んだ調査票を保管するテーブル。取り込んだ生の JSON をそのまま保持する。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL許可 デフォルト値 備考
外部調査票 external_surveys id uuid ◯ gen_random_uuid()
source varchar(50) 取得元の識別子。現在は creative_survey
external_id bigint 外部ツール側の調査票 ID
origin varchar(255) 取得元のオリジン(例: https://4dsd.svy.ooo)
name text 調査票の名前
raw_survey jsonb CS の調査票オブジェクトの生 JSON
raw_questionnaire jsonb ◯ CS の設問構成オブジェクトの生 JSON
generate_order jsonb ◯ ページ構成。設問 ID の二次元配列
fetched_at timestamptz ◯ 拡張が CS から取得した日時
imported_at timestamptz now() 取り込み日時
imported_by uuid users:id (set null) ◯ 取り込み実行者

リレーション

  • imported_by → users.id (onDelete: set null)
  • 参照される側: external_questions.external_survey_id(cascade)
  • 参照される側: question_library_items.source_external_survey_id(cascade)

インデックス

  • 主キー (id)
  • UNIQUE INDEX: external_surveys_source_external_id_idx (source, external_id)

注記

  • 再取り込み時の挙動: (source, external_id) が既存の場合、その行を削除してから再投入する。配下の設問・選択肢・分岐は連鎖削除されるため、取り込みを何度実行しても重複しない
  • 生 JSON を保持する理由: CS の API 仕様は非公開のため、正規化した列だけでは取りこぼしが起きる。生 JSON を残しておくことで、後から仕様が判明した際に再解析できる
  • generate_order は CS のページ構成(どの設問が同じページに束ねられているか)を表す
  • 取り込みと同時に、各設問が question_library_items へ外部由来データとして登録される