Repository navigation
test: [ALT-305] 삭제 일정 상태와 본인 조회 날짜 계약 보완 - #119
Merged
Merged
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
hodoon
reviewed
Oct 21, 2026
hodoon
left a comment
Collaborator
There was a problem hiding this comment.
리뷰했습니다. 인라인 코멘트 확인 부탁드립니다.
| @Operation(summary = "대타 요청 승인", description = "대타 요청을 승인하고 실제 스케줄을 교환합니다.") | ||
| @ApiResponses(value = { | ||
| @ApiResponse(responseCode = "200", description = "승인 성공"), | ||
| @ApiResponse(responseCode = "409", description = "삭제된 근무 일정 또는 수락자의 시간 충돌 (CONFLICT / B020)"), |
Collaborator
There was a problem hiding this comment.
새로 추가된 409 응답에는 content가 없어서, Swagger에서 이 응답의 본문 형식이 보이지 않을 것 같습니다.
같은 메서드의 400/403/404 응답은 모두 content = @Content(mediaType = "application/json", schema = @Schema(implementation = ErrorResponse.class))로 되어 있으니, 409도 같은 형식으로 맞춰 두면 어떨까요?
hodoon
added a commit
that referenced
this pull request
Oct 22, 2026
#105(ALT-287) 위로 옮기면서 본인 일 조회 필터와 없는 날짜 400 처리는 #105 구현을 따른다. #105가 UseCase에서 DateTimeException을 B001로 바꾸므로 같은 목적의 @AssertTrue 검증 테스트는 지우고, DELETED만 제외하던 일 조회 기대값 테스트도 CONFIRMED만 보는 #105 동작과 맞지 않아 뺀다. 대타 승인 409 응답에는 다른 실패 응답과 같은 ErrorResponse 스키마를 붙인다.
#105(ALT-287) 위로 옮기면서 본인 일 조회 필터와 없는 날짜 400 처리는 #105 구현을 따른다. #105가 UseCase에서 DateTimeException을 B001로 바꾸므로 같은 목적의 @AssertTrue 검증 테스트는 지우고, DELETED만 제외하던 일 조회 기대값 테스트도 CONFIRMED만 보는 #105 동작과 맞지 않아 뺀다. 대타 승인 409 응답에는 다른 실패 응답과 같은 ErrorResponse 스키마를 붙인다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
삭제된 근무가 본인 일 조회에 남거나 수락된 대타 승인으로 다시 확정되는 문제를 고쳤습니다. 본인 일 조회의 잘못된 날짜도 기존 500 대신 400/B001로 거부합니다.
변경
WorkspaceShift.assignWorker에서 DELETED를 기존409/B020으로 거부합니다. 승인 실패 시 일정·대타 요청/대상 상태를 유지하고 알림을 추가하지 않습니다. 삭제된 본인 일 조회를 DB 조건에서 제외합니다.검증
de749ca19422397e54ff800afaca920d9a56e2bd의 독립 HTTP는 조회·시간수정·근무자 교체·해제·재배정·삭제·정상 대타승인 및 삭제 대타승인409/실패 원자성·권한·급여 계약을 확인했습니다. 이 과정에서 기존 날짜500 두 건을 발견했습니다.JAVA_TOOL_OPTIONS=-Dapi.version=1.44 ./gradlew clean build전체542 성공(42s, 실패·오류·skip0). 잘못된 month/day·평년2월29 거부, 정상윤년/월말·month13 월조회·불완전400·workspace/candidate 계약·JSON/Swagger 모델 year/month/day3필드만을 회귀했습니다. Testcontainers 잔존0.db82442ce365315facb3e84effbf111a70618f6e, 삭제 test8c27f917199bda98301e6e5e43ac94fc7e9e2e6b, 날짜 test19a48acd81c1f8c1e4721ce733155032ade0c1fd로 검증했습니다. 아래 두 test-only 후속 뒤에도 운영 diff는 동일하며 현재 삭제 test는247cf6cca579b74832cfa4459b16fd0abd5ecdc4, 날짜 test는a27e260595a4e2649393436f5d98527a4f772f92입니다.삭제된 근무 일정에는 근무자를 배정할 수 없습니다.와 업무 전체 digest 불변, 별도 정상승인200/APPROVED를 재확인했습니다. 조회 묶음 digest도 불변입니다. 이전 de749 실행의 모든 수정·권한 시나리오를 최종 revision에서 전부 재실행한 것으로 표현하지 않습니다.통합 테스트 호환 후속
ScheduleInquiryValidationTests한 파일만 Mockito 자동 주입으로 바꿨습니다. 실제 대타 후보 유스케이스는 spy로 유지해 day 무시·누락400, self 날짜 및 외부3필드 검증을 약화하지 않았습니다. ALT302 운영 코드나 port를 이 브랜치에 가져오지 않았습니다.c1235b1ddbf4c90a626713e32df3ce1a37224d04, 원 브랜치 관련15개 및 전체542개 clean build 성공(43s, 실패·오류·skip0). 운영 diffdb82442ce365315facb3e84effbf111a70618f6e와 기존 r2 HTTP 증거는 불변입니다. 이 테스트 refactor 후 새 HTTP를 재실행한 결과는 아닙니다.통합 잠금 경로 테스트 slice 후속
SET LOCAL lock_timeout = '5s'를 처리하지 못하는 두 실패가 확인됐습니다.ScheduleDeletionFlowTests한 클래스만 기존 PostgreSQL17.2 Testcontainers/DataJpaTest 선례로 전환했습니다. 기존 fixture helper를 재사용하며 삭제·배정·승인·rollback·정상 조회의 7사례와 실제 repository 잠금 및 모든 기대값을 유지했습니다. 잠금을 mock으로 무력화하거나 운영 H2 분기·새 공통 베이스·설정을 추가하지 않았습니다.40aac7c27f0d19794580bf3381e82e6358abbafd, 원 브랜치 PostgreSQL 7건 및 전체542건 clean build 성공(43s, 실패·오류·skip0). 허용된 임시 통합의 해당 클래스 PostgreSQL 7건도 통과했지만 이는 원인 확인을 위한 진단이며 시험 파일은 원본으로 복원했습니다.db82442ce365315facb3e84effbf111a70618f6e와 기존 r2 HTTP 증거는 불변입니다. 테스트-only 수정 자체를 새 HTTP 재실행으로 표현하지 않으며, 별도 최종 통합에서 수행한 새 대표 API 검증은 아래 결과로 구분합니다.독립 최종 통합 결과
b9f1d1c588fc167f41d3f6d1d268e76231d8c255를 포함한 선행·작업 14개 head를 조합해 파일 충돌0을 확인했습니다. 통합 HEADb6a9442ea028ea63600310a26fd6191130df852c/ tree5f72cbd9dfeea691f6a9772eac03ad67fdc90adc에서 독립 clean build 981건이 성공했습니다(1m40s, 실패·오류·skip0). 이는 단독 r2 HTTP, 원 브랜치 542건, 임시 PostgreSQL 진단7건과 구분되는 최종 전체 조합 실행입니다.integration-final.md와 독립 통합 로그·HTTP 단언입니다.기준·통합·남은 QA
ed0dbea5ae250b9b234d54dee9a432d5ba58098f, head test/alt-305, draft base dev.