Skip to content

Comments

[fix] 지원서 질문 설명 색상코드 변경#544

Merged
lepitaaar merged 3 commits intodevelop-fefrom
fix/color-mismatch-moa-83
Jul 19, 2025
Merged

[fix] 지원서 질문 설명 색상코드 변경#544
lepitaaar merged 3 commits intodevelop-fefrom
fix/color-mismatch-moa-83

Conversation

@lepitaaar
Copy link
Contributor

@lepitaaar lepitaaar commented Jul 17, 2025

#️⃣연관된 이슈

#543

📝작업 내용

지원서 질문 색상 변경 #c5c5c5 to #787878 - cb528eb

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

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

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

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

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

🫡 참고사항

Summary by CodeRabbit

  • 신규 기능

    • 동아리 지원서 작성 및 관리 페이지 접근이 가능해졌습니다.
    • 동아리 지원서 제출 기능이 추가되었습니다.
  • 버그 수정

    • 지원서 데이터 조회 실패 시 사용자에게 알림 후 이전 페이지로 이동하도록 개선되었습니다.
    • 지원서 제출 실패 시 알림 메시지가 더 구체적으로 표시됩니다.
  • 기능 개선

    • 지원서 폼의 첫 번째 질문(이름 입력란)이 고정 및 읽기 전용으로 변경되었습니다.
    • 지원서 답변 구조가 answer → value로 일관성 있게 변경되었습니다.
    • 지원 버튼 클릭 시 모집 여부만을 기준으로 동작이 단순화되었습니다.
    • 사이드바에서 '지원 관리' 탭 클릭 시 안내 알림 없이 정상적으로 이동합니다.
  • 스타일

    • 지원서 설명란의 글자 색상이 더 진하게 변경되었습니다.
  • 리팩터

    • 여러 컴포넌트의 props와 내부 상태 관리 방식이 간소화되었습니다.

@netlify
Copy link

netlify bot commented Jul 17, 2025

Deploy Preview for moadong ready!

Name Link
🔨 Latest commit 5b7076b
🔍 Latest deploy log https://app.netlify.com/projects/moadong/deploys/68785302ff239300088e0830
😎 Deploy Preview https://deploy-preview-544--moadong.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 35
Accessibility: 89
Best Practices: 92
SEO: 92
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 17, 2025

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.
  • 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

이번 변경에서는 지원서 생성 및 답변 폼 라우트를 활성화하고, 지원서 제출 API 및 관련 훅/타입을 추가 및 수정했습니다. 지원서 첫 번째 문항을 이름으로 고정하고, 해당 문항의 편집을 비활성화했습니다. 지원 버튼 인터페이스도 단순화되었습니다.

Changes

