Skip to content

feat: 프로젝트 공지 대시보드 crud 구현 - #25

Merged
sangwon02 merged 5 commits into
developfrom
feature/project-notice-api
Jul 20, 2026
Merged

feat: 프로젝트 공지 대시보드 crud 구현#25
sangwon02 merged 5 commits into
developfrom
feature/project-notice-api

Conversation

@chazy-d

@chazy-d chazy-d commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

🔗 관련 이슈 (Related Issue)

  • 없음

📝 작업 내용

프로젝트 대시보드의 공지사항 영역에서 사용할 공지사항 CRUD API를 추가했습니다.
공지사항은 파일 첨부 없이 제목과 내용만 등록하는 구조로 구현했고, 프로젝트 접근 권한과 작성자/관리자 기준의 수정·삭제 권한을 검증하도록 구성했습니다.

주요 검토 파일

주요 변경 파일

  • src/main/java/com/slatto/domain/project/controller/ProjectNoticeController.java - 공지사항 목록 조회, 생성, 수정, 삭제 엔드포인트 추가
  • src/main/java/com/slatto/domain/project/service/ProjectNoticeService.java - 공지사항 CRUD 비즈니스 로직 추가
  • src/main/java/com/slatto/domain/project/entity/ProjectNotice.java - 공지사항 수정 및 삭제 도메인 메서드 추가
  • src/main/java/com/slatto/domain/project/repository/ProjectNoticeRepository.java - 프로젝트별 공지사항 조회 쿼리 추가
  • src/main/java/com/slatto/domain/project/dto/ProjectNotice*.java - 공지사항 요청/응답 DTO 추가

1. 프로젝트 공지사항 목록 조회 API 추가

프로젝트 상세 대시보드에서 공지사항 목록을 조회할 수 있도록 API를 추가했습니다.

GET /api/v1/projects/{projectId}/notices

프로젝트에 접근 권한이 있는 사용자만 조회할 수 있도록 검증합니다.
삭제된 공지사항은 목록에 포함하지 않습니다.


2. 프로젝트 공지사항 등록 API 추가

프로젝트 공지사항을 등록할 수 있도록 API를 추가했습니다.

POST /api/v1/projects/{projectId}/notices

요청 본문은 제목과 내용으로 구성했습니다.

{
  "title": "공지사항 제목",
  "content": "공지사항 내용"
}

공지사항 파일 첨부는 현재 범위에서 제외되어 있어 S3, ProjectFile, 업로드/다운로드 로직은 건드리지 않았습니다.


3. 프로젝트 공지사항 수정 API 추가

등록된 공지사항의 제목과 내용을 수정할 수 있도록 API를 추가했습니다.

PATCH /api/v1/projects/{projectId}/notices/{noticeId}

수정은 공지 작성자 또는 프로젝트 ADMIN만 가능하도록 검증합니다.


4. 프로젝트 공지사항 삭제 API 추가

등록된 공지사항을 삭제할 수 있도록 API를 추가했습니다.

DELETE /api/v1/projects/{projectId}/notices/{noticeId}

삭제는 실제 row를 제거하지 않고 deletedAt을 기록하는 soft delete 방식으로 처리했습니다.
삭제 권한은 수정과 동일하게 공지 작성자 또는 프로젝트 ADMIN 기준으로 검증합니다.

✅ PR 체크리스트

  • PR 제목은 커밋 컨벤션을 따랐습니다.
  • 관련 이슈를 연결했습니다.
  • 변경 사항에 대한 테스트를 진행했습니다.

@chazy-d chazy-d self-assigned this Jul 20, 2026
@chazy-d chazy-d added the feature 새로운 기능 추가 label Jul 20, 2026
@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 15e41552-6dbe-4141-9fed-97aa7e37caa1

📥 Commits

Reviewing files that changed from the base of the PR and between 0c4e338 and d76c83f.

