Skip to content
Open

Develop #1933

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
65b655d
Feat: 자소서 도우미 - 활동기록 [키워드] 검색 기능 구현
codmoni Aug 12, 2025
6c4a9a8
Design: chip- CareerTagSearch 구현
codmoni Aug 12, 2025
4e79cba
Feat: 자기소개서 도우미 활동기록 [태그]검색 로직 추가
codmoni Aug 12, 2025
27c4f65
Refactor: SearchBar 제어 로직 추가
codmoni Aug 12, 2025
3c42c42
Feat: 자소서 도우미 세부 사항 UI 구현
codmoni Aug 13, 2025
8fe9547
Feat: 자기소개서 도우미 상세 페이지 보기 기능 추가
codmoni Aug 13, 2025
7317ce0
Fix: qa 디자인 수정
codmoni Aug 13, 2025
4776b23
Merge pull request #1897 from kkijuk/moni
codmoni Aug 13, 2025
e61059f
Feat: 약관동의 로직 제거
yeondub1121 Aug 19, 2025
a5e136d
Feat: 홈 타이틀, 콘텐트 줄 넘김 시 ...처리
yeondub1121 Aug 19, 2025
1a1f117
Merge pull request #1898 from kkijuk/yeondub
yeondub1121 Aug 19, 2025
7e8e45b
Fix: 비로그인 시 접근 비허용
yeondub1121 Aug 19, 2025
4e6c09f
Merge pull request #1899 from kkijuk/yeondub
yeondub1121 Aug 19, 2025
59a306d
Fix: 마스터 자소서, 자소서 작성 도우미 버튼 관련 오류 수정
codmoni Aug 26, 2025
34385cf
Design: 자소서 도우미 디자인 수정
codmoni Aug 26, 2025
067a68e
Feat: mypage 수정, 캘린더 컴포넌트 수정, mycareer css 수정
cinsy26 Aug 26, 2025
603f64f
Merge pull request #1900 from kkijuk/kite
cinsy26 Aug 26, 2025
1d8a24c
Fix: mypage margin 수정, 캘린더 수정
cinsy26 Aug 26, 2025
212af62
Merge pull request #1901 from kkijuk/kite
cinsy26 Aug 26, 2025
5ade9f3
Fex: 달력 컴포넌트 수정
cinsy26 Aug 26, 2025
6b53484
Merge pull request #1902 from kkijuk/kite
cinsy26 Aug 26, 2025
1ef531d
Fix: 달력수정
cinsy26 Aug 26, 2025
75dc435
Merge pull request #1903 from kkijuk/kite
cinsy26 Aug 26, 2025
cfdf32f
Feat: 사용량 높은 태그 불러오기 api 연결
codmoni Aug 26, 2025
8b0cafc
Merge pull request #1904 from kkijuk/moni
codmoni Aug 26, 2025
8189b07
Feat: Home 배너 위치 조정
cinsy26 Aug 28, 2025
813d9ed
Feat: 자소서 도우미 태그 기반 검색 기능 추가, 검색 결과 없는 경우 응답 처리 추가
codmoni Aug 31, 2025
a928758
Fix: 자기소개서 공고 없는 경우 처리 추가
codmoni Aug 31, 2025
03cc778
Feat: Homepage 코치마크 추가 작업 중
codmoni Sep 1, 2025
82fe55d
Merge pull request #1905 from kkijuk/moni
codmoni Sep 1, 2025
46cd9f5
Merge branch 'develop' into kite
cinsy26 Sep 1, 2025
07dedc6
Merge pull request #1906 from kkijuk/kite
cinsy26 Sep 1, 2025
7825108
Fix: home styles
cinsy26 Sep 1, 2025
38187c5
Merge branch 'kite' of https://github.com/kkijuk/frontend into kite
cinsy26 Sep 1, 2025
3d82b01
Merge branch 'develop' of https://github.com/kkijuk/frontend into kite
cinsy26 Sep 1, 2025
809723c
Merge pull request #1907 from kkijuk/kite
cinsy26 Sep 1, 2025
52bb4e9
Feat: font-weight 제거
yeondub1121 Sep 5, 2025
27caf8b
Merge pull request #1908 from kkijuk/yeondub
yeondub1121 Sep 5, 2025
7743b2f
Feat: 후기 버튼 수정
yeondub1121 Sep 5, 2025
ac0163f
Merge pull request #1909 from kkijuk/yeondub
yeondub1121 Sep 5, 2025
4115ff5
Fix: 충돌 에러 수정
yeondub1121 Sep 5, 2025
1171c91
Feat: 충돌 에러 수정
yeondub1121 Sep 5, 2025
2d28aa5
Merge pull request #1910 from kkijuk/yeondub
yeondub1121 Sep 5, 2025
6c14d69
Fix: 날짜 안뜨는 에러 수정
yeondub1121 Sep 5, 2025
fd75cdc
Merge pull request #1911 from kkijuk/yeondub
yeondub1121 Sep 5, 2025
a8b6588
Fix: home에러 수정
yeondub1121 Sep 5, 2025
617d5bc
Merge pull request #1912 from kkijuk/yeondub
yeondub1121 Sep 5, 2025
cd4668f
Fix: dashboard 에러 수정
yeondub1121 Sep 5, 2025
ae11946
Merge pull request #1913 from kkijuk/yeondub
yeondub1121 Sep 5, 2025
e321b65
Feat: mycareer font-weight 제거
lyeonn Sep 5, 2025
1fcbfeb
Merge pull request #1914 from kkijuk/kite
cinsy26 Sep 5, 2025
e7cf1de
Design: KebabMenu, 활동기록 추가 드롭다운 디자인 수정
codmoni Sep 5, 2025
01fc7ca
conflict error 수정
codmoni Sep 5, 2025
d7f6034
Design: 이력서 탭메뉴 font 수정
codmoni Sep 5, 2025
ca0970d
Merge pull request #1915 from kkijuk/moni
codmoni Sep 5, 2025
dc41c74
Fix: 자소서 도우미 DotColor 함수 수정
codmoni Sep 5, 2025
69d2650
Fix: CareerView margin 통일
lyeonn Sep 5, 2025
7173d3c
Merge branch 'develop' into kite
cinsy26 Sep 5, 2025
484ae52
Merge pull request #1916 from kkijuk/kite
cinsy26 Sep 5, 2025
32506d6
Feat: coachmark 추가
codmoni Sep 6, 2025
65f6476
Merge branch 'develop' of https://github.com/kkijuk/frontend into moni
codmoni Sep 6, 2025
e3688f4
Fix: CareerItem detailSummary 취소 버튼 클릭 오류 수정
codmoni Sep 6, 2025
e38e2af
Fix: 자소서 도우미 마스터에도 붙이기, 태그 디자인 수정
codmoni Sep 6, 2025
f0b47e9
Fix: 자소서 도우미 dotcolor 함수 수정
codmoni Sep 6, 2025
e08d9d3
Merge pull request #1917 from kkijuk/moni
codmoni Sep 6, 2025
e9cff4d
Fix: 캘린더 수정, 홈 배너 위치 이동
lyeonn Sep 6, 2025
bc2939f
Fix: home
lyeonn Sep 6, 2025
f91c98f
Merge branch 'develop' into kite
cinsy26 Sep 6, 2025
093748d
Merge pull request #1918 from kkijuk/kite
cinsy26 Sep 6, 2025
5617b0c
Fix: banner image 교체
lyeonn Sep 6, 2025
237c5e6
Merge branch 'kite' of https://github.com/kkijuk/frontend into kite
lyeonn Sep 6, 2025
aef1056
Merge pull request #1919 from kkijuk/kite
cinsy26 Sep 6, 2025
0c84a29
Fix: banner
lyeonn Sep 6, 2025
6bf0067
Fix: banner 사이즈 수정 88 -> 80
lyeonn Sep 6, 2025
8e63bde
Merge pull request #1920 from kkijuk/kite
cinsy26 Sep 6, 2025
acd3673
Fix: banner 이미지 수정
lyeonn Sep 6, 2025
000055a
Merge pull request #1921 from kkijuk/kite
cinsy26 Sep 6, 2025
04303ba
Fix: 태그 디자인 & 코치마크 디자인
codmoni Sep 6, 2025
3c6b5e7
Merge pull request #1922 from kkijuk/moni
codmoni Sep 6, 2025
1c4d74b
Fix: data-coach div에 직접 붙이는 쪽으로 수정
codmoni Sep 6, 2025
5884742
PR 충돌 수정
codmoni Sep 6, 2025
7442b53
Merge pull request #1923 from kkijuk/moni
codmoni Sep 6, 2025
f3f3ac6
Feat: 카드 클릭 시 이동
yeondub1121 Sep 7, 2025
b2587af
Merge branch 'develop' of https://github.com/kkijuk/frontend into yeo…
yeondub1121 Sep 7, 2025
29cf383
Feat: 활동 없을 때 css 수정
yeondub1121 Sep 7, 2025
23fd2e3
Merge pull request #1924 from kkijuk/yeondub
yeondub1121 Sep 7, 2025
5f41f9c
Fix: 이동 수정
yeondub1121 Sep 7, 2025
8919418
Merge pull request #1925 from kkijuk/yeondub
yeondub1121 Sep 7, 2025
b7888a8
Feat: route fix
yeondub1121 Sep 7, 2025
1e09f05
Merge pull request #1926 from kkijuk/yeondub
yeondub1121 Sep 7, 2025
c2d00ba
Fix: 코치마크 하이라이트 안되는 요소 수정
codmoni Sep 9, 2025
9ddd4f7
Merge pull request #1927 from kkijuk/moni
codmoni Sep 9, 2025
c3dff22
Fix: [data-coach] 식별자 수정
codmoni Sep 9, 2025
bfe95f1
Merge pull request #1928 from kkijuk/moni
codmoni Sep 9, 2025
968e09b
Fix: css
lyeonn Sep 15, 2025
a333d34
Merge pull request #1929 from kkijuk/kite
cinsy26 Sep 15, 2025
215dcda
Fix: search tag margin 삭제
lyeonn Sep 15, 2025
f1bb8db
Merge pull request #1930 from kkijuk/kite
cinsy26 Sep 15, 2025
7ab7dd3
Fix: 스크롤 삭제
lyeonn Sep 15, 2025
038d0fc
Merge pull request #1931 from kkijuk/kite
cinsy26 Sep 15, 2025
8090d80
Fix: fontWeight 수정
codmoni Sep 16, 2025
7adcba1
Merge pull request #1932 from kkijuk/moni
codmoni Sep 16, 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
9 changes: 9 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"permissions": {
"allow": [
"Read(/D:\\project\\kkijuk\\frontend\\src\\pages/**)"
],
"deny": [],
"ask": []
}
}
24 changes: 14 additions & 10 deletions 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 package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"axios": "^1.7.7",
"browserify-zlib": "^0.2.0",
"date-fns": "^4.1.0",
"driver.js": "^1.3.6",
"html2canvas": "^1.4.1",
"https-browserify": "^1.0.0",
"jspdf": "^2.5.2",
Expand All @@ -25,7 +26,7 @@
"react-apexcharts": "^1.4.1",
"react-calendar": "^5.0.0",
"react-datetime-picker": "^6.0.1",
"react-day-picker": "^9.8.1",
"react-day-picker": "^9.9.0",
"react-dom": "^18.3.1",
"react-ga4": "^2.1.0",
"react-hook-form": "^7.52.2",
Expand Down
3 changes: 3 additions & 0 deletions src/App.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import "driver.js/dist/driver.css";
import React from 'react';
import styled from 'styled-components';
import AppRoutes from '@routes/AppRoutes';
import { BrowserRouter } from 'react-router-dom';
import { CoachmarkGlobalStyle } from '@/coachmark/coachmarkGlobalStyle';

