커뮤니티
공지 · 후기 · 합격노트 · 문의 · FAQ. 네 게시판이 같은 규칙을 쓴다.
:8080
클래스
15
포트
1
interface
엔드포인트
11
화면
10
가드레일
27
critical 8
이 도메인의 자리
100%휠로 확대 · 끌어서 이동
타입 구조 (15)
Spring 소스를 직접 읽어 그린다. 계층 사이 화살표만 그렸다 — 타입 하나하나를 이으면 읽을 수 없다. 파란 테두리가 포트(interface)다.
100%휠로 확대 · 끌어서 이동
app 3domain 8infrastructure 2web 2포트 (1) — 도메인이 바깥에 요구하는 것
도메인은 DB 도 HTTP 도 모른다. 필요한 것을 인터페이스로 선언하고, infrastructure 가 그것을 구현한다. 의존이 뒤집히는 지점이다.
| 이름 | 하는 일 | 메서드 |
|---|---|---|
BoardRepositorydomain | - |
도메인 모델 (7)
BoardDraftrecord | 관리자가 쓰는 글. |
BoardPostrecord | 게시글. |
BoardSortenum | 정렬 기준. |
BoardTypeenum | 게시판 종류. |
NewQnaPostrecord | 새 문의. |
QnaCategoryenum | 문의 분류. |
QnaStatusenum | 문의 처리 상태. |
유스케이스 (3)
AdminBoardUseCase114줄 | 관리자 게시판. PageResult()list()detail()create()update()delete()setVisible()answerQna() |
BoardQueryUseCase54줄 | 게시판 조회. PageResult()list()detail() |
WriteQnaUseCase46줄 | 문의 등록. write()Command() |
엔드포인트 (11)
100%휠로 확대 · 끌어서 이동
| 메서드 | 경로 | 컨트롤러 |
|---|---|---|
GET | /api/community/admin/{board}관리자 | CommunityController |
GET | /api/community/admin/{board}/{id}관리자 | CommunityController |
POST | /api/community/admin/qna/{id}/answer관리자 | CommunityController |
POST | /api/community/admin/{board}관리자 | CommunityController |
POST | /api/community/admin/{board}/{id}관리자 | CommunityController |
DELETE | /api/community/admin/{board}/{id}관리자 | CommunityController |
POST | /api/community/admin/{board}/{id}/visible관리자 | CommunityController |
GET | /api/community/qna/categories | CommunityController |
POST | /api/community/qna | CommunityController |
GET | /api/community/{board} | CommunityController |
GET | /api/community/{board}/{id} | CommunityController |
화면 흐름 (8개 화면)
이 도메인이 받는 화면끼리의 이동입니다. 다른 도메인으로 나가는 이동까지 함께 보려면 화면 흐름 → 커뮤니티 으로 갑니다.
100%휠로 확대 · 끌어서 이동
이 도메인을 쓰는 화면 (10)
critical 가드레일 (8)
board-sort-whitelist정렬 파라미터에 임의 컬럼명을 넣어도 SQL 에 그대로 들어가면 안 된다.board-search-injection-safe검색어에 따옴표·SQL 예약어를 넣어도 정상 동작하고 오류가 나면 안 된다.board-detail-matches-server-shape상세 화면이 기대하는 응답 구조와 서버가 주는 구조가 같아야 한다.board-content-xss-safe본문 HTML 에 스크립트가 들어 있어도 실행되면 안 된다.qna-write-requires-login비로그인 상태로 작성 화면에 머무를 수 없고, API 직접 호출도 거부돼야 한다.qna-writer-from-token작성자를 요청 본문으로 지정할 수 없어야 한다.qna-writer-from-token작성자를 요청 본문으로 지정할 수 없어야 한다. 이름 · 아이디는 토큰에서만 온다.qna-write-requires-login비로그인 상태로 문의 작성 API 를 호출하면 거부돼야 한다.