파일/경로 그룹 변경 요약
frontend/src/App.tsx 지원서 생성/답변 라우트 주석 해제, 라우트 활성화
frontend/src/apis/application/applyToClub.ts 클럽 지원서 제출용 applyToClub API 함수 신규 추가
frontend/src/apis/application/getApplication.ts fetch 실패 시 서버의 JSON 메시지로 에러 메시지 변경
frontend/src/constants/INITIAL_FORM_DATA.ts 첫 번째 문항을 이름으로 고정, 기존 문항 id 및 내용 조정
frontend/src/hooks/useAnswers.ts answer → value로 필드명 변경, answers 상태 반환 추가
frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx 첫 번째 문항에 readOnly prop 적용, 편집/삭제 비활성화
frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx 지원서 제출 기능 추가, 에러 발생 시 알림 및 리다이렉션, answers 상태 활용
frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.styles.ts QuestionWrapper에 readOnly prop 추가, pointer-events 및 cursor 스타일 조정
frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.tsx readOnly prop 추가, 삭제 버튼 readOnly일 때 숨김
frontend/src/pages/AdminPage/application/components/QuestionDescription/QuestionDescription.tsx 설명 텍스트 색상 변경 (#c5c5c5→#787878)
frontend/src/pages/AdminPage/components/SideBar/SideBar.tsx '지원 관리' 탭 클릭 시 알림 제거, 정상 라우팅
frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx recruitmentForm, presidentPhoneNumber prop 제거, isRecruiting boolean prop만 사용, 로직 단순화
frontend/src/pages/ClubDetailPage/components/ClubDetailFooter/ClubDetailFooter.tsx ClubApplyButton에 isRecruiting prop만 전달
frontend/src/pages/ClubDetailPage/components/ClubDetailHeader/ClubDetailHeader.tsx ClubApplyButton에 isRecruiting prop만 전달
frontend/src/types/application.ts QuestionBuilderProps에 readOnly 추가, AnswerItem의 answer→value로 변경

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant ClubDetailPage
    participant ClubApplyButton
    participant Router
    participant AnswerApplicationForm
    participant applyToClub API

    User->>ClubDetailPage: 페이지 진입
    ClubDetailPage->>ClubApplyButton: isRecruiting prop 전달
    User->>ClubApplyButton: 지원하기 버튼 클릭
    ClubApplyButton-->>Router: isRecruiting 여부 확인 후 지원서 라우트 이동
    User->>AnswerApplicationForm: 지원서 작성 및 제출
    AnswerApplicationForm->>applyToClub API: 답변 데이터 제출
    applyToClub API-->>AnswerApplicationForm: 결과 반환
    AnswerApplicationForm-->>User: 성공/실패 알림
Loading

Possibly related PRs

Suggested labels

🎨 Design, 💻 FE

Suggested reviewers

  • seongwon030
✨ Finishing Touches
  • 📝 Generate Docstrings

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@lepitaaar lepitaaar requested review from oesnuj and seongwon030 and removed request for oesnuj July 17, 2025 01:29
@lepitaaar lepitaaar added 💻 FE Frontend 🛠Fix 기능이 의도한 대로 동작하지 않는 버그를 수정 labels Jul 17, 2025
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 (3)
frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx (1)

161-161: 엄격한 동등 연산자 사용 권장

인덱스 비교에 ===를 사용하는 것이 좋습니다.

-              readOnly={index == 0} //인덱스 0번은 이름을 위한 고정 부분이므로 수정 불가
+              readOnly={index === 0} //인덱스 0번은 이름을 위한 고정 부분이므로 수정 불가
frontend/src/App.tsx (1)

18-22: 중복된 import 문과 오래된 주석을 정리해야 합니다.

활성화된 import 문(18-19번 줄)과 주석 처리된 중복 import 문(21-22번 줄), 그리고 더 이상 관련 없는 TODO 주석(20번 줄)이 있습니다.

다음과 같이 정리하는 것을 권장합니다:

import AnswerApplicationForm from './pages/AdminPage/application/answer/AnswerApplicationForm';
import CreateApplicationForm from './pages/AdminPage/application/CreateApplicationForm';
- // TODO: 지원서 개발 완료 후 활성화
- // import AnswerApplicationForm from '@/pages/AdminPage/application/answer/AnswerApplicationForm';
- // import CreateApplicationForm from '@/pages/AdminPage/application/CreateApplicationForm';
frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx (1)

45-53: 폼 제출 함수가 잘 구현되었습니다.

적절한 에러 처리와 사용자 피드백을 제공하는 async 함수입니다. 향후 제출 성공 시 자동 페이지 이동 등의 UX 개선을 고려해볼 수 있습니다.

사용자 경험 개선을 위해 다음과 같은 추가 기능을 고려해보세요:

  const handleSubmit = async () => {
    try {
      await applyToClub(clubId, answers);
      alert('답변이 성공적으로 제출되었습니다.');
-     // TODO: 필요시 페이지 이동 등 추가
+     navigate(`/club/${clubId}`); // 클럽 상세 페이지로 리다이렉트
    } catch (e) {
      alert('답변 제출에 실패했습니다. 잠시 후 다시 시도해 주세요.');
    }
  };
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7259d0c and cb528eb.

📒 Files selected for processing (15)
  • frontend/src/App.tsx (3 hunks)
  • frontend/src/apis/application/applyToClub.ts (1 hunks)
  • frontend/src/apis/application/getApplication.ts (1 hunks)
  • frontend/src/constants/INITIAL_FORM_DATA.ts (1 hunks)
  • frontend/src/hooks/useAnswers.ts (2 hunks)
  • frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx (1 hunks)
  • frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx (3 hunks)
  • frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.styles.ts (1 hunks)
  • frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.tsx (3 hunks)
  • frontend/src/pages/AdminPage/application/components/QuestionDescription/QuestionDescription.tsx (1 hunks)
  • frontend/src/pages/AdminPage/components/SideBar/SideBar.tsx (0 hunks)
  • frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx (3 hunks)
  • frontend/src/pages/ClubDetailPage/components/ClubDetailFooter/ClubDetailFooter.tsx (1 hunks)
  • frontend/src/pages/ClubDetailPage/components/ClubDetailHeader/ClubDetailHeader.tsx (1 hunks)
  • frontend/src/types/application.ts (2 hunks)
💤 Files with no reviewable changes (1)
  • frontend/src/pages/AdminPage/components/SideBar/SideBar.tsx
🧰 Additional context used
📓 Path-based instructions (2)
frontend/**/*.{ts,tsx}

Instructions used from:

Sources:
📄 CodeRabbit Inference Engine

  • frontend/.cursorrules
frontend/**/*.tsx

Instructions used from:

Sources:
📄 CodeRabbit Inference Engine

  • frontend/.cursorrules
🧠 Learnings (11)
frontend/src/pages/AdminPage/application/components/QuestionDescription/QuestionDescription.tsx (1)
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Replace magic numbers with named constants for clarity.
frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx (1)
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Choose field-level or form-level cohesion based on form requirements.
frontend/src/types/application.ts (4)
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Replace magic numbers with named constants for clarity.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Define constants near related logic or ensure names link them clearly.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Use consistent return types for similar functions and hooks.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Choose field-level or form-level cohesion based on form requirements.
frontend/src/pages/ClubDetailPage/components/ClubDetailFooter/ClubDetailFooter.tsx (10)
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Separate significantly different conditional UI/logic into distinct components.
Learnt from: seongwon030
PR: Moadong/moadong#195
File: frontend/src/pages/AdminPage/AdminPage.tsx:7-7
Timestamp: 2025-03-19T05:18:07.818Z
Learning: AdminPage.tsx에서 현재 하드코딩된 클럽 ID('67d2e3b9b15c136c6acbf20b')는 로그인 기능 구현 후 동적으로 가져오는 방식으로 수정될 예정입니다.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Colocate simple, localized logic or use inline definitions to reduce context switching.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Use component composition instead of props drilling.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Choose field-level or form-level cohesion based on form requirements.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Replace complex or nested ternary operators with if/else statements or IIFEs for readability.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Replace magic numbers with named constants for clarity.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Abstract complex logic/interactions into dedicated components or higher-order components (HOCs).
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Use consistent return types for similar functions and hooks.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Assign complex boolean conditions to named variables for clarity.
frontend/src/App.tsx (10)
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Separate significantly different conditional UI/logic into distinct components.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Abstract complex logic/interactions into dedicated components or higher-order components (HOCs).
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Colocate simple, localized logic or use inline definitions to reduce context switching.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Replace magic numbers with named constants for clarity.
Learnt from: seongwon030
PR: Moadong/moadong#195
File: frontend/src/pages/AdminPage/AdminPage.tsx:7-7
Timestamp: 2025-03-19T05:18:07.818Z
Learning: AdminPage.tsx에서 현재 하드코딩된 클럽 ID('67d2e3b9b15c136c6acbf20b')는 로그인 기능 구현 후 동적으로 가져오는 방식으로 수정될 예정입니다.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Choose field-level or form-level cohesion based on form requirements.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Avoid hidden side effects; functions should only perform actions implied by their signature (Single Responsibility Principle).
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Define constants near related logic or ensure names link them clearly.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Break down broad state management into smaller, focused hooks or contexts.
Learnt from: lepitaaar
PR: Moadong/moadong#406
File: backend/src/main/java/moadong/club/service/ClubApplyService.java:34-38
Timestamp: 2025-05-19T05:45:52.957Z
Learning: The code duplication between createClubApplication and editClubApplication methods in ClubApplyService.java is acknowledged but will be addressed in a future refactoring, as per the developer's plan.
frontend/src/hooks/useAnswers.ts (1)
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Use consistent return types for similar functions and hooks.
frontend/src/constants/INITIAL_FORM_DATA.ts (2)
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Replace magic numbers with named constants for clarity.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Choose field-level or form-level cohesion based on form requirements.
frontend/src/pages/ClubDetailPage/components/ClubDetailHeader/ClubDetailHeader.tsx (10)
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Separate significantly different conditional UI/logic into distinct components.
Learnt from: seongwon030
PR: Moadong/moadong#195
File: frontend/src/pages/AdminPage/AdminPage.tsx:7-7
Timestamp: 2025-03-19T05:18:07.818Z
Learning: AdminPage.tsx에서 현재 하드코딩된 클럽 ID('67d2e3b9b15c136c6acbf20b')는 로그인 기능 구현 후 동적으로 가져오는 방식으로 수정될 예정입니다.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Use component composition instead of props drilling.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Colocate simple, localized logic or use inline definitions to reduce context switching.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Abstract complex logic/interactions into dedicated components or higher-order components (HOCs).
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Choose field-level or form-level cohesion based on form requirements.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Assign complex boolean conditions to named variables for clarity.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Replace complex or nested ternary operators with if/else statements or IIFEs for readability.
Learnt from: lepitaaar
PR: Moadong/moadong#406
File: backend/src/main/java/moadong/club/service/ClubApplyService.java:34-38
Timestamp: 2025-05-19T05:45:52.957Z
Learning: The code duplication between createClubApplication and editClubApplication methods in ClubApplyService.java is acknowledged but will be addressed in a future refactoring, as per the developer's plan.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Use consistent return types for similar functions and hooks.
frontend/src/apis/application/applyToClub.ts (2)
Learnt from: lepitaaar
PR: Moadong/moadong#406
File: backend/src/main/java/moadong/club/service/ClubApplyService.java:34-38
Timestamp: 2025-05-19T05:45:52.957Z
Learning: The code duplication between createClubApplication and editClubApplication methods in ClubApplyService.java is acknowledged but will be addressed in a future refactoring, as per the developer's plan.
Learnt from: seongwon030
PR: Moadong/moadong#195
File: frontend/src/pages/AdminPage/AdminPage.tsx:7-7
Timestamp: 2025-03-19T05:18:07.818Z
Learning: AdminPage.tsx에서 현재 하드코딩된 클럽 ID('67d2e3b9b15c136c6acbf20b')는 로그인 기능 구현 후 동적으로 가져오는 방식으로 수정될 예정입니다.
frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx (5)
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Use consistent return types for similar functions and hooks.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Abstract complex logic/interactions into dedicated components or higher-order components (HOCs).
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Choose field-level or form-level cohesion based on form requirements.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Break down broad state management into smaller, focused hooks or contexts.
Learnt from: seongwon030
PR: Moadong/moadong#195
File: frontend/src/pages/AdminPage/AdminPage.tsx:7-7
Timestamp: 2025-03-19T05:18:07.818Z
Learning: AdminPage.tsx에서 현재 하드코딩된 클럽 ID('67d2e3b9b15c136c6acbf20b')는 로그인 기능 구현 후 동적으로 가져오는 방식으로 수정될 예정입니다.
frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx (10)
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Separate significantly different conditional UI/logic into distinct components.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Use component composition instead of props drilling.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Colocate simple, localized logic or use inline definitions to reduce context switching.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.tsx : Abstract complex logic/interactions into dedicated components or higher-order components (HOCs).
Learnt from: seongwon030
PR: Moadong/moadong#195
File: frontend/src/pages/AdminPage/AdminPage.tsx:7-7
Timestamp: 2025-03-19T05:18:07.818Z
Learning: AdminPage.tsx에서 현재 하드코딩된 클럽 ID('67d2e3b9b15c136c6acbf20b')는 로그인 기능 구현 후 동적으로 가져오는 방식으로 수정될 예정입니다.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Replace complex or nested ternary operators with if/else statements or IIFEs for readability.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Use consistent return types for similar functions and hooks.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Assign complex boolean conditions to named variables for clarity.
Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-07T13:25:48.135Z
Learning: Applies to frontend/**/*.{ts,tsx} : Replace magic numbers with named constants for clarity.
Learnt from: lepitaaar
PR: Moadong/moadong#406
File: backend/src/main/java/moadong/club/service/ClubApplyService.java:34-38
Timestamp: 2025-05-19T05:45:52.957Z
Learning: The code duplication between createClubApplication and editClubApplication methods in ClubApplyService.java is acknowledged but will be addressed in a future refactoring, as per the developer's plan.
🧬 Code Graph Analysis (1)
frontend/src/apis/application/applyToClub.ts (1)
frontend/src/types/application.ts (1)
  • AnswerItem (54-57)
🔇 Additional comments (21)
frontend/src/pages/AdminPage/application/components/QuestionDescription/QuestionDescription.tsx (1)

14-14: 색상 변경으로 가독성 개선됨

더 어두운 회색(#787878)으로 변경하여 텍스트 가독성이 향상되었습니다. placeholder 색상(#c5c5c5)과의 대비도 적절합니다.

frontend/src/pages/ClubDetailPage/components/ClubDetailFooter/ClubDetailFooter.tsx (1)

30-32: 컴포넌트 인터페이스 단순화로 코드 명확성 향상

조건부 객체 스프레딩 대신 명시적인 boolean 프로퍼티를 사용하여 모집 상태를 더 명확하게 표현했습니다.

frontend/src/types/application.ts (2)

17-17: readOnly 프로퍼티 추가로 UI 제어 기능 향상

QuestionBuilder 컴포넌트의 읽기 전용 모드를 지원하는 타입 정의가 적절히 추가되었습니다.


56-56: 프로퍼티 명명 일관성 개선

'answer'에서 'value'로 변경하여 더 일반적이고 일관된 명명 규칙을 적용했습니다.

frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.tsx (3)

19-19: readOnly 기능 구현을 위한 매개변수 추가

함수 시그니처에 readOnly 매개변수가 적절히 추가되었습니다.


121-121: 스타일 컴포넌트에 readOnly 상태 전달

QuestionWrapper에 readOnly 프로퍼티를 전달하여 시각적 상태를 제어할 수 있게 했습니다.


137-139: 조건부 렌더링으로 삭제 버튼 제어

readOnly 상태일 때 삭제 버튼을 숨겨서 고정된 질문의 실수 삭제를 방지했습니다.

frontend/src/apis/application/getApplication.ts (1)

7-8: 에러 처리 개선이 잘 되었습니다.

서버에서 제공하는 구체적인 오류 메시지를 사용하도록 변경한 것이 좋습니다. 이전의 일반적인 HTTP 상태 텍스트보다 사용자에게 더 유용한 정보를 제공할 수 있습니다.

frontend/src/pages/ClubDetailPage/components/ClubDetailHeader/ClubDetailHeader.tsx (1)

45-47: 인터페이스 단순화가 잘 되었습니다.

ClubApplyButton의 props를 여러 개의 조건부 props에서 하나의 boolean flag로 단순화한 것이 좋습니다. 이는 props drilling을 줄이고 컴포넌트 인터페이스를 더 명확하게 만듭니다.

frontend/src/App.tsx (1)

78-81: 라우트 활성화가 올바르게 되었습니다.

지원서 관련 라우트들이 성공적으로 활성화되었습니다. 이제 관리자용 지원서 생성 폼과 사용자용 지원서 작성 폼에 접근할 수 있습니다.

Also applies to: 90-93

frontend/src/hooks/useAnswers.ts (1)

10-10: 타입 일관성과 인터페이스 개선이 잘 되었습니다.

answer 속성을 value로 변경하고 answers 상태를 반환 객체에 추가한 것이 좋습니다. 이는 타입 시스템과의 일관성을 보장하고 폼 제출 시 현재 답변 상태에 접근할 수 있게 해줍니다.

Also applies to: 17-17, 30-30, 32-32

frontend/src/constants/INITIAL_FORM_DATA.ts (3)

6-14: 이름 필드 추가가 올바르게 구현되었습니다.

첫 번째 질문으로 이름 필드를 고정하는 요구사항이 적절히 반영되었습니다. 한국어 제목과 설명, 필수 옵션 설정이 모두 올바릅니다.


15-16: ID 순서 조정이 적절합니다.

새로운 첫 번째 질문 추가에 따라 기존 질문들의 ID가 올바르게 조정되었습니다.


24-24: ID 일관성이 유지되었습니다.

세 번째 질문의 ID 조정으로 전체적인 순차 번호 체계가 일관되게 유지되었습니다.

frontend/src/apis/application/applyToClub.ts (1)

4-34: API 엔드포인트 매핑 및 요청 본문 구조 재확인 필요

  • 백엔드에 /api/club/{clubId}/apply에 대한 @PostMapping이 실제로 구현되어 있는지 확인해주세요.
    (현재 moadong/club/controller 디렉터리 내에 해당 매핑이 보이지 않습니다.)
  • 백엔드 요청 DTO 내에 front-end에서 전송하는
    { questions: AnswerItem[] } 구조가 일치하는지 검증해주세요.
    – DTO 클래스명 및 필드명이 정확히 questions인지,
    – 요소 타입이 AnswerItem과 매핑되는지
  • 에러 핸들링은 적절하나, 백엔드가 반환하는 에러 메시지 또는 HTTP 상태 코드에 맞춰
    보다 구체적인 예외 처리가 필요할 수 있습니다.
frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx (2)

6-8: 인터페이스 단순화가 적절합니다.

복잡한 조건부 로직 대신 단일 boolean prop을 사용하여 컴포넌트의 책임을 명확히 하고 props drilling을 줄였습니다.


46-55: 로직 단순화가 가독성을 크게 개선했습니다.

복잡한 조건부 로직을 단순한 boolean 체크와 early return 패턴으로 교체하여 코드 가독성이 향상되었습니다. 코딩 가이드라인에 부합하는 개선사항입니다.

frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx (4)

4-4: 필요한 의존성들이 적절히 추가되었습니다.

폼 제출 기능과 네비게이션을 위한 import들이 올바르게 추가되었습니다.

Also applies to: 12-12, 16-16


20-20: 에러 처리 개선이 사용자 경험을 향상시켰습니다.

지원서 데이터 로딩 실패 시 사용자에게 알림을 제공하고 클럽 상세 페이지로 리다이렉트하는 처리가 적절합니다. 사용자가 오류 상태에 갇히지 않도록 보장합니다.

Also applies to: 26-30


22-22: 훅 인터페이스 업데이트가 적절히 반영되었습니다.

useAnswers 훅에서 answers 상태를 추가로 노출하는 변경사항이 올바르게 적용되었습니다.


78-78: 제출 버튼이 올바르게 연결되었습니다.

handleSubmit 함수와 제출 버튼이 적절히 연결되어 폼 제출 기능이 완성되었습니다.

Copy link
Member

@seongwon030 seongwon030 left a comment

Choose a reason for hiding this comment

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

색상변경 굿입니다

@lepitaaar lepitaaar merged commit f130ebe into develop-fe Jul 19, 2025
7 checks passed
@lepitaaar lepitaaar deleted the fix/color-mismatch-moa-83 branch September 20, 2025 01:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💻 FE Frontend 🛠Fix 기능이 의도한 대로 동작하지 않는 버그를 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants