Skip to content

Feature/#47 대회 팀 상세보기 템플릿 기능 개발#77

Open
myeowon wants to merge 27 commits intodevelopfrom
Feature/#47_대회-팀-상세보기-템플릿-기능-개발

Hidden character warning

The head ref may contain hidden characters: "Feature/#47_\ub300\ud68c-\ud300-\uc0c1\uc138\ubcf4\uae30-\ud15c\ud50c\ub9bf-\uae30\ub2a5-\uac1c\ubc1c"
Open

Feature/#47 대회 팀 상세보기 템플릿 기능 개발#77
myeowon wants to merge 27 commits intodevelopfrom
Feature/#47_대회-팀-상세보기-템플릿-기능-개발

Conversation

@myeowon
Copy link
Member

@myeowon myeowon commented Feb 22, 2026

🔥 연관된 이슈

close: #47

📜 작업 내용

  • 대회 팀 상세보기 템플릿 조회 및 수정 기능을 개발 및 테스트 코드를 작성하였습니다.
    • 수정 기능은 관리자 권한이 필요합니다.
  • 템플릿의 각 필드는 필수 여부만 설정할 수 있습니다
    • true : 해당 항목은 필수 입력
    • false : 해당 함목은 선택 입력
    • (기존 HIDDEN 상태는 삭제되었습니다.)
  • 템플릿은 대회 생성 시 기본값으로 자동 생성됩니다.
  • 대회가 속한 카테고리 이름 기주능로 기본값이 정해집니다.
    1. 카테고리 이름에 “창의융합 포함 시
      • 지도교수: false
      • youtubePath, productionPath → false
      • GitHub 링크: true
      • 나머지: true
    2. 카테고리 이름에 “캡스톤” 포함 시
      • poster, productionPath → false
      • 나머지: true
    3. 그 외 (둘 다 미포함)
      • 전부 false (모두 선택 입력)
  • controller와 service 둘 다 Contest에 종속되도록 개발하였습니다.
  • 이 후 팀 삭제 기능 개발 시 템플릿 삭제 로직이 필요합니다.

💬 리뷰 요구사항

  • ContestTemplateConvenience는 ContestConvenience와 분리하였는데 괜찮을까요?

✨ 기타

  • 😁

myeowon and others added 19 commits January 1, 2026 03:49
… Feature/#47_대회-팀-상세보기-템플릿-기능-개발

# Conflicts:
#	src/main/java/com/opus/opus/docs/asciidoc/contest.adoc
#	src/main/java/com/opus/opus/docs/asciidoc/opus.adoc
#	src/main/java/com/opus/opus/docs/asciidoc/team.adoc
#	src/main/java/com/opus/opus/modules/contest/api/ContestCategoryController.java
#	src/main/java/com/opus/opus/modules/contest/api/ContestController.java
#	src/main/java/com/opus/opus/modules/contest/application/ContestCommandService.java
#	src/main/java/com/opus/opus/modules/contest/application/ContestQueryService.java
#	src/main/java/com/opus/opus/modules/contest/application/convenience/ContestConvenience.java
#	src/main/java/com/opus/opus/modules/contest/exception/ContestExceptionType.java
#	src/main/java/com/opus/opus/modules/team/api/TeamController.java
#	src/main/java/com/opus/opus/modules/team/application/TeamCommandService.java
#	src/main/java/com/opus/opus/modules/team/application/TeamQueryService.java
#	src/main/java/com/opus/opus/modules/team/domain/dao/TeamCommentRepository.java
#	src/test/java/com/opus/opus/contest/ContestFixture.java
#	src/test/java/com/opus/opus/contest/application/ContestCommandServiceTest.java
#	src/test/java/com/opus/opus/restdocs/RestDocsTest.java
#	src/test/java/com/opus/opus/restdocs/docs/ContestApiDocsTest.java
#	src/test/java/com/opus/opus/restdocs/docs/TeamApiDocsTest.java
#	src/test/java/com/opus/opus/team/FileFixture.java
#	src/test/java/com/opus/opus/team/TeamFixture.java
#	src/test/java/com/opus/opus/team/application/TeamCommandServiceTest.java
#	src/test/java/com/opus/opus/team/application/TeamQueryServiceTest.java
@myeowon myeowon self-assigned this Feb 22, 2026
@myeowon myeowon added the ⭐️ 기능 구현 새로운 기능을 구현 label Feb 22, 2026
Copy link
Contributor

@sjmoon00 sjmoon00 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다~
리뷰 확인 부탁드려요!

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements contest team template functionality that allows administrators to configure which fields are required when teams register for contests. The template is automatically created when a contest is created, with default values based on the contest category name ("창의융합", "캡스톤", or other). Templates can be queried by anyone and updated by administrators.

Changes:

  • Added ContestTemplate domain entity with soft delete support and template field configuration
  • Implemented template creation logic triggered during contest creation with category-based defaults
  • Added GET and PUT endpoints for template retrieval and admin-only updates with comprehensive test coverage

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
schema.sql Added contest_template table with unique constraint on contest_id and boolean fields for required status
ContestTemplate.java New entity with OneToOne relationship to Contest and 12 boolean fields for template configuration
ContestTemplateRepository.java Repository with findByContestId method for template lookup
ContestTemplateRequest.java Request DTO with NotNull validation for all 12 template fields
ContestTemplateResponse.java Response DTO with static factory method from entity
ContestTemplateConvenience.java Convenience service for template validation and retrieval
ContestTemplateException.java Exception class for template-related errors
ContestTemplateExceptionType.java Exception type enum with NOT_FOUND_TEMPLATE error
ContestCommandService.java Added template creation and update methods with category-based default logic
ContestQueryService.java Added template retrieval method (contains critical bugs)
ContestController.java Added GET /template and PUT /template endpoints with appropriate authorization
ContestTemplateFixture.java Test fixture for creating test templates with all fields set to true
ContestCommandServiceTest.java Tests for template creation with different categories and update scenarios
ContestQueryServiceTest.java Tests for template retrieval and error cases
ContestApiDocsTest.java REST Docs tests for template endpoints with success and failure cases
contest.adoc Documentation for template management endpoints
TeamQueryService.java Code formatting improvements (method relocation)
Member.java Removed unused LAZY import
TeamApiDocsTest.java Code formatting improvements (line wrapping)
ContestConvenience.java Import ordering improvements
Comments suppressed due to low confidence (1)

src/main/java/com/opus/opus/modules/contest/application/ContestQueryService.java:48

  • The ContestQueryService is missing the contestTemplateConvenience field dependency injection. This field needs to be added to use the template convenience methods. Add private final ContestTemplateConvenience contestTemplateConvenience; to the service class dependencies.
    private final ContestCategoryConvenience contestCategoryConvenience;
    private final ContestConvenience contestConvenience;
    private final ContestSortConvenience contestSortConvenience;
    private final FileConvenience fileConvenience;

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

… Feature/#47_대회-팀-상세보기-템플릿-기능-개발

# Conflicts:
#	src/main/java/com/opus/opus/modules/contest/api/ContestController.java
#	src/main/java/com/opus/opus/modules/contest/application/ContestQueryService.java
#	src/main/java/com/opus/opus/modules/team/application/TeamQueryService.java
#	src/test/java/com/opus/opus/contest/application/ContestQueryServiceTest.java
#	src/test/java/com/opus/opus/restdocs/docs/ContestApiDocsTest.java
Copy link
Contributor

@pykido pykido left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다! 간단한 코멘트들 확인해주세욤

Copy link
Contributor

@sjmoon00 sjmoon00 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다~

Copy link
Contributor

@pykido pykido left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니당~!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

⭐️ 기능 구현 새로운 기능을 구현

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] 대회 팀 상세보기 템플릿 기능 개발

5 participants