TESOL 시험 결과

CLASS-UNIT-RESULT-DETAIL · /my-class/unit-result/[unit]/[kind]

기능
3
API 호출
0
가드레일
2
id 가 테스트 이름
구현 단계
5 / 5
완료시험 · 평가wvctesol-api :8080로그인 필요서버 컴포넌트동적 라우트30

개발 스펙

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

  • 친 시험의 문항별 정오와 총점을 본다.
  • 오답은 빨간색, 내가 고른 보기는 굵게 표시한다.
  • 아직 안 친 차수를 열면 응시 안내가 나온다.

비즈니스 규칙 (2)

  • 차수 합격 여부는 그 차수 점수로 판정한다.
    근거: quiz_result.pass 는 유닛 단위라 차수 판정에 쓸 수 없다.
  • 유닛을 다른 차수에서 통과했다면 별도 배지로 알린다.

API (1)

메서드경로권한모듈 · 설명
GET/api/assessment/results/{course}/{unit}/{kind}수강생
채점 결과. 정답 · 내 답안 · 문항별 점수를 함께 내려준다.
domains:assessment:assessment-web
응답: { unitTitle, score, passed, unitPassed, items: [{ number, text, choices, picked, correct, point }] }
404 NOT_TAKEN — 해당 차수 미응시

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

id반드시 만족해야 하는 것등급
result-own-only
남의 응시 결과를 조회할 수 없어야 한다. 항상 로그인한 본인 기록만 나온다.
critical
result-kind-level-verdict
0점인 차수가 PASS 로 보이면 안 된다. 배지는 그 차수 점수 기준이어야 한다.
quiz_result.pass 를 그대로 쓰다가 실제로 났던 버그.
high

구현 계획 (5/5)

  1. findAnswers 포트 · UnitProgressassessment-domain
  2. GetExamResultUseCase — 차수 기준 합격 판정assessment-app
  3. quiz_result_answer 조회 — 콤마 분해assessment-infrastructure
  4. GET /results/{course}/{unit}/{kind}assessment-web
  5. Next.js 를 BFF 로 전환 — Prisma 직접 접근 제거wvctesol

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

객체모듈책임 · 지켜야 할 것
GetExamResultUseCase
service
assessment-app
채점 결과 조회.
  • passed 는 그 차수 점수로 판정한다 — quiz_result.pass 를 그대로 쓰면 0점 차수가 PASS 로 보인다.
  • unitPassed 를 따로 내려 "다른 차수에서 통과" 를 화면이 구분할 수 있게 한다.
  • 토큰 주인의 기록만 읽는다. memberId 를 파라미터로 받지 않는다.
  • 끝난 시험이므로 정답을 함께 내려준다 — 응시 화면과 반대다.
ExamResultView
record
assessment-app
결과 응답 DTO.
  • ResultChoice 에는 correct 가 있다. 응시용 PaperChoice 와 구분해 실수로 섞이지 않게 한다.
  • passScore 를 함께 내려 화면이 "합격 70점" 을 하드코딩하지 않게 한다.

테스트 방법 (2)

가드레일종류확인 방법
result-own-onlye2eA 계정 토큰으로 B 계정의 결과를 조회 시도 → 404/403, 본인 기록만 반환
result-kind-level-verdicte2eUNIT2 가 A 0점·B 100점일 때 A 결과 화면 → FAIL 배지 + "다른 차수 통과" 안내

스냅샷

로그인 세션으로 촬영한 실제 화면입니다.

CLASS-UNIT-RESULT-DETAIL 스냅샷

기능 목록 (3)

인증
  • ·세션 확인
  • ·로그인 필요proxy 가 /login 으로 보냄
하드코딩
  • ·하드코딩 데이터tabs

화면 이동

← 이 화면으로 오는 곳
이 화면에서 가는 곳 →

연결

API

직접 호출하는 API 가 없습니다

소스
src/app/my-class/unit-result/[unit]/[kind]/page.tsx