Repository navigation
Conversation
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 55 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
hodoon
reviewed
Oct 21, 2026
hodoon
left a comment
Collaborator
There was a problem hiding this comment.
리뷰했습니다. 인라인 코멘트 확인 부탁드립니다.
ysw789
marked this pull request as ready for review
October 28, 2026 10:39
This branch has not been deployed
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.
요약
QA B-08(업장 등록 승인 실패)의 원인을 수정했습니다. 신청 연락처 컬럼은 13자, 업장 연락처 컬럼은 11자인데, 승인할 때 하이픈이 들어간 신청 연락처(예:
010-1234-5678)를 업장에 그대로 복사해서 SQLState 22001로 실패했습니다.이제 신청할 때 연락처 형식을 검증하고 하이픈을 뺀 숫자로 저장합니다. 이미 하이픈으로 저장된 승인 대기 신청도 승인할 때 같은 규칙으로 검증한 뒤 숫자로 바꿔 업장에 저장합니다. DB 스키마 변경과 Flyway 마이그레이션은 없고, 신규 ErrorCode도 없습니다.
변경 내용
POST /api/app/workspace-requests,POST /api/manager/workspace-requests(CreateWorkspaceRequest)CreateWorkspaceRequestDto.contact에 기존NotBlank와 함께Size(max = 13)과 공용Pattern을 적용했습니다. 형식이 틀리면 유스케이스를 타기 전에 HTTP 400B001로 끝나고 신청은 저장되지 않습니다.-)만 제거해 숫자로 저장합니다(PhoneNumberUtil.normalizeLocalNumber).CreateWorkspaceRequestCommand(record)로 바꿨습니다. 앱·사장님 컨트롤러는request.toCommand(user)로 넘깁니다. 내부 경계 변경이라 요청·응답 JSON은 그대로입니다.PATCH /api/admin/workspace-requests/{workspaceRequestId}/status(UpdateWorkspaceRequestStatus)ACTIVATED)할 때 신청 연락처를 같은 규칙으로 검증·정규화한 뒤 매니저·업장을 저장합니다. 그래서 하이픈으로 저장된 기존 신청도 승인되고, 업장에는 숫자가 저장됩니다.B001(ILLEGAL_ARGUMENT)로 승인을 거부합니다. 매니저·업장 저장, 채팅 이벤트 발행, 신분증 파일 삭제는 일어나지 않습니다. 승인 상태 변경은 유스케이스의Transactional경계 안에서 함께 롤백됩니다.B020("이미 승인된 요청입니다.")입니다. 상태 검사가 연락처 검사보다 먼저라서, 이미 승인된 신청은 연락처가 틀려도 409를 받습니다.REVOKED)는 연락처를 보지 않습니다. 연락처가 잘못된 기존 신청도 반려할 수 있습니다.연락처 형식
PhoneNumberUtil.LOCAL_PHONE_NUMBER_PATTERN이 문자열 전체와 일치해야 합니다. 특정 접두번호 목록으로 제한하지 않아서02,031,070,099등도 형식만 맞으면 받습니다.0으로 시작하는 ASCII 숫자 9~11자리0으로 시작하는2~3자리-3~4자리-4자리010-1234-56780101234567802-1234-5678021234567802-123-4567021234567(9자리)09912345678010--1234-5678,010-12345678,+821012345678.등 다른 구분자, 길이 초과, 줄바꿈공백을 trim하거나 이상한 문자를 지워서 받아 주지 않습니다. 하이픈 외에는 값을 고치지 않습니다.
오류 응답
B001, message "잘못된 요청입니다.",data에{ "field": "contact", "message": "..." }목록이 들어갑니다. 제약을 여러 개 어기면 항목도 여러 개일 수 있습니다. 형식 오류 항목의 message는 "연락처는 0으로 시작하는 911자리 숫자 또는 23자리-3~4자리-4자리 형식이어야 합니다."입니다.B001,data: null, message는 위와 같은 문장입니다. 연락처 값은 메시지에 넣지 않습니다.Swagger
CreateWorkspaceRequestDto.contact의Schema설명에 허용 형식과 숫자 저장 정책을 적었습니다.UserWorkspaceRequestControllerSpec,ManagerWorkspaceRequestControllerSpec: 신청 operation 설명과 400 설명(연락처 형식 오류ILLEGAL_ARGUMENT또는INVALID_FILE)을 갱신했습니다.AdminWorkspaceRequestControllerSpec: 승인 시 기존 연락처도 검증·정규화한다는 설명과 400 설명을 추가했습니다.프론트 영향
{ "timestamp": "...", "data": null }입니다.+82...), 하이픈 외 구분자가 이제 400으로 거부됩니다. 앱에서 보내는 연락처 값을 위 형식에 맞춰 주세요.0이 빠지지 않게 해 주세요.contact는 하이픈 없는 숫자입니다. 화면에 하이픈을 보여야 하면 앱에서 포맷팅해야 합니다.테스트
리뷰를 반영해 단위 테스트만 남겼습니다. 처음에 올렸던 MockMvc 컨트롤러 테스트(
WorkspaceRequestContactTests)와 H2 통합 테스트(WorkspaceRequestApprovalIntegrationTests)는 단위 테스트만 둔다는 프로젝트 규칙에 맞지 않아 삭제했고, 같은 검증을 유스케이스 단위 테스트로 옮겼습니다. 그래서 실제 DB에서 롤백을 확인하는 테스트는 이 PR에 없습니다. 롤백은UpdateWorkspaceRequestStatus의Transactional경계가 맡고, 단위 테스트에서는 연락처가 틀리면 매니저·업장 저장이 아예 호출되지 않는지 확인합니다.PhoneNumberUtilTests: 허용 형식 12가지가 하이픈만 빠진 숫자로 바뀌는지, null·빈 값·공백·문자·국제번호·하이픈 위치 오류·다른 구분자·전각 숫자·길이 초과·줄바꿈이ILLEGAL_ARGUMENT와 정해진 메시지로 거부되는지 확인합니다.CreateWorkspaceRequestTests: 하이픈형·숫자형 연락처가 숫자로 저장되는지, 잘못된 연락처는 신청 저장과 파일 연결 전에 거부되는지 확인합니다. 기존 테스트는toCommand(user)호출로 바꿨습니다.UpdateWorkspaceRequestStatusTests(ExecuteTests안)ILLEGAL_ARGUMENT로 승인이 거부되고, 메시지에 연락처 값이 없고, 매니저·업장 저장·이벤트 발행·파일 삭제가 일어나지 않는지CONFLICT로 거부되고 매니저·업장을 만들지 않는지./gradlew test(head5975457a): 661건 통과, 실패·오류·스킵 0건. 이 중 관련 테스트는PhoneNumberUtilTests39건,CreateWorkspaceRequestTests18건,UpdateWorkspaceRequestStatusTests20건입니다.리뷰 반영 전 기준 검증 기록
아래는 테스트 구성을 바꾸기 전, 로컬에서 확인한 내용입니다. 지금 PR의 테스트 결과가 아닙니다.
B001)·PENDING 유지남긴 것
A002)은 이 PR에서 고치지 않았고, 해결 여부도 확인하지 않았습니다. 리뷰 반영 전 로컬 QA에서, 승인된 신청자가 재로그인해도GET /api/manager/workspaces에서 403을 받았습니다. 승인하면ManagerUser는 생기지만User.role은ROLE_USER그대로입니다. 그런데LoginWithPassword는User.role로 토큰 scope를 정하고,UserRoleUtil.getRoleForScope는User.role과 scope 역할이 같아야 통과시킵니다. 이 PR은 인증·권한 경로를 바꾸지 않았으므로 B-08의 "승인 후 사장님 전환"은 별도로 추적해야 합니다.연관 PR
1c863648~bf154a30)인fix/alt-297-qa-followup을 base로 쌓여 있습니다. 이 PR을 먼저 머지해 주세요.UpdateWorkspaceRequestStatusTests를 고칩니다. 이 PR은 테스트를ExecuteTests안으로 옮겼고, #118은 같은 파일에 잠금 검증을 넣었습니다. 그래서 이 PR을 머지한 뒤 #118을dev위로 올릴 때 이 파일에서 충돌을 정리해야 합니다.관련 문서