@@ -97,15 +97,20 @@ public ReportRecordStepResponse updateStepInfo(User user, Long reportId, int ste
9797
9898 private void validateUpdateStepInfo (UpdateReportStepRequest updateReportStepRequest , ReportStepProgress progress , ReportStep step ) {
9999 // 이미 완료된 step 인지 검증
100- validateProgressIsCompleted (progress );
100+ validateProgressIsCompleted (updateReportStepRequest , progress );
101101 // 체스박스 수 검증
102102 validateCheckboxCounts (updateReportStepRequest , step );
103103 validateCompletionConsistency (updateReportStepRequest );
104104 }
105105
106- private void validateProgressIsCompleted (ReportStepProgress progress ) {
106+ // 완료된 단계의 필수 체크박스는 수정이 불가능
107+ // 요청된 필수 체크박스(request.getCheckBoxes())가 저장된 필수 체크박스 상태와 다를 경우에만 에러를 던진다
108+ private void validateProgressIsCompleted (UpdateReportStepRequest request , ReportStepProgress progress ) {
107109 if (progress .isCompleted ()) {
108- throw new BusinessExceptionHandler (ErrorCode .REPORT_STEP_ALREADY_COMPLETED );
110+ List <Boolean > currentRequired = getCheckboxes (progress , CheckboxType .REQUIRED );
111+ if (!currentRequired .equals (request .getCheckBoxes ())){
112+ throw new BusinessExceptionHandler (ErrorCode .REPORT_STEP_ALREADY_COMPLETED );
113+ }
109114 }
110115 }
111116
@@ -179,8 +184,8 @@ private void validateCompletionConsistency(UpdateReportStepRequest request) {
179184 }
180185
181186 private ReportRecordStepResponse buildReportRecordStepResponse (Long reportId , int stepNumber , ReportStepProgress progress , UserReportRecord record ) {
182- List <Boolean > resultRequiredCheckboxes = getRequiredCheckboxes (progress , CheckboxType .REQUIRED );
183- List <Boolean > resultRecommendedCheckboxes = getRequiredCheckboxes (progress , CheckboxType .RECOMMENDED );
187+ List <Boolean > resultRequiredCheckboxes = getCheckboxes (progress , CheckboxType .REQUIRED );
188+ List <Boolean > resultRecommendedCheckboxes = getCheckboxes (progress , CheckboxType .RECOMMENDED );
184189
185190 resultRecommendedCheckboxes = resultRecommendedCheckboxes .isEmpty () ? null : resultRecommendedCheckboxes ;
186191
@@ -194,7 +199,7 @@ private ReportRecordStepResponse buildReportRecordStepResponse(Long reportId, in
194199 .build ();
195200 }
196201
197- private List <Boolean > getRequiredCheckboxes (ReportStepProgress progress , CheckboxType type ) {
202+ private List <Boolean > getCheckboxes (ReportStepProgress progress , CheckboxType type ) {
198203 return progress .getCheckboxes ().stream ()
199204 .filter (cb -> cb .getType () == type )
200205 .sorted (Comparator .comparingInt (ReportStepCheckbox ::getBoxIndex ))
0 commit comments