Skip to content

[global] 성적 정규화·OCR 입력 경로 회귀 테스트 추가 - #506

Merged
s2yeons merged 7 commits into
developfrom
test/497-score-normalization-ocr-regression
Sep 30, 2026
Merged

s2yeons merged 7 commits into
developfrom
test/497-score-normalization-ocr-regression

Conversation

@s2yeons

@s2yeons s2yeons commented Sep 28, 2026 •

Copy link
Copy Markdown
Member

개요 💡

#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을 새로 도입해야 하는데, 이 결정을 먼저 내리고 진행하는 게 맞다고 판단하였습니다. 도입 여부와 시점에 대한 의견 부탁드립니다.

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에 문서화한다.
@vercel

vercel Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
hellogsm-client-26 Ready Ready Preview Sep 29, 2026 7:12am UTC
hellogsm-client-26-admin Ready Ready Preview Sep 29, 2026 7:12am UTC

Request Review

@pr-agent-demo pr-agent-demo Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 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 junjuny0227 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#497 요구사항 기준으로 변경 요청드립니다. 정규화·출결 재배열의 순수 함수 테스트와 CI 실행은 확인했습니다. 다만 OCR 결과가 폼에 반영된 뒤 실제 임시저장/제출 페이로드로 이어지는 경로는 현재 테스트하지 않아 핵심 회귀 사례가 보호되지 않습니다. README의 E2E 사전 조건도 설정과 맞춰 주세요. 로컬 pnpm test, pnpm lint, pnpm check-types, 변경 파일 Prettier 검사는 통과했습니다. 로컬 전체 빌드는 API rewrite 환경변수가 없어 실패했지만 해당 HEAD의 CI 빌드·스모크 E2E는 성공했습니다.

Comment thread README.md Resolved

@junjuny0227 junjuny0227 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다

@s2yeons
s2yeons merged commit 1d0cc9b into develop Sep 30, 2026
5 checks passed
@s2yeons
s2yeons deleted the test/497-score-normalization-ocr-regression branch September 30, 2026 00:22

This branch was successfully deployed

2 active deployments
Preview – hellogsm-client-26 — 1ad7bdba Deployed Sep 29, 2026 by vercel[bot]
Preview – hellogsm-client-26-admin — 1ad7bdba Deployed Sep 29, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants