DB Manual

Oracle DDL 스크립트 — 운영 환경 수동 테이블 생성용

warning
운영 Oracle DB는 자동 마이그레이션을 지원하지 않습니다. 아래 DDL을 번호 순서대로 실행하세요. FK 의존성 때문에 순서가 중요합니다.

테이블 목록 (총 36개)

#그룹테이블용도
1공통users사용자 계정 + 역할
2공통llm_usage_logLLM API 호출 로그
3이상탐지detection_rules감지 규칙 정의
4이상탐지rule_audit_log규칙 변경 이력
5이상탐지correlations이상 상관 그룹
6이상탐지anomalies감지된 이상
7이상탐지detection_cycles감지 사이클 로그
8이상탐지rca_analysesAuto RCA 결과
9딥 RCAdeep_rca_sessionsRCA 분석 세션
10딥 RCAdeep_rca_messages대화 메시지
11딥 RCAdeep_rca_flow_nodes플로차트 노드
12딥 RCAdeep_rca_flow_edges플로차트 엣지
13딥 RCAdeep_rca_scenarios시나리오 라이브러리
14딥 RCAdeep_rca_scenario_revisions시나리오 리비전
15딥 RCAfab_toolsFAB 도구 레지스트리
16딥 RCAknowledge_gapsKnowledge Gap 추적
17딥 RCAtool_dev_requests도구 개발 요청
18Tool Studiods_connectionsDB 접속 관리
19Tool Studiods_tools도구 정의
20Tool Studiotool_audit_log도구 변경 이력
21Tool Studiotool_versions도구 버전 관리
22Tool Studiods_query_log쿼리 실행 로그
23워크플로우workflows워크플로우 정의
24워크플로우workflow_runs실행 이력
25워크플로우workflow_audit_log워크플로우 변경 이력
26RAGkb_documentsKnowledge Base 문서
27공통system_settings시스템 설정 (하이퍼파라미터)
28AI Chattool_requests도구 추가 요청
29AI Chattool_request_history도구 요청 상태 변경 이력
30AI Chatai_chat_sessionsAI 채팅 세션
31AI Chatai_chat_messages채팅 메시지
32공통activity_log사용자 활동 감사 로그
33AI Chatquestion_flows후속질문 흐름 관리
34Playbookcountermeasures대안/조치 플레이북
35AI Chatuser_prompts사용자 개인 프롬프트
36AI Chatuser_prompt_versions개인 프롬프트 버전 이력

format_list_numbered 실행 순서 가이드

FK 의존성 때문에 반드시 아래 순서를 지켜야 합니다.

  1. users — 다른 테이블이 참조하지 않는 독립 테이블
  2. llm_usage_log — 독립
  3. detection_rules — anomalies, rca_analyses가 참조
  4. rule_audit_log — rule_id 참조 (FK 없지만 논리적 의존)
  5. correlations — anomalies.correlation_id FK
  6. anomalies — detection_rules + correlations 참조
  7. detection_cycles — 독립
  8. rca_analyses — anomalies 참조
  9. deep_rca_sessions — deep_rca_messages 등이 참조
  10. deep_rca_messages — sessions 참조
  11. deep_rca_flow_nodes — sessions 참조
  12. deep_rca_flow_edges — sessions 참조
  13. deep_rca_scenarios — sessions 참조
  14. deep_rca_scenario_revisions — scenarios 참조
  15. fab_tools — 독립
  16. knowledge_gaps — 독립
  17. tool_dev_requests — 독립
  18. ds_connections — ds_tools가 참조
  19. ds_tools — ds_connections 참조
  20. tool_audit_log — 독립 (tool_id 논리적 의존)
  21. tool_versions — 독립 (tool_id 논리적 의존)
  22. ds_query_log — 독립
  23. workflows — workflow_runs가 참조
  24. workflow_runs — workflows 참조
  25. workflow_audit_log — 독립 (workflow_id 논리적 의존)
  26. kb_documents — 독립
  27. system_settings — 독립
  28. tool_requests — 독립
  29. tool_request_history — 독립 (request_id 논리적 의존)
  30. ai_chat_sessions — ai_chat_messages가 참조
  31. ai_chat_messages — sessions 참조
  32. activity_log — 독립
  33. question_flows — 독립
  34. countermeasures — 독립
  35. user_prompts — user_prompt_versions가 참조
  36. user_prompt_versions — user_prompts 참조

ALTER TABLE (FK 추가)은 참조 테이블 생성 후 실행하세요.

people 공통 테이블

1. users

table_chart users — 사용자 계정
CREATE TABLE users ( user_id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, username VARCHAR2(50) NOT NULL UNIQUE, password VARCHAR2(200) NOT NULL, display_name VARCHAR2(100), role VARCHAR2(20) DEFAULT 'viewer', page_permissions CLOB, -- JSON: 커스텀 권한 오버라이드 enabled NUMBER(1) DEFAULT 1, created_at TIMESTAMP DEFAULT SYSTIMESTAMP );

2. llm_usage_log

table_chart llm_usage_log — LLM 사용량 로그
CREATE TABLE llm_usage_log ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, called_at TIMESTAMP DEFAULT SYSTIMESTAMP, module VARCHAR2(50), model VARCHAR2(100), prompt_tokens NUMBER DEFAULT 0, completion_tokens NUMBER DEFAULT 0, total_tokens NUMBER DEFAULT 0, duration_ms NUMBER DEFAULT 0, success NUMBER(1) DEFAULT 1 );

sensors 이상탐지 테이블

3. detection_rules

table_chart detection_rules — 감지 규칙
CREATE TABLE detection_rules ( rule_id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, rule_name VARCHAR2(200) NOT NULL, category VARCHAR2(50) NOT NULL, -- logistics / wip / equipment subcategory VARCHAR2(100), query_template CLOB, -- SQL with :bind_var (source_type=sql) check_type VARCHAR2(30) DEFAULT 'threshold' NOT NULL, -- threshold / delta / absence / llm source_type VARCHAR2(10) DEFAULT 'sql', -- sql / tool tool_name VARCHAR2(100), -- 도구명 (source_type=tool) tool_args CLOB, -- 도구 파라미터 JSON tool_column VARCHAR2(100), -- 결과에서 추출할 컬럼명 tool_chain CLOB, -- 멀티 도구 체인 JSON (v1.7.0) threshold_op VARCHAR2(10) DEFAULT '>', warning_value NUMBER, critical_value NUMBER, eval_interval NUMBER DEFAULT 300, -- seconds (규칙별 감지 간격) last_evaluated_at TIMESTAMP, -- 마지막 평가 시각 llm_enabled NUMBER(1) DEFAULT 0, llm_prompt CLOB, enabled NUMBER(1) DEFAULT 1, auto_resolve NUMBER(1) DEFAULT 0, -- 자동 해소 활성화 (v1.7.0) resolve_count NUMBER DEFAULT 3, -- 연속 정상 N회 시 해소 (v1.7.0) created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP, created_by VARCHAR2(50), updated_by VARCHAR2(50) );

4. rule_audit_log

table_chart rule_audit_log — 규칙 변경 이력
CREATE TABLE rule_audit_log ( log_id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, rule_id NUMBER NOT NULL, action VARCHAR2(20) NOT NULL, changed_by VARCHAR2(100), changed_at TIMESTAMP DEFAULT SYSTIMESTAMP, changes CLOB );

5. correlations

table_chart correlations — 이상 상관 그룹
CREATE TABLE correlations ( correlation_id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, title VARCHAR2(500), anomaly_count NUMBER DEFAULT 0, correlation_type VARCHAR2(30), -- temporal / causal / spatial root_cause_guess CLOB, created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP );

6. anomalies

