Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
a9a64c5
fix(applicants): 메모가 없는 경우 기본 메시지 표시 추가
lepitaaar Aug 11, 2025
8b7388d
Update CategoryButtonList.tsx
seongwon030 Aug 11, 2025
659b061
refactor(analytics): 공통 이벤트 상수(EVENT_NAME) 도입 및 하드코딩 제거
seongwon030 Aug 12, 2025
03b541e
refactor(applicants): React import 최적화
lepitaaar Aug 12, 2025
ce8de3d
Merge pull request #638 from Moadong/refactor/#637-standardize-catego…
seongwon030 Aug 12, 2025
25fbe15
Merge pull request #641 from Moadong/refactor/#640-use-common-event-c…
seongwon030 Aug 12, 2025
a4187df
refactor(ui): SearchField 공통 스타일 분리 및 종속성 제거
seongwon030 Aug 12, 2025
63cdadc
feat(applicants): 지원자 정보 수정 API 추가
lepitaaar Aug 12, 2025
faad774
refactor(applicants): 지원자 상태 매핑 로직 리팩토링
lepitaaar Aug 12, 2025
30f1aff
feat(applicants): 지원자 상세 페이지 메모 및 상태 업데이트 기능 추가
lepitaaar Aug 12, 2025
e726da9
feat: 지원자 검색 기능 추가
lepitaaar Aug 12, 2025
935d106
refactor(admin): ApplicantsTab 검색 입력을 공통 SearchField로 교체 및 실시간 필터링 적용
seongwon030 Aug 13, 2025
93712ab
feat: 필터링 박스들 Wrapper 적용 및 헤더에 space-between적용
seongwon030 Aug 13, 2025
ad3f3a0
fix: early return 위치 조정
seongwon030 Aug 13, 2025
483c14f
feat: 실시간 검색을 위해 autoBlur false로 변경
seongwon030 Aug 13, 2025
01615cc
fix: 지원자 이름 추출 안전 처리(String(...))로 런타임 에러 방지
seongwon030 Aug 13, 2025
8302e9c
fix(analytics): 검색 실행 시 리다이렉트 이전 경로를 정확히 기록하도록 수정
seongwon030 Aug 13, 2025
8b2ee19
Merge pull request #647 from Moadong/refactor/#646-common-search-file…
seongwon030 Aug 13, 2025
65501d3
Merge pull request #650 from Moadong/feature/#648-search-applicants-M…
seongwon030 Aug 13, 2025
c8d621f
Merge branch 'develop-fe' into feature/applicant-memo-status-change
lepitaaar Aug 13, 2025
3b7be42
refactor: conflict 해결
lepitaaar Aug 13, 2025
7952a99
refactor: ApplicationStatus ENUM 사용
lepitaaar Aug 13, 2025
a9ace02
Merge pull request #651 from Moadong/feature/applicant-memo-status-ch…
seongwon030 Aug 13, 2025
159a675
fix: ApplicationStatus 매핑 수정
lepitaaar Aug 13, 2025
b2b6fae
feat: 에셋 추가
lepitaaar Aug 13, 2025
7757b9a
fix: 태그 빠짐 이슈
lepitaaar Aug 13, 2025
347de42
feat: 지원자 이전 이후 이동, 지원서 디테일 변경시 로컬 상태와 싱크, 목록에서 사용자를 선택해 변경가능
lepitaaar Aug 13, 2025
e5d2b1e
refactor: 주석 제거
lepitaaar Aug 13, 2025
596c4dc
Merge pull request #652 from Moadong/feature/applicant-move-another
seongwon030 Aug 14, 2025
44c0a31
feat: 체크박스 이미지 추가
seongwon030 Aug 14, 2025
7b390e4
feat: 체크박스 스타일 컴포넌트 추가
seongwon030 Aug 14, 2025
e219cba
refactor: input태그를 체크박스 컴포넌트로 대체
seongwon030 Aug 14, 2025
b136ebb
feat: select Arrow 이미지 추가
seongwon030 Aug 14, 2025
9b3e548
feat: 체크박스/셀렉트 UI 커스텀 (SVG 아이콘 적용, 텍스트 가림 해결)
seongwon030 Aug 14, 2025
4096816
feat: 지원자 목록 헤더 border 설정
seongwon030 Aug 15, 2025
c531be6
feat: 지원자목록 헤더 wrapper에 width, borderLeft prop 추가
seongwon030 Aug 15, 2025
c9b1285
feat: 메모 항목에만 텍스트 왼쪽 정렬 유지
seongwon030 Aug 15, 2025
30fea3d
Merge pull request #654 from Moadong/feature/#653-applicant-list-desi…
lepitaaar Aug 15, 2025
b40b6c8
fix: 기본 padding 적용
seongwon030 Aug 16, 2025
0f3f5fa
fix: dropdown svg변경
seongwon030 Aug 16, 2025
0157227
feat: 지원자 목록 dropdown 이미지 추가
seongwon030 Aug 16, 2025
f9910c1
refactor: ApplicationDetailPage 파일 위치 변경
seongwon030 Aug 16, 2025
4c6ead2
feat: 지원자 상세 페이지 UI 개선 및 상태별 색상 적용
seongwon030 Aug 16, 2025
150bdee
feat: 지원서 테두리 적용
seongwon030 Aug 16, 2025
edb034b
fix: 모집 기간 초기화 시 현재 날짜 반영
oesnuj Aug 17, 2025
9976b43
fix(Calendar): 스타일 개선 및 재사용 가능한 CSS 블록 추가
oesnuj Aug 17, 2025
4f33a6d
fix: useMemo 제거 및 props 직접 사용으로 변경, 시작일 및 종료일 처리 로직 개선
oesnuj Aug 17, 2025
ca1c84f
fix: DatePicker 선택 항목 스타일 적용 오류 수정
oesnuj Aug 17, 2025
1f41492
fix: 날짜 형식 변경
oesnuj Aug 17, 2025
ab8bc49
fix: 날짜 파싱 로직 수정, UTC 오프셋 추가
oesnuj Aug 17, 2025
058d8f2
feat: 총동아리 연합회 페이지 라우트 추가
oesnuj Aug 17, 2025
7af3064
feat: 총동아리연합회 페이지 컴포넌트 추가
oesnuj Aug 17, 2025
034cd37
feat: 총동아리연합회 페이지 스타일 컴포넌트 추가
oesnuj Aug 17, 2025
95be0dd
feat: 믹스패널 CLUB_UNION_BUTTON_CLICKED 이벤트 추가
oesnuj Aug 17, 2025
529c79a
feat: 총동아리연합회 페이지 이동 추가 및 useCallback으로 성능 최적화
oesnuj Aug 17, 2025
15ac7ab
feat: 총동아리연합회 구성원 정보 및 이미지 추가
oesnuj Aug 17, 2025
dcd6a8e
feat: 헤더 컴포넌트 리팩토링 및 네비게이션 링크 추가
oesnuj Aug 17, 2025
531f5cc
feat: 총동아리연합회 페이지에 소개 텍스트 추가 및 스타일 수정
oesnuj Aug 17, 2025
61ad983
refactor: 지원자 관리 -> 지원자 현황으로 변경
seongwon030 Aug 17, 2025
97aedd5
Merge pull request #659 from Moadong/feature/#658-applicant-page-head…
seongwon030 Aug 17, 2025
5229eeb
feat: 총동아리연합회 구성원 정보에서 연락처 필드 제거
oesnuj Aug 17, 2025
ce1b5ae
feat: 총동아리연합회 구성원 정보에서 연락처 필드 제거
oesnuj Aug 17, 2025
eeb7e05
feat: 상세페이지에 동아리 추천 추가
Zepelown Aug 17, 2025
c0dcdf1
feat: 누락된 [] 추가
Zepelown Aug 17, 2025
c172db7
feat: memo 26글자 넘어가면 23+"..."로 설정
seongwon030 Aug 17, 2025
efcaee6
feat 메모 컬럼 텍스트 오버플로우 처리 개선
seongwon030 Aug 17, 2025
a105e94
Revert "feat: memo 26글자 넘어가면 23+"..."로 설정"
seongwon030 Aug 17, 2025
ecd3887
Merge pull request #668 from Moadong/feature/#667-memo-long-text-MOA-168
seongwon030 Aug 17, 2025
8dd4908
fix: 필요없는 코드 삭제 및 리팩토링
Zepelown Aug 17, 2025
4fd545f
Merge pull request #665 from Moadong/feature/#657-recommend-club-fe-M…
Zepelown Aug 17, 2025
9144ef5
Merge branch 'develop-fe' into feature/#661-introduce-association-mem…
oesnuj Aug 17, 2025
2ee3852
Merge pull request #664 from Moadong/feature/#639-calendar-datetime-u…
oesnuj Aug 17, 2025
c8b0af4
feat: update 훅을 추가해 상태를 최신화 시킴
lepitaaar Aug 18, 2025
5403817
feat: debounce의 unkown에 따라 타입가드를 추가했습니다
lepitaaar Aug 18, 2025
40b5392
refactor: legacy 임포트 정리
lepitaaar Aug 18, 2025
59f8e1e
Merge pull request #670 from Moadong/feature/sync-applicant-detail
lepitaaar Aug 18, 2025
ac1cadb
feat: 개발자 가이드 추가 - description 필드 글자 수 제한 안내
oesnuj Aug 18, 2025
3959629
Merge branch 'feature/#661-introduce-association-members-MOA-164' of …
oesnuj Aug 18, 2025
95542e6
refactor: 불필요한 memo 사용 제거
lepitaaar Aug 18, 2025
6bfb0b0
refactor: 상태 제거
lepitaaar Aug 18, 2025
ce51459
refactor: 존재하지않는 상태 제거
lepitaaar Aug 18, 2025
fc25fc5
Merge pull request #674 from Moadong/refactor/671-fe-refactor
lepitaaar Aug 18, 2025
9c2ed7b
Merge pull request #663 from Moadong/feature/#661-introduce-associati…
oesnuj Aug 18, 2025
46d3694
fix: onInput을 onChange로 변경할시 정상적으로 작동합니다.
lepitaaar Aug 18, 2025
580ebff
Merge pull request #677 from Moadong/fix/application-builder-title-ch…
lepitaaar Aug 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions frontend/config/webpack.dev.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ export default getAvailablePort(DEFAULT_PORT).then((port) => {
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
include: path.resolve(
__dirname,
'../node_modules/react-datepicker/dist',
),
include: [
path.resolve(__dirname, '../node_modules/react-datepicker/dist'),
path.resolve(__dirname, '../node_modules/swiper'),
],
Comment on lines +58 to +61
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

❓ Verification inconclusive

prod 설정과의 정합성 유지 권장

동일 예외 설정이 webpack.prod.ts에도 적용되어야 합니다. 미적용 시 로컬(dev)에서는 정상, 배포 빌드에서는 swiper 스타일이 누락되는 이슈가 재현됩니다.

빠른 점검 스크립트:


🏁 Script executed:

#!/bin/bash
# prod 설정에서 swiper css 예외 처리 검색
fd webpack.prod.ts | xargs -r -I {} rg -n "node_modules/react-datepicker/dist|node_modules/swiper" {}

Length of output: 107


webpack.prod.ts에도 React Datepicker·Swiper 스타일 예외 설정 추가 필요

빠른 점검 스크립트(fd webpack.prod.ts | xargs -r -I {} rg -n "node_modules/react-datepicker/dist|node_modules/swiper" {}) 결과, prod용 Webpack 설정에 해당 include 예외가 존재하지 않음을 확인했습니다. 로컬(dev)에서는 정상적으로 스타일이 로드되지만, 배포(build) 시 Swiper 스타일이 누락될 수 있으므로 아래와 같이 webpack.prod.ts에도 동일한 설정을 적용해주세요.

  • 대상 파일: frontend/config/webpack.prod.ts
  • 위치: CSS 로더 설정의 include 배열
   include: [
     path.resolve(__dirname, '../src'),
+    path.resolve(__dirname, '../node_modules/react-datepicker/dist'),
+    path.resolve(__dirname, '../node_modules/swiper'),
   ],
📝 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
include: [
path.resolve(__dirname, '../node_modules/react-datepicker/dist'),
path.resolve(__dirname, '../node_modules/swiper'),
],
include: [
path.resolve(__dirname, '../src'),
path.resolve(__dirname, '../node_modules/react-datepicker/dist'),
path.resolve(__dirname, '../node_modules/swiper'),
],
🤖 Prompt for AI Agents
In frontend/config/webpack.prod.ts around the CSS loader's include array, the
prod config is missing the same node_modules exceptions for react-datepicker and
swiper present in webpack.dev.ts; update the include array to add
path.resolve(__dirname, '../node_modules/react-datepicker/dist') and
path.resolve(__dirname, '../node_modules/swiper') so production builds also
process those packages' styles.

},
{
test: /\.css$/,
Expand Down
24 changes: 21 additions & 3 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
"rehype-raw": "^7.0.0",
"rehype-sanitize": "^6.0.0",
"remark-gfm": "^4.0.1",
"styled-components": "^6.1.14"
"styled-components": "^6.1.14",
"swiper": "^11.2.10"
},
"devDependencies": {
"@chromatic-com/storybook": "^3.2.4",
Expand Down
13 changes: 6 additions & 7 deletions frontend/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ import PrivateRoute from '@/pages/AdminPage/auth/PrivateRoute/PrivateRoute';
import PhotoEditTab from '@/pages/AdminPage/tabs/PhotoEditTab/PhotoEditTab';
import ApplicationFormPage from './pages/ApplicationFormPage/ApplicationFormPage';
import ApplicantsTab from './pages/AdminPage/tabs/ApplicantsTab/ApplicantsTab';
import ApplicantDetailPage from './pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage';
import ApplicantDetailPage from './pages/AdminPage/tabs/ApplicantsTab/ApplicantDetailPage/ApplicantDetailPage';
import ClubUnionPage from './pages/ClubUnionPage/ClubUnionPage';


const queryClient = new QueryClient();

Expand Down Expand Up @@ -72,17 +74,15 @@ const App = () => {
path='account-edit'
element={<AccountEditTab />}
/>
{/*🔒 메인 브랜치에서는 접근 차단 (배포용 차단 목적)*/}
{/*develop-fe 브랜치에서는 접근 가능하도록 풀고 개발 예정*/}
<Route
path='application-edit'
element={<ApplicationEditTab />}
/>
<Route
<Route
path='applicants'
element={<ApplicantsTab />}
/>
<Route
<Route
path='applicants/:questionId'
element={<ApplicantDetailPage />}
/>
Expand All @@ -92,12 +92,11 @@ const App = () => {
</AdminClubProvider>
}
/>
{/*🔒 사용자용 지원서 작성 페이지도 메인에서는 비활성화 처리 */}
{/*🛠 develop-fe에서는 다시 노출 예정*/}
<Route
path='/application/:clubId'
element={<ApplicationFormPage />}
/>
<Route path='/club-union' element={<ClubUnionPage />} />
<Route path='*' element={<Navigate to='/' replace />} />
</Routes>
</BrowserRouter>
Expand Down
38 changes: 38 additions & 0 deletions frontend/src/apis/application/updateApplicantDetail.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import API_BASE_URL from '@/constants/api';
import { secureFetch } from '@/apis/auth/secureFetch';
import { ApplicationStatus } from '@/types/applicants';

export const updateApplicantDetail = async (
memo: string,
status: ApplicationStatus,
clubId: string,
applicantId: string,
) => {
try {
const response = await secureFetch(
`${API_BASE_URL}/api/club/${clubId}/apply/${applicantId}`,
{
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
memo,
status
})
},
);

if (!response.ok) {
throw new Error('지원자의 지원서 정보 수정에 실패했습니다.');
}

const result = await response.json();
return result.data;
} catch (error) {
console.error('지원자의 지원서 정보 수정 중 오류 발생:', error);
throw error;
}
};

export default updateApplicantDetail;
3 changes: 3 additions & 0 deletions frontend/src/assets/images/icons/applicant_drop.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions frontend/src/assets/images/icons/checkBox.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions frontend/src/assets/images/icons/next_applicant.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions frontend/src/assets/images/icons/prev_applicant.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions frontend/src/assets/images/icons/selectArrow.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const QuestionTitle = ({
<Styled.QuestionTitleText
contentEditable={mode !== 'answer'}
suppressContentEditableWarning={true}
onInput={(e) => {
onChange={(e) => {
const value = e.currentTarget.textContent || '';
if (value.length <= APPLICATION_FORM.QUESTION_TITLE.maxLength) {
onTitleChange?.(value);
Expand Down
Loading