Skip to content

Conversation

@layout-SY
Copy link
Collaborator

@layout-SY layout-SY commented May 15, 2025

구현내용

  • 사용자 pages, hook, component 경로 변경

연관이슈

Summary by CodeRabbit

  • 스타일

    • 지원 단계 버튼, 라벨, 버튼 크기 및 정렬 등 일부 UI 스타일이 개선되었습니다.
    • 경력 추가 버튼의 높이와 글꼴 크기가 조정되었습니다.
  • 버그 수정

    • 지원 단계 이동 버튼의 동작이 올바르게 수정되었습니다.
  • 리팩터

    • 프로젝트 생성 및 지원, 마이페이지, 알림, 고객센터 등 다양한 컴포넌트와 훅의 import 경로가 일관성 있게 정리되었습니다.
    • 프로젝트 지원 및 생성 폼의 검증 스키마가 별도 모듈로 분리되어 관리됩니다.
  • 새로운 기능

    • 프로젝트 및 지원 폼에 대한 입력값 검증이 추가되어, 입력 데이터의 유효성이 강화되었습니다.
  • 문서화

    • 타입 추론을 통한 새로운 타입이 추가되었습니다.

@layout-SY layout-SY requested a review from YouD0313 May 15, 2025 05:41
@layout-SY layout-SY self-assigned this May 15, 2025
@layout-SY layout-SY added the 🛠개선 성능 개선/리팩토링에 대한 라벨 label May 15, 2025
@coderabbitai
Copy link

coderabbitai bot commented May 15, 2025

Walkthrough

이번 변경에서는 프로젝트 전체적으로 사용자 관련 모듈, 컴포넌트, 훅, 상수 등의 import 경로를 더 깊은 디렉터리 구조(user 하위 폴더 등)로 일괄적으로 수정하였습니다. 또한, 프로젝트 및 지원 폼의 Zod 기반 스키마와 타입을 공통 상수 및 모델 파일로 분리하였으며, 일부 스타일 및 버튼 동작에 미세한 개선이 있었습니다.

Changes

파일/그룹 경로(축약) 변경 요약
src/components/... (여러 user, common 하위) import 경로를 user, common 하위의 더 깊은 폴더 구조로 일괄 변경. 경로만 변경, 로직/구조 무변경.
src/constants/user/projectConstants.ts Zod를 사용한 createProjectScheme, ApplyScheme 검증 스키마 추가. 기존 상수 불변, 신규 스키마만 추가.
src/hooks/... (여러 user, ProjectHooks, evaluationHooks 하위) import 경로를 user 하위 등으로 일괄 변경. useTagSelectors는 position 선택 로직 개선 및 console.log 추가. 나머지는 경로만 변경.
src/models/joinProject.ts, createProject.ts ApplySchemeType 타입 및 createProjectScheme import 경로를 constants로 이동 및 신규 타입/스키마 정의.
src/pages/user/... (여러 apply, createProject, mypage, manage 하위) import 경로를 user 하위 등으로 일괄 변경. Apply, ApplyStep, CreateProject 등은 Zod 스키마/타입을 외부 모듈에서 import하도록 수정.
src/pages/user/apply/ApplyStep.styled.ts, CareersComponent.styled.ts 스타일 일부 수정(폰트 크기, 버튼 높이, 정렬 등).
src/hooks/user/ProjectHooks/useTagSelectors.ts, positionComponent.tsx position 태그 선택 시 1번 인덱스(전체) 토글 동작 개선 및 includes 사용, console.log 추가.
기타 src/hooks/user/... import 경로만 user 하위 등으로 일괄 변경. 로직/기능 무변경.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant ApplyPage
    participant projectConstants
    participant joinProjectModel

    User->>ApplyPage: 지원 폼 작성 및 제출
    ApplyPage->>projectConstants: ApplyScheme로 입력값 검증
    projectConstants-->>ApplyPage: 검증 결과 반환
    ApplyPage->>joinProjectModel: ApplySchemeType 타입 사용
    Note right of ApplyPage: 검증 통과 시 지원 처리 진행
Loading
sequenceDiagram
    participant User
    participant CreateProjectPage
    participant projectConstants

    User->>CreateProjectPage: 프로젝트 생성 폼 작성 및 제출
    CreateProjectPage->>projectConstants: createProjectScheme로 입력값 검증
    projectConstants-->>CreateProjectPage: 검증 결과 반환
    Note right of CreateProjectPage: 검증 통과 시 프로젝트 생성 처리
Loading

Possibly related PRs

  • devpalsPlus/frontend#273: 프로필 보기/수정 컴포넌트 분리 및 import 경로 구조 개선. 본 PR과 동일하게 user 하위 구조로 경로 변경 및 컴포넌트 리팩토링이 이루어짐.
  • devpalsPlus/frontend#250: 알림(Alarm) API, 훅, 컴포넌트 추가 및 경로 구조 개선. 본 PR과 같이 Notification 관련 훅 및 컴포넌트의 import 경로가 변경됨.

Poem

🐇
폴더 속을 누비며 hop hop hop,
import 경로 바꿔요, nonstop!
Zod 스키마도 한데 모아,
타입 추론 걱정 끝, 참 좋아라.
토끼는 깡총, 코드도 깔끔—
이제 디렉터리도 한층 더 깊음!
🌱✨

Note

⚡️ AI Code Reviews for VS Code, Cursor, Windsurf

CodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback.
Learn more here.


Note

⚡️ Faster reviews with caching

CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.
Enjoy the performance boost—your workflow just got faster.

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

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • 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

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.

Copy link

@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: 7

🔭 Outside diff range comments (2)
src/pages/user/apply/ApplyStep.tsx (2)

120-128: ⚠️ Potential issue

로딩 상태 처리 순서가 역전되어 초기 페이지가 모달만 표시됩니다.

projectDataundefined 인 초기 로딩 구간에서 ① 모달을 먼저 렌더링하고 ② 이후 스피너를 렌더링하도록 작성되어 있습니다.
isLoading || isFetchingtrue 인 경우엔 아직 서버 응답을 기다리는 중이므로, 사용자에게는 스피너가 우선 노출되어야 자연스럽습니다.

-  if (!projectData) {
-    return (
-      <Modal isOpen={isOpen} onClose={handleModalClose}>
-        {message}
-      </Modal>
-    );
-  }
-
-  if (isLoading || isFetching) return <LoadingSpinner />;
+  if (isLoading || isFetching) return <LoadingSpinner />;
+
+  if (!projectData) {
+    return (
+      <Modal isOpen={isOpen} onClose={handleModalClose}>
+        {message}
+      </Modal>
+    );
+  }

이렇게 순서를 바꾸면 로딩 시 스피너 → 데이터 수신 실패 시 모달 의 흐름이 보장됩니다.


110-118: 🛠️ Refactor suggestion

