GachonOJ는 가천대학교 학생들을 위해 개발되어진 온라인 저지 플랫폼입니다.
웹IDE & 채점 서비스 및 AI 피드백 구현 | 관리자/교수 시험 등록 |
---|---|
![]() |
![]() |
⚡️ 웹 IDE
⚡️ 코드 실행 및 채점하기
⚡️ AI 피드백을 통한 코드 개선
⚡️ 손코딩을 대체할 시험 제출
⚡️ 사용자 프로필 관리
⚡️ 사용자 관리
⚡️ 문제/시험/대회 관리
⚡️ 공지사항/문의사항 관리




- Spring Boot: 3.2.4
- Spring Dependency Management Plugin: 1.1.4
- spring-boot-starter-web
- spring-boot-starter-data-jpa
- spring-boot-starter-security
- spring-boot-starter-validation
- spring-boot-starter-mail
- spring-boot-starter-data-redis
- spring-boot-starter-actuator
- spring-cloud-starter-aws: 2.2.6.RELEASE
- spring-cloud-starter-netflix-eureka-client
- spring-cloud-starter-netflix-eureka-server
- spring-cloud-starter-openfeign
- jjwt-api: 0.12.3 by io.jsonwebtoken
- jjwt-impl: 0.12.3 by io.jsonwebtoken
- jjwt-jackson: 0.12.3 by io.jsonwebtoken
- spring-boot-starter-test
- spring-security-test
- springdoc-openapi-starter-webmvc-ui: 2.2.0
- org.projectlombok:lombok (compileOnly)
- org.mariadb.jdbc:mariadb-java-client (runtimeOnly)
- org.springframework.boot:spring-boot-devtools (developmentOnly)
- io.micrometer:micrometer-registry-prometheus (runtimeOnly)
├── AI-Service
│ ├── Dockerfile
│ ├── HELP.md
│ ├── build
│ ├── build.gradle
│ ├── gradle
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── gachonoj
│ │ │ └── aiservice
│ │ │ ├── AiServiceApplication.java
│ │ │ ├── common
│ │ │ │ ├── codes
│ │ │ │ │ ├── ErrorCode.java
│ │ │ │ │ ├── ResponseCode.java
│ │ │ │ │ └── SuccessCode.java
│ │ │ │ └── response
│ │ │ │ └── CommonResponseDto.java
│ │ │ ├── config
│ │ │ │ ├── OpenAiConfig.java
│ │ │ │ └── exception
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── controller
│ │ │ │ └── AiController.java
│ │ │ ├── domain
│ │ │ │ ├── dto
│ │ │ │ │ ├── request
│ │ │ │ │ │ ├── ChatGPTRequest.java
│ │ │ │ │ │ └── FeedbackRequestDto.java
│ │ │ │ │ └── response
│ │ │ │ │ ├── AiFeedbackResponseDto.java
│ │ │ │ │ ├── ChatGPTResponse.java
│ │ │ │ │ ├── Message.java
│ │ │ │ │ └── TokenUsageResponseDto.java
│ │ │ │ └── entity
│ │ │ │ └── Feedback.java
│ │ │ ├── feign
│ │ │ │ ├── client
│ │ │ │ │ ├── MemberServiceFeignClient.java
│ │ │ │ │ ├── ProblemServiceFeignClient.java
│ │ │ │ │ └── SubmissionServiceFeignClient.java
│ │ │ │ ├── controller
│ │ │ │ │ └── AiFeignController.java
│ │ │ │ ├── dto
│ │ │ │ │ └── response
│ │ │ │ │ └── SubmissionCodeInfoResponseDto.java
│ │ │ │ └── service
│ │ │ │ └── AiFeignService.java
│ │ │ ├── repository
│ │ │ │ └── FeedbackRepository.java
│ │ │ └── service
│ │ │ └── AiService.java
│ │ └── resources
│ │ ├── application-dev.properties
│ │ ├── application.properties
│ │ ├── static
│ │ └── templates
│ └── test
├── APIGateway
│ ├── Dockerfile
│ ├── HELP.md
│ ├── build
│ ├── build.gradle
│ ├── gradle
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── gachonoj
│ │ │ └── apigateway
│ │ │ ├── ApiGatewayApplication.java
│ │ │ ├── auth
│ │ │ │ ├── AuthController.java
│ │ │ │ ├── AuthService.java
│ │ │ │ ├── AuthorizationHeaderFilter.java
│ │ │ │ ├── JwtUtil.java
│ │ │ │ ├── LoggingGlobalFilter.java
│ │ │ │ ├── RedisService.java
│ │ │ │ └── RefreshRequestDto.java
│ │ │ └── config
│ │ │ ├── RedisConfig.java
│ │ │ └── SecurityConfig.java
│ │ └── resources
│ │ ├── application-dev.properties
│ │ └── application.properties
│ └── test
├── Board-Service
│ ├── Dockerfile
│ ├── HELP.md
│ ├── build
│ ├── build.gradle
│ ├── gradle
│ │ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── gachonoj
│ │ │ └── boardservice
│ │ │ ├── BoardServiceApplication.java
│ │ │ ├── common
│ │ │ │ ├── codes
│ │ │ │ │ ├── ErrorCode.java
│ │ │ │ │ ├── ResponseCode.java
│ │ │ │ │ └── SuccessCode.java
│ │ │ │ └── response
│ │ │ │ └── CommonResponseDto.java
│ │ │ ├── config
│ │ │ │ └── exception
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── controller
│ │ │ │ └── BoardController.java
│ │ │ ├── domain
│ │ │ │ ├── constant
│ │ │ │ │ └── InquiryStatus.java
│ │ │ │ ├── dto
│ │ │ │ │ ├── request
│ │ │ │ │ │ ├── InquiryRequestDto.java
│ │ │ │ │ │ ├── NoticeRequestDto.java
│ │ │ │ │ │ └── ReplyRequestDto.java
│ │ │ │ │ └── response
│ │ │ │ │ ├── InquiryAdminListResponseDto.java
│ │ │ │ │ ├── InquiryDetailAdminResponseDto.java
│ │ │ │ │ ├── InquiryDetailResponseDto.java
│ │ │ │ │ ├── InquiryListResponseDto.java
│ │ │ │ │ ├── NoticeDetailResponseDto.java
│ │ │ │ │ ├── NoticeListResponseDto.java
│ │ │ │ │ ├── NoticeMainResponseDto.java
│ │ │ │ │ └── ReplyResponseDto.java
│ │ │ │ └── entity
│ │ │ │ ├── Inquiry.java
│ │ │ │ ├── Notice.java
│ │ │ │ └── Reply.java
│ │ │ ├── feign
│ │ │ │ └── client
│ │ │ │ └── MemberServiceFeignClient.java
│ │ │ ├── repository
│ │ │ │ ├── InquiryRepository.java
│ │ │ │ ├── NoticeRepository.java
│ │ │ │ └── ReplyRepository.java
│ │ │ └── service
│ │ │ └── BoardService.java
│ │ └── resources
│ │ ├── application-dev.properties
│ │ └── application.properties
│ └── test
├── EurekaServer
│ ├── Dockerfile
│ ├── HELP.md
│ ├── build
│ ├── build.gradle
│ ├── gradle
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── gachonoj
│ │ │ └── eurekaserver
│ │ │ └── EurekaServerApplication.java
│ │ └── resources
│ │ ├── application-dev.properties
│ │ └── application.properties
│ └── test
│ └── java
│ └── com
│ └── gachonoj
│ └── eurekaserver
│ └── EurekaServerApplicationTests.java
├── GachonOJ-Backend.iml
├── Member-Service
│ ├── Dockerfile
│ ├── HELP.md
│ ├── build
│ ├── build.gradle
│ ├── gradle
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── gachonoj
│ │ │ └── memberservice
│ │ │ ├── MemberServiceApplication.java
│ │ │ ├── common
│ │ │ │ ├── codes
│ │ │ │ │ ├── ErrorCode.java
│ │ │ │ │ ├── ResponseCode.java
│ │ │ │ │ └── SuccessCode.java
│ │ │ │ └── response
│ │ │ │ └── CommonResponseDto.java
│ │ │ ├── config
│ │ │ │ ├── EmailConfig.java
│ │ │ │ ├── RedisConfig.java
│ │ │ │ ├── S3Config.java
│ │ │ │ ├── SecurityConfig.java
│ │ │ │ └── exception
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── controller
│ │ │ │ └── MemberController.java
│ │ │ ├── domain
│ │ │ │ ├── constant
│ │ │ │ │ ├── MemberLang.java
│ │ │ │ │ └── Role.java
│ │ │ │ ├── dto
│ │ │ │ │ ├── request
│ │ │ │ │ │ ├── CreateMemberRequestDto.java
│ │ │ │ │ │ ├── EmailRequestDto.java
│ │ │ │ │ │ ├── EmailVerificationRequestDto.java
│ │ │ │ │ │ ├── LoginRequestDto.java
│ │ │ │ │ │ ├── MemberInfoRequestDto.java
│ │ │ │ │ │ ├── MemberLangRequestDto.java
│ │ │ │ │ │ ├── MemberNicknameRequestDto.java
│ │ │ │ │ │ ├── SignUpRequestDto.java
│ │ │ │ │ │ ├── UpdateMemberRequestDto.java
│ │ │ │ │ │ └── UpdatePasswordRequestDto.java
│ │ │ │ │ └── response
│ │ │ │ │ ├── HoverResponseDto.java
│ │ │ │ │ ├── LoginResponseDto.java
│ │ │ │ │ ├── MemberInfoByAdminResponseDto.java
│ │ │ │ │ ├── MemberInfoExamResponseDto.java
│ │ │ │ │ ├── MemberInfoProblemResponseDto.java
│ │ │ │ │ ├── MemberInfoRankingResponseDto.java
│ │ │ │ │ ├── MemberInfoResponseDto.java
│ │ │ │ │ ├── MemberInfoTestResponseDto.java
│ │ │ │ │ ├── MemberLangCountResponseDto.java
│ │ │ │ │ ├── MemberLangResponseDto.java
│ │ │ │ │ ├── MemberListResponseDto.java
│ │ │ │ │ ├── MemberRankingResponseDto.java
│ │ │ │ │ └── NicknameVerificationResponseDto.java
│ │ │ │ └── entity
│ │ │ │ └── Member.java
│ │ │ ├── feign
│ │ │ │ ├── client
│ │ │ │ │ ├── ProblemServiceFeignClient.java
│ │ │ │ │ └── SubmissionServiceFeignClient.java
│ │ │ │ ├── controller
│ │ │ │ │ └── MemberFeignController.java
│ │ │ │ ├── dto
│ │ │ │ │ └── response
│ │ │ │ │ ├── ProblemMemberInfoResponseDto.java
│ │ │ │ │ ├── SubmissionMemberInfoResponseDto.java
│ │ │ │ │ └── SubmissionMemberRankInfoResponseDto.java
│ │ │ │ └── service
│ │ │ │ └── MemberFeignService.java
│ │ │ ├── jwt
│ │ │ │ ├── CustomUserDetails.java
│ │ │ │ ├── CustomUserDetailsService.java
│ │ │ │ ├── JwtUtil.java
│ │ │ │ └── LoginFilter.java
│ │ │ ├── repository
│ │ │ │ └── MemberRepository.java
│ │ │ └── service
│ │ │ ├── MemberService.java
│ │ │ ├── RedisService.java
│ │ │ └── S3UploadService.java
│ │ └── resources
│ │ ├── application-dev.properties
│ │ ├── application.properties
│ │ ├── static
│ │ └── templates
│ └── test
├── Problem-Service
│ ├── Dockerfile
│ ├── HELP.md
│ ├── build
│ ├── build.gradle
│ ├── gradle
│ │ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── gachonoj
│ │ │ └── problemservice
│ │ │ ├── ProblemServiceApplication.java
│ │ │ ├── common
│ │ │ │ ├── codes
│ │ │ │ │ ├── ErrorCode.java
│ │ │ │ │ ├── ResponseCode.java
│ │ │ │ │ └── SuccessCode.java
│ │ │ │ └── response
│ │ │ │ └── CommonResponseDto.java
│ │ │ ├── config
│ │ │ │ └── exception
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── controller
│ │ │ │ └── ProblemController.java
│ │ │ ├── domain
│ │ │ │ ├── constant
│ │ │ │ │ ├── ExamStatus.java
│ │ │ │ │ ├── ExamType.java
│ │ │ │ │ ├── ProblemClass.java
│ │ │ │ │ ├── ProblemStatus.java
│ │ │ │ │ └── TestcaseStatus.java
│ │ │ │ ├── dto
│ │ │ │ │ ├── request
│ │ │ │ │ │ ├── CandidateListRequestDto.java
│ │ │ │ │ │ ├── ExamRequestDto.java
│ │ │ │ │ │ ├── ProblemRequestDto.java
│ │ │ │ │ │ ├── QuestionRequestDto.java
│ │ │ │ │ │ └── TestcaseRequestDto.java
│ │ │ │ │ └── response
│ │ │ │ │ ├── BookmarkProblemResponseDto.java
│ │ │ │ │ ├── ExamCardInfoResponseDto.java
│ │ │ │ │ ├── ExamDetailResponseDto.java
│ │ │ │ │ ├── ExamEnterResponseDto.java
│ │ │ │ │ ├── ExamOrContestInfoResponseDto.java
│ │ │ │ │ ├── ExamOrContestListResponseDto.java
│ │ │ │ │ ├── ExamResultDetailsResponseDto.java
│ │ │ │ │ ├── ExamResultListDto.java
│ │ │ │ │ ├── ExamResultPageDto.java
│ │ │ │ │ ├── PastContestResponseDto.java
│ │ │ │ │ ├── ProblemCardResponseDto.java
│ │ │ │ │ ├── ProblemDetailAdminResponseDto.java
│ │ │ │ │ ├── ProblemDetailResponseDto.java
│ │ │ │ │ ├── ProblemListByAdminResponseDto.java
│ │ │ │ │ ├── ProblemListResponseDto.java
│ │ │ │ │ ├── ProfessorExamListResponseDto.java
│ │ │ │ │ ├── QuestionResultDetailsResponseDto.java
│ │ │ │ │ ├── QuestionResultDto.java
│ │ │ │ │ ├── RecommendProblemResponseDto.java
│ │ │ │ │ ├── ScheduledContestResponseDto.java
│ │ │ │ │ ├── SolvedProblemResponseDto.java
│ │ │ │ │ ├── TestcaseResponseDto.java
│ │ │ │ │ └── WrongProblemResponseDto.java
│ │ │ │ └── entity
│ │ │ │ ├── Bookmark.java
│ │ │ │ ├── Exam.java
│ │ │ │ ├── Problem.java
│ │ │ │ ├── Question.java
│ │ │ │ ├── Test.java
│ │ │ │ └── Testcase.java
│ │ │ ├── feign
│ │ │ │ ├── client
│ │ │ │ │ ├── MemberServiceFeignClient.java
│ │ │ │ │ └── SubmissionServiceFeignClient.java
│ │ │ │ ├── controller
│ │ │ │ │ └── ProblemFeignController.java
│ │ │ │ ├── dto
│ │ │ │ │ └── response
│ │ │ │ │ ├── CorrectRateResponseDto.java
│ │ │ │ │ ├── ProblemMemberInfoResponseDto.java
│ │ │ │ │ ├── SubmissionDetailDto.java
│ │ │ │ │ ├── SubmissionExamResultInfoResponseDto.java
│ │ │ │ │ ├── SubmissionProblemTestCaseResponseDto.java
│ │ │ │ │ └── SubmissionResultCountResponseDto.java
│ │ │ │ └── service
│ │ │ │ └── ProblemFeignService.java
│ │ │ ├── repository
│ │ │ │ ├── BookmarkRepository.java
│ │ │ │ ├── ExamRepository.java
│ │ │ │ ├── ProblemRepository.java
│ │ │ │ ├── QuestionRepository.java
│ │ │ │ ├── TestRepository.java
│ │ │ │ └── TestcaseRepository.java
│ │ │ └── service
│ │ │ ├── ExamService.java
│ │ │ └── ProblemService.java
│ │ └── resources
│ │ ├── application-dev.properties
│ │ ├── application.properties
│ │ ├── static
│ │ └── templates
│ └── test
├── README.md
├── Submission-Service
│ ├── Dockerfile
│ ├── HELP.md
│ ├── build
│ ├── build.gradle
│ ├── gradle
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── gachonoj
│ │ │ └── submissionservice
│ │ │ ├── SubmissionServiceApplication.java
│ │ │ ├── common
│ │ │ │ ├── codes
│ │ │ │ │ ├── ErrorCode.java
│ │ │ │ │ ├── ResponseCode.java
│ │ │ │ │ └── SuccessCode.java
│ │ │ │ └── response
│ │ │ │ └── CommonResponseDto.java
│ │ │ ├── config
│ │ │ │ └── exception
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── controller
│ │ │ │ └── SubmissionController.java
│ │ │ ├── domain
│ │ │ │ ├── constant
│ │ │ │ │ ├── Language.java
│ │ │ │ │ └── Status.java
│ │ │ │ ├── dto
│ │ │ │ │ ├── request
│ │ │ │ │ │ ├── ExamSubmitRequestDto.java
│ │ │ │ │ │ └── ExecuteRequestDto.java
│ │ │ │ │ └── response
│ │ │ │ │ ├── ExecuteResultResponseDto.java
│ │ │ │ │ ├── MySubmissionResultResponseDto.java
│ │ │ │ │ ├── SubmissionRecordResponseDto.java
│ │ │ │ │ ├── SubmissionResultResponseDto.java
│ │ │ │ │ └── TodaySubmissionCountResponseDto.java
│ │ │ │ └── entity
│ │ │ │ ├── Love.java
│ │ │ │ └── Submission.java
│ │ │ ├── feign
│ │ │ │ ├── client
│ │ │ │ │ ├── MemberServiceFeignClient.java
│ │ │ │ │ └── ProblemServiceFeignClient.java
│ │ │ │ ├── controller
│ │ │ │ │ └── SubmissionFeignController.java
│ │ │ │ ├── dto
│ │ │ │ │ └── response
│ │ │ │ │ ├── CorrectRateResponseDto.java
│ │ │ │ │ ├── SubmissionCodeInfoResponseDto.java
│ │ │ │ │ ├── SubmissionDetailDto.java
│ │ │ │ │ ├── SubmissionExamResultInfoResponseDto.java
│ │ │ │ │ ├── SubmissionExamResultResponseDto.java
│ │ │ │ │ ├── SubmissionMemberInfoResponseDto.java
│ │ │ │ │ ├── SubmissionMemberRankInfoResponseDto.java
│ │ │ │ │ ├── SubmissionProblemTestCaseResponseDto.java
│ │ │ │ │ └── SubmissionResultCountResponseDto.java
│ │ │ │ └── service
│ │ │ │ └── SubmissionFeignService.java
│ │ │ ├── repository
│ │ │ │ ├── LoveRepository.java
│ │ │ │ └── SubmissionRepository.java
│ │ │ └── service
│ │ │ ├── ExecuteService.java
│ │ │ ├── LoveService.java
│ │ │ └── SubmissionService.java
│ │ └── resources
│ │ ├── application-dev.properties
│ │ ├── application.properties
│ │ ├── static
│ │ └── templates
│ └── test
└── src
© 2024 Gachon Univ. Online Judge. All Rights Reserved.