feat: 공지사항 목록/상세 API 구현 (#78) #79

Merged
seonkyu.kim merged 1 commits from feature/#78-notice-api into develop 2026-02-10 04:38:03 +00:00
Owner

📋 작업 요약

  • 공지사항 목록 API (POST /v1/in/public/notice/list) 구현 — 페이징, 상단 고정 우선 정렬
  • 공지사항 상세 API (POST /v1/in/public/notice/info) 구현

Closes #78

🛠️ 작업 내용 (Changes)

  • SPMS.Application/DTOs/Notice/ — NoticeListRequestDto, NoticeListResponseDto, NoticeInfoRequestDto, NoticeInfoResponseDto, PaginationDto
  • SPMS.Domain/Interfaces/INoticeRepository.cs — GetActivePagedAsync, GetActiveByIdAsync
  • SPMS.Infrastructure/Persistence/Repositories/NoticeRepository.cs — Repository 구현 (IsPinned 우선, CreatedAt 역순)
  • SPMS.Application/Interfaces/INoticeService.cs — Service 인터페이스
  • SPMS.Application/Services/NoticeService.cs — Service 구현 (ServiceCode → ServiceId 변환 포함)
  • SPMS.API/Controllers/NoticeController.cs — Controller (Public API, 보안 등급 1)
  • DependencyInjection.cs — Application/Infrastructure DI 등록

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

  • Public API(보안 등급 1)이므로 JWT 인증 없음, [Authorize] 미적용
  • X-Service-Code 헤더를 Controller에서 직접 읽어 서비스 식별 (ServiceCodeMiddleware에서 public 경로 제외되어 있으므로)
  • API 명세의 is_important 필드는 Entity의 IsPinned에 매핑
  • PaginationDto는 향후 다른 Public API에서도 재사용 가능

체크리스트 (Self Checklist)

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

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

Build succeeded. 경고 0개, 오류 0개
## 📋 작업 요약 - 공지사항 목록 API (`POST /v1/in/public/notice/list`) 구현 — 페이징, 상단 고정 우선 정렬 - 공지사항 상세 API (`POST /v1/in/public/notice/info`) 구현 ## 🔗 관련 이슈 (Related Issues) Closes #78 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Application/DTOs/Notice/` — NoticeListRequestDto, NoticeListResponseDto, NoticeInfoRequestDto, NoticeInfoResponseDto, PaginationDto - [x] `SPMS.Domain/Interfaces/INoticeRepository.cs` — GetActivePagedAsync, GetActiveByIdAsync - [x] `SPMS.Infrastructure/Persistence/Repositories/NoticeRepository.cs` — Repository 구현 (IsPinned 우선, CreatedAt 역순) - [x] `SPMS.Application/Interfaces/INoticeService.cs` — Service 인터페이스 - [x] `SPMS.Application/Services/NoticeService.cs` — Service 구현 (ServiceCode → ServiceId 변환 포함) - [x] `SPMS.API/Controllers/NoticeController.cs` — Controller (Public API, 보안 등급 1) - [x] `DependencyInjection.cs` — Application/Infrastructure DI 등록 ## 📢 리뷰어 참고 사항 (To Reviewers) - Public API(보안 등급 1)이므로 JWT 인증 없음, `[Authorize]` 미적용 - X-Service-Code 헤더를 Controller에서 직접 읽어 서비스 식별 (ServiceCodeMiddleware에서 public 경로 제외되어 있으므로) - API 명세의 `is_important` 필드는 Entity의 `IsPinned`에 매핑 - PaginationDto는 향후 다른 Public API에서도 재사용 가능 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` Build succeeded. 경고 0개, 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-10 04:35:04 +00:00
seonkyu.kim added the
Priority
Low
Status
In Progress
Type
Feature
labels 2026-02-10 04:35:16 +00:00
seonkyu.kim added this to the Phase 2-2: Public & 디바이스 & 파일 API milestone 2026-02-10 04:35:19 +00:00
seonkyu.kim self-assigned this 2026-02-10 04:35:56 +00:00
seonkyu.kim requested review from Owners 2026-02-10 04:36:03 +00:00
seonkyu.kim merged commit f5a1afc6b3 into develop 2026-02-10 04:38:03 +00:00
seonkyu.kim deleted branch feature/#78-notice-api 2026-02-10 04:38:23 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-10 04:38:44 +00:00
Sign in to join this conversation.
No description provided.