Rels는 광주소프트웨어마이스터고등학교 릴레이 스터디의 전체 운영 과정을 하나의 플랫폼에서 효율적으로 관리하기 위한 서비스입니다.
이 저장소는 백엔드입니다. 프론트엔드는 Rels-front에서 관리합니다.
이 저장소는 Spring Boot 기반의 백엔드 애플리케이션입니다.
| 패키지/디렉터리 | 설명 |
|---|---|
domain/auth |
DataGSM OAuth2 인증, 로그인 처리 및 토큰/세션 검증 |
domain/lecture |
강연 CRUD, 수강 신청/대기, 출석 관리 및 학생회 승인 Workflow |
domain/notice |
전교생 대상 공지사항 관리 (학생회 전용) |
domain/user |
사용자 엔티티 및 권한(USER / ADMIN) 관리 |
global/aop |
AOP 기반 공통 로깅 |
global/config |
Web, JPA, Async, Scheduler 등 앱 전역 Configuration |
global/controller |
공통 헬스체크 및 글로벌 컨트롤러 |
global/security |
Spring Security 설정, OAuth2 핸들러 및 인증 가드/필터 |
- Framework & Core: Java 21, Spring Boot 3.x
- Database & ORM: MariaDB, Spring Data JPA
- Security & Auth: Spring Security, OAuth2 (DataGSM 연동)
- Concurrency Control: Pessimistic Lock (수강 신청 동시성 제어)
- Automation & Integration: Spring Scheduler, Discord Bot (JDA)
- Build Tool: Gradle
- DataGSM OAuth2 인증: 미인증 사용자 접근 제어 및 사용자 역할(USER / ADMIN) 세분화
- 강연 관리: 등록, 수정, 삭제 (작성자 본인 권한 분기) 및 학년별/전체 정원(10~30명) 설정
- 강연 신청·취소 & 대기열:
- 게시 당일 16:20 수강 신청 오픈 제어 (
403 FORBIDDEN반환) - 정원 초과 시 대기 상태(
WAITING) 자동 등록 및 취소 시 대기 1순위 자동 승격 - 비관적 락(Pessimistic Lock) 기반 동시 신청 데이터 일관성 보장
- 게시 당일 16:20 수강 신청 오픈 제어 (
- 강연 정보 관리: 학생회 권한으로 개설된 강연 전체 정보 수동 수정
- 강연 승인 Workflow: 강연 승인/거절 처리 및 거절 사유 전달 (미승인 강연 노출 차단)
- 출석 관리: 수강생 대상 출석·결석·지각·미확인 상태 일괄 배치 업데이트
- 공지사항 관리: ADMIN 전용 공지사항 등록·수정·삭제 API
개설 미정(OPEN)➔개설 확정(CONFIRMED)/개설 불확정(UNCONFIRMED)➔강연 종료(CLOSE)4단계 자동 상태 동기화
버그를 발견하거나 기능 제안이 있다면 GitHub 이슈 트래커를 이용해 주세요.