Tenant 스키마
개요
V18(RLS baseline) 이후 모든 테넌트 스코프 테이블은 public 스키마에 존재하며, tenant_id BIGINT NOT NULL 컬럼과 Postgres RLS 정책으로 행 단위 격리를 강제합니다. Schema-per-tenant(tenant_{slug} 스키마)는 완전히 제거되었습니다.
V26에서 admins → staff, admin_permissions → staff_permissions으로 리네임되었습니다.
도메인별 ERD
사용자 + 권한
수업 + 수강 + 강의
과제
시험 + OMR 채점
출결 + 상담
AI
| 테이블 | 설명 |
|---|---|
ai_conversations | AI 대화 세션 (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_boards | Q&A 게시글 (qna_user_id FK → users) |
qna_comments | Q&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) |