improvement: 태그 CRUD API 구현 (#186) #245

Merged
seonkyu.kim merged 1 commits from improvement/#186-tag-crud-api into develop 2026-02-25 09:11:15 +00:00
Owner

📋 작업 요약

  • 태그(Tag) 도메인 CRUD API 4종 신규 구현
  • PRD FR-TAG-002 기반, tag-manage 화면 CRUD 시나리오 지원

Closes #186

🛠️ 작업 내용 (Changes)

  • SPMS.Application/DTOs/Tag/TagListRequestDto.cs — 목록 요청 DTO
  • SPMS.Application/DTOs/Tag/TagListResponseDto.cs — 목록 응답 DTO (TagSummaryDto 포함)
  • SPMS.Application/DTOs/Tag/CreateTagRequestDto.cs — 생성 요청 DTO
  • SPMS.Application/DTOs/Tag/UpdateTagRequestDto.cs — 수정 요청 DTO
  • SPMS.Application/DTOs/Tag/DeleteTagRequestDto.cs — 삭제 요청 DTO
  • SPMS.Application/DTOs/Tag/TagResponseDto.cs — 단건 응답 DTO
  • SPMS.Application/Interfaces/ITagService.cs — 서비스 인터페이스 신규
  • SPMS.Application/Services/TagService.cs — 서비스 구현 (CRUD 비즈니스 로직)
  • SPMS.API/Controllers/TagController.cs — 컨트롤러 신규 (v1/in/tag/*)
  • SPMS.Domain/Interfaces/ITagRepository.cs — GetTagListAsync, CountByServiceAsync 추가
  • SPMS.Infrastructure/Persistence/Repositories/TagRepository.cs — 구현 추가
  • SPMS.Domain/Interfaces/IDeviceRepository.cs — GetDeviceCountsByTagIdsAsync 추가
  • SPMS.Infrastructure/Persistence/Repositories/DeviceRepository.cs — deviceCount 쿼리 구현
  • SPMS.Application/DependencyInjection.cs — ITagService DI 등록

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

  • 기존 ServiceController의 tags/list, tags/update API는 그대로 유지
  • 태그 삭제 시 Device.Tags 참조 정리는 WP-TAG-03에서 처리 예정
  • deviceCount는 Device.Tags JSON 필드에서 LIKE 쿼리로 집계

체크리스트 (Self Checklist)

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

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

빌드 성공 (경고 0, 오류 0)

## 📋 작업 요약 - 태그(Tag) 도메인 CRUD API 4종 신규 구현 - PRD FR-TAG-002 기반, tag-manage 화면 CRUD 시나리오 지원 ## 🔗 관련 이슈 (Related Issues) Closes #186 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Application/DTOs/Tag/TagListRequestDto.cs` — 목록 요청 DTO - [x] `SPMS.Application/DTOs/Tag/TagListResponseDto.cs` — 목록 응답 DTO (TagSummaryDto 포함) - [x] `SPMS.Application/DTOs/Tag/CreateTagRequestDto.cs` — 생성 요청 DTO - [x] `SPMS.Application/DTOs/Tag/UpdateTagRequestDto.cs` — 수정 요청 DTO - [x] `SPMS.Application/DTOs/Tag/DeleteTagRequestDto.cs` — 삭제 요청 DTO - [x] `SPMS.Application/DTOs/Tag/TagResponseDto.cs` — 단건 응답 DTO - [x] `SPMS.Application/Interfaces/ITagService.cs` — 서비스 인터페이스 신규 - [x] `SPMS.Application/Services/TagService.cs` — 서비스 구현 (CRUD 비즈니스 로직) - [x] `SPMS.API/Controllers/TagController.cs` — 컨트롤러 신규 (v1/in/tag/*) - [x] `SPMS.Domain/Interfaces/ITagRepository.cs` — GetTagListAsync, CountByServiceAsync 추가 - [x] `SPMS.Infrastructure/Persistence/Repositories/TagRepository.cs` — 구현 추가 - [x] `SPMS.Domain/Interfaces/IDeviceRepository.cs` — GetDeviceCountsByTagIdsAsync 추가 - [x] `SPMS.Infrastructure/Persistence/Repositories/DeviceRepository.cs` — deviceCount 쿼리 구현 - [x] `SPMS.Application/DependencyInjection.cs` — ITagService DI 등록 ## 📢 리뷰어 참고 사항 (To Reviewers) - 기존 ServiceController의 tags/list, tags/update API는 그대로 유지 - 태그 삭제 시 Device.Tags 참조 정리는 WP-TAG-03에서 처리 예정 - deviceCount는 Device.Tags JSON 필드에서 LIKE 쿼리로 집계 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) 빌드 성공 (경고 0, 오류 0)
seonkyu.kim added this to the Phase 3: 운영 기능 milestone 2026-02-25 09:08:46 +00:00
seonkyu.kim self-assigned this 2026-02-25 09:08:46 +00:00
seonkyu.kim added 1 commit 2026-02-25 09:08:47 +00:00
- Tag DTO 6종 생성 (List/Create/Update/Delete Request/Response)
- ITagRepository 확장 (GetTagListAsync, CountByServiceAsync)
- IDeviceRepository 확장 (GetDeviceCountsByTagIdsAsync)
- ITagService/TagService 구현 (CRUD 비즈니스 로직)
- TagController 신규 생성 (v1/in/tag/list, create, update, delete)
- DI 등록

Closes #186
seonkyu.kim added the
Priority
Medium
Status
In Progress
Type
Improvement
labels 2026-02-25 09:10:24 +00:00
seonkyu.kim requested review from Owners 2026-02-25 09:10:33 +00:00
seonkyu.kim added
Priority
High
and removed
Priority
Medium
labels 2026-02-25 09:10:54 +00:00
seonkyu.kim merged commit 0ee0da4fa4 into develop 2026-02-25 09:11:15 +00:00
seonkyu.kim deleted branch improvement/#186-tag-crud-api 2026-02-25 09:11:42 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-26 00:24:29 +00:00
Sign in to join this conversation.
No description provided.