전화번호 배열 길이 및 타입 네이밍 개선 제안

  1. ${data.phone[0]}-${data.phone[1]}-${data.phone[2]} 로 문자열을 만들고 있지만,
    phone.length !== 3 인 경우 런타임 오류가 발생할 수 있습니다.
    ‑ 스키마에 refine(arr => arr.length === 3, …) 를 추가하거나 여기서 길이를 검증하세요.
  2. joinProject 는 타입임에도 소문자여서 혼동될 수 있습니다. TypeScript 관례상 JoinProject 같은 PascalCase 가 가독성이 좋습니다.
-import { ApplySchemeType, joinProject } from '../../../models/joinProject';
+import { ApplySchemeType, JoinProject } from '../../../models/joinProject';
const formData: JoinProject = {};
🧹 Nitpick comments (17)
src/components/user/projectFormComponents/stepComponent/StepComponent.tsx (1)

3-3: 변경된 import 경로가 올바르게 적용되었습니다
StepProp 타입의 import 경로가 ../../../../hooks/user/ProjectHooks/useMultiStepForm로 적절히 업데이트되었습니다. 다만, 상대 경로가 깊어질수록 가독성과 유지보수성이 떨어질 수 있으므로, TypeScript의 paths 설정이나 Webpack alias를 통해 절대 경로(import alias) 사용을 검토해보시길 권장드립니다.

src/components/user/reportComponent/ReportModal.tsx (1)

3-5: 공용 컴포넌트 import 경로 확인 및 alias 제안

import Avatar from '../../common/avatar/Avatar';
import Button from '../../common/Button/Button';
import ScrollPreventor from '../../common/modal/ScrollPreventor';

src/components/common/... 경로와 일치하여 올바르게 설정되었습니다.

상대 경로가 길어질수록 관리가 번거로워질 수 있으니, tsconfig.jsonpaths 옵션을 활용해

{
  "paths": {
    "@api/*": ["src/api/*"],
    "@constants/*": ["src/constants/*"],
    "@components/*": ["src/components/*"]
  }
}

같은 alias import를 도입하는 방안을 고려해보시면 가독성과 유지보수성이 더욱 향상됩니다.

src/pages/user/main/Index.tsx (1)

7-7: 경로 별칭 설정으로 상대경로 최적화 권고
깊은 상대경로(../../../hooks/user/useInView)는 유지보수가 어려울 수 있습니다. tsconfig.jsonpaths를 활용해 @hooks/user/useInView와 같은 경로 별칭을 도입하는 방안을 고려해보세요.

src/pages/user/main/HeroSection.tsx (1)

5-6: 상대 경로 변경 적합 및 구조 일치
import 경로가 새로운 constants/user/routescomponents/common/Button/Button 구조에 맞춰 업데이트되었습니다. 프로젝트 디렉터리 구조와 일관성을 잘 유지하고 있어 문제가 없습니다.
선택사항: tsconfig.jsonpaths 설정을 활용하여 ../../../와 같은 깊은 상대 경로 대신 절대 경로 별칭을 사용하면 코드 가독성과 유지보수성이 더욱 향상될 수 있습니다.

src/pages/user/customerService/noticeDetail/NoticeDetail.tsx (1)

1-1: Import 경로 업데이트 확인
NoticeDetailBundle의 상대 경로가 components/user/customerService/noticeDetail 구조에 맞춰 깊어졌으며, 기존 구조와 일치하게 반영되었습니다.
선택사항: Webpack 또는 TS paths alias를 사용해 ../../../../와 같은 반복되는 경로를 줄이면 가독성이 개선됩니다.

src/pages/user/customerService/faq/FAQ.tsx (1)

4-10: 상대 경로 일관성 검토
SearchKeyword, useGetFAQ, Spinner, CustomerServiceHeader, FAQContent, ContentBorder, NoResult 등 모든 import 경로가 models, hooks/user, components/common, components/user 구조에 맞게 깊어진 것을 확인했습니다.
선택사항: tsconfig.jsonpaths 또는 Babel alias를 통해 반복되는 ../../../../ 상대 경로를 간소화하면 유지보수성과 가독성이 더욱 좋아집니다.

src/pages/user/userpage/UserPage.tsx (1)

5-8: 상대 경로 변경 및 구조 일치
ROUTES, useUserProfileInfo, Sidebar, ScrollWrapper의 import 경로가 새로운 constants/user, hooks/user, components/common/sidebar, components/user/mypage 구조에 맞게 업데이트되었습니다. 전체 구조와 일관성을 잘 유지하고 있어 문제가 없습니다.
선택사항: tsconfig 또는 Babel alias를 활용하여 ../../../와 같은 반복 경로를 간소화하는 것을 고려해보세요.

src/components/user/mypage/myProfile/profile/Profile.tsx (1)

9-11: 깊어진 import 경로 확인
UserInfo, PROFILE_DEFAULT_MESSAGE, ROUTES의 import 경로가 models/userInfo, constants/user/myPageProfile, constants/user/routes 구조에 맞춰 깊이 조정되었습니다. 논리나 기능 변경 없이 경로만 업데이트되어 적절합니다.
선택사항: tsconfig.paths나 Babel alias를 통해 ../../../../../와 같은 깊은 상대 경로를 줄이면 코드가 더욱 깔끔해집니다.

src/pages/user/home/Home.tsx (2)

1-4: 상대 경로 검증 및 경로 별칭 도입 고려
현재 ../../../components/user/home/... 와 같이 깊은 상대 경로를 사용하고 있습니다. 프로젝트 규모가 커질수록 경로 관리가 어려워질 수 있으므로 다음을 검토해보세요:

  1. 해당 상대 경로가 올바른 위치를 가리키는지 확인하세요.
  2. tsconfig.jsonpaths 옵션이나 babel-plugin-module-resolver 같은 도구를 통해 경로 별칭(예: @components/user/home/...)을 도입하면 유지보수성이 향상됩니다.

5-5: 세미콜론 일관성 유지
import * as S from './Home.styled' 구문에 세미콜론(;)이 빠져 있습니다. 다른 import 구문과 형식을 맞추기 위해 끝에 세미콜론을 추가하는 것을 권장합니다.

src/components/user/mypage/notifications/appliedProjects/AppliedProjects.tsx (1)

5-7: 깊은 상대 경로 통합 및 경로 별칭 도입 제안
NoContent, useMyAppliedStatusList, ROUTES 모두 매우 깊은 상대 경로를 사용하고 있습니다. 일관된 경로 별칭 설정을 통해 다음과 같이 개선할 수 있습니다:

- import NoContent from '../../../../common/noContent/NoContent';
- import { useMyAppliedStatusList } from '../../../../../hooks/user/useMyInfo';
- import { ROUTES } from '../../../../../constants/user/routes';
+ import NoContent from '@common/noContent/NoContent';
+ import { useMyAppliedStatusList } from '@hooks/user/useMyAppliedStatusList';
+ import { ROUTES } from '@constants/user/routes';
src/components/user/mypage/notifications/Notifications.tsx (1)