const AppContainer = styled.div`
display: flex;
Expand All @@ -12,6 +14,7 @@ const AppContainer = styled.div`
export default function App() {
return (
<AppContainer>
<CoachmarkGlobalStyle />
<AppRoutes />
</AppContainer>
);
Expand Down
12 changes: 10 additions & 2 deletions src/Axios.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,16 @@ export const setupApiInterceptors = (navigate) => {
}
// 404 → numerror 페이지로 이동
else if (error.response?.status === 404) {
navigate('/numerror'); // or use ROUTES.NUM_ERROR
}
const url = error.config?.url || '';

// 대시보드 API는 404여도 리다이렉트하지 않음
if (url.includes('/career/detail/dashboard')) {
return Promise.reject(error); // 호출한 쪽에서 try/catch로 처리
}

navigate('/numerror');
}


// 그 외 에러는 모두 /error 페이지로 이동
else if (error.response?.status >= 400) {
Expand Down
12 changes: 10 additions & 2 deletions src/api/Home/getRecentCareerDetails.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import api from '@/Axios';

export const getRecentCareerDetails = async () => {
const response = await api.get('/career/detail/dashboard');
return response.data.data;
try {
const response = await api.get('/career/detail/dashboard');
return response.data?.data ?? [];
} catch (error) {
if (error.response && error.response.status === 404) {

return [];
}
throw error;
}
};
25 changes: 25 additions & 0 deletions src/api/MycareerSearch/getMostUsedTags.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import api from "@/Axios";

// [사용량 높은 순으로 태그 제공]
const getMostUsedTags = async () => {
try {
const response = await api.get(`/career/find/taglist/count`);
console.log('Sucess-getMostUsedTags: ', response);
return response.data.data; // 태그 배열 반환
} catch (error) {
console.error('Error-getMostUsedTags: ', error);
if (error.response) {
//서버 응답이 있는 경우
console.error('Server responded with status code: ', error.response.status);
console.error('Server responded with:', error.response.data);
} else if (error.request) {
//요청이 보내졌지만 응답을 받지 못한 경우
console.error('No response received: ', error.request);
} else {
//요청 설정 중에 오류가 발생한 경우
console.error('Error setting up request: ', error.message);
}
}
};

export default getMostUsedTags;
Binary file added src/assets/banner/banner1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/banner/banner2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/coachmarkGIF.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 14 additions & 2 deletions src/assets/icons.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
101 changes: 101 additions & 0 deletions src/coachmark/coachmarkGlobalStyle.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
// src/coachmarks/CoachmarkGlobalStyle.js
import { createGlobalStyle } from "styled-components";
import { Color } from "@/constants/color";

export const CoachmarkGlobalStyle = createGlobalStyle`
/* 팝오버 박스 */
.driver-popover.coachmark-popover {
display: flex;
flex-direction: column;
background: ${Color.white};
color: ${Color.gray01};
border-radius: 10px;
padding: 20px 24px;
box-shadow: 0 8px 24px rgba(0,0,0,0.16);
}

/* 화살표 */
.driver-popover.coachmark-popover .driver-popover-arrow {
background: ${Color.gray02};
box-shadow: 0 8px 24px rgba(0,0,0,0.12);
}

/* 제목 / 설명 */
.driver-popover.coachmark-popover .driver-popover-title {
font-size: 18px;
font-family: 'Semibold';
color: ${Color.gray01};
margin: 0 0 8px 0;
}
.driver-popover.coachmark-popover .driver-popover-description {
font-size: 14px;
font-family: 'Regular';
color: ${Color.gray01};
line-height: 1.5;
margin: 0 0 12px 0;
}

/* 하단 버튼 영역 */
.driver-popover.coachmark-popover .driver-popover-footer {
display: flex;
justify-content: center;
align-items: center;
}

.driver-popover.coachmark-popover .driver-popover-progress-text {
display: none;
}
.driver-popover.coachmark-popover .driver-popover-navigation-btns {
display: flex;
justify-content: center;
gap: 12px;
}

.driver-popover.coachmark-popover .driver-popover-prev-btn,
.driver-popover.coachmark-popover .driver-popover-next-btn {
width: 100px;
height: 30px;
border-radius: 10px;
padding: 8px 18px;
font-size: 14px;
font-family: 'Medium';
cursor: pointer;
border: 1px solid ${Color.gray02};
display: flex;
align-items: center;
justify-content: center;
line-height: 9px;
text-shadow: none;
text-align: center;
}

/* prev 전용 */
.driver-popover.coachmark-popover .driver-popover-prev-btn {
background: ${Color.gray03};
color: ${Color.white};
border: none;
}

/* next 전용 */
.driver-popover.coachmark-popover .driver-popover-next-btn {
background: ${Color.white};
color: ${Color.black};
border: 1px solid ${Color.gray03};
}

/* 아이콘 + 텍스트 정렬 */
.driver-popover.coachmark-popover .with-icon {
display: inline-flex;
align-items: center;
gap: 8px;
line-height: 1;
}

/* 필요 시: driver 활성화/오버레이/하이라이트 스타일 */
/* body.driver-active { } */
/* .driver-overlay { background: rgba(0,0,0,.6) !important; } */
/* .driver-active-element { outline: 2px solid ${Color.main01}; } */

/* onPopoverRender에서 붙일 때 사용 가능한 유틸 */
.hidden { display: none !important; }
`;
36 changes: 36 additions & 0 deletions src/coachmark/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import "driver.js/dist/driver.css";

export const COACHMARK_POPOVER_CLASS = "coachmark-popover";

const LEFT_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="5" height="8" viewBox="0 0 5 8" fill="#FFFFFF">
<path d="M3.99935 7.33301L0.666016 3.99967L3.99935 0.666342" stroke="white" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</svg>`;

const RIGHT_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="#000000">
<path d="M6.66667 4.66699L10 8.00033L6.66667 11.3337" stroke="black" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</svg>`;

const defaultCoachmarkConfig = {
showProgress: false,
overlayOpacity: 0.5,
nextBtnText: "다음",
prevBtnText: "이전",
doneBtnText: "완료",
popoverClass: COACHMARK_POPOVER_CLASS,

onPopoverRender(popover) {
// prev
if(popover.previousBtn) {
popover.previousBtn.innerHTML =
`${LEFT_SVG} <span class="coachmark-btn-label">이전</span>`;
popover.previousBtn.classList.add('with-icon', 'is-prev');
}
if(popover.nextBtn) {
popover.nextBtn.innerHTML =
`<span class="coachmark-btn-label">다음</span> ${RIGHT_SVG}`;
popover.nextBtn.classList.add('with-icon', 'is-next');
}
}
};

export default defaultCoachmarkConfig;
57 changes: 57 additions & 0 deletions src/coachmark/homeCoachhmark.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { driver } from "driver.js";
import defaultCoachmarkConfig, { COACHMARK_POPOVER_CLASS} from "./config";
import coachmarkGIF from '@/assets/coachmarkGIF.gif';

const $ = (sel) => () => document.querySelector(sel);

const homeCoachmark = (refs) => {
const d = driver({
...defaultCoachmarkConfig,
steps: [
{
element: $('[data-coach="add-activity"]'),
popover : {
title: "지금 바로 활동을 추가해보세요!",
description: "이전에 했었거나, 지금 하고 있는 활동에 대한 정보를 손쉽게 기록해요.",
position: "bottom",
showButtons: ['next']
}
},
{
element: $('[data-coach="career-timeline"]'),
popover: {
title: "타임라인으로 한눈에!",
description: "추가한 활동들은 타임라인 형태로 깔끔하게 볼 수 있어요.",
}
},
{
element: $('[data-coach="add-career-detail"]'),
popover: {
title: "활동기록 꾸준히 적기!",
description: "각 활동에서 무엇을 했고, 어떤 것을 느꼈는지 자세히 기록해보세요.",
}
},
{
element: $('[data-coach="noti-at-home"]'),
popover: {
title: "공고 마감일 놓치지 않기!",
description: "등록한 공고의 마감일을 알려줘요. 아직 등록한 공고가 없다면 추가해보세요."
}
},
{
element: null,
popover: {
description: `
<img src="${coachmarkGIF}" alt="coachmark guide" style="width:100%; border-radius: 10px; margin-bottom: 12px;" />
막막하기만 했던 취준은 이제 안녕~ 이제부터 끼적과 함께 내 경험&커리어를 차곡차곡 쌓아가요!
`,
showButtons: ['done']
}
}
]
})

return d;
}

export default homeCoachmark;
Loading