본문으로 건너뛰기

Tenant 스키마

개요

V18(RLS baseline) 이후 모든 테넌트 스코프 테이블은 public 스키마에 존재하며, tenant_id BIGINT NOT NULL 컬럼과 Postgres RLS 정책으로 행 단위 격리를 강제합니다. Schema-per-tenant(tenant_{slug} 스키마)는 완전히 제거되었습니다.

V26에서 adminsstaff, admin_permissionsstaff_permissions으로 리네임되었습니다.

도메인별 ERD

사용자 + 권한

수업 + 수강 + 강의

과제

시험 + OMR 채점

출결 + 상담

AI

테이블설명
ai_conversationsAI 대화 세션 (user_id, title, is_active)
ai_chat_messages대화 메시지 (role, content, tool_calls JSONB, pending_action JSONB)
ai_scheduled_tasks예약된 AI 작업 (cron 기반, frequency, tool_name, tool_arguments JSONB)

모두 tenant_id + RLS 적용.

콘텐츠 + 홈페이지

테이블설명
announcements공지사항 (author_id FK → users)
qna_boardsQ&A 게시글 (qna_user_id FK → users)
qna_commentsQ&A 댓글 (qna_id, student_id, user_id)
counseling_schedules상담 가능 시간 슬롯
reviews학원 리뷰 (reviewer_name, title, content)
toggles기능 토글 (is_review_popup_on, singleton per tenant)
homepage_config홈페이지 템플릿 구성 (template_id, sections JSONB, published)

파일 + 교재

테이블설명
file_metadata파일 메타데이터 (UUID PK, entity_type, object_key, folder_id)
textbook_folders교재 폴더 계층 (UUID PK, parent_id, depth 1~5)
textbooks교재 정보 (name, author, publisher, isbn, subject, grade_level)

SMS

테이블설명
sms_templatesSMS 템플릿 (name, content, category)
sms_messages발송된 SMS 메시지 (sender_id FK → staff, recipients JSONB)

활동 로그

테이블설명
activity_logs감사 로그 (actor_id, actor_role, action, entity_type, entity_id)
report_generation_jobs성적 리포트 생성 배치 잡 (exam_id, status, zip_file_key)

AI 분석

테이블설명
exam_ai_analyses시험 AI 분석 결과 (V44)
student_ai_feedbacks학생별 AI 피드백 (V45)

전체 테이블 목록

도메인테이블
사용자users, students, staff, permissions, staff_permissions
수업classes, class_enrollments, lectures
과제assignments, assignment_submissions
시험exams, exam_templates, exam_results, question_results, omr_grading_jobs, report_generation_jobs, exam_ai_analyses, student_ai_feedbacks
출결attendance_sessions, attendance_records
상담counseling_schedules, counseling_reservations
AIai_conversations, ai_chat_messages, ai_scheduled_tasks
콘텐츠announcements, qna_boards, qna_comments, reviews, toggles
홈페이지homepage_config
파일file_metadata, textbook_folders, textbooks
SMSsms_templates, sms_messages
감사activity_logs
수납 (테넌트)guardians, student_guardians, merchant_profiles, tuition_invoices, tuition_payments, cash_receipts

수납 테이블 상세는 Billing 스키마를 참조하세요.

주요 마이그레이션 이력

버전내용
V18RLS baseline — schema-per-tenant 폐기, 모든 테넌트 테이블을 public에 통합, RLS 정책 일괄 적용
V19activity_logs enum 컬럼
V20qna_boards is_it_answered 리네임
V21FK 인덱스 추가
V22owner_directory 신설
V23activity_logs 키셋 페이지네이션 인덱스
V24도메인 엔티티 version 컬럼 추가
V25omr_grading_jobs_results 드롭
V26adminsstaff, admin_permissionsstaff_permissions 리네임
V29수납 테이블 추가 (guardians, merchant_profiles, tuition_invoices 등)
V40omr_grading_jobs.version 추가
V41exam_results.omr_grading_job_id 추가
V43qna_boards.category_name 추가
V44exam_ai_analyses 추가
V45student_ai_feedbacks 추가
V52attendance_sessions (class_id, session_date) UNIQUE 제약
V53attendance_records 기본 상태 PENDING