관리자 콘솔

원본 admin/ 을 wvctesol-admin(:3896)으로 옮기는 중입니다. API 서버는 사용자 앱과 공유합니다.

메뉴
13
원본 left_menu.php 기준
옮긴 화면
13 / 13
관리자 API
21
가드레일
31
critical 9

이관 진행도

100%

원본 admin/ 아래 PHP 는 143개지만, 좌측 메뉴가 가리키는 실제 화면은 13개입니다. 나머지는 백업과 폐기된 것입니다.

개발 스펙 (8)

메뉴 13개를 성격이 같은 것끼리 묶어 8개로 적었습니다. 요건 · 규칙 · API · 가드레일 · 구현 계획 · 자바 설계 · 테스트 방법이 들어 있습니다.

질문답변

ADMIN-QNAwvctesol-admin/qna완료

이 화면에서 할 수 있어야 하는 것 (3)

  • 회원이 남긴 문의에 답변한다.
  • 답변대기 건수를 늘 보여 준다 — 밀리면 운영이 밀린다.
  • 답을 비우고 저장하면 다시 답변대기로 돌아간다.

비즈니스 규칙 (4)

  • 관리자 목록은 숨긴 글도 보여 준다. 공개 조회와 유스케이스를 나눈 이유다.
  • 상태를 따로 고르게 하지 않는다 — 답이 있으면 end, 비우면 apply.
    근거: qa_proc.php:152
  • 관리자는 문의를 새로 쓸 수 없다. 회원이 내는 글이라 작성자가 뒤섞인다.
  • 수정일 컬럼이 moddate 다. apply 테이블만 mod_date 를 쓴다.

API (3)

메서드경로권한모듈 · 설명
GET/api/community/admin/{board}관리자
관리자 목록. 숨김 조건 없이 전부. status 로 거른다.
domains:community:community-web
GET/api/community/admin/{board}/{id}관리자
관리자 상세. 숨긴 글도 돌려준다.
domains:community:community-web
POST/api/community/admin/qna/{id}/answer관리자
답변 저장. 상태는 답 유무로 정해진다.
domains:community:community-web
404 POST_NOT_FOUND

가드레일 (2) — id 가 곧 테스트 이름이다

id반드시 만족해야 하는 것등급
qna-answer-status-follows-answer
답이 있으면 답변완료, 비우면 답변대기여야 한다. 둘이 어긋나면 안 된다.
high
qna-admin-cannot-write
관리자가 문의를 새로 쓸 수 없어야 한다.
회원이 내는 글이라 대신 쓰면 작성자가 뒤섞인다.
normal

구현 계획 (4/4)

  1. QnaStatus — 답 유무로 상태를 정한다community-domain
  2. AdminBoardUseCase — 숨긴 글도 보는 별도 유스케이스community-app
  3. listForAdmin · findAny · answerQnacommunity-infrastructure
  4. 목록 · 상세 · 답변 폼wvctesol-admin

서버 사이드 구현 계획 — 자바 객체별 요구사항 (2/2)

객체모듈책임 · 지켜야 할 것
QnaStatus
enum
community-domain
문의 처리 상태.
  • APPLY(답변대기) · END(답변완료). 원본 $_qa_status_font_arr 그대로다.
  • of(answer) 가 답 유무로 상태를 정한다 — 관리자가 따로 고르지 않는다.
AdminBoardUseCase
service
community-app
관리자 게시판 조회·쓰기.
  • 조회 유스케이스와 나눈다 — 관리자는 숨긴 글도 봐야 한다.
  • 같은 메서드에 플래그를 더하면 공개 조회에서 실수로 켜질 수 있다.
  • QNA 는 쓰기를 막는다.

테스트 방법 (2)

가드레일종류확인 방법
qna-answer-status-follows-answere2e답변 저장 → 답변완료, 비우고 저장 → 답변대기
qna-admin-cannot-writeintegrationPOST /api/community/admin/qna → 400 NOT_WRITABLE

운영

메뉴원본원본 줄수옮긴 파일상태
관리자 관리
/admins
admin/admin/ad_list.php443
  • src/app/(console)/admins/page.tsx
완료
회원 관리
/members
admin/member/mb_list.php529
  • src/app/(console)/members/[id]/page.tsx
  • src/app/(console)/members/page.tsx
완료
배너 관리
/banners
admin/banner/banner_list.php187
  • src/app/(console)/banners/page.tsx
완료

게시판

메뉴원본원본 줄수옮긴 파일상태
공지사항
/notices
admin/board/nt_list.php159
  • src/app/(console)/notices/[id]/page.tsx
  • src/app/(console)/notices/new/page.tsx
  • src/app/(console)/notices/page.tsx
완료
수강후기
/reviews
admin/board/sty_list.php169
  • src/app/(console)/reviews/[id]/page.tsx
  • src/app/(console)/reviews/new/page.tsx
  • src/app/(console)/reviews/page.tsx
완료
합격노트
/pass-notes
admin/board/passnote_list.php248
  • src/app/(console)/pass-notes/[id]/page.tsx
  • src/app/(console)/pass-notes/new/page.tsx
  • src/app/(console)/pass-notes/page.tsx
완료
질문답변
/qna
admin/board/qa_list.php190
  • src/app/(console)/qna/[id]/page.tsx
  • src/app/(console)/qna/page.tsx
완료
상담신청
/applications
admin/board/ap_list.php621
  • src/app/(console)/applications/[id]/page.tsx
  • src/app/(console)/applications/page.tsx
완료
자주듣는 질문
/faqs
admin/board/faq_list.php203
  • src/app/(console)/faqs/[id]/page.tsx
  • src/app/(console)/faqs/new/page.tsx
  • src/app/(console)/faqs/page.tsx
완료

수강 · 결제

메뉴원본원본 줄수옮긴 파일상태
결제리스트
/payments
admin/payment/payment_list.php244
  • src/app/(console)/payments/page.tsx
완료
TESOL Unit
/units/tesol
admin/unit/unit_list.php75
  • src/app/(console)/units/tesol/page.tsx
완료
TEC Unit
/units/tec
admin/unit/unit_list_tec.php75
  • src/app/(console)/units/tec/page.tsx
완료
레벨테스트
/level-tests
admin/unit/level_test_list.php92
  • src/app/(console)/level-tests/page.tsx
완료