table_chart anomalies — 감지된 이상
CREATE TABLE anomalies ( anomaly_id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, rule_id NUMBER REFERENCES detection_rules(rule_id), correlation_id NUMBER, category VARCHAR2(50) NOT NULL, severity VARCHAR2(20) NOT NULL, -- warning / critical title VARCHAR2(500) NOT NULL, description CLOB, measured_value NUMBER, threshold_value NUMBER, affected_entity VARCHAR2(200), -- equipment_id, zone, line llm_analysis CLOB, llm_suggestion CLOB, occurrence_count NUMBER DEFAULT 1, -- 동일 이상 반복 발생 횟수 last_seen_at TIMESTAMP, -- 마지막 발생 시각 status VARCHAR2(30) DEFAULT 'detected', -- detected / acknowledged / investigating / resolved / false_positive detected_at TIMESTAMP DEFAULT SYSTIMESTAMP, acknowledged_at TIMESTAMP, resolved_at TIMESTAMP, resolved_by VARCHAR2(100), notes CLOB, normal_streak NUMBER DEFAULT 0 -- 자동 해소용 정상 연속 카운트 (v1.7.0) ); -- FK: anomalies.correlation_id → correlations ALTER TABLE anomalies ADD CONSTRAINT fk_anomaly_correlation FOREIGN KEY (correlation_id) REFERENCES correlations(correlation_id);

7. detection_cycles

table_chart detection_cycles — 감지 사이클 로그
CREATE TABLE detection_cycles ( cycle_id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, started_at TIMESTAMP NOT NULL, completed_at TIMESTAMP, rules_evaluated NUMBER DEFAULT 0, anomalies_found NUMBER DEFAULT 0, duration_ms NUMBER );

8. rca_analyses

table_chart rca_analyses — Auto RCA 결과
CREATE TABLE rca_analyses ( rca_id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, anomaly_id NUMBER NOT NULL REFERENCES anomalies(anomaly_id), status VARCHAR2(30) DEFAULT 'pending', root_cause CLOB, cause_category VARCHAR2(100), contributing_factors CLOB, evidence CLOB, recommendations CLOB, confidence NUMBER, analyzed_at TIMESTAMP, analysis_duration_ms NUMBER, created_at TIMESTAMP DEFAULT SYSTIMESTAMP );

account_tree 딥 RCA 테이블

9. deep_rca_sessions

table_chart deep_rca_sessions
CREATE TABLE deep_rca_sessions ( id VARCHAR2(36) PRIMARY KEY, title VARCHAR2(200) NOT NULL, process_type VARCHAR2(50), alarm_type VARCHAR2(100), author VARCHAR2(100), anomaly_id NUMBER, status VARCHAR2(20) DEFAULT 'active', created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP );

10. deep_rca_messages

table_chart deep_rca_messages
CREATE TABLE deep_rca_messages ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, session_id VARCHAR2(36) REFERENCES deep_rca_sessions(id), role VARCHAR2(20) NOT NULL, content CLOB NOT NULL, extracted_data CLOB, created_at TIMESTAMP DEFAULT SYSTIMESTAMP );

11. deep_rca_flow_nodes

table_chart deep_rca_flow_nodes
CREATE TABLE deep_rca_flow_nodes ( id VARCHAR2(50) NOT NULL, session_id VARCHAR2(36) REFERENCES deep_rca_sessions(id), type VARCHAR2(20) NOT NULL, label VARCHAR2(500) NOT NULL, parameter VARCHAR2(200), threshold VARCHAR2(200), metadata CLOB, PRIMARY KEY (id, session_id) );

12. deep_rca_flow_edges

table_chart deep_rca_flow_edges
CREATE TABLE deep_rca_flow_edges ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, session_id VARCHAR2(36) REFERENCES deep_rca_sessions(id), from_node VARCHAR2(50) NOT NULL, to_node VARCHAR2(50) NOT NULL, label VARCHAR2(200), condition VARCHAR2(200) );

13. deep_rca_scenarios

table_chart deep_rca_scenarios
CREATE TABLE deep_rca_scenarios ( id VARCHAR2(36) PRIMARY KEY, session_id VARCHAR2(36) REFERENCES deep_rca_sessions(id), title VARCHAR2(200) NOT NULL, process_type VARCHAR2(50), description CLOB, mermaid_code CLOB, node_count NUMBER, author VARCHAR2(100) DEFAULT '', version NUMBER DEFAULT 1, parent_id VARCHAR2(36), status VARCHAR2(20) DEFAULT 'published', tags CLOB DEFAULT '[]', created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP );

14. deep_rca_scenario_revisions

table_chart deep_rca_scenario_revisions
CREATE TABLE deep_rca_scenario_revisions ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, scenario_id VARCHAR2(36) NOT NULL REFERENCES deep_rca_scenarios(id), version NUMBER NOT NULL, author VARCHAR2(100) NOT NULL, changelog CLOB NOT NULL, mermaid_code CLOB, node_count NUMBER, snapshot CLOB, created_at TIMESTAMP DEFAULT SYSTIMESTAMP );

15. fab_tools

table_chart fab_tools — FAB 도구 레지스트리
CREATE TABLE fab_tools ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name VARCHAR2(100) NOT NULL UNIQUE, category VARCHAR2(50) NOT NULL, description CLOB, data_fields CLOB, usage_example CLOB, created_at TIMESTAMP DEFAULT SYSTIMESTAMP );

16. knowledge_gaps

table_chart knowledge_gaps
CREATE TABLE knowledge_gaps ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, context CLOB NOT NULL, question CLOB NOT NULL, process_type VARCHAR2(50), severity VARCHAR2(20) DEFAULT 'important', status VARCHAR2(20) DEFAULT 'open', resolved_by VARCHAR2(100), resolved_scenario_id VARCHAR2(36), created_at TIMESTAMP DEFAULT SYSTIMESTAMP, resolved_at TIMESTAMP );

17. tool_dev_requests

table_chart tool_dev_requests -- 도구 개발 요청
CREATE TABLE tool_dev_requests ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, title VARCHAR2(200) NOT NULL, description CLOB, requested_by VARCHAR2(100), session_id VARCHAR2(36), context CLOB, suggested_params CLOB, priority VARCHAR2(20) DEFAULT 'medium', status VARCHAR2(20) DEFAULT 'open', resolved_tool_id NUMBER, created_at TIMESTAMP DEFAULT SYSTIMESTAMP, resolved_at TIMESTAMP, resolved_by VARCHAR2(100) );

build_circle Tool Studio 테이블

18. ds_connections

table_chart ds_connections — DB 접속 관리
CREATE TABLE ds_connections ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name VARCHAR2(100) NOT NULL UNIQUE, type VARCHAR2(20) NOT NULL, -- sqlite / oracle sqlite_path VARCHAR2(500), host VARCHAR2(200), port NUMBER, service_name VARCHAR2(200), username VARCHAR2(100), password VARCHAR2(200), addresses CLOB, -- JSON: Oracle 다중 주소 (TNS ADDRESS_LIST) created_at TIMESTAMP DEFAULT SYSTIMESTAMP );

19. ds_tools

table_chart ds_tools — 도구 정의
CREATE TABLE ds_tools ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name VARCHAR2(100) NOT NULL UNIQUE, description CLOB, connection_id NUMBER REFERENCES ds_connections(id), sql_query CLOB NOT NULL, parameters CLOB, -- JSON array columns CLOB, -- JSON array rate_limit NUMBER DEFAULT 60, cache_ttl NUMBER DEFAULT 0, enabled NUMBER(1) DEFAULT 1, tag VARCHAR2(100), version NUMBER DEFAULT 1, updated_by VARCHAR2(100), updated_at TIMESTAMP DEFAULT SYSTIMESTAMP, created_at TIMESTAMP DEFAULT SYSTIMESTAMP );

22. ds_query_log

