feat: 디바이스 CRUD + 목록 API 구현 (#94) #95

Merged
seonkyu.kim merged 1 commits from feature/#94-device-crud into develop 2026-02-10 05:46:26 +00:00
Owner

📋 작업 요약

  • 디바이스 등록/조회/수정/삭제/목록 5개 API 구현
  • DEVICE_01~04: SDK 호출용 (X-API-KEY 인증)
  • DEVICE_07: 대시보드 조회용 (JWT + X-Service-Code 인증)
  • 미들웨어 경로 제어 수정 (ServiceCode/ApiKey)

Closes #94

🛠️ 작업 내용 (Changes)

  • DeviceRegisterRequestDto.cs / DeviceRegisterResponseDto.cs — 등록 요청/응답 DTO
  • DeviceInfoRequestDto.cs / DeviceInfoResponseDto.cs — 조회 요청/응답 DTO
  • DeviceUpdateRequestDto.cs — 수정 요청 DTO
  • DeviceDeleteRequestDto.cs — 삭제 요청 DTO
  • DeviceListRequestDto.cs / DeviceListResponseDto.cs — 목록 요청/응답 DTO (페이징, 필터)
  • IDeviceService.cs — 서비스 인터페이스 (5개 메서드)
  • DeviceService.cs — 비즈니스 로직 (등록 시 토큰 중복 체크→업서트, 삭제 시 소프트 삭제)
  • IDeviceRepository.cs — GetByIdAndServiceAsync, GetPagedAsync 메서드 추가
  • DeviceRepository.cs — Repository 구현체 (필터: platform, push_agreed, is_active, tags)
  • DeviceController.cs — 5개 엔드포인트 (register, info, update, delete, list)
  • ServiceCodeMiddleware.cs — /v1/in/device 경로 제외 (list 제외)
  • ApiKeyMiddleware.cs — /v1/in/device/list 경로 제외
  • ErrorCodes.cs — Device 도메인 에러코드 추가 (141, 142)
  • Infrastructure/DependencyInjection.cs — DeviceRepository DI 등록
  • Application/DependencyInjection.cs — DeviceService DI 등록

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

  • 미들웨어 경로 분기: SDK API(register/info/update/delete)는 X-API-KEY, 목록 API(list)는 JWT + X-Service-Code 사용
  • 등록 시 업서트: 동일 service + device_token이면 기존 디바이스 정보 업데이트 (is_new=false 반환)
  • 삭제는 소프트 삭제: IsActive=false 처리
  • 태그 필터: JSON 문자열에 대해 LIKE 검색 (MariaDB JSON_CONTAINS 미사용, 추후 최적화 가능)
  • last_active_at: DB의 updated_at 컬럼을 매핑

체크리스트 (Self Checklist)

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

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

빌드했습니다.
    경고 0개
    오류 0개
## 📋 작업 요약 - 디바이스 등록/조회/수정/삭제/목록 5개 API 구현 - DEVICE_01~04: SDK 호출용 (X-API-KEY 인증) - DEVICE_07: 대시보드 조회용 (JWT + X-Service-Code 인증) - 미들웨어 경로 제어 수정 (ServiceCode/ApiKey) ## 🔗 관련 이슈 (Related Issues) Closes #94 ## 🛠️ 작업 내용 (Changes) - [x] `DeviceRegisterRequestDto.cs` / `DeviceRegisterResponseDto.cs` — 등록 요청/응답 DTO - [x] `DeviceInfoRequestDto.cs` / `DeviceInfoResponseDto.cs` — 조회 요청/응답 DTO - [x] `DeviceUpdateRequestDto.cs` — 수정 요청 DTO - [x] `DeviceDeleteRequestDto.cs` — 삭제 요청 DTO - [x] `DeviceListRequestDto.cs` / `DeviceListResponseDto.cs` — 목록 요청/응답 DTO (페이징, 필터) - [x] `IDeviceService.cs` — 서비스 인터페이스 (5개 메서드) - [x] `DeviceService.cs` — 비즈니스 로직 (등록 시 토큰 중복 체크→업서트, 삭제 시 소프트 삭제) - [x] `IDeviceRepository.cs` — GetByIdAndServiceAsync, GetPagedAsync 메서드 추가 - [x] `DeviceRepository.cs` — Repository 구현체 (필터: platform, push_agreed, is_active, tags) - [x] `DeviceController.cs` — 5개 엔드포인트 (register, info, update, delete, list) - [x] `ServiceCodeMiddleware.cs` — /v1/in/device 경로 제외 (list 제외) - [x] `ApiKeyMiddleware.cs` — /v1/in/device/list 경로 제외 - [x] `ErrorCodes.cs` — Device 도메인 에러코드 추가 (141, 142) - [x] `Infrastructure/DependencyInjection.cs` — DeviceRepository DI 등록 - [x] `Application/DependencyInjection.cs` — DeviceService DI 등록 ## 📢 리뷰어 참고 사항 (To Reviewers) - **미들웨어 경로 분기**: SDK API(register/info/update/delete)는 X-API-KEY, 목록 API(list)는 JWT + X-Service-Code 사용 - **등록 시 업서트**: 동일 service + device_token이면 기존 디바이스 정보 업데이트 (is_new=false 반환) - **삭제는 소프트 삭제**: IsActive=false 처리 - **태그 필터**: JSON 문자열에 대해 LIKE 검색 (MariaDB JSON_CONTAINS 미사용, 추후 최적화 가능) - **last_active_at**: DB의 updated_at 컬럼을 매핑 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` 빌드했습니다. 경고 0개 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-10 05:44:50 +00:00
seonkyu.kim added the
Priority
High
Status
In Progress
Type
Feature
labels 2026-02-10 05:45:03 +00:00
seonkyu.kim self-assigned this 2026-02-10 05:45:05 +00:00
seonkyu.kim added this to the Phase 2-2: Public & 디바이스 & 파일 API milestone 2026-02-10 05:45:13 +00:00
seonkyu.kim requested review from Owners 2026-02-10 05:45:20 +00:00
seonkyu.kim merged commit 2514f82ad1 into develop 2026-02-10 05:46:26 +00:00
seonkyu.kim deleted branch feature/#94-device-crud 2026-02-10 05:46:44 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-10 05:47:34 +00:00
Sign in to join this conversation.
No description provided.