1-1: 상대 경로 검증 및 경로 별칭 도입 고려
import { NOTIFICATION_FILTER } from '../../../../constants/user/myPageFilter'; 경로가 실제 위치와 일치하는지 확인하세요. 또한, 경로 별칭(@constants/user/...)을 설정하면 코드 가독성과 유지보수성이 향상됩니다.

src/components/user/mypage/activityLog/commentsActivity/commentActivity/CommentActivity.tsx (1)

3-4: 타입 전용(import type) 및 경로 별칭 도입 제안
MyComments 는 타입으로만 사용되므로 import type { MyComments } 로 변경해 번들 크기를 최적화할 수 있습니다. 또한, formatDateMyComments 경로(../../../../../../)가 매우 깊으니 경로 별칭을 고려해보세요.

-import { formatDate } from '../../../../../../util/formatDate';
-import { MyComments } from '../../../../../../models/activityLog';
+import type { MyComments } from '@models/activityLog';
+import { formatDate } from '@util/formatDate';
src/pages/user/apply/ApplyStep.tsx (2)

151-173: 다음 버튼 비활성화 조건 고려

currentStepIndex !== stepList.length - 1 조건으로 버튼 노출만 제어하고 있습니다.
유효성 검사에 실패한 상태에서도 버튼은 활성화되어 있어 사용자 경험이 다소 불친절할 수 있습니다.

isValidfalse 인 경우 handleNextStep 내부에서 아무 동작도 하지 않으므로,
버튼을 disabled={!isStepValid} 형태로 제어하거나 step 유효성 실패 시 시각적 피드백(예: 흔들기 애니메이션)을 추가하면 UX 가 개선됩니다.


1-22: 경로 재구성이 일관성 있게 반영되었습니다.

상대 경로가 모두 ../../../ 패턴으로 통일되어 새 디렉터리 구조와 맞춰진 점 확인했습니다. 빌드 경로가 길어졌으므로 alias(예: @user/hooks) 설정을 고려하면 유지보수성이 더욱 향상될 것입니다.

src/constants/user/projectConstants.ts (2)

95-103: startDatePre 필드의 오류 메시지가 잘못되었습니다.

startDatePre 은 “예정 시작일” 인데, 에러 메시지가 ‘종료 날짜를 입력해주세요.’ 로 복붙되어 있습니다. 사용자가 헷갈릴 수 있으니 메시지를 맞춰주세요.

-  startDatePre: z
-    .string({ required_error: '종료 날짜를 입력해주세요.' })
+  startDatePre: z
+    .string({ required_error: '시작 예정 날짜를 입력해주세요.' })

79-120: 중복되는 날짜 검증 로직을 헬퍼로 추출하면 재사용성이 높아집니다.

createProjectSchemeApplyScheme 양쪽에서 refine((date) => !isNaN(Date.parse(date))) 로 날짜 유효성 검증을 반복하고 있습니다.

const isValidDate = (date: string) => !isNaN(Date.parse(date));

z.string().refine(isValidDate, { message: '유효한 날짜를 입력해주세요.' });

공통 util 로 추출하면 스키마가 더 간결해지고 추후 유지보수가 쉬워집니다.

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 41c8a52 and e966764.

📒 Files selected for processing (71)
  • src/components/common/header/Header.tsx (1 hunks)
  • src/components/common/header/Notification/Notification.tsx (1 hunks)
  • src/components/user/applyComponents/careersComponent/CareersComponent.styled.ts (1 hunks)
  • src/components/user/applyComponents/careersComponent/CareersComponent.tsx (1 hunks)
  • src/components/user/applyComponents/phoneComponent/PhoneComponent.tsx (1 hunks)
  • src/components/user/mypage/activityLog/ActivityLog.tsx (1 hunks)
  • src/components/user/mypage/activityLog/commentsActivity/CommentsActivity.tsx (1 hunks)
  • src/components/user/mypage/activityLog/commentsActivity/commentActivity/CommentActivity.tsx (1 hunks)
  • src/components/user/mypage/activityLog/inquiries/Inquiries.tsx (1 hunks)
  • src/components/user/mypage/joinedProject/MyJoinProjects.tsx (1 hunks)
  • src/components/user/mypage/joinedProject/Project.tsx (1 hunks)
  • src/components/user/mypage/myProfile/MyProfile.tsx (1 hunks)
  • src/components/user/mypage/myProfile/editProfile/EditProfile.tsx (1 hunks)
  • src/components/user/mypage/myProfile/profile/Profile.tsx (1 hunks)
  • src/components/user/mypage/notifications/Notifications.tsx (1 hunks)
  • src/components/user/mypage/notifications/all/All.tsx (1 hunks)
  • src/components/user/mypage/notifications/appliedProjects/AppliedProjects.tsx (1 hunks)
  • src/components/user/mypage/notifications/appliedProjects/appliedProjectsStatus/AppliedProjectsStatus.tsx (1 hunks)
  • src/components/user/projectFormComponents/projectInformationInput/ProjectInformationInput.tsx (1 hunks)
  • src/components/user/projectFormComponents/projectInformationInput/fieldCategoryComponent/FieldCategoryComponent.tsx (1 hunks)
  • src/components/user/projectFormComponents/projectInformationInput/languageComponent/LanguageComponent.tsx (1 hunks)
  • src/components/user/projectFormComponents/projectInformationInput/positionComponent/PositionComponent.tsx (2 hunks)
  • src/components/user/projectFormComponents/projectInformationText/ProjectInformation.tsx (1 hunks)
  • src/components/user/projectFormComponents/stepComponent/StepComponent.tsx (1 hunks)
  • src/components/user/reportComponent/ReportModal.tsx (1 hunks)
  • src/components/user/userPage/joinedProject/UserJoinProject.tsx (1 hunks)
  • src/components/user/userPage/userProfile/UserProfile.tsx (1 hunks)
  • src/constants/user/projectConstants.ts (2 hunks)
  • src/hooks/useAuth.ts (1 hunks)
  • src/hooks/user/ProjectHooks/useApplyProject.ts (1 hunks)
  • src/hooks/user/ProjectHooks/useCreateProject.ts (1 hunks)
  • src/hooks/user/ProjectHooks/useTagSelectors.ts (3 hunks)
  • src/hooks/user/ProjectHooks/useUpdateProject.ts (1 hunks)
  • src/hooks/user/evaluationHooks/useEvaluationStep.ts (1 hunks)
  • src/hooks/user/evaluationHooks/useGetEvaluation.ts (1 hunks)
  • src/hooks/user/evaluationHooks/usePostEvaluation.ts (1 hunks)
  • src/hooks/user/useManagedProjects.ts (1 hunks)
  • src/hooks/user/useMyInfo.ts (1 hunks)
  • src/hooks/user/useNicknameVerification.ts (1 hunks)
  • src/hooks/user/useNotification.ts (1 hunks)
  • src/hooks/user/usePassNonPassList.ts (1 hunks)
  • src/hooks/user/usePassNonPassMutation.ts (1 hunks)
  • src/hooks/user/usePostInquiry.ts (1 hunks)
  • src/hooks/user/useProjectCardListData.ts (1 hunks)
  • src/hooks/user/useProjectStatistic.ts (1 hunks)
  • src/hooks/user/useSaveSearchFiltering.ts (1 hunks)
  • src/hooks/user/useSearchFilteringSkillTag.ts (1 hunks)
  • src/hooks/user/useSendResultMutation.ts (1 hunks)
  • src/hooks/user/useUserInfo.ts (1 hunks)
  • src/models/createProject.ts (1 hunks)
  • src/models/joinProject.ts (1 hunks)
  • src/pages/user/apply/Apply.tsx (1 hunks)
  • src/pages/user/apply/ApplyStep.styled.ts (1 hunks)
  • src/pages/user/apply/ApplyStep.tsx (3 hunks)
  • src/pages/user/changePassword/ChangePassword.tsx (1 hunks)
  • src/pages/user/createProject/CreateProject.tsx (1 hunks)
  • src/pages/user/customerService/faq/FAQ.tsx (1 hunks)
  • src/pages/user/customerService/notice/Notice.tsx (1 hunks)
  • src/pages/user/customerService/noticeDetail/NoticeDetail.tsx (1 hunks)
  • src/pages/user/evaluation/Evaluation.tsx (1 hunks)
  • src/pages/user/home/Home.tsx (1 hunks)
  • src/pages/user/main/HeroSection.tsx (1 hunks)
  • src/pages/user/main/Index.tsx (1 hunks)
  • src/pages/user/manage/myProjectList/MyProjectList.tsx (1 hunks)
  • src/pages/user/manage/myProjectParticipantsPass/MyProjectVolunteersPass.tsx (1 hunks)
  • src/pages/user/manage/myProjectVolunteer/MyProjectVolunteer.tsx (1 hunks)
  • src/pages/user/modifyProject/ModifyProject.tsx (1 hunks)
  • src/pages/user/mypage/MyPage.tsx (1 hunks)
  • src/pages/user/projectDetail/ProjectDetail.tsx (1 hunks)
  • src/pages/user/register/Register.tsx (1 hunks)
  • src/pages/user/userpage/UserPage.tsx (1 hunks)
