본문으로 건너뛰기

데이터베이스 스키마

딸깍문서의 Supabase 데이터베이스 스키마를 설명합니다.

ER 다이어그램

erDiagram
User ||--o{ Document : creates
User ||--o{ PdfBlanks : creates
Document ||--o{ DocumentVersion : has
Document ||--o{ DocumentFile : contains
Document ||--o{ Prompt : has

User {
uuid id PK
text email UK
text name
text image
boolean isPremium
timestamp createdAt
timestamp updatedAt
}

Document {
uuid id PK
text title
text content
text documentType
text guide
text glossary
text sourceMetadata
text sfdtStoragePath
text shareId
boolean isPublic
uuid userId FK
timestamp createdAt
timestamp updatedAt
}

DocumentVersion {
uuid id PK
uuid documentId FK
text content
text documentType
text sfdtStoragePath
int versionNumber
timestamp createdAt
}

DocumentFile {
uuid id PK
uuid documentId FK
text fileName
text originalName
text mimeType
int fileSize
text storagePath
uuid userId FK
timestamp uploadedAt
timestamp updatedAt
}

Prompt {
uuid id PK
uuid documentId FK
uuid user_id FK
text userPrompt
text aiResponse
jsonb suggestions
text conversation_id
text modelUsed
int inputTokens
int outputTokens
timestamp createdAt
timestamp updatedAt
}

PdfBlanks {
uuid id PK
uuid user_id FK
text title
text originalFileName
text storagePath
jsonb blanksData
text status
timestamp createdAt
timestamp updatedAt
}

테이블 상세

Document

문서 메타데이터 및 내용을 저장합니다.

컬럼타입설명
iduuid기본 키
titletext문서 제목
contenttextHTML 또는 SFDT 내용
documentTypetexthtml 또는 sfdt
guidetextAI 스타일 가이드
glossarytext용어집
sourceMetadatatext출처 정보 JSON
shareIdtext공유 링크 ID
isPublicboolean공개 여부
userIduuid소유자 FK

DocumentVersion

문서 버전 히스토리를 저장합니다.

컬럼타입설명
iduuid기본 키
documentIduuid문서 FK
contenttext버전 내용
versionNumberint버전 번호
createdAttimestamp생성 시간

Prompt

AI 대화 히스토리를 저장합니다.

컬럼타입설명
iduuid기본 키
documentIduuid문서 FK
user_iduuid사용자 FK
userPrompttext사용자 입력
aiResponsetextAI 응답
suggestionsjsonb변경 제안
conversation_idtext대화 ID
modelUsedtext사용된 AI 모델

PdfBlanks

PDF 빈칸 채우기 작업을 저장합니다.

컬럼타입설명
iduuid기본 키
user_iduuid사용자 FK
titletext제목
originalFileNametext원본 파일명
storagePathtext스토리지 경로
blanksDatajsonb빈칸 데이터
statustext상태

마이그레이션

실행

npm run db:migrate

마이그레이션 파일

supabase/migrations/
├── add_sfdt_support.sql
├── add_chat_history_field.sql
├── add_glossary_field.sql
├── add_share_fields.sql
├── create_pdf_blanks_table.sql
├── create_document_file_table.sql
└── create_storage_bucket.sql

RLS (Row Level Security)

Document 정책

CREATE POLICY "Users can view own documents"
ON "Document"
FOR SELECT
USING (auth.uid() = "userId" OR "isPublic" = true);

CREATE POLICY "Users can create own documents"
ON "Document"
FOR INSERT
WITH CHECK (auth.uid() = "userId");

인덱스

CREATE INDEX "Document_userId_idx" ON "Document"("userId");
CREATE INDEX "Document_shareId_idx" ON "Document"("shareId");
CREATE INDEX "Prompt_documentId_idx" ON "Prompt"("documentId");
CREATE INDEX "Prompt_conversation_id_idx" ON "Prompt"("conversation_id");