Skip to content

feat(farming): 기록 작물이 해당 농장 등록 작물인지 검증 - #53

Merged
Kimseungin0529 merged 5 commits into
devfrom
feat/record-crop-farm-validation
Jul 21, 2026
Merged

feat(farming): 기록 작물이 해당 농장 등록 작물인지 검증#53
Kimseungin0529 merged 5 commits into
devfrom
feat/record-crop-farm-validation

Conversation

@Kimseungin0529

Copy link
Copy Markdown
Collaborator

변경 내용

기록 생성/수정 시, 기록하려는 작물이 해당 농장에 등록된 작물(MemberCrop) 인지 검증한다.
미등록 (회원,농장,작물) 조합이면 저장하지 않고 새 에러코드로 거부한다.

  • FarmingRecordService.create/updateassertCropRegisteredToFarm(memberId, farmId, cropId) 추가
  • ErrorCode.FARMING_RECORD_CROP_NOT_IN_FARM (FARMING_006, 400) 신설
  • 기존 MemberCropRepository.existsByMemberIdAndFarmIdAndCropId(...) 재사용 (신규 쿼리 없음)
  • 회귀 테스트 2건(create/update 각각 미등록 작물 거부 + 저장 안 됨) 추가

변경 이유

기존엔 농장 소유(findFarm)와 전역 작물 존재(findCrop)만 따로 확인하고, "이 농장에 이 작물이
등록돼 있는가"라는 조합 검증이 없었다.
그래서 심지도 않은 작물로 기록을 남기는 것이 가능했다.

영향 범위

  • 기록 생성/수정 API에 신규 400 응답(FARMING_006)이 발생할 수 있다.
  • 음성 기록 confirm도 동일하게 FarmingRecordService.create를 타므로 같은 검증이 적용된다.
  • 프론트가 이미 유효한 (농장,작물) 조합만 보낸다면 사용자 영향 없음. 미검증 조합 경로가 있다면
    이 에러코드 메시지 처리가 필요할 수 있다.

배포 및 호환성

DB 스키마 변경 없음. 신규 에러코드/메시지 키 추가(error.farming_record_crop_not_in_farm).

검증

  • cd backend && ./gradlew test → BUILD SUCCESSFUL (전체 백엔드 테스트, dev 최신 rebase 기준)

체크리스트

  • 관련 테스트를 추가하거나 수정했습니다.
  • 로컬 검증을 완료했습니다.
  • API·설정·DB 호환성 영향을 확인했습니다.
  • 민감한 정보가 포함되지 않았습니다.

🤖 Generated with Claude Code

Kimseungin0529 and others added 5 commits July 20, 2026 13:15
기록 작물이 해당 농장에 등록되지 않았을 때 사용할 FARMING_RECORD_CROP_NOT_IN_FARM(400)을 추가한다. 사용처는 후속 커밋에서 연결한다.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
create/update에서 농장 소유(findFarm)와 전역 작물 존재(findCrop) 확인에 더해,
(회원,농장,작물) 조합이 MemberCrop에 등록됐는지 existsByMemberIdAndFarmIdAndCropId로
확인하고, 미등록이면 FARMING_RECORD_CROP_NOT_IN_FARM(400)을 던진다. 음성 기록도 confirm이
같은 create를 타므로 함께 커버된다.

기존 create/update 해피패스 테스트는 등록 조합을 전제하므로 setUp에 기본 stub(lenient)만
추가해 그린을 유지한다. 미등록 거부 회귀 테스트는 후속 커밋에서 추가한다.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
create/update 시 (회원,농장,작물)이 MemberCrop에 등록되지 않았으면
FARMING_RECORD_CROP_NOT_IN_FARM을 던지고 저장하지 않음을 검증한다.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…validation

# Conflicts:
#	backend/application/src/main/kotlin/com/chamchamcham/application/farming/FarmingRecordService.kt
@Kimseungin0529
Kimseungin0529 marked this pull request as ready for review July 21, 2026 04:49
@Kimseungin0529
Kimseungin0529 merged commit bde7f8e into dev Jul 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant