Skip to content

Comments

[fix] 지원자 수정 디바운스 제거#1223

Merged
seongwon030 merged 2 commits intodevelop-fefrom
feature/#1222-delete-admin-debounce-MOA-669
Feb 21, 2026
Merged

[fix] 지원자 수정 디바운스 제거#1223
seongwon030 merged 2 commits intodevelop-fefrom
feature/#1222-delete-admin-debounce-MOA-669

Conversation

@seongwon030
Copy link
Member

@seongwon030 seongwon030 commented Feb 21, 2026

#️⃣연관된 이슈

ex) #1222

변경 배경

updateApplicantDetail의 검증 로직이 truthy 기반(!memo || !status)으로
빈 문자열 메모('')가 유효한 입력임에도 업데이트가 차단되는 회귀 가능성

  • memo 검증을 truthy 체크에서 타입 체크로 변경
  • status 검증을 enum 타입가드로 명시화
    • isApplicationStatus(value): value is ApplicationStatus 추가
  • 디바운스, useMemo 제거
    • updateApplicantDetail의 불필요한 의존성 clubId 제거

중점적으로 리뷰받고 싶은 부분(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

논의하고 싶은 부분(선택)

논의하고 싶은 부분이 있다면 작성해주세요.

🫡 참고사항

Summary by CodeRabbit

  • 개선 사항
    • 지원자 상세정보 업데이트가 즉시 처리되도록 변경되어 반응성이 향상되었습니다.
    • 메모 및 상태 변경 시 더 일관되게 업데이트가 실행됩니다.
    • 입력값(상태, 메모)에 대한 검증이 강화되어 잘못된 입력을 방지합니다.
    • 오류 발생 시 기존과 동일한 안내(에러 알림)를 유지합니다.

- 기존 truthy 체크를 제거하고 memo는 string 타입, status는 ApplicationStatus enum 타입가드로 검증하도록 변경
@seongwon030 seongwon030 self-assigned this Feb 21, 2026
@seongwon030 seongwon030 added ✨ Feature 기능 개발 💻 FE Frontend labels Feb 21, 2026
@vercel
Copy link

vercel bot commented Feb 21, 2026

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

Project Deployment Actions Updated (UTC)
moadong Ready Ready Preview, Comment Feb 21, 2026 2:45pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 21, 2026

Caution

Review failed

The pull request is closed.

Warning

.coderabbit.yaml has a parsing error

The CodeRabbit configuration file in this repository has a parsing error and default settings were used instead. Please fix the error(s) in the configuration file. You can initialize chat with CodeRabbit to get help with the configuration file.

💥 Parsing errors (1)
Validation error: Invalid regex pattern for base branch. Received: "**" at "reviews.auto_review.base_branches[0]"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Walkthrough

ApplicantDetailPage에서 debounce 제거 및 useMemo 기반 래퍼 제거, ApplicationStatus 타입 가드 추가, memo/status 변경 시 동기적으로 동작하는 updateApplicantDetail로 업데이트 호출하도록 변경했습니다. onMemo는 onChange→onBlur로 처리 흐름이 바뀌었습니다.

Changes

Cohort / File(s) Summary
Applicant detail update 변경
frontend/src/pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage/ApplicantDetailPage.tsx
debounce 임포트 및 useMemo 기반 디바운스 래퍼 제거. isApplicationStatus 타입 가드 추가. updateApplicantDetail(memo, status)를 동기 호출로 대체하고 memo 입력은 onChange/onBlur로 처리. 에러 alert 로직 유지.

Sequence Diagram(s)

(해당 변경은 단일 컴포넌트 내 로직 변경으로 다중 컴포넌트 상호작용 시퀀스 다이어그램을 생략합니다.)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

🛠Fix

Suggested reviewers

  • oesnuj
  • PororoAndFriends
  • lepitaaar
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목은 디바운스 제거라는 실제 변경 사항을 명확하게 반영하고 있으며, 지원자 수정 기능과 관련된 주요 변화를 간결하게 요약하고 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/#1222-delete-admin-debounce-MOA-669

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@lepitaaar lepitaaar left a comment

Choose a reason for hiding this comment

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

UX 개선 굳이요~

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
frontend/src/pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage/ApplicantDetailPage.tsx (1)

74-74: typeof memo !== 'string' 검사는 불필요한 dead code입니다.

함수 시그니처가 이미 memo: string으로 선언되어 있어 TypeScript 컴파일 시점에 타입이 보장됩니다. 이 가드는 실질적으로 도달 불가능한 코드입니다.

♻️ 제안: 불필요한 타입 검사 제거
  const updateApplicantDetail = (memo: string, status: ApplicationStatus) => {
-   if (typeof memo !== 'string') return;
    if (!isApplicationStatus(status)) return;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@frontend/src/pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage/ApplicantDetailPage.tsx`
at line 74, Remove the unnecessary runtime type guard "if (typeof memo !==
'string') return;" from the ApplicantDetailPage code path (where the function
parameter memo is already declared as string); simply delete that line so
execution continues normally, and run TypeScript/ESLint to ensure no other
references expect the early return (adjust surrounding logic if the guard was
masking another issue).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@frontend/src/pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage/ApplicantDetailPage.tsx`:
- Around line 73-91: 현재 handleMemoChange가 onInput에 바인딩되어 있어 입력마다
updateApplicantDetail이 호출되어 race condition과 과도한 API 호출이 발생합니다; 이를 고치려면
ApplicantDetailPage에서 updateApplicantDetail 및 handleMemoChange 연결을 수정해 글자 입력마다
호출하지 않도록 하고(권장: 메모 입력 필드의 onInput을 onBlur로 변경하거나 updateApplicantDetail 호출에 디바운스를
적용), updateApplicantDetail 함수 시그니처(예: updateApplicantDetail(memo, status))와 호출
지점을 찾아 동일한 동작으로 유지하되 실제 저장은 onBlur 또는 debounced 함수에서 한 번만 호출되게 하세요; 또한 기존 typeof
memo !== 'string' 검증 변경은 유지해 빈 문자열 저장이 허용되도록 하세요.

---

Nitpick comments:
In
`@frontend/src/pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage/ApplicantDetailPage.tsx`:
- Line 74: Remove the unnecessary runtime type guard "if (typeof memo !==
'string') return;" from the ApplicantDetailPage code path (where the function
parameter memo is already declared as string); simply delete that line so
execution continues normally, and run TypeScript/ESLint to ensure no other
references expect the early return (adjust surrounding logic if the guard was
masking another issue).

@seongwon030 seongwon030 merged commit 04f3820 into develop-fe Feb 21, 2026
2 of 4 checks passed
@seongwon030 seongwon030 linked an issue Feb 21, 2026 that may be closed by this pull request
1 task
This was referenced Feb 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💻 FE Frontend ✨ Feature 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] MOA-669 지원자 메모, 상태 디바운스 제거

2 participants