Student 모듈
학원 학생의 프로필 생성·수정·비활성화, 대량 가져오기(Excel/CSV), CSV 내보내기, 재원생 현황 통계 등을 담당하는 핵심 도메인 모듈입니다.
모듈 개요
| 항목 | 내용 |
|---|---|
| Gradle 서브프로젝트 | modules/student |
| 베이스 패키지 | com.lumie.student |
| 데이터베이스 | PostgreSQL (멀티테넌트 RLS, students 테이블) |
| 외부 노출 internal-api | StudentService |
주요 책임
- 학생 계정(User) 생성 및 프로필 저장
- 재원/휴원 상태 전환 (
isActive플래그) - 전화번호·이름·생년 등 개인 정보 관리
- 대량 등록(Excel/CSV 업로드) — 동기 처리,
Idempotency-Key지원 - CSV 스트리밍 내보내기 (OWNER 전용)
- 등록 추이(월별) 및 퇴원 요약 통계 제공
도메인 모델
Student 엔티티
@Entity
@Table(name = "students")
public class Student extends TenantScopedEntity {
private Long id;
@Version Long version; // 낙관적 잠금
Long userId; // auth.users FK
String userLoginId; // 로그인 ID (이메일)
String name;
String phone;
String studentHighschool;
Integer studentBirthYear;
String parentPhone;
String studentMemo;
Boolean isActive; // 재원 여부
}
TenantScopedEntity 가 tenant_id 컬럼을 제공하며, RLS 정책이 런타임에 테넌트별 행 접근을 제한합니다.