This commit is contained in:
dsyoon
2025-12-27 14:06:26 +09:00
parent 23f5388c56
commit 46460b77f8
33 changed files with 4600 additions and 1 deletions

89
table_schema.sql Normal file
View 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);