커뮤니티

공지 · 후기 · 합격노트 · 문의 · FAQ. 네 게시판이 같은 규칙을 쓴다.

:8080
클래스
15
포트
1
interface
엔드포인트
11
화면
10
가드레일
27
critical 8

이 도메인의 자리

100%휠로 확대 · 끌어서 이동

이어진 곳

이 도메인이 쓰는 것 →

없다. 다른 도메인을 모른다.

← 이 도메인을 쓰는 곳

없다.

공용 모듈
common-appcommon-domaincommon-infrastructurecommon-securitycommon-utilscommon-web

다루는 테이블

원본 대응 customer/* · qna/* · passnote/* · review/*

타입 구조 (15)

Spring 소스를 직접 읽어 그린다. 계층 사이 화살표만 그렸다 — 타입 하나하나를 이으면 읽을 수 없다. 파란 테두리가 포트(interface)다.

100%휠로 확대 · 끌어서 이동
app 3domain 8infrastructure 2web 2

포트 (1) — 도메인이 바깥에 요구하는 것

도메인은 DB 도 HTTP 도 모른다. 필요한 것을 인터페이스로 선언하고, infrastructure 가 그것을 구현한다. 의존이 뒤집히는 지점이다.

이름하는 일메서드
BoardRepository
domain
-

도메인 모델 (7)

BoardDraft
record
관리자가 쓰는 글.
BoardPost
record
게시글.
BoardSort
enum
정렬 기준.
BoardType
enum
게시판 종류.
NewQnaPost
record
새 문의.
QnaCategory
enum
문의 분류.
QnaStatus
enum
문의 처리 상태.

유스케이스 (3)

AdminBoardUseCase
114
관리자 게시판.
PageResult()list()detail()create()update()delete()setVisible()answerQna()
BoardQueryUseCase
54
게시판 조회.
PageResult()list()detail()
WriteQnaUseCase
46
문의 등록.
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/categoriesCommunityController
POST/api/community/qnaCommunityController
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 를 호출하면 거부돼야 한다.