본문으로 건너뛰기

모듈

이 페이지는 현재 lumie-backend/settings.gradle.kts에 포함된 Gradle 서브프로젝트의 overview 맵입니다. 이 문서를 통해 모듈 계열과 공유 라이브러리를 파악하고, 레퍼런스 수준의 세부 내용을 보려면 어디로 이동해야 하는지 이해할 수 있습니다. 라우트, DTO, 실패 계약의 구체적인 사항은 아래에 링크된 개별 모듈 페이지를 참고하세요.

여기에 있는 모든 모듈은 동일한 Spring Boot 애플리케이션 안에서 배포되며, 같은 JVM, transaction manager, PostgreSQL 테넌트 모델을 공유합니다.

공통 라이브러리

경로소유 범위
libs/common테넌트, auth, exception, idempotency, logging, base-entity를 가로지르는 공통 지원
libs/internal-api공개된 프로세스 내부 service interface와 모듈 간 event
libs/messagingqueue 기반 exam 흐름에서 사용하는 공통 AMQP 상수

이 맵 읽는 방법

  • app, libs/*, 그리고 포함된 모든 modules/* 서브프로젝트는 하나의 배포 가능한 백엔드 jar로 조립됩니다.
  • 모듈 이름은 모놀리스 내부의 소유 경계를 설명할 뿐, 따로 배포되는 Java 서비스가 아닙니다.
  • 링크된 각 모듈 페이지는 해당 모듈의 공개 인터페이스, 내부 API, data contract, failure behavior에 대한 기준입니다.

플랫폼 모듈

문서 페이지Gradle 모듈기본 소스 루트주요 소유 범위주요 경계
테넌트 서비스modules:tenantmodules/tenant/src/main/java/com/lumie/tenant테넌트 레지스트리, 수명주기 상태, custom ID/domain, onboarding, logoTenantServiceTenantCreatedEvent를 발행하며 auth, homepage, billing이 사용
인증 서비스modules:authmodules/auth/src/main/java/com/lumie/auth등록, login, JWT, 갱신, 세션, 프로필, avatarAuthService, OwnerRegisteredEvent, StudentSelfRegisteredEvent를 발행하고 Redis 및 테넌트 lookup에 의존
빌링 서비스modules:billingmodules/billing/src/main/java/com/lumie/billingplan, subscription, billing key, invoice, Alimtalk credit, tax invoiceTenantCreatedEvent를 소비하고 BillingService를 발행하며 Toss와 stubbed Popbill adapter를 통합
홈페이지 서비스modules:homepagemodules/homepage/src/main/java/com/lumie/homepage테넌트 홈페이지 설정과 anonymous public homepage 조회TenantLookupPort를 통해 TenantService를 소비하며 write는 OWNER 전용
AI 서비스modules:aimodules/ai/src/main/java/com/lumie/aiconversation, chat proxying, tool execution, scheduled AI taskchatbot-svc와 통합되며 /internal/chatbot/**로 백엔드에 재진입하고 전용 읽기 전용 JDBC 경로를 사용
알림 서비스modules:notificationmodules/notification/src/main/java/com/lumie/notificationSMS 발송, 메시지 이력, 템플릿테넌트 범위 메시지 기록과 billing quota check를 사용
파일 서비스modules:filemodules/file/src/main/java/com/lumie/file파일 메타데이터, 업로드/다운로드, 교재 폴더, 파일 링크MinIO와 통합되며 DB 커밋 후 object deletion을 예약

교육 및 운영 모듈

문서 페이지Gradle 모듈기본 소스 루트주요 소유 범위주요 경계
학생 서비스modules:studentmodules/student/src/main/java/com/lumie/student학생 기록, 가져오기, 내보내기, 수명주기, credential linkageStudentServiceStudentRegisteredEvent를 발행하고 auth 및 수업 규칙에 의존
스태프 서비스modules:staffmodules/staff/src/main/java/com/lumie/staffstaff 수명주기, 권한 카탈로그, staff permission assignmentStaffService를 발행하고 OwnerRegisteredEvent를 소비하며 auth, billing, class에 의존
반 서비스modules:classmodules/class/src/main/java/com/lumie/classroom수업, schedule, enrollment, dashboardClassService를 발행하며 staff, attendance, lecture, assignment가 사용
출석 서비스modules:attendancemodules/attendance/src/main/java/com/lumie/attendanceattendance 세션, record, 내보내기, statisticsclass와 student reference에 의존
과제 서비스modules:assignmentmodules/assignment/src/main/java/com/lumie/assignment과제, 대상 타기팅, 제출물, 대시보드, 시험 연계 수동 과제 채점 오케스트레이션AssignmentService를 발행하며 수업, student, exam 내부 API에 의존
강의 서비스modules:lecturemodules/lecture/src/main/java/com/lumie/lecturelecture와 수업 대상 lecture visibility수업 reference와 테넌트-safe 수업-target table에 의존
콘텐츠 서비스modules:contentmodules/content/src/main/java/com/lumie/contentannouncement, Q&A, reviewfile link와 수업-aware visibility rule에 의존
시험 서비스modules:exammodules/exam/src/main/java/com/lumie/examexam, template, OMR job, report, analyticsRabbitMQ, MinIO, 직접 워커 HTTP, 내부 report/OMR 인터페이스, student backfill event
수강료 서비스modules:tuitionmodules/tuition/src/main/java/com/lumie/tuition보호자, tuition invoice, tuition payment, cash receipt외부 cash receipt 및 billing adapter와 통합되며, 현재는 공개된 내부 API 인터페이스가 거의 없음

서브시스템 구조

포함된 모듈은 몇 가지 안정적인 백엔드 서브시스템으로 묶입니다.

서브시스템모듈함께 묶이는 이유
테넌트와 신원tenant, auth, billing, homepage테넌트 부트스트랩, authentication, quota, 테넌트-facing config
핵심 학원 운영student, staff, class, attendance, assignment, lecture, content일상적인 학원 데이터, scheduling, visibility, 수명주기 흐름
무거운 비동기 또는 외부 통합exam, ai, notification, file, tuition워커 호출, messaging, storage, payment, 문서 지향 integration

현재 사용 중인 모듈 간 패턴

  • adapter/in/internal/*Adapterlibs/internal-api 구현을 위한 일반적인 동기 경계 형태입니다.
  • @ApplicationModuleListener는 커밋 후 모듈 간 후속 처리를 위한 일반적인 비동기 경계 형태입니다.
  • 현재 libs/messaging을 직접 사용하는 모듈은 exam 하나뿐이며, 이는 RabbitMQ 기반 grading 및 report pipeline을 소유하기 때문입니다.
  • homepagestaff는 다른 모듈의 repository에 직접 접근하지 않고 공개된 계약을 소비하는 선호 패턴을 보여줍니다.

현재 빌드 참고 사항

  • app/build.gradle.kts는 위에 나열된 모든 모듈을 백엔드 jar에 포함합니다.
  • modules/activity-log는 리포지토리에는 존재하지만 settings.gradle.kts에는 없으므로 배포되지 않습니다.
  • admin-svc.md는 기존 백엔드 naming을 유지하기 때문에 staff 모듈을 문서화합니다.
  • modules:class는 Gradle 수준 이름은 class이지만 Java 패키지 root는 com.lumie.classroom을 사용합니다.

검증

cd /Users/bluemayne/Projects/Lumie/lumie-backend
./gradlew projects
cd /Users/bluemayne/Projects/Lumie/lumie-document/docusaurus
npm run build

예상 성공 신호:

  • ./gradlew projectssettings.gradle.kts에 포함된 모듈 경로를 나열하며, 여기에는 modules:student, modules:staff, modules:class, modules:attendance, modules:assignment, modules:lecture, modules:content가 포함됩니다.
  • Docusaurus가 backend/modules에 대해 MDX 또는 broken-link 오류 없이 완료됩니다.

관련 페이지