improvement: 태그 삭제 시 디바이스 orphan 참조 제거 (#186) #246

Merged
seonkyu.kim merged 1 commits from improvement/#186-tag-crud-api into develop 2026-02-26 00:17:18 +00:00
Owner

📋 작업 요약

  • 태그 삭제 시 해당 tagId를 참조하는 모든 Device의 Tags 필드에서 orphan 참조를 원자적으로 제거

Closes #186

🛠️ 작업 내용 (Changes)

  • SPMS.Domain/Interfaces/IDeviceRepository.csGetDevicesByTagIdAsync 메서드 추가
  • SPMS.Infrastructure/Persistence/Repositories/DeviceRepository.cs — LIKE 기반 태그 참조 디바이스 조회 구현
  • SPMS.Application/Services/TagService.csDeleteAsync에서 트랜잭션으로 디바이스 Tags orphan 제거 후 태그 삭제

📢 리뷰어 참고 사항 (To Reviewers)

  • Device.Tags는 JSON 배열 문자열 "[1,2,3]" 형태
  • LIKE로 후보 디바이스를 가져온 후 JsonSerializer로 정확한 파싱 및 제거
  • 트랜잭션으로 원자성 보장 (디바이스 Tags 업데이트 + 태그 삭제)

체크리스트 (Self Checklist)

  • 빌드(Build)가 성공적으로 수행되었는가?
  • 모든 단위 테스트(Unit Test)를 통과하였는가?
  • 불필요한 로그나 주석을 제거하였는가?
  • 컨벤션(Clean Architecture, Naming)을 준수하였는가?
  • 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가?

📸 스크린샷 / 테스트 로그 (Screenshots/Logs)

빌드 성공: 경고 0개, 오류 0개

## 📋 작업 요약 - 태그 삭제 시 해당 tagId를 참조하는 모든 Device의 Tags 필드에서 orphan 참조를 원자적으로 제거 ## 🔗 관련 이슈 (Related Issues) Closes #186 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Domain/Interfaces/IDeviceRepository.cs` — `GetDevicesByTagIdAsync` 메서드 추가 - [x] `SPMS.Infrastructure/Persistence/Repositories/DeviceRepository.cs` — LIKE 기반 태그 참조 디바이스 조회 구현 - [x] `SPMS.Application/Services/TagService.cs` — `DeleteAsync`에서 트랜잭션으로 디바이스 Tags orphan 제거 후 태그 삭제 ## 📢 리뷰어 참고 사항 (To Reviewers) - Device.Tags는 JSON 배열 문자열 `"[1,2,3]"` 형태 - LIKE로 후보 디바이스를 가져온 후 JsonSerializer로 정확한 파싱 및 제거 - 트랜잭션으로 원자성 보장 (디바이스 Tags 업데이트 + 태그 삭제) ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) 빌드 성공: 경고 0개, 오류 0개
seonkyu.kim added this to the Phase 1: 서비스 도메인 milestone 2026-02-26 00:15:37 +00:00
seonkyu.kim self-assigned this 2026-02-26 00:15:37 +00:00
seonkyu.kim added 1 commit 2026-02-26 00:15:38 +00:00
- IDeviceRepository에 GetDevicesByTagIdAsync 메서드 추가
- DeviceRepository에 LIKE 기반 태그 참조 디바이스 조회 구현
- TagService.DeleteAsync에서 트랜잭션으로 원자적 처리:
  디바이스 Tags JSON에서 삭제 대상 tagId 제거 후 태그 삭제
seonkyu.kim added the
Priority
Medium
Status
In Progress
Type
Improvement
labels 2026-02-26 00:16:07 +00:00
seonkyu.kim requested review from Owners 2026-02-26 00:16:09 +00:00
seonkyu.kim merged commit f474b916c4 into develop 2026-02-26 00:17:18 +00:00
seonkyu.kim deleted branch improvement/#186-tag-crud-api 2026-02-26 00:17:25 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-26 00:17:52 +00:00
Sign in to join this conversation.
No description provided.