table_chart ds_query_log — 쿼리 실행 로그
CREATE TABLE ds_query_log ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, tool_name VARCHAR2(100) NOT NULL, params CLOB, row_count NUMBER, duration_ms NUMBER, cached NUMBER(1) DEFAULT 0, error CLOB, caller VARCHAR2(50) DEFAULT '', created_at TIMESTAMP DEFAULT SYSTIMESTAMP );

route 워크플로우 테이블

23. workflows

table_chart workflows
CREATE TABLE workflows ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name VARCHAR2(200) NOT NULL, description CLOB, graph_data CLOB, -- JSON (nodes + edges) created_by VARCHAR2(100), updated_by VARCHAR2(100), created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP );

24. workflow_runs

table_chart workflow_runs — 실행 이력
CREATE TABLE workflow_runs ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, workflow_id NUMBER NOT NULL REFERENCES workflows(id), status VARCHAR2(30) DEFAULT 'running', result CLOB, started_at TIMESTAMP DEFAULT SYSTIMESTAMP, completed_at TIMESTAMP, duration_ms NUMBER );

26. kb_documents

table_chart kb_documents — Knowledge Base 문서
CREATE TABLE kb_documents ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, title VARCHAR2(200) NOT NULL, content CLOB, category VARCHAR2(100), tags VARCHAR2(500), author VARCHAR2(100), chunk_count NUMBER DEFAULT 0, topic VARCHAR2(200) DEFAULT '', summary CLOB DEFAULT '', keywords VARCHAR2(500) DEFAULT '', structuring_trace CLOB DEFAULT '', structuring_mode VARCHAR2(20) DEFAULT 'preserve', created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP );

chat AI Chat 테이블

30. ai_chat_sessions

table_chart ai_chat_sessions
CREATE TABLE ai_chat_sessions ( id VARCHAR2(36) PRIMARY KEY, title VARCHAR2(200) NOT NULL, author VARCHAR2(100), status VARCHAR2(20) DEFAULT 'active', created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP );

31. ai_chat_messages

table_chart ai_chat_messages
CREATE TABLE ai_chat_messages ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, session_id VARCHAR2(36) REFERENCES ai_chat_sessions(id), role VARCHAR2(20) NOT NULL, content CLOB NOT NULL, tool_calls CLOB, created_at TIMESTAMP DEFAULT SYSTIMESTAMP );

extension AI Chat 확장 + 시스템 테이블

33. question_flows

table_chart question_flows — 후속질문 흐름
CREATE TABLE question_flows ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name VARCHAR2(200) NOT NULL, description VARCHAR2(500), category VARCHAR2(50), steps CLOB NOT NULL, -- JSON: [{"question":"...", "keywords":["..."]}] enabled NUMBER(1) DEFAULT 1, created_by VARCHAR2(100), created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP ); CREATE INDEX idx_question_flows_enabled ON question_flows(enabled);

28. tool_requests

table_chart tool_requests — 도구 추가 요청
CREATE TABLE tool_requests ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, title VARCHAR2(200) NOT NULL, description CLOB, data_source VARCHAR2(200), requested_by VARCHAR2(100), session_id VARCHAR2(36), status VARCHAR2(20) DEFAULT 'pending', admin_note CLOB, priority NUMBER DEFAULT 2, created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP ); CREATE INDEX idx_tool_requests_status ON tool_requests(status);

29. tool_request_history

table_chart tool_request_history -- 요청 상태 변경 이력
CREATE TABLE tool_request_history ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, request_id NUMBER NOT NULL, old_status VARCHAR2(20), new_status VARCHAR2(20) NOT NULL, comment CLOB, changed_by VARCHAR2(100), created_at TIMESTAMP DEFAULT SYSTIMESTAMP ); CREATE INDEX idx_tr_history_req ON tool_request_history(request_id);

27. system_settings

table_chart system_settings — 시스템 하이퍼파라미터
CREATE TABLE system_settings ( key VARCHAR2(100) PRIMARY KEY, value VARCHAR2(500) NOT NULL, category VARCHAR2(50) NOT NULL, label VARCHAR2(200) DEFAULT '', data_type VARCHAR2(20) DEFAULT 'int', min_val NUMBER, max_val NUMBER, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_by VARCHAR2(100) DEFAULT '' );

32. activity_log

table_chart activity_log — 사용자 활동 로그
CREATE TABLE activity_log ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, user_id NUMBER, username VARCHAR2(50), action VARCHAR2(50) NOT NULL, -- login/logout/create/update/delete/execute target_type VARCHAR2(50), -- user/anomaly/rule/tool/workflow/knowledge/rca/setting/permission target_id VARCHAR2(100), target_name VARCHAR2(200), details CLOB, -- JSON ip_address VARCHAR2(50), page VARCHAR2(50), created_at TIMESTAMP DEFAULT SYSTIMESTAMP ); CREATE INDEX idx_activity_log_user ON activity_log(user_id); CREATE INDEX idx_activity_log_action ON activity_log(action); CREATE INDEX idx_activity_log_time ON activity_log(created_at);

menu_book Playbook 테이블

34. countermeasures

table_chart countermeasures -- 대안/조치 플레이북
CREATE TABLE countermeasures ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, title VARCHAR2(200) NOT NULL, category VARCHAR2(50) NOT NULL, subcategory VARCHAR2(100), rule_ids CLOB, severity VARCHAR2(20), description CLOB NOT NULL, action_type VARCHAR2(30) DEFAULT 'manual', action_config CLOB, priority VARCHAR2(20) DEFAULT 'medium', estimated_time VARCHAR2(50), verification CLOB, enabled NUMBER(1) DEFAULT 1, created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP, created_by VARCHAR2(50), updated_by VARCHAR2(50) ); CREATE INDEX idx_cm_category ON countermeasures(category);

edit_note 사용자 프롬프트 테이블

35. user_prompts

table_chart user_prompts -- 사용자 개인 프롬프트
CREATE TABLE user_prompts ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, user_id NUMBER NOT NULL, username VARCHAR2(100) NOT NULL, title VARCHAR2(100) NOT NULL DEFAULT '내 프롬프트', content CLOB DEFAULT '', enabled NUMBER(1) DEFAULT 1, version NUMBER DEFAULT 1, created_at TIMESTAMP DEFAULT SYSTIMESTAMP, updated_at TIMESTAMP DEFAULT SYSTIMESTAMP, CONSTRAINT uq_user_prompts_user UNIQUE (user_id) ); CREATE INDEX idx_user_prompts_user ON user_prompts(user_id);

36. user_prompt_versions

table_chart user_prompt_versions -- 프롬프트 버전 이력
CREATE TABLE user_prompt_versions ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, prompt_id NUMBER NOT NULL REFERENCES user_prompts(id), version NUMBER NOT NULL, title VARCHAR2(100) NOT NULL, content CLOB NOT NULL, change_note VARCHAR2(500) DEFAULT '', created_by VARCHAR2(100) NOT NULL, created_at TIMESTAMP DEFAULT SYSTIMESTAMP ); CREATE INDEX idx_user_prompt_versions_prompt ON user_prompt_versions(prompt_id);

speed 인덱스

테이블 생성 후 아래 인덱스를 실행하세요.

