init
This commit is contained in:
89
table_schema.sql
Normal file
89
table_schema.sql
Normal file
@@ -0,0 +1,89 @@
|
||||
CREATE TABLE users (
|
||||
no SERIAL PRIMARY KEY, -- 고유 번호 (자동 증가)
|
||||
user_id TEXT NOT NULL UNIQUE, -- 사용자 아이디
|
||||
email TEXT NOT NULL UNIQUE, -- 이메일
|
||||
password TEXT NOT NULL, -- 비밀번호 (해시 저장 권장)
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 생성일
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 수정일
|
||||
);
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
INSERT INTO users (user_id, email, password) VALUES ('admin', 'dosangyoon@gmail.com', crypt('dsyoon5004!', gen_salt('bf')));
|
||||
select * from users;
|
||||
|
||||
|
||||
CREATE TABLE qna_board (
|
||||
id SERIAL PRIMARY KEY, -- 게시글 고유 번호 (자동 증가)
|
||||
title TEXT NOT NULL, -- 제목
|
||||
content TEXT NOT NULL, -- 내용
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 등록일
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 수정일
|
||||
views INTEGER DEFAULT 0, -- 조회수, 기본값 0
|
||||
author_id INTEGER NOT NULL, -- 작성자 ID (users.no 참조)
|
||||
CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES users(no) ON DELETE CASCADE
|
||||
);
|
||||
select * from qna_board;
|
||||
|
||||
|
||||
|
||||
CREATE TABLE ai_news_board (
|
||||
id SERIAL PRIMARY KEY, -- 뉴스 고유 번호 (자동 증가)
|
||||
url TEXT NOT NULL, -- 뉴스 URL
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 등록일
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 수정일
|
||||
views INTEGER DEFAULT 0, -- 조회수 (기본값 0)
|
||||
author_id INTEGER NOT NULL, -- 작성자 ID (users.no 참조)
|
||||
CONSTRAINT fk_ai_news_author FOREIGN KEY (author_id)
|
||||
REFERENCES users(no) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
||||
|
||||
-- 챗봇(도구) 목록
|
||||
CREATE TABLE chat_tools (
|
||||
tool_id TEXT PRIMARY KEY, -- 예: 'chatgpt', 'dev_chatbot'
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
INSERT INTO chat_tools (tool_id, name, description)
|
||||
VALUES
|
||||
-- 기본 챗봇
|
||||
('chatgpt', 'ChatGPT', '일반 대화 및 모델 선택 기능을 제공합니다.'),
|
||||
-- PDF 벡터검색 개발 챗봇
|
||||
('dev_chatbot', '개발자 챗봇', 'PDF 업로드 후 벡터 검색 기반 Q&A 기능을 제공합니다.'),
|
||||
-- 문서 번역 도구
|
||||
('doc_translation','문서 번역', 'MS-Word 문서를 업로드하여 한글→영어 번역을 수행합니다.'),
|
||||
-- LIMS Text-to-SQL
|
||||
('lims_text2sql', 'LIMS Text2SQL', 'LIMS DB에 대한 자연어 질의를 SQL로 변환하여 결과를 제공합니다.'),
|
||||
-- 연구·논문 QA
|
||||
('research_qa', 'R&D 문헌 QA', '사내 논문·보고서 기반 질의응답 서비스를 제공합니다.');
|
||||
|
||||
|
||||
|
||||
-- 대화방(히스토리 목록 하나당 1 row)
|
||||
CREATE TABLE chat_rooms (
|
||||
room_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
user_id TEXT REFERENCES users(user_id) ON DELETE CASCADE,
|
||||
tool_id TEXT REFERENCES chat_tools(tool_id) ON DELETE CASCADE,
|
||||
title TEXT, -- 방 제목(첫 메시지 요약 등)
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
CREATE INDEX idx_chat_rooms_user ON chat_rooms(user_id, updated_at DESC);
|
||||
|
||||
-- 실제 메시지
|
||||
CREATE TABLE chat_messages (
|
||||
msg_id BIGSERIAL PRIMARY KEY,
|
||||
room_id UUID REFERENCES chat_rooms(room_id) ON DELETE CASCADE,
|
||||
sender_type VARCHAR(8) NOT NULL, -- 'user' | 'bot' | 'system'
|
||||
content TEXT NOT NULL,
|
||||
content_type VARCHAR(16) DEFAULT 'text', -- 'text' | 'image' 등
|
||||
metadata JSONB, -- 모델/프롬프트 등 추가 정보
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
CREATE INDEX idx_chat_messages_room ON chat_messages(room_id, created_at ASC);
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user