📒 Files selected for processing (9)
  • src/main/java/com/slatto/domain/project/controller/ProjectNoticeController.java
  • src/main/java/com/slatto/domain/project/dto/ProjectNoticeCreateRequest.java
  • src/main/java/com/slatto/domain/project/dto/ProjectNoticeListResponse.java
  • src/main/java/com/slatto/domain/project/dto/ProjectNoticeResponse.java
  • src/main/java/com/slatto/domain/project/dto/ProjectNoticeUpdateRequest.java
  • src/main/java/com/slatto/domain/project/entity/ProjectNotice.java
  • src/main/java/com/slatto/domain/project/exception/ProjectErrorCode.java
  • src/main/java/com/slatto/domain/project/repository/ProjectNoticeRepository.java
  • src/main/java/com/slatto/domain/project/service/ProjectNoticeService.java

📝 Walkthrough

Walkthrough

프로젝트 공지 기능에 요청·응답 DTO, 엔티티 상태 변경, 활성 공지 저장소, 권한 검증 서비스, 커서 기반 목록 조회 및 CRUD REST API를 추가했다.

Changes

프로젝트 공지 기능

Layer / File(s) Summary
공지 계약과 도메인 상태
src/main/java/com/slatto/domain/project/dto/*Notice*.java, src/main/java/com/slatto/domain/project/entity/ProjectNotice.java, src/main/java/com/slatto/domain/project/exception/ProjectErrorCode.java
공지 생성·수정 요청 검증과 목록·상세 응답 구조를 추가하고, 엔티티의 생성·수정·소프트 삭제 및 작성자 확인 동작을 구현했다.
공지 저장소와 서비스 흐름
src/main/java/com/slatto/domain/project/repository/ProjectNoticeRepository.java, src/main/java/com/slatto/domain/project/service/ProjectNoticeService.java
활성 공지의 커서 기반 목록·단건 조회를 추가하고, 프로젝트 접근 및 작성자·관리자 권한을 검증하면서 공지 CRUD를 처리한다.
공지 REST API 노출
src/main/java/com/slatto/domain/project/controller/ProjectNoticeController.java
X-USER-ID 헤더와 요청 데이터를 받아 공지 조회, 등록, 수정, 삭제 엔드포인트를 서비스에 위임하고 ApiResponse로 반환한다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant ProjectNoticeController
  participant ProjectNoticeService
  participant ProjectNoticeRepository
  Client->>ProjectNoticeController: 프로젝트 공지 API 요청
  ProjectNoticeController->>ProjectNoticeService: 사용자 ID와 공지 요청 전달
  ProjectNoticeService->>ProjectNoticeRepository: 활성 공지 조회 또는 저장
  ProjectNoticeRepository-->>ProjectNoticeService: 공지 데이터 반환
  ProjectNoticeService-->>ProjectNoticeController: 공지 응답 생성
  ProjectNoticeController-->>Client: ApiResponse 반환
Loading

Possibly related PRs

  • SLAT-TO/SLAT-TO-BE#19: ProjectAccessValidator를 통한 프로젝트 접근 검증 흐름과 연결된다.
🚥 Pre-merge checks | ✅ 2 | ❌ 3

❌ Failed checks (3 warnings)

Check name Status Explanation Resolution
Title check ⚠️ Warning 제목은 초대 링크 API 구현을 말하지만 실제 변경은 프로젝트 공지 API 추가라서 변경 내용과 맞지 않습니다. 프로젝트 공지 기능이 드러나도록 제목을 예: 'feat: 프로젝트 공지 API 구현'처럼 실제 변경 사항에 맞게 수정하세요.
Description check ⚠️ Warning 작업 내용은 충분하지만 관련 이슈 연결 형식과 PR 체크리스트가 없어 템플릿 요구사항을 충족하지 못합니다. ## 🔗 관련 이슈에 Closes #번호 형식으로 이슈를 추가하고, ## ✅ PR 체크리스트 섹션과 체크 항목을 채워주세요.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands.

@chazy-d
chazy-d requested review from guingguing, kcleverp, sangwon02 and young0206 and removed request for guingguing, kcleverp, sangwon02 and young0206 July 20, 2026 04:50
@sangwon02
sangwon02 merged commit 5a6a9e4 into develop Jul 20, 2026
2 checks passed
@chazy-d chazy-d changed the title feat: 프로젝트 초대 링크 API 구현 feat: 프로젝트 공지 대시보드 crud 구현 Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature 새로운 기능 추가

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants