문의하기
QNA-QA-LIST-WRITE · /qna/qa-list/write
기능
5
API 호출
0
가드레일
3
id 가 테스트 이름
구현 단계
5 / 5
개발 스펙
이 화면에서 할 수 있어야 하는 것 (3)
- 로그인한 회원이 분류 · 제목 · 내용을 넣어 문의를 남긴다.
- 분류 선택지는 서버에서 받아 온다 — 화면이 하드코딩하지 않는다.
- 등록하면 목록으로 돌아가고 방금 쓴 글이 보인다.
비즈니스 규칙 (5)
- 비로그인은 작성할 수 없다.근거: qna/qa_proc.php:5 login_check()
- 분류는 join(가입문의) · tesol(테솔문의) 둘뿐이다.근거: _lib/_Env.php:247~249
- status=apply · regtype=M 으로 저장된다. 관리자가 답을 달면 end 가 된다.근거: qa_proc.php:79~80
- 작성자 이름은 토큰에서, regid 는 저장 시 member 에서 끌어온다. 요청으로 받지 않는다.
- 제목 · 내용 · 분류가 비면 등록되지 않는다.근거: qa_proc.php:29~31 fieldCheck
API (2)
| 메서드 | 경로 | 권한 | 모듈 · 설명 |
|---|---|---|---|
GET | /api/community/qna/categories | 공개 | 분류 선택지. domains:community:community-web |
POST | /api/community/qna | 수강생 | 문의 등록 → { id }. domains:community:community-web401 UNAUTHORIZED 400 INVALID_CATEGORY 400 INVALID_INPUT |
가드레일 (3) — id 가 곧 테스트 이름이다
| id | 반드시 만족해야 하는 것 | 등급 |
|---|---|---|
qna-write-requires-login | 비로그인 상태로 작성 화면에 머무를 수 없고, API 직접 호출도 거부돼야 한다. 원본 qa_proc.php 가 login_check() 로 시작한다. | critical |
qna-writer-from-token | 작성자를 요청 본문으로 지정할 수 없어야 한다. 받으면 남의 이름으로 문의를 낼 수 있다. | critical |
qna-category-whitelist | 분류는 join · tesol 둘뿐이다. 임의 문자열이 저장되면 안 된다. 목록 필터에 영영 걸리지 않는 글이 된다. | high |
구현 계획 (5/5)
- ●QnaCategory · NewQnaPost — 분류를 열거형으로 잠근다
community-domain - ●WriteQnaUseCase — 로그인 확인 후 토큰 주인으로 등록
community-app - ●createQna — NOT NULL 컬럼을 채우고 regid 는 member 에서
community-infrastructure - ●POST /api/community/qna · GET /qna/categories
community-web - ●/qna/qa-list/write 화면과 서버 액션
wvctesol
서버 사이드 구현 계획 — 자바 객체별 요구사항 (2/2)
| 객체 | 모듈 | 책임 · 지켜야 할 것 |
|---|---|---|
● QnaCategoryenum | community-domain | 문의 분류.
|
● WriteQnaUseCaseservice | community-app | 문의 등록.
|
테스트 방법 (3)
| 가드레일 | 종류 | 확인 방법 |
|---|---|---|
qna-write-requires-login | e2e | 비로그인 접근 → 로그인 화면, API 직접 호출 → 401 |
qna-writer-from-token | e2e | 요청에 name·regid 를 실어 등록 → 저장된 작성자가 토큰 주인이다 |
qna-category-whitelist | e2e | category 에 임의 문자열 → 400 INVALID_CATEGORY |
스냅샷
스냅샷이 없습니다. node scripts/snapshot.mjs 로 촬영하세요.
기능 목록 (5)
입력
- ·폼
1개 - ·제출 버튼
1개 - ·입력 필드
1개
액션
- ·서버 액션
submitQna
인증
- ·세션 확인
화면 이동
← 이 화면으로 오는 곳
QNA-QA-LIST/qna/qa-list
이 화면에서 가는 곳 →
QNA-QA-LIST/qna/qa-listAUTH-LOGIN/login
연결
API
직접 호출하는 API 가 없습니다
소스
src/app/qna/qa-list/write/page.tsx