공지 상세
NOTICE-DETAIL · /notice/[id]
기능
1
API 호출
1
가드레일
5
id 가 테스트 이름
구현 단계
5 / 5
개발 스펙
이 화면에서 할 수 있어야 하는 것 (2)
- 공지 본문과 첨부파일을 본다.
- 목록으로 돌아간다.
비즈니스 규칙 (2)
- 상세를 열면 조회수가 1 오른다.근거: nt_view.php:17
- 첨부는 file1 · file2 두 개까지.
API (1)
| 메서드 | 경로 | 권한 | 모듈 · 설명 |
|---|---|---|---|
GET | /api/community/notices/{id} | 공개 | 공지 상세. 조회수를 올린다. domains:community:community-web404 NOTICE_NOT_FOUND |
가드레일 (5) — id 가 곧 테스트 이름이다
| id | 반드시 만족해야 하는 것 | 등급 |
|---|---|---|
board-detail-matches-server-shape | 상세 화면이 기대하는 응답 구조와 서버가 주는 구조가 같아야 한다. 화면은 {글, 이전, 다음} 을 기대했는데 서버는 글 하나만 줘서 상세가 전부 클라이언트 예외로 죽은 적이 있다. | critical |
unknown-path-is-404 | 없는 경로는 404 다. 500 이면 장애로 오해한다. catch-all 예외 핸들러가 NoResourceFound 까지 삼켜 500 을 내던 적이 있다. | high |
board-hit-increments-once | 상세 조회 시 조회수가 정확히 1 올라야 한다. | normal |
board-detail-404 | 없는 id 로 열면 500 이 아니라 404 여야 한다. | high |
board-content-xss-safe | 본문 HTML 에 스크립트가 들어 있어도 실행되면 안 된다. 레거시 데이터에 관리자가 넣은 HTML 이 그대로 들어 있다. | critical |
구현 계획 (5/5)
- ●BoardType · BoardSort · BoardPost · BoardRepository
community-domain - ●BoardQueryUseCase — 목록·상세 공용
community-app - ●BoardTable · BoardRepositoryAdapter
community-infrastructure - ●/api/community/notices/{id} 구현
community-web - ●Next.js 를 BFF 로 전환 — Prisma 직접 접근 제거
wvctesol
서버 사이드 구현 계획 — 자바 객체별 요구사항 (5/5)
| 객체 | 모듈 | 책임 · 지켜야 할 것 |
|---|---|---|
● BoardTypeenum | community-domain | 게시판 종류.
|
● BoardSortenum | community-domain | 정렬 기준. 열거형이 곧 화이트리스트다.
|
● BoardTablerecord | community-infrastructure | 게시판별 테이블·컬럼 차이를 모아 둔 곳.
|
● BoardRepositoryAdapterclass | community-infrastructure | 다섯 테이블을 하나의 포트로 조회.
|
● BoardQueryUseCaseservice | community-app | 목록·상세 조회.
|
테스트 방법 (5)
| 가드레일 | 종류 | 확인 방법 |
|---|---|---|
board-detail-matches-server-shape | e2e | 목록에서 첫 글을 눌러 상세까지 이동 → 자바스크립트 오류 0, 오류 화면 없음 |
unknown-path-is-404 | integration | GET /api/community/no-such-board → 404 |
board-hit-increments-once | e2e | 상세 조회 전후 hit 값 차이가 정확히 1 |
board-detail-404 | e2e | 없는 id 조회 → 404 |
board-content-xss-safe | e2e | <script>alert(1)</script> 가 든 본문을 열어도 다이얼로그가 뜨지 않음 |
스냅샷

기능 목록 (1)
데이터
- ·API 조회
/api/community/notices/${id}