Skip to content

Conversation

@vvzvvv
Copy link
Collaborator

@vvzvvv vvzvvv commented Jan 7, 2026

작업 내용

문제 검증 로직을 핸들러 패턴으로 리팩토링하여 타입별 검증 로직 확장이 가능하도록 했습니다.

Ⓜ️ 관련 이슈

☑️ 변경 사항

  • 검증 로직 레이어 구조 생성: validation/ 디렉토리 및 handlers/ 서브 디렉토리 추가
  • ValidationHandler 인터페이스 정의: 문제 타입별 검증 핸들러의 계약 정의 (support, validate 메서드)
  • UnitValidationHandler 구현: 유닛 문제의 정답 비교 검증 로직 구현
  • HandlerResolver 추가: 문제 타입(ex. unit)에 따라 적절한 핸들러를 선택하는 리졸버
  • ValidationService 추가: 검증 로직을 핸들러에 위임하는 서비스 레이어
  • ProblemsService 리팩토링: 직접 검증하던 로직을 ValidationService로 위임
  • ProblemsModule 설정: ValidationService, HandlerResolver, UnitValidationHandler를 Provider로 등록

🔎 테스트 및 검증 내용 (선택)

#28 과 같은 방식으로 진행했습니다.


🎃 기타 참고 사항

  • 나중에 시나리오 문제 타입 추가 시 ScenarioValidationHandler를 추가하면 되는 구조입니다.

  • problemData(문제 데이터)가 현재 하드코딩이지만, 추후 DB 생성 시 실제 문제 조회로 교체하면 됩니다.

  • 트랜잭션 스크립트 + 핸들러 패턴으로 구현했습니다 (설계 문서의 3-2 방식)

  • 디렉토리 구조

apps/server/src/problems/
├── problems.controller.ts
├── problems.service.ts
├── problems.module.ts
├── dto/
│   ├── submit-request.dto.ts
│   ├── submit-response.dto.ts
└── validation/
    ├── validation.service.ts        # 메인 검증 서비스
    ├── handler-resolver.ts           # 핸들러 선택 로직
    ├── handlers/
    │   ├── validation.handler.ts     # 인터페이스
    │   └── unit-validation.handler.ts # 유닛 문제 검증
  • 흐름도(?)
image

vvzvvv added 5 commits January 7, 2026 17:08
- ValidationHandler 인터페이스 정의 (support, validate 메서드)
- 문제 타입별 검증 로직 확장을 위한 기반 구조
- ValidationService: 검증 로직을 핸들러에 위임
- HandlerResolver: 문제 타입(ex. unit)에 맞는 핸들러 선택
- UnitValidationHandler: 유닛 문제 검증 구현
- MVP용 하드코딩 검증 로직이 포함되어 있음
- 검증 로직을 ValidationService로 위임
- ProblemsService에서 직접 검증하던 로직 제거
- ValidationService를 주입받아 검증 위임
- (test 진행을 위해) 문제 데이터를 problemData 목 객체로 처리함
- 핸들러 패턴 적용을 위한 리팩토링 작업
@vvzvvv vvzvvv self-assigned this Jan 7, 2026
@vvzvvv vvzvvv added the back 백엔드 작업 label Jan 7, 2026
@shahhenshah
Copy link
Collaborator

오... 좋습니다... 유닛 문제 검증만 작성하셨져 일단은??

@vvzvvv
Copy link
Collaborator Author

vvzvvv commented Jan 7, 2026

오... 좋습니다... 유닛 문제 검증만 작성하셨져 일단은??

네네 맞습니당
근데 일단 검증 플로우 뼈대만 해놓고 자세한 로직은 없습니다 ㅋㅅㅋ

@shahhenshah
Copy link
Collaborator

오... 좋습니다... 유닛 문제 검증만 작성하셨져 일단은??

네네 맞습니당 근데 일단 검증 플로우 뼈대만 해놓고 자세한 로직은 없습니다 ㅋㅅㅋ

저도 오늘 검증 로직 초기 구현해놓으려고 했는데 배포 관련 개념 공부하고 스크립트, 설정 등을 하다보니 시간이 생각보다 조금 많이 걸려서 못했네요 ㅋㅋ 내일을 꼭 해야겠습니다..!

Copy link
Member

@zooyaam zooyaam 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
Collaborator

@caffesale caffesale left a comment

Choose a reason for hiding this comment

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

문제 타입별로 handler Mapping하는게 좋아보이네요. 모듈 흐름 그려주신 것도 좋아보입니다. 감사합니다.

@vvzvvv vvzvvv merged commit e503113 into main Jan 8, 2026
2 checks passed
@vvzvvv vvzvvv deleted the feat/submit-validation-flow branch January 8, 2026 04:49
@vvzvvv vvzvvv changed the title feat: 문제 검증 핸들러 패턴 구현 Feat/#26 문제 검증 핸들러 패턴 구현 Jan 8, 2026
@vvzvvv vvzvvv linked an issue Jan 20, 2026 that may be closed by this pull request
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

back 백엔드 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[USER_STORY] 사용자가 문제 제출 시 검증 결과를 응답받는다.

5 participants