File size: 5,677 Bytes
a28cff7 44e3c95 a28cff7 ce17628 a28cff7 ce17628 a28cff7 ce17628 a28cff7 ce17628 a28cff7 ce17628 a28cff7 ce17628 a28cff7 ce17628 a28cff7 ce17628 a28cff7 ce17628 a28cff7 6cbfd60 a28cff7 6cbfd60 a28cff7 6cbfd60 a28cff7 6cbfd60 a28cff7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | -- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- roadshow-server-v3 DuckDB Schema
-- μλ리μ€: cs-myk-v3 / bundle-v3 / worker-v3
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- μλλ¦¬μ€ λ©ν
CREATE TABLE IF NOT EXISTS scenarios (
id VARCHAR PRIMARY KEY,
name VARCHAR NOT NULL,
version VARCHAR NOT NULL,
description TEXT
);
-- Intent μΉ΄νλ‘κ·Έ (μλ리μ€λ³)
CREATE TABLE IF NOT EXISTS catalog_intents (
scenario_id VARCHAR NOT NULL,
intent_id VARCHAR NOT NULL,
intent_name VARCHAR NOT NULL,
L1_id VARCHAR NOT NULL,
L1_name VARCHAR NOT NULL,
L2_id VARCHAR NOT NULL,
L2_name VARCHAR NOT NULL,
inference_type VARCHAR NOT NULL, -- 'Rule' | 'Model'
features_json VARCHAR, -- JSON array
PRIMARY KEY (scenario_id, intent_id)
);
-- Action μΉ΄νλ‘κ·Έ (μλ리μ€λ³)
CREATE TABLE IF NOT EXISTS catalog_actions (
scenario_id VARCHAR NOT NULL,
action_id VARCHAR NOT NULL,
action_name VARCHAR NOT NULL,
intents_json VARCHAR NOT NULL,
condition VARCHAR,
channel VARCHAR NOT NULL,
message VARCHAR,
PRIMARY KEY (scenario_id, action_id)
);
-- Behavior μΉ΄νλ‘κ·Έ (μλ리μ€λ³)
CREATE TABLE IF NOT EXISTS catalog_behaviors (
scenario_id VARCHAR NOT NULL,
behavior_id VARCHAR NOT NULL,
step INTEGER NOT NULL,
behavior_name VARCHAR NOT NULL,
event_type VARCHAR NOT NULL,
entity VARCHAR NOT NULL,
PRIMARY KEY (scenario_id, behavior_id)
);
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- μμ° λ°νμ ν
μ΄λΈ
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- μμ° μΈμ
CREATE SEQUENCE IF NOT EXISTS seq_sessions;
CREATE TABLE IF NOT EXISTS sessions (
id VARCHAR PRIMARY KEY,
scenario_id VARCHAR NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_active_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
stage VARCHAR DEFAULT 'initial'
);
-- μ€λ¬Έ λ΅λ³
CREATE SEQUENCE IF NOT EXISTS seq_survey_answers;
CREATE TABLE IF NOT EXISTS survey_answers (
id BIGINT DEFAULT nextval('seq_survey_answers') PRIMARY KEY,
session_id VARCHAR NOT NULL,
question_id VARCHAR NOT NULL,
answer_code VARCHAR NOT NULL,
submitted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- νλ λ‘κ·Έ
CREATE SEQUENCE IF NOT EXISTS seq_event_log;
CREATE TABLE IF NOT EXISTS event_log (
id BIGINT DEFAULT nextval('seq_event_log') PRIMARY KEY,
session_id VARCHAR NOT NULL,
scenario_id VARCHAR NOT NULL,
step INTEGER,
behavior_id VARCHAR,
event_type VARCHAR NOT NULL,
entity VARCHAR NOT NULL,
occurred_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Intent Score (λ¨μΌ μΆλ‘ μμ )
-- baseline_score : νλ μμ΄ Batch Featureλ§μΌλ‘ μ¬μΆλ‘ ν μ μ
-- final_score : Batch + Behavioral Pattern Feature ν©μ³ μ¬μΆλ‘ ν μ μ
-- delta_score : final - baseline (νλμ΄ λ§λ λ³νλ)
-- rank_change : baseline_rank - rank (μμλ©΄ νλμΌλ‘ μμ μμΉ)
CREATE SEQUENCE IF NOT EXISTS seq_intent_scores;
CREATE TABLE IF NOT EXISTS intent_scores (
id BIGINT DEFAULT nextval('seq_intent_scores') PRIMARY KEY,
session_id VARCHAR NOT NULL,
stage VARCHAR NOT NULL, -- 'initial' | 'step_1' | 'step_2' | 'step_3'
intent_id VARCHAR NOT NULL,
baseline_score DOUBLE NOT NULL,
final_score DOUBLE NOT NULL,
delta_score DOUBLE DEFAULT 0.0,
baseline_rank INTEGER,
rank INTEGER,
rank_change INTEGER DEFAULT 0,
inference_type VARCHAR NOT NULL,
computed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Customer Context (μ μ¬ λ¨μ: μΆλ‘ 1νλΉ 1ν, 116 Intent ν¬ν¨λ JSON)
CREATE SEQUENCE IF NOT EXISTS seq_customer_contexts;
CREATE TABLE IF NOT EXISTS customer_contexts (
id BIGINT DEFAULT nextval('seq_customer_contexts') PRIMARY KEY,
session_id VARCHAR NOT NULL,
scenario_id VARCHAR NOT NULL,
stage VARCHAR NOT NULL,
context_json VARCHAR NOT NULL, -- Customer Context JSON (Section 4.1 μ€ν€λ§)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- μΈλ±μ€
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
CREATE INDEX IF NOT EXISTS idx_event_log_session ON event_log (session_id);
CREATE INDEX IF NOT EXISTS idx_intent_scores_session ON intent_scores (session_id, stage);
CREATE INDEX IF NOT EXISTS idx_customer_contexts_session ON customer_contexts (session_id, stage);
|