수강료 서비스
이 페이지는 보호자, invoice, 수납, 환불, 현금영수증 기록을 담당하는
tenant 범위 billing 모듈 lumie-backend/modules/tuition의 레퍼런스입니다.
소스 경로
| Path | 역할 |
|---|---|
lumie-backend/modules/tuition/src/main/java/com/lumie/tuition/adapter/in/web/{GuardianController,TuitionInvoiceController,TuitionPaymentController}.java | 공개 HTTP surface |
lumie-backend/modules/tuition/src/main/java/com/lumie/tuition/application/service/{GuardianCommandService,TuitionInvoiceCommandService,TuitionPaymentCommandService}.java | 주요 write-side application service |
lumie-backend/modules/tuition/src/main/java/com/lumie/tuition/adapter/out/external/{NotConfiguredTuitionBillingGateway,PopbillCashReceiptClient}.java | 외부 payment gateway 및 cash receipt adapter |
lumie-backend/modules/tuition/src/main/java/com/lumie/tuition/adapter/in/internal/TuitionServiceAdapter.java | 공개 계약 구현이 아니라 아직 placeholder인 현재 internal adapter |
lumie-backend/modules/tuition/src/main/java/com/lumie/tuition/domain/entity/{Guardian,StudentGuardian,TuitionInvoice,TuitionPayment,CashReceipt}.java | tuition aggregate와 persistence-backed entity |
lumie-backend/app/src/main/resources/db/migration/public/V29__tuition_tenant_tables.sql | guardian, link, invoice, payment, cash receipt에 대한 source-of-truth schema |
lumie-backend/app/src/main/resources/db/migration/public/V30__student_guardians_add_version.sql | guardian link table의 optimistic-lock 후속 변경 |
공개 인터페이스
| Endpoint | 목적 |
|---|---|
POST /v1/guardians, GET /v1/guardians, GET /v1/guardians/{id}, PATCH /v1/guardians/{id}, DELETE /v1/guardians/{id} | Guardian CRUD |
POST /v1/guardians/{guardianId}/link, DELETE /v1/guardians/{guardianId}/link | guardian을 student에 연결하거나 해제 |
POST /v1/tuition-invoices, GET /v1/tuition-invoices, GET /v1/tuition-invoices/{id}, POST /v1/tuition-invoices/{id}/cancel | invoice 발행, 목록, 조회, 취소 |
POST /v1/tuition-payments, GET /v1/tuition-payments, GET /v1/tuition-payments/{id}, POST /v1/tuition-payments/{id}/refund | 결제 요청, 목록, 조회, 환불 기록 |
invoice 및 payment 생성 endpoint에서 Idempotency-Key는 선택 사항입니다.
값이 있으면 반복 제출을 결정적으로 만들지만, billing 모듈이 쓰는 공용
IdempotencyService interceptor 패턴은 사용하지 않습니다.
내부 인터페이스와 경계
| Surface | 코드 기준 실제 상태 |
|---|---|
TuitionServiceAdapter | placeholder component일 뿐이며, 아직 공개된 libs/internal-api interface를 구현하지 않음 |
TuitionBillingGatewayPort | 외부 invoice 수납과 수납 상태 조회를 위한 추상화 |
CashReceiptPort | 현금영수증 발행을 위한 추상화 |
| Cross-module references | guardian_id, student_id, class_enrollment_id, refunded_by_staff_id는 관례상 soft reference이며, migration comment는 모듈 경계를 가로지르는 DB foreign key를 명시적으로 피함 |