🔇 Additional comments (68)
src/hooks/user/useSaveSearchFiltering.ts (1)

2-2: Import 경로 변경 확인
변경된 ../../context/SearchFilteringContext 경로가 실제 디렉터리 구조 및 파일 위치와 일치하는지 검증해주세요.

src/components/user/reportComponent/ReportModal.tsx (1)

1-2: API 및 상수 경로 확인

import { postReport } from '../../../api/report.api';
import { reasons } from '../../../constants/user/reportConstants';

src/api/...src/constants/user/... 위치와 일치하며, 깊어진 디렉터리 구조에 맞게 경로가 정확히 반영되어 있습니다.

src/pages/user/main/Index.tsx (1)

7-7: 임포트 경로 수정이 올바릅니다
useInView 훅의 새 위치인 ../../../hooks/user/useInView를 정확히 반영했습니다.

src/hooks/user/evaluationHooks/usePostEvaluation.ts (1)

3-4: 경로 구조 변경이 제대로 이루어졌습니다.

모듈 import 경로가 좀 더 깊은 디렉토리 구조를 반영하여 업데이트되었습니다. 사용자 관련 모듈들을 user 하위 폴더에 정리하는 프로젝트 전체 구조 개선에 맞게 적절히 변경되었습니다.

src/hooks/user/evaluationHooks/useGetEvaluation.ts (1)

3-3: 경로 변경이 일관성 있게 적용되었습니다.

getEvaluation 함수의 경로가 ../../api/evaluation.api에서 ../../../api/evaluation.api로 변경되어, 사용자 관련 모듈들의 디렉토리 구조 개선에 맞게 적절히 수정되었습니다. 다른 파일들과 일관성 있게 적용되었습니다.

src/hooks/user/evaluationHooks/useEvaluationStep.ts (1)

3-4: 사용자 관련 모듈 구조 개선이 잘 적용되었습니다.

모듈 import 경로가 더 깊은 디렉토리 구조를 반영하여 업데이트되었습니다. 특히 questions 상수 import 경로에 user 폴더가 추가되어 (../../../constants/user/evaluation), 사용자 관련 상수들을 더 명확하게 구분하고 있습니다. 전체적인 프로젝트 구조 개선에 맞게 일관성 있게 변경되었습니다.

src/pages/user/evaluation/Evaluation.tsx (1)

3-5: 경로 구조 변경이 일관성 있게 적용되었습니다.

모든 import 경로가 더 깊은 디렉토리 구조를 반영하여 업데이트되었습니다. 특히 useGetCompletedEvaluationEvaluationContent의 경로에 user 폴더가 추가되어 사용자 관련 컴포넌트와 훅을 명확하게 구분하고 있습니다. 프로젝트 전체적인 구조 개선에 맞게 잘 적용되었습니다.

src/pages/user/manage/myProjectVolunteer/MyProjectVolunteer.tsx (2)

5-8: 사용자 관련 모듈 import 경로 적절
변경된 import 경로가 PR 의도대로 hooks/user, components/user, constants 등을 올바르게 가리키고 있습니다.

Also applies to: 10-18


9-9: useApllicantList 철자 확인 필요
훅 이름이 일반적으로 useApplicantList 형태인데, 현재 useApllicantList로 보입니다. 오타 여부 및 실제 파일명이 일치하는지 확인해주세요.

src/pages/user/register/Register.tsx (2)

1-1: Login.styled import 경로 검증 필요
import * as S from '../../login/Login.styled'; 경로가 실제 src/pages/user/login/Login.styled 파일을 가리키고 있는지 확인해주세요. 필요 시 상대 경로를 ../login/Login.styled로 수정해야 할 수 있습니다.


13-22: 사용자 도메인 모듈 import 경로 적절
authConstants, useAuth, useModal, useEmailVerification, useNickNameVerification, ROUTES, Title, InputText, Button, Modal 등의 경로가 constants/user, hooks/user, components/user 구조를 잘 반영하고 있습니다.

src/pages/user/changePassword/ChangePassword.tsx (2)

8-15: 사용자 도메인 모듈 import 경로 적절
ERROR_MESSAGES, useAuth, useModal, useEmailVerification, ROUTES, InputText, Button, Modal, Title 등 주요 모듈 import 경로가 PR 의도와 일치합니다.

Also applies to: 17-17


