Skip to content

refactor(forms): centralize validation with zod mini - #82

Merged
Turtle-Hwan merged 5 commits into
mainfrom
feat/zod-mini-validation
Aug 10, 2026
Merged

refactor(forms): centralize validation with zod mini#82
Turtle-Hwan merged 5 commits into
mainfrom
feat/zod-mini-validation

Conversation

@Turtle-Hwan

@Turtle-Hwan Turtle-Hwan commented Aug 9, 2026

Copy link
Copy Markdown
Owner

변경 사항

  • 링크, 건국대 이메일·인증코드, Todo, eCampus 자격 증명, QR URL의 수동 검증을 zod mini 스키마로 통합했습니다.
  • 소비처는 safeParse 결과의 정제된 값을 사용하도록 바꿔 중복 trim과 조건문을 제거했습니다.
  • 링크 이름 최대 길이는 스키마·두 Editor 입력의 안내문·maxLength가 하나의 상수를 공유하도록 통합했습니다.
  • 스키마 회귀 테스트와 test:forms 명령을 추가했습니다.

입력 정책

  • 기존 오류 문구와 제약을 유지합니다.
  • 이메일과 QR URL의 앞뒤 공백은 의도적으로 제거합니다.
  • 건국대 이메일 아이디는 기존처럼 연속된 점(a..b)을 허용합니다.
  • 파일 MIME 검사와 서버 응답 오류 처리는 스키마로 바꾸지 않고 기존 경계를 유지합니다.

Frontend fundamentals

  • Cohesion: 링크 이름 제한을 단일 상수로 두어 검증, 입력 제한, 안내 문구가 함께 변경됩니다. 정확히 최대 길이와 초과 길이를 테스트합니다.
  • Coupling: 순수 스키마를 각 폼이 직접 소비합니다. 이를 위해 새 Context·공용 Hook·prop 전달 계층을 추가하지 않아 기능 간 결합을 늘리지 않았습니다.
  • Predictability: 스키마는 검증·정제만 수행하고, toast·API·storage 같은 부수 효과는 각 폼 컴포넌트에 남겨 두었습니다. 정제된 값은 성공 경로에서만 소비합니다.
  • Readability: 제출 흐름은 safeParse → 오류 표시 → 정제된 값 소비 순서를 유지하며, 회귀 테스트는 tests/forms에 기능별로 분리했습니다.

검증

  • pnpm run test:forms
  • pnpm run test:feedback
  • pnpm run test:todo
  • pnpm run test:timetable
  • pnpm run lint
  • pnpm run build:local
  • pnpm run build:gh-pages

수동 확인

  • 빌드된 unpacked extension을 Chrome 내부 확장 관리 화면에서 직접 제어하려 했으나 현재 브라우저 제어 정책상 chrome://extensions 탭을 자동 조작할 수 없어 수행하지 못했습니다. PR 빌드 산출물은 생성됐습니다.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 9, 2026

Copy link
Copy Markdown

Deploying linku with  Cloudflare Pages  Cloudflare Pages

Latest commit: a4143f8
Status:🚫  Build failed.

View logs

@Turtle-Hwan
Turtle-Hwan marked this pull request as ready for review August 10, 2026 11:32
@Turtle-Hwan
Turtle-Hwan merged commit f876c92 into main Aug 10, 2026
1 of 2 checks passed
@Turtle-Hwan
Turtle-Hwan deleted the feat/zod-mini-validation branch August 10, 2026 11:32
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.

1 participant