주말 개발 노트 (3.8 - 3.9)

표 문항 데이터 구조
CMS
BlankQuizV2NodeBlock은 TableAnswerBlock의 부모 관계로서 publish 되어야 한다.
LMS - 미리보기
Study 렌더링
content.json 그대로 렌더링 되면 된다.
Result 렌더링
content.json 그대로 렌더링 되면서
BlankQuizV2는 스스로 정답을 계산해 렌더링
나머지 표는 그대로
estimation의 경우
BlankQuizV2NodeBlock이 스스로 계산되고
상위의 TableAnswerBlock은 하위 블록들의 결과가 모두 맞다면 정답, 아니면 오답으로 처리한다.
B2C
estimation의 경우
BlankQuizV2NodeBlock이 스스로 계산되고
상위의 TableAnswerBlock은 하위 블록들의 결과가 모두 맞다면 정답, 아니면 오답으로 처리한다.

미리보기 채점의 경우

채점 방법
채점 준비
study.learning 상태에서 답안을 입력
readyForSubmit 상태에서 notReadyForSubmit guard를 실행
false라면 readyForSubmit 상태가 됨.
각 Node 채점
readyForSubmit 상태에서 SUBMIT이 발동되면, 'evaluateEstimationResults', 'estimationStudyInputToResult’ 액션 발동
evaluateEstimationResults는 editor의 모든 Node 블록을 불러와 evaluateAnswerResult 메소드를 실행시킨다.
evaluateAnswerResult 메소드가 있는 block만 estimationAnswerResults에 결과가 담긴다.
각 block
Node 결과 동기화 - estimationStudyInputToResult
estimationStudyInputToResult에선 부모 - 자식 관계로 이어져있는 Node 결과를 이어 통합해준다. (ex. H1 - H2 - BlankBlockV2 → 여기서 BlankBlockV2가 맞았다면, H2 - H1도 맞은 것이 됨. = 최종 결과 chip이 H1이 가진 결과로 판단)

표 문항 답안 추가 방안

TableAnswerBlock이 가진 BlankBlockV2NodeBlockEstimation은 가상의 것. 따라서 editor의 Node 실체가 존재하지 않음. = BlankQuizV2NodeBlock의 evaluateAnswerResult에 의한 채점은 불가능
하지만, BlankQuizV2NodeBlock의 evaluateAnswerResult 메소드를 재활용하는 것이 가장 이상적
실체 Node를 만들지 않는 이상 방법이 없음…
백엔드의 Estimation 결과는 TableAnswerNodeEstimationResult로 주어짐. = 우선은 TableAnswerNode가 계산해 TableAnswerNodeEstimationResult로 가지고 있는 것이 백엔드와의 sync면에서 좋을 듯.
estimation 입력은 현수님의 설계대로 잘 만들어지고 있음. (by. TableAnswerNode의 extractUserInput)
하지만, Estimation의 Id가 짤려, 학생 정답 입력 Estimation을 완성하지 못하고 있음 → 문의 필요
백엔드에서 받아들일 수 있는 Id 길이 제한이 36자 = 가상 id도 36자로 맞춤

BlankQuizV2의 studentAnswer

제출하면 studentAnswer가 없어지는 오류가 있음. = 각 블록의 정답, 오답 표시가 안되고 있음 → 성대님 필요
loadUserSavedData에서 해결 가능