Repository navigation
[global] 성적 정규화·OCR 입력 경로 회귀 테스트 추가 - #506
Conversation
ocr-lambda와 동일하게 vitest/jest 대신 tsx + node:test로 통일한다. getUsedAchievementFields, normalizeAchievements 등 순수 로직 검증에 새 테스트 프레임워크가 필요 없다.
졸업유형(CANDIDATE/GRADUATE/GED) x 학년제(자유학년제/자유학기제/미정) 조합별로 실제 사용되는 학기 필드를 검증한다. liberalSystem이 아직 정해지지 않았을 때 자유학기제로 취급하는 동작도 함께 커버한다.
normalizeAchievements를 별도 모듈로 분리해 단위 테스트가 가능하게 한다. 자유학년제 졸업자가 OCR 적용 후 1-1·1-2에 값이 남아 0으로 제출되던 회귀 케이스를 포함해 미사용 학기 null 처리를 검증한다.
서버가 학년 단위로 내려주는 attendanceDays를 폼이 기대하는 항목 단위 순서로 바꾸는 reorderAttendanceDaysForForm을 분리해 단위 테스트로 커버한다.
네트워크/외부 OCR에 의존하지 않는 pnpm test 명령과 패키지별 실행 방법, client 앱 구동이 필요한 pnpm test:e2e를 README에 문서화한다.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
-
Overview
-
성적 정규화·출결 재배열 로직을 별도 모듈로 분리하고, 자유학년제/자유학기제·OCR 입력 경로에 대한 회귀 테스트를 추가합니다.
-
packages/constants,packages/ui에tsx + node:test기반 테스트 스크립트를 도입하고 README에 실행 방법을 문서화합니다. -
Intent
-
#497에서 지적된 OCR 자동 입력 후 미사용 학기 값이 0으로 제출되는 회귀 버그를 테스트로 고정하고 재발을 방지하는 것이 목적입니다. -
네트워크/외부 OCR에 의존하지 않는 순수 로직 테스트 범위만 제한하여 CI에서 안정적으로 실행되도록 했습니다.
-
Risk
-
전체적으로 낮음~중간 수준입니다.
-
주요 확인 포인트:
StepWrapper,Step4Register에서 함수를 분리한 뒤 기존 동작(성적 정규화, 출결 재배열, 페이로드 형태)이 그대로 유지되는지.tsx --test src/**/*.test.ts스크립트가 CI/로컬 셸 환경에서 모든 테스트 파일을 정확히 수집하는지.- 신규 devDependencies(
tsx,@types/node)가 기존 빌드/타입스크립트 설정과 충돌하지 않는지. react-hook-form과 강하게 결합된 OCR 반영 로직은 이번 PR에서 제외되었으므로, 해당 부분의 회귀 테스트 부재는 의도적으로 남겨진 범위인지 확인 필요.
0 inline comment(s)
junjuny0227
left a comment
There was a problem hiding this comment.
#497 요구사항 기준으로 변경 요청드립니다. 정규화·출결 재배열의 순수 함수 테스트와 CI 실행은 확인했습니다. 다만 OCR 결과가 폼에 반영된 뒤 실제 임시저장/제출 페이로드로 이어지는 경로는 현재 테스트하지 않아 핵심 회귀 사례가 보호되지 않습니다. README의 E2E 사전 조건도 설정과 맞춰 주세요. 로컬 pnpm test, pnpm lint, pnpm check-types, 변경 파일 Prettier 검사는 통과했습니다. 로컬 전체 빌드는 API rewrite 환경변수가 없어 실패했지만 해당 HEAD의 CI 빌드·스모크 E2E는 성공했습니다.
개요 💡
#497에서 요청한 대로, 최근 변경된 자유학년제·미사용 학기 성적 정규화와OCR자동 입력 후 원서 저장/제출 경로를 회귀 테스트로 보호하였습니다. 네트워크나 외부OCR에 의존하지 않는 순수 로직 테스트로 범위를 한정하였습니다.작업내용 ⌨️
packages/constants의getUsedAchievementFields에 대해 졸업유형(CANDIDATE/GRADUATE/GED) × 학년제(자유학년제/자유학기제/미정) 조합별 사용 학기 판정 회귀 테스트를 추가하였습니다.StepWrapper에 인라인으로 있던 페이로드 정규화 로직을normalizeAchievements.ts로 분리하고, 자유학년제 졸업자가OCR적용 후 1-1·1-2에 값이 남아 0으로 제출되던 실제 회귀 케이스를 포함한 테스트를 추가하였습니다.Step4Register의reorderAttendanceDaysForForm을 별도 모듈로 분리하고, 서버의 학년 단위 출결일수 배열을 폼이 기대하는 항목 단위 순서로 재배열하는 로직을 회귀 테스트로 검증하였습니다.packages/constants,packages/ui에apps/ocr-lambda와 동일한 방식(tsx+node:test)으로test스크립트를 도입하였습니다. 새로운 테스트 러너(vitest/jest)는 도입하지 않았습니다.README.md에 네트워크/외부OCR에 의존하지 않는pnpm test명령과 패키지별 실행 방법,pnpm test:e2e실행 방법을 문서화하였습니다.관련 이슈 🚨
#497
리뷰 요청사항 👀
Step4Register의handleApplyOcrAchievement(OCR결과를react-hook-form상태에 직접 반영하는 부분)는react-hook-form클로저와 강하게 얽혀 있어 이번 범위에서 제외하였습니다. 이 부분까지 회귀 테스트로 커버하려면packages/ui에React Testing Library/jsdom을 새로 도입해야 하는데, 이 결정을 먼저 내리고 진행하는 게 맞다고 판단하였습니다. 도입 여부와 시점에 대한 의견 부탁드립니다.