table_chart CREATE INDEX 모음
-- LLM 사용량 CREATE INDEX idx_llm_usage_time ON llm_usage_log(called_at); CREATE INDEX idx_llm_usage_module ON llm_usage_log(module); -- 규칙 변경 이력 CREATE INDEX idx_audit_rule ON rule_audit_log(rule_id); CREATE INDEX idx_audit_time ON rule_audit_log(changed_at); -- 이상 CREATE INDEX idx_anomalies_status ON anomalies(status); CREATE INDEX idx_anomalies_detected ON anomalies(detected_at); CREATE INDEX idx_anomalies_rule ON anomalies(rule_id); CREATE INDEX idx_anomalies_correlation ON anomalies(correlation_id); -- 워크플로우 실행 CREATE INDEX idx_wf_runs_wf ON workflow_runs(workflow_id); CREATE INDEX idx_wf_runs_time ON workflow_runs(started_at); -- Knowledge Base CREATE INDEX idx_kb_docs_category ON kb_documents(category); -- Tool Studio 감사 CREATE INDEX idx_tool_audit_tool ON tool_audit_log(tool_id); CREATE INDEX idx_tool_audit_time ON tool_audit_log(changed_at); CREATE INDEX idx_tool_ver_tool ON tool_versions(tool_id); -- 워크플로우 감사 CREATE INDEX idx_wf_audit_wf ON workflow_audit_log(workflow_id); CREATE INDEX idx_wf_audit_time ON workflow_audit_log(changed_at); -- AI Chat CREATE INDEX idx_ai_chat_sessions_status ON ai_chat_sessions(status); CREATE INDEX idx_ai_chat_messages_session ON ai_chat_messages(session_id); -- 도구 요청 CREATE INDEX idx_tool_requests_status ON tool_requests(status); CREATE INDEX idx_tr_history_req ON tool_request_history(request_id); -- 질문 흐름 CREATE INDEX idx_question_flows_enabled ON question_flows(enabled); -- Playbook / 사용자 프롬프트 CREATE INDEX idx_cm_category ON countermeasures(category); CREATE INDEX idx_user_prompts_user ON user_prompts(user_id); CREATE INDEX idx_user_prompt_versions_prompt ON user_prompt_versions(prompt_id);

playlist_add 기본 데이터

최초 설치 후 필수 INSERT문입니다.

admin 계정

table_chart admin 계정 생성
-- 비밀번호는 bcrypt 해시로 교체하세요 INSERT INTO users (username, password, display_name, role, enabled) VALUES ('admin', '$2b$12$...', '관리자', 'admin', 1);

FAB 도구 레지스트리

table_chart fab_tools 초기 데이터
INSERT INTO fab_tools (name, category, description) VALUES ('get_conveyor_load', 'logistics', '존별 컨베이어 부하율(%) 조회'); INSERT INTO fab_tools (name, category, description) VALUES ('get_transfer_throughput', 'logistics', '라인별 반송 처리량'); INSERT INTO fab_tools (name, category, description) VALUES ('get_bottleneck_zones', 'logistics', '대기시간 초과 병목존 감지'); INSERT INTO fab_tools (name, category, description) VALUES ('get_agv_utilization', 'logistics', 'AGV/OHT 상태별 대수/비율'); INSERT INTO fab_tools (name, category, description) VALUES ('get_flow_balance', 'wip', '공정별 유입/유출 밸런스'); INSERT INTO fab_tools (name, category, description) VALUES ('get_wip_levels', 'wip', '공정별 WIP vs 목표 비율'); INSERT INTO fab_tools (name, category, description) VALUES ('get_queue_length', 'wip', '스텝별 대기 LOT 수/대기시간'); INSERT INTO fab_tools (name, category, description) VALUES ('get_aging_lots', 'wip', '기준시간 초과 장기체류 LOT'); INSERT INTO fab_tools (name, category, description) VALUES ('get_wip_trend', 'wip', '시간별 WIP 변화 트렌드'); INSERT INTO fab_tools (name, category, description) VALUES ('get_equipment_status', 'equipment', '설비 현재 상태(RUN/IDLE/DOWN/PM)'); INSERT INTO fab_tools (name, category, description) VALUES ('get_equipment_utilization', 'equipment', '설비 가동률(%)'); INSERT INTO fab_tools (name, category, description) VALUES ('get_unscheduled_downs', 'equipment', '비계획정지 이력'); INSERT INTO fab_tools (name, category, description) VALUES ('get_pm_schedule', 'equipment', '예방보전 일정'); INSERT INTO fab_tools (name, category, description) VALUES ('get_equipment_alarms', 'equipment', '설비 알람 이력'); COMMIT;