16-16: Login.styled import 경로 검증 필요
import * as S from '../../login/Login.styled'; 경로가 실제 스타일 파일 위치와 맞는지 확인해주세요. 상대 경로 레벨이 잘못될 수 있습니다.

src/pages/user/projectDetail/ProjectDetail.tsx (1)

5-17: 모든 import 경로 적절
useModal, useGetProjectData, useAuthStore, MODAL_MESSAGE, LoadingSpinner, Modal, ROUTES, Avatar, formatDate, ProjectInformation, MarkdownEditorView, Button, CommentLayout 등 모든 import 경로가 PR 목표에 맞춰 정확히 조정되었습니다.

src/hooks/user/useProjectCardListData.ts (1)

3-3: 상대 경로 업데이트 적절함
getProjectLists의 경로를 ../../api/projectLists.api로 수정하여 src/api/projectLists.api를 올바로 참조하고 있습니다.

src/hooks/user/useProjectStatistic.ts (1)

3-3: 상대 경로 업데이트 검토 완료
getProjectStatistic../../api/projectLists.api에서 불러오는 경로가 src/api/projectLists.api 위치와 일치합니다.

src/components/common/header/Notification/Notification.tsx (1)

5-5: 유저 훅 경로 반영 적절
useAlarmList 훅을 ../../../../hooks/user/useAlarmList로 이동하여 사용자 관련 훅 구조와 일관성을 유지했습니다.

src/hooks/user/useNicknameVerification.ts (1)

2-2: 상대 경로 수정 확인됨
getCheckNickname../../api/auth.api로 올바르게 경로 지정하여 src/api/auth.api를 참조합니다.

src/components/user/mypage/activityLog/commentsActivity/CommentsActivity.tsx (1)

5-6: 깊어진 import 경로가 올바르게 반영됨
변경된 import 경로(../../../../common/noContent/NoContent, ../../../../../hooks/user/useGetMyComments)가 해당 파일 위치에 맞춰 정확히 적용되었습니다.

src/hooks/user/ProjectHooks/useUpdateProject.ts (1)

4-7: 사용자 프로젝트 업데이트 훅 import 경로 갱신 확인
putProject, MODAL_MESSAGE, FormData, ROUTES의 import 경로가 ../../../로 깊어진 디렉토리 구조에 맞게 올바르게 수정되었습니다.

src/models/createProject.ts (1)

2-2: 공통 상수 모듈로 이동된 validation 스키마 import 확인
createProjectScheme의 import 경로가 ../constants/projectConstants로 잘 변경되어, 페이지 컴포넌트에서 분리된 스키마를 재사용하고 있습니다.

src/components/user/applyComponents/careersComponent/CareersComponent.styled.ts (1)

22-23: 버튼 높이 및 폰트 크기 변경 시 박스 모델 확인 필요
height: 30px;padding: 10px; 조합이 CSS 기본 box-model(content-box)에서는 총 높이를 50px로 확장할 수 있습니다. Button 컴포넌트에 box-sizing: border-box; 설정 여부를 확인하거나, 패딩/높이 값을 재검토해주세요.

src/hooks/user/useManagedProjects.ts (1)

3-4: 모델 및 API import 경로 갱신 확인
ApiManagedProjectsgetMyProjectLists의 상대 경로(../../models/manageMyProject, ../../api/myProjectList.api)가 올바르게 반영되어 있습니다.

src/components/user/mypage/notifications/appliedProjects/AppliedProjects.tsx (1)

5-5: NoContent 컴포넌트 상대 경로 검증
import NoContent from '../../../../common/noContent/NoContent'; 경로가 실제 파일 위치(src/common/noContent/NoContent.tsx 등)와 일치하는지 확인하세요. 깊은 상대 경로에서 레벨 계산이 빗나갈 수 있습니다.

src/hooks/user/usePassNonPassList.ts (1)

3-3: getPassNonPassList import 경로 확인
새 경로 import { getPassNonPassList } from '../../api/applicant.api'; 는 기존 모듈 구조와 일치해 보입니다. 문제없이 동작할 것으로 판단됩니다.

src/components/user/mypage/joinedProject/Project.tsx (1)

4-4: 임포트 경로가 올바르게 수정되었습니다.

JoinedProject 타입의 임포트 경로가 ../../../models/userProject에서 ../../../../models/userProject로 변경되었습니다. 이는 현재 파일의 위치가 더 깊은 디렉토리 구조로 이동되었음을 반영한 것으로 보입니다. 이러한 경로 변경은 PR 목표에 맞게 사용자 페이지 경로를 설정하는 작업의 일부로 적절합니다.

src/hooks/user/ProjectHooks/useApplyProject.ts (1)

4-7: 임포트 경로가 올바르게 업데이트되었습니다.

모든 임포트 경로가 더 깊은 상대 경로를 사용하도록 업데이트되었습니다:

  • postApplicantProject
  • joinProject
  • MODAL_MESSAGE
  • ROUTES

이는 관리자 페이지와 사용자 페이지의 경로 구조 재설정(이슈 #295)에 부합하는 변경으로 적절합니다. 이 변경은 코드 기능에 영향을 주지 않으면서 프로젝트 구조를 개선합니다.

src/components/user/projectFormComponents/projectInformationInput/fieldCategoryComponent/FieldCategoryComponent.tsx (1)

1-3: 임포트 경로가 일관되게 업데이트되었습니다.

다음 항목들의 임포트 경로가 더 깊은 디렉토리 구조를 반영하도록 업데이트되었습니다:

  • useTagSelectors
  • CreateProjectFormValues 타입
  • MethodTag 타입

이 변경은 사용자 관련 컴포넌트와 훅을 위한 임포트 경로를 일관되게 유지하며, 디렉토리 구조 개선을 위한 PR 목표에 적합합니다.

src/hooks/user/useSendResultMutation.ts (1)

4-5: 임포트 경로가 적절하게 수정되었습니다.

patchSendResult API 함수와 MODAL_MESSAGE 상수의 임포트 경로가 업데이트되었습니다. 이는 사용자 관련 모듈의 재구성에 맞게 더 깊은 상대 경로를 사용하도록 수정된 것으로, 프로젝트의 구조 개선에 기여합니다.

훅의 기능이나 로직은 변경되지 않았으며, 단순히 임포트 경로만 업데이트된 것은 적절한 변경입니다.

src/hooks/user/usePassNonPassMutation.ts (1)

4-5: 경로 수정 확인
MODAL_MESSAGEpatchPassNonPassStatus의 상대 import 경로(../../constants/user/modalMessage, ../../api/applicant.api)가 프로젝트 구조 변경을 정확히 반영하고 있습니다.

src/components/user/mypage/joinedProject/MyJoinProjects.tsx (1)

6-8: 경로 수정 확인
useMyJoinedProjectList, ROUTES, NoContent의 상대 경로(../../../../hooks/user/useMyInfo, ../../../../constants/user/routes, ../../../common/noContent/NoContent)가 올바르게 업데이트되어 있습니다.

src/components/user/mypage/notifications/appliedProjects/appliedProjectsStatus/AppliedProjectsStatus.tsx (1)

1-2: 경로 수정 확인
MY_STATUSAppliedProject의 상대 import 경로(../../../../../../constants/user/authConstants, ../../../../../../models/userProject)가 기대한 디렉터리 구조와 일치합니다.

src/hooks/user/useNotification.ts (1)

5-7: 경로 수정 확인
AlarmLive, useAuthStore/getTokens, useToast의 상대 import 경로(../../models/alarm, ../../store/authStore, ../useToast)가 프로젝트 재구조화에 맞게 정확히 반영되었습니다.

src/hooks/user/usePostInquiry.ts (1)

5-7: 경로 수정 확인
useAuthStore, postInquiry, INQUIRY_MESSAGE의 상대 import 경로(../../store/authStore, ../../api/inquiry.api, ../../constants/user/customerService)가 올바르게 적용되어 있습니다.

src/models/joinProject.ts (1)

1-4: Zod를 활용한 타입 정의 개선

Zod를 활용하여 스키마에서 타입을 추론하는 패턴을 도입한 것은 좋은 접근법입니다. 이를 통해 런타임 검증과 타입 체크를 동시에 할 수 있어 타입 안전성이 향상됩니다.

src/components/common/header/Header.tsx (1)

20-21: 임포트 경로 구조 개선

사용자 관련 모듈들을 user 디렉토리로 이동하여 구조화한 것은 코드 관리 측면에서 좋은 변경입니다. 향후 관리자 페이지와의 구분이 명확해집니다.

src/components/user/mypage/activityLog/ActivityLog.tsx (1)

1-1: 일관된 임포트 경로 구조 적용

사용자 관련 상수 파일을 user 디렉토리로 이동하여 일관된 구조를 유지한 것은 바람직합니다. 이로써 코드베이스의 구조가 더 명확해집니다.

src/hooks/user/ProjectHooks/useCreateProject.ts (1)

4-7: 임포트 경로 업데이트

사용자 관련 상수와 라우트를 user 디렉토리로 이동하는 구조적 변경이 일관되게 적용되었습니다. 이는 코드베이스의 조직화 측면에서 긍정적인 변화입니다.

src/pages/user/manage/myProjectList/MyProjectList.tsx (1)

1-3: Import 경로 일관성 확인
Title, CardList, useManagedProjects의 import 경로가 새롭게 정리된 user 디렉터리 구조를 정확히 반영하고 있습니다. 컴포넌트 및 훅이 의도한 위치에서 정상적으로 로드될 것으로 보입니다.

src/components/user/mypage/myProfile/MyProfile.tsx (1)

8-11: Import 경로 정합성 검토
useModal, useMyProfileInfo, ROUTES, Modal의 경로가 깊어진 디렉터리 구조에 맞춰 일관성 있게 수정되었습니다. 해당 파일들이 새로운 위치에서 올바르게 존재하는지 빌드 및 IDE에서 확인해 주세요.

src/components/user/mypage/activityLog/inquiries/Inquiries.tsx (1)

1-3: Import 경로 일관성 확인
useGetMyInquiries 훅과 ContentBorder, NoContent 컴포넌트의 import 경로가 hooks/usercommon 하위로 잘 정비되었습니다. 로직 변화 없이 모듈 참조만 이동된 사항입니다.

src/components/user/mypage/notifications/all/All.tsx (1)

5-8: Import 경로 업데이트 검토
useAlarmDelete, useAlarmPatch, useAlarmList 훅과 NoContent 컴포넌트 경로가 hooks/usercommon 디렉터리 구조로 일관되게 조정되었습니다. 정상적으로 모듈이 로드되는지 확인 바랍니다.

src/pages/user/mypage/MyPage.tsx (1)

10-12: Import 경로 정비 확인
ROUTES, useMyProfileInfo, Sidebar 경로가 예상한 constants/user, hooks/user, components/common/sidebar 구조로 업데이트되었습니다. JSX 구조나 로직에 변화는 없으며, 경로만 반영된 점 확인했습니다.

src/hooks/user/useUserInfo.ts (1)

3-6: import 경로 업데이트 확인
스토어, 모델, API 관련 import 경로가 hooks/user 구조에 맞게 ../../로 올바르게 조정되었습니다. 구조 변경에 따른 경로 수정이 적절해 보입니다.

src/components/user/projectFormComponents/projectInformationText/ProjectInformation.tsx (1)

1-8: import 경로 및 에셋 로딩 확인
상수, 모델, 유틸, 스타일드 컴포넌트 및 SVG 에셋 import 경로가 모두 새로운 디렉터리 구조에 맞게 정확히 업데이트되었습니다.

src/hooks/user/useMyInfo.ts (2)

2-6: 초기 import 경로 적절함
axios, react-router-dom, 쿼리 키, authStore, 모델(import ApiUserInfo, EditMyInfo) 경로가 새로운 구조에 맞춰 업데이트되었습니다.


13-16: 추가 import 경로 적절함
mypage.api, 모달 메시지, 라우트, 프로젝트 모델 import 경로가 일관성 있게 조정되어 현 디렉터리 구조와 일치합니다.

src/components/user/userPage/joinedProject/UserJoinProject.tsx (1)

5-7: import 경로 확인
useUserJoinedProjectList, ROUTES, NoContent의 상대 경로가 hooks/user, constants/user, common/noContent 구조에 맞춰 올바르게 수정되었습니다.

src/components/user/mypage/myProfile/editProfile/EditProfile.tsx (1)

12-18: import 경로 업데이트 확인
모델, 훅(useSearchFilteringSkillTag, useEditMyProfileInfo, useNickNameVerification), 상수(ROUTES, ERROR_MESSAGES), 공통 Button 컴포넌트 import가 모두 user 하위 디렉터리 구조에 맞게 정확히 변경되었습니다.

src/hooks/user/useSearchFilteringSkillTag.ts (1)

1-8: import 경로가 새로운 구조에 맞추어 업데이트되었습니다.
hooks 파일이 이동된 디렉터리 구조에 맞게 modelsapi 모듈의 상대 경로가 올바르게 반영되어 있습니다.

src/pages/user/modifyProject/ModifyProject.tsx (1)

7-18: import 경로 업데이트 확인
프로젝트 디렉터리 재구성에 따른 상대 경로가 적절히 수정되었습니다. 모듈 로딩에 문제가 없을 것으로 보입니다.

src/components/user/projectFormComponents/projectInformationInput/ProjectInformationInput.tsx (1)

7-10: import 경로가 일관성 있게 수정되었습니다.
새로운 user 하위 폴더 구조에 맞추어 models, hooks, 상수 모듈을 올바르게 참조하고 있습니다.

src/components/user/projectFormComponents/projectInformationInput/languageComponent/LanguageComponent.tsx (1)

1-3: import 경로가 대상 파일 위치에 맞게 조정되었습니다.
깊어진 디렉터리 구조에서 hooksmodels 모듈 import가 정확합니다.

src/hooks/useAuth.ts (1)

9-12: auth 훅 내 import 경로 일관성 검토 완료
MODAL_MESSAGE, ROUTES, registerFormValues, changePasswordFormValuesuser 서브디렉토리 아래에서 정상 참조되고 있습니다.

src/components/user/projectFormComponents/projectInformationInput/positionComponent/PositionComponent.tsx (2)

1-3: 임포트 경로 업데이트가 적절히 수행되었습니다.

더 깊은 디렉토리 구조를 반영하여 임포트 경로가 정리되었습니다. 이 변경은 PR의 목적인 '사용자 페이지 경로 설정'에 부합합니다.


34-34: 코드가 더 간결해졌습니다.

selectedTag.some(item => item === idx + 1) 대신 selectedTag.includes(idx + 1)를 사용하여 코드가 더 읽기 쉽고 간결해졌습니다. 두 방식은 기능적으로 동일하지만, includes 메소드가 더 직관적입니다.

src/pages/user/apply/ApplyStep.styled.ts (1)

54-54: 글꼴 크기 증가가 적절히 적용되었습니다.

StepLabel의 글꼴 크기를 1rem에서 1.3rem으로 증가시켜 가독성이 향상되었습니다.

src/pages/user/createProject/CreateProject.tsx (2)

5-16: 임포트 경로 및 구조 개선이 적절히 수행되었습니다.

사용자 관련 모듈을 위한 더 깊은 디렉토리 구조를 반영하여 임포트 경로가 업데이트되었습니다. 이런 구조화는 코드 관리와 유지보수를 향상시킵니다.


9-9: 스키마 중앙화는 좋은 실천입니다.

인라인으로 정의되었던 createProjectScheme 검증 스키마를 중앙 상수 파일로 이동한 것은 코드 재사용성과 일관성을 향상시키는 좋은 변경입니다.

src/pages/user/apply/Apply.tsx (3)

5-12: 임포트 경로 업데이트가 적절히 수행되었습니다.

유틸리티, 모델, 훅, 상수 등의 임포트 경로가 새로운 디렉토리 구조를 반영하여 업데이트되었습니다. 이는 코드베이스의 일관성을 유지하는 데 도움이 됩니다.


6-7: 스키마와 타입의 중앙화는 좋은 실천입니다.

ApplySchemeApplySchemeType를 인라인 정의에서 중앙화된 파일로 이동한 것은 코드 재사용성과 유지보수성을 향상시킵니다. 이 패턴은 CreateProject.tsx와 일관성을 유지하고 있어 좋습니다.

Also applies to: 11-11


14-17: 컴포넌트 임포트 경로가 일관되게 업데이트되었습니다.

컴포넌트 임포트 경로가 새로운 디렉토리 구조를 반영하여 일관되게 업데이트되었습니다. 이는 PR의 목적인 '사용자 페이지 경로 설정'에 부합합니다.

src/components/user/userPage/userProfile/UserProfile.tsx (1)

1-1: 경로 수정이 일관적으로 적용되었습니다.

프로젝트 구조 변경에 맞게 import 경로가 적절히 수정되었습니다. 이는 PR 목적에 맞게 사용자 관련 컴포넌트와 훅의 경로 구조를 재조정한 것으로 보입니다.

Also applies to: 4-5

src/pages/user/manage/myProjectParticipantsPass/MyProjectVolunteersPass.tsx (1)

5-18: 관리자 페이지를 위한 사용자 관련 경로 구조가 적절히 변경되었습니다.

사용자 관련 훅과 컴포넌트의 import 경로가 user 하위 디렉토리 구조로 일관성 있게 변경되었습니다. 경로 구조의 깊이가 더 깊어졌지만, 모듈 구성 측면에서 더 명확한 구조를 제공합니다.

src/hooks/user/ProjectHooks/useTagSelectors.ts (3)

3-4: import 경로가 적절히 수정되었습니다.

프로젝트 구조 변경에 맞게 모델 import 경로가 수정되었습니다.


56-64: 포지션 선택 로직이 개선되었습니다.

포지션 태그 중 인덱스 1(아마도 특별한 포지션 값)에 대한 특별 처리 로직이 추가되었습니다. 이는 특정 포지션이 다른 포지션과 함께 선택될 수 없는 비즈니스 로직을 구현한 것으로 보입니다.


66-66: 코드 가독성이 개선되었습니다.

some() 메서드 대신 더 명확한 includes() 메서드를 사용하여 코드 가독성이 개선되었습니다.

src/pages/user/customerService/notice/Notice.tsx (1)

3-11: 고객 서비스 페이지의 경로 구조가 적절히 수정되었습니다.

사용자 고객 서비스 관련 모델, 훅, 컴포넌트 및 상수의 import 경로가 일관성 있게 변경되었습니다. 이는 PR의 주요 목적인 사용자 페이지 경로 설정에 맞게 구조를 재조정한 것으로 보입니다.

import { ApplySchemeType } from '../../../pages/apply/Apply';
import { Control, FieldErrors } from 'react-hook-form';
import PhoneInput from './phoneComponentInput/PhoneComponentInput';
import { ApplySchemeType } from '../../../models/joinProject';
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

ApplySchemeType import 경로 수정 필요
현재 import { ApplySchemeType } from '../../../models/joinProject';는 잘못된 상대 경로로 보입니다. 다음과 같이 상위 디렉토리 레벨을 한 단계 추가해주세요:

- import { ApplySchemeType } from '../../../models/joinProject';
+ import { ApplySchemeType } from '../../../../models/joinProject';
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import { ApplySchemeType } from '../../../models/joinProject';
-import { ApplySchemeType } from '../../../models/joinProject';
+import { ApplySchemeType } from '../../../../models/joinProject';
🤖 Prompt for AI Agents
In src/components/user/applyComponents/phoneComponent/PhoneComponent.tsx at line
4, the import path for ApplySchemeType is incorrect. Update the import statement
to add one more level up in the relative path, changing
'../../../models/joinProject' to '../../../../models/joinProject' to correctly
resolve the module.

import * as S from './CareersComponent.styled';
import CareerInput from './careersInputComponent/CareersComponentInput';
import { CAREER_INPUT } from '../../../constants/projectConstants';
import { ApplySchemeType } from '../../../models/joinProject';
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

잘못된 상대 경로 수정 필요
상대 경로 ../../../models/joinProject가 현재 파일 위치 기준으로 src/models/joinProject를 정확히 가리키지 않습니다. 올바른 경로는 ../../../../models/joinProject이어야 합니다.

- import { ApplySchemeType } from '../../../models/joinProject';
+ import { ApplySchemeType } from '../../../../models/joinProject';
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import { ApplySchemeType } from '../../../models/joinProject';
-import { ApplySchemeType } from '../../../models/joinProject';
+import { ApplySchemeType } from '../../../../models/joinProject';
🤖 Prompt for AI Agents
In src/components/user/applyComponents/careersComponent/CareersComponent.tsx at
line 5, the import path for ApplySchemeType is incorrect. Change the relative
import path from '../../../models/joinProject' to
'../../../../models/joinProject' to correctly reference the file from the
current location.

import Spinner from '../../Spinner';
import AppliedProjectsStatus from './appliedProjectsStatus/AppliedProjectsStatus';
import NoContent from '../../../../common/noContent/NoContent';
import { useMyAppliedStatusList } from '../../../../../hooks/user/useMyInfo';
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

훅 파일 경로 및 이름 불일치 확인 필요
import { useMyAppliedStatusList } from '../../../../../hooks/user/useMyInfo'; 구문에서 훅 이름(useMyAppliedStatusList)과 모듈 파일명(useMyInfo)이 일치하지 않습니다.

  • 실제 파일명이 useMyAppliedStatusList.ts 인지, 혹은 useMyInfo.ts 안에 해당 훅이 정의되어 있는지 검토가 필요합니다.
🤖 Prompt for AI Agents
In src/components/user/mypage/notifications/appliedProjects/AppliedProjects.tsx
at line 6, verify the import path and hook name consistency. Check if the hook
useMyAppliedStatusList is defined inside the file useMyInfo.ts or if it should
be imported from a file named useMyAppliedStatusList.ts. Adjust the import
statement to match the actual file name and export location of the hook to
ensure correct module resolution.

@@ -1,3 +1,8 @@
import { z } from 'zod';
import { ApplyScheme } from '../constants/projectConstants';
Copy link

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

상수 임포트 경로 확인 필요

임포트 경로가 ../constants/projectConstants로 되어 있는데, 다른 파일들의 변경 패턴을 보면 이 경로도 ../constants/user/projectConstants로 수정되어야 할 수 있습니다.


🏁 Script executed:

#!/bin/bash
# 올바른 경로의 projectConstants 파일 확인
fd --type file "projectConstants.ts" --exec echo "{}"

Length of output: 94


상수 경로 수정 필요

src/models/joinProject.ts에서 잘못된 상수 파일 경로를 임포트하고 있습니다. 실제 파일 위치는 src/constants/user/projectConstants.ts이므로, 해당 import 경로를 수정해야 합니다.

  • 파일: src/models/joinProject.ts
  • 라인: 2

제안하는 변경사항:

- import { ApplyScheme } from '../constants/projectConstants';
+ import { ApplyScheme } from '../constants/user/projectConstants';
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import { ApplyScheme } from '../constants/projectConstants';
import { ApplyScheme } from '../constants/user/projectConstants';
🤖 Prompt for AI Agents
In src/models/joinProject.ts at line 2, the import path for ApplyScheme is
incorrect. Update the import statement to use the correct path
'../constants/user/projectConstants' instead of '../constants/projectConstants'
to match the actual file location.


export const StepButton = styled.div`
display: flex;
justify-content: right;
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

표준 CSS 속성값을 사용하세요.

justify-content: right는 비표준 값이며 권장되지 않습니다. 표준 플렉스박스 속성인 justify-content: flex-end를 사용하는 것이 좋습니다. right 값은 일부 브라우저에서 작동할 수 있지만 CSS 스펙에 맞지 않으며 향후 문제가 발생할 수 있습니다.

-  justify-content: right;
+  justify-content: flex-end;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
justify-content: right;
justify-content: flex-end;
🤖 Prompt for AI Agents
In src/pages/user/apply/ApplyStep.styled.ts at line 49, replace the non-standard
CSS value 'justify-content: right' with the standard 'justify-content: flex-end'
to ensure proper flexbox alignment and cross-browser compatibility.

setValue(fieldName, idx);
}

console.log(selectedTag);
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

디버깅용 console.log가 남아있습니다.

프로덕션 코드에 디버깅용 console.log가 남아있습니다. 프로덕션 환경에 배포하기 전에 제거하는 것이 좋습니다.

-    console.log(selectedTag);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
console.log(selectedTag);
🤖 Prompt for AI Agents
In src/hooks/user/ProjectHooks/useTagSelectors.ts at line 80, there is a
console.log statement used for debugging. Remove this console.log to clean up
the code before production deployment.

Comment on lines +122 to +130
export const ApplyScheme = z.object({
email: z
.string()
.nonempty({ message: '이메일을 입력해주세요.' })
.email({ message: '이메일 형식으로 입력해주세요.' }),
phone: z
.string({ message: '전화번호를 입력해주세요.' })
.array()
.nonempty({ message: '전화번호를 입력해주세요.' }),
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

전화번호 스키마 정의 방식 개선 필요

현재 정의: z.string().array().nonempty() ⇒ 내부적으론 z.array(z.string()) 와 동일하지만,

  1. z.string({ message }) 는 지원하지 않는 파라미터라 타입 오류가 날 수 있습니다.
  2. 배열 길이(예: 3개 구분) 검증이 없습니다.
-  phone: z
-    .string({ message: '전화번호를 입력해주세요.' })
-    .array()
-    .nonempty({ message: '전화번호를 입력해주세요.' }),
+  phone: z
+    .array(z.string().nonempty({ message: '전화번호를 입력해주세요.' }))
+    .length(3, { message: '전화번호를 3부분 모두 입력해주세요.' }),

이렇게 수정하면 타입 오류를 제거하고 길이도 보장할 수 있습니다.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
export const ApplyScheme = z.object({
email: z
.string()
.nonempty({ message: '이메일을 입력해주세요.' })
.email({ message: '이메일 형식으로 입력해주세요.' }),
phone: z
.string({ message: '전화번호를 입력해주세요.' })
.array()
.nonempty({ message: '전화번호를 입력해주세요.' }),
export const ApplyScheme = z.object({
email: z
.string()
.nonempty({ message: '이메일을 입력해주세요.' })
.email({ message: '이메일 형식으로 입력해주세요.' }),
phone: z
.array(z.string().nonempty({ message: '전화번호를 입력해주세요.' }))
.length(3, { message: '전화번호를 3부분 모두 입력해주세요.' }),
// …other fields
});
🤖 Prompt for AI Agents
In src/constants/user/projectConstants.ts around lines 122 to 130, the phone
field schema incorrectly uses z.string() with a message parameter and then calls
.array(), which is invalid and causes type errors. Replace this with
z.array(z.string()) to properly define an array of strings, remove the
unsupported message parameter from z.string(), and add a length validation
(e.g., .length(3)) on the array to enforce the expected number of phone number
segments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🛠개선 성능 개선/리팩토링에 대한 라벨

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants