Skip to content

Conversation

@toothlessdev
Copy link
Member

@toothlessdev toothlessdev commented Jul 17, 2025

✅ Linked Issue

🔍 What I did

  • 신청가능학교 조회 API 연동
  • 수험표 사진 업로드 API 연동
  • 모의수능 신청 API 연동
image

🔧 Additional context

2025-07-18.12.16.46.mov

의존성이 많아서 ㅠㅠ 커밋량이 좀많아요
다음작업부터는 잘게쪼개서 PR 올리겠습니다!

🚧 TODO (if any)

  • 추천인 전화번호 검증 API 연동
  • 학력이 N 수생일 경우 학년/학교명 필드 제거
  • Profile Null Assertion 제거, 프로필데이터 없을시 로그인페이지로 리다이렉트

toothlessdev and others added 30 commits July 17, 2025 02:46
@vercel
Copy link

vercel bot commented Jul 17, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
mosu-client ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jul 17, 2025 4:00pm

@github-actions
Copy link

github-actions bot commented Jul 17, 2025

Messages
📖 ✅ PR 제목에 이슈 번호가 포함되어 있습니다.
📖 ✅ PR에 Reviewers가 지정되어 있습니다.
📖 ✅ PR에 라벨이 지정되어 있습니다.
📖 ✅ PR에 Assignees가 지정되어 있습니다.
📖 ✅ package.json에 변경사항이 없습니다.
📖 ✅ 브랜치 이름 'feature#79'이 컨벤션을 따릅니다.
📖 ✅ TypeScript 컴파일이 성공적으로 완료되었습니다.
📖 ✅ ESLint 검사 결과 문제가 없습니다.

📝 추가 및 변경된 파일

총 45개 파일 변경

├── 📂 mosu-admin/
│   └── 📂 src/
│       └── ⚛️ App.tsx
├── 📂 mosu-app/
│   └── 📂 src/
│       ├── 📂 entities/
│       │   ├── 📂 form/
│       │   │   └── 📂 ui/
│       │   │       ├── ⚛️ BirthFieldSet.tsx
│       │   │       ├── ⚛️ ProfileImageFileUpload.tsx
│       │   │       └── ⚛️ SubjectFieldSet.tsx
│       │   └── 📂 profile/
│       │       ├── 📂 services/
│       │       │   ├── 📘 get-profile.ts
│       │       │   └── 📘 can-register-recommender.ts
│       │       └── 📂 contexts/
│       │           └── ⚛️ ProfileContext.tsx
│       ├── 📂 features/
│       │   ├── 📂 apply/
│       │   │   ├── 📂 constants/
│       │   │   │   ├── 📘 form.ts
│       │   │   │   └── 📘 steps.ts
│       │   │   ├── 📂 hooks/
│       │   │   │   ├── ⚛️ useUploadProfileImage.tsx
│       │   │   │   ├── ⚛️ useApplyRequestPayload.tsx
│       │   │   │   └── ⚛️ useAvailableSchool.tsx
│       │   │   ├── 📂 __tests__/
│       │   │   │   └── 📘 ApplyRequestPayloadReducer.test.ts
│       │   │   ├── 📂 contexts/
│       │   │   │   ├── ⚛️ ApplyRequestPayloadContext.tsx
│       │   │   │   └── ⚛️ AvailableSchoolContext.tsx
│       │   │   ├── 📂 models/
│       │   │   │   └── 📘 PersonalInformationSchema.ts
│       │   │   └── 📂 services/
│       │   │       ├── 📘 applyTest.ts
│       │   │       └── 📘 getAvailableSchool.ts
│       │   ├── 📂 payments/
│       │   │   ├── 📂 config/
│       │   │   │   └── 📘 env.ts
│       │   │   ├── 📂 hooks/
│       │   │   │   └── 📘 usePayments.ts
│       │   │   ├── 📂 pipe/
│       │   │   │   ├── 📘 PaymentExceptionHandler.ts
│       │   │   │   ├── 📘 PreparePaymentHandler.ts
│       │   │   │   ├── 📘 index.ts
│       │   │   │   ├── 📘 PaymentModuleHandler.ts
│       │   │   │   └── 📘 ProcessEasyPaymentHandler.ts
│       │   │   ├── 📂 services/
│       │   │   │   ├── 📘 PaymentService.ts
│       │   │   │   ├── 📘 TossPaymentService.ts
│       │   │   │   └── 📘 PaymentService.d.ts
│       │   │   └── 📂 error/
│       │   │       └── 📘 PaymentException.ts
│       │   └── 📂 upload/
│       │       └── 📂 services/
│       │           └── ⚛️ uploadFileToS3.tsx
│       ├── 📂 pages/
│       │   └── 📂 apply/
│       │       └── ⚛️ index.tsx
│       ├── 📂 shared/
│       │   ├── 📂 components/
│       │   │   ├── 📂 ButtonGroup/
│       │   │   │   ├── ⚛️ ButtonGroup.tsx
│       │   │   │   └── ⚛️ ButtonGroupFieldSet.tsx
│       │   │   ├── 📂 Checkbox/
│       │   │   │   └── ⚛️ CheckboxFieldSet.tsx
│       │   │   ├── 📂 FieldMessage/
│       │   │   │   └── ⚛️ ErrorMessage.tsx
│       │   │   ├── 📂 RadioFieldSet/
│       │   │   │   └── ⚛️ RadioFieldSet.tsx
│       │   │   ├── 📂 SelectField/
│       │   │   │   └── ⚛️ SelectField.tsx
│       │   │   └── 📂 Spinner/
│       │   │       └── ⚛️ Spinner.tsx
│       │   ├── 📂 constants/
│       │   │   └── 📘 regex.ts
│       │   └── 📂 utils/
│       │       ├── 📘 zodErrorParser.ts
│       │       └── 📘 parseBirth.ts
│       └── 📂 widgets/
│           └── 📂 apply/
│               ├── ⚛️ ApplyStep1.tsx
│               ├── ⚛️ ApplyStep2.tsx
│               └── ⚛️ ApplyPaymentPending.tsx
└── 📄 yarn.lock

Generated by 🚫 dangerJS against bdd150a

@github-actions
Copy link

✅ Mosu Admin 빌드가 성공적으로 완료되었습니다!

📋 빌드 결과

  • ✅ DangerJS 검사 통과
  • ✅ React 앱 빌드 성공

🚀 다음 단계

코드 리뷰 후 머지하면 프로덕션에 배포됩니다.

gemini-code-assist[bot]

This comment was marked as outdated.

@toothlessdev toothlessdev moved this to 진행중 in mosu-client Jul 17, 2025
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

The code changes introduce API integrations, form handling with react-hook-form, and architectural improvements using getServerSideProps and context splitting. The payment flow refactoring using the Chain of Responsibility pattern is a significant enhancement. The review identified critical and high-severity issues related to hardcoded values and potential null pointer exceptions.

placeholder="이름을 입력해주세요."
required={true}
disabled={true}
value={profileData!.userName}

Choose a reason for hiding this comment

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

critical

The non-null assertion operator (!) is used on profileData. However, profileData can be null if the initial data fetch in getServerSideProps fails. This will cause a runtime crash. Please add a guard clause at the beginning of the component to handle the case where profileData is null, such as rendering a loading state or redirecting to an error page.

@github-actions
Copy link

✅ Mosu Admin 빌드가 성공적으로 완료되었습니다!

📋 빌드 결과

  • ✅ DangerJS 검사 통과
  • ✅ React 앱 빌드 성공

🚀 다음 단계

코드 리뷰 후 머지하면 프로덕션에 배포됩니다.

@github-actions
Copy link

📚 Storybook이 Chromatic에 배포되었습니다!

@toothlessdev toothlessdev changed the title Feature#79 Feature#79 모의수능 신청 API 연동 Jul 17, 2025
Copy link
Contributor

@kimgho kimgho left a comment

Choose a reason for hiding this comment

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

고생 많으셨습니다~
다음엔 커밋을 좀 나눠주시는게..😂

Comment on lines +6 to +7
@singleton()
export class ProcessEasyPaymentHandler extends PaymentHandler<PreparePaymentPayload> {
Copy link
Contributor

Choose a reason for hiding this comment

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

클래스가 인상깊네요..

@toothlessdev
Copy link
Member Author

고생 많으셨습니다~ 다음엔 커밋을 좀 나눠주시는게..😂

의존성이 많아서 ㅠㅠ 커밋량이 좀많았어요
다음작업부터는 잘게쪼개서 PR 올리겠습니다!

@toothlessdev toothlessdev merged commit 572ae60 into main Jul 17, 2025
19 checks passed
@github-project-automation github-project-automation bot moved this from 진행중 to 완료 in mosu-client Jul 17, 2025
@toothlessdev toothlessdev deleted the feature#79 branch August 3, 2025 21:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: 완료

Development

Successfully merging this pull request may close these issues.

[✨ 기능 요청] 모의수능 신청 API 연동

4 participants