From a316786ba3b66cd6c9bceb5c513294c456c5d800 Mon Sep 17 00:00:00 2001 From: constantly-dev Date: Wed, 25 Feb 2026 21:02:42 +0900 Subject: [PATCH 1/6] =?UTF-8?q?chore:=20=EC=95=88=EC=93=B0=EB=8A=94=20func?= =?UTF-8?q?tion=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/extension/src/apis/query/queries.ts | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/apps/extension/src/apis/query/queries.ts b/apps/extension/src/apis/query/queries.ts index 51983444..a0c16b7e 100644 --- a/apps/extension/src/apis/query/queries.ts +++ b/apps/extension/src/apis/query/queries.ts @@ -1,17 +1,15 @@ -import { useMutation, useQuery, UseQueryOptions } from '@tanstack/react-query'; import { + getArticleSaved, + getCategoriesExtension, + getRemindTime, postArticle, PostArticleRequest, - postSignup, - postSignupRequest, - getCategoriesExtension, postCategories, postCategoriesRequest, - getRemindTime, - getArticleSaved, putArticle, PutArticleRequest, } from '@apis/axios'; +import { useMutation, useQuery, UseQueryOptions } from '@tanstack/react-query'; export const usePostArticle = () => { return useMutation({ @@ -19,12 +17,6 @@ export const usePostArticle = () => { }); }; -export const usePostSignup = () => { - return useMutation({ - mutationFn: (data: postSignupRequest) => postSignup(data), - }); -}; - export const usePostCategories = () => { return useMutation({ mutationFn: (data: postCategoriesRequest) => postCategories(data), From 0f65bfc610c8f4f22cffcca0a69bc465d0e0fd7c Mon Sep 17 00:00:00 2001 From: constantly-dev Date: Wed, 25 Feb 2026 21:03:32 +0900 Subject: [PATCH 2/6] =?UTF-8?q?chore:=20=EC=95=88=EC=93=B0=EB=8A=94=20func?= =?UTF-8?q?tion=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/extension/src/apis/axios.ts | 38 ++++++++++++++------------------ 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/apps/extension/src/apis/axios.ts b/apps/extension/src/apis/axios.ts index 1c3eff87..368a4a4d 100644 --- a/apps/extension/src/apis/axios.ts +++ b/apps/extension/src/apis/axios.ts @@ -1,30 +1,24 @@ -import apiRequest from "./axiosInstance"; +import apiRequest from './axiosInstance'; export interface PostArticleRequest { url: string; categoryId: number; memo?: string | null; - remindTime?: string | null; + remindTime?: string | null; } export const postArticle = async (data: PostArticleRequest) => { - const response = await apiRequest.post("/api/v1/articles", data); + const response = await apiRequest.post('/api/v1/articles', data); return response.data; }; - export interface postSignupRequest { email: string; - remindDefault: string + remindDefault: string; fcmToken: string; } -export const postSignup = async (data: postSignupRequest) => { - const response = await apiRequest.post("/api/v1/auth/signup", data); - return response.data; -}; - export const getCategoriesExtension = async () => { - const response = await apiRequest.get("/api/v1/categories/extension"); + const response = await apiRequest.get('/api/v1/categories/extension'); return response.data; }; @@ -33,27 +27,26 @@ export interface postCategoriesRequest { } export const postCategories = async (data: postCategoriesRequest) => { - const response = await apiRequest.post("/api/v1/categories", data); + const response = await apiRequest.post('/api/v1/categories', data); return response.data; -} +}; export const getRemindTime = async () => { - const now = new Date().toISOString().split(".")[0]; + const now = new Date().toISOString().split('.')[0]; - const response = await apiRequest.get("/api/v1/users/remind-time", { + const response = await apiRequest.get('/api/v1/users/remind-time', { params: { now }, }); return response.data; }; - -export const getArticleSaved=async (url:string) => { - const response = await apiRequest.get("/api/v1/articles/saved", { +export const getArticleSaved = async (url: string) => { + const response = await apiRequest.get('/api/v1/articles/saved', { params: { url }, }); return response.data; -} +}; export interface PutArticleRequest { categoryId: number; @@ -62,7 +55,10 @@ export interface PutArticleRequest { remindTime: string | null; } -export const putArticle = async (articleId: number, data: PutArticleRequest) => { +export const putArticle = async ( + articleId: number, + data: PutArticleRequest +) => { const response = await apiRequest.put(`/api/v1/articles/${articleId}`, data); return response.data; -}; \ No newline at end of file +}; From 2fa352d57af6dd36e192970ebdf06f7e66129b9d Mon Sep 17 00:00:00 2001 From: constantly-dev Date: Wed, 25 Feb 2026 21:10:42 +0900 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20auth=20signup=20end=20point=20v3?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/client/src/shared/apis/axios.ts | 3 ++- apps/client/src/shared/apis/setting/axiosInstance.ts | 2 +- apps/extension/src/apis/axiosInstance.ts | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/client/src/shared/apis/axios.ts b/apps/client/src/shared/apis/axios.ts index 9762b213..bbbfc958 100644 --- a/apps/client/src/shared/apis/axios.ts +++ b/apps/client/src/shared/apis/axios.ts @@ -33,10 +33,11 @@ export interface postSignUpRequest { email: string; remindDefault: string; fcmToken: string | null; + job: string; } export const postSignUp = async (responsedata: postSignUpRequest) => { - const { data } = await apiRequest.patch('/api/v2/auth/signup', responsedata); + const { data } = await apiRequest.patch('/api/v3/auth/signup', responsedata); return data; }; diff --git a/apps/client/src/shared/apis/setting/axiosInstance.ts b/apps/client/src/shared/apis/setting/axiosInstance.ts index 60bb84aa..a23bedf4 100644 --- a/apps/client/src/shared/apis/setting/axiosInstance.ts +++ b/apps/client/src/shared/apis/setting/axiosInstance.ts @@ -27,7 +27,7 @@ apiRequest.interceptors.response.use( const noAuthNeeded = [ '/api/v1/auth/token', - '/api/v2/auth/signup', + '/api/v3/auth/signup', '/api/v2/auth/google', ]; diff --git a/apps/extension/src/apis/axiosInstance.ts b/apps/extension/src/apis/axiosInstance.ts index d56aca0f..36c37e9d 100644 --- a/apps/extension/src/apis/axiosInstance.ts +++ b/apps/extension/src/apis/axiosInstance.ts @@ -36,7 +36,7 @@ apiRequest.interceptors.response.use( const noAuthNeeded = [ '/api/v1/auth/token', - '/api/v2/auth/signup', + '/api/v3/auth/signup', '/api/v2/auth/google', ]; const isNoAuth = noAuthNeeded.some((url) => From 09ab1e44664c2a34d9586e546a8d3ceb5cc601de Mon Sep 17 00:00:00 2001 From: constantly-dev Date: Wed, 25 Feb 2026 21:13:01 +0900 Subject: [PATCH 4/6] =?UTF-8?q?feat:=20postSignData=20=EC=9D=B8=EC=9E=90?= =?UTF-8?q?=EC=97=90=20job=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/onBoarding/hooks/useOnboardingFunnel.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/client/src/pages/onBoarding/hooks/useOnboardingFunnel.ts b/apps/client/src/pages/onBoarding/hooks/useOnboardingFunnel.ts index dbaceae5..6eba99c4 100644 --- a/apps/client/src/pages/onBoarding/hooks/useOnboardingFunnel.ts +++ b/apps/client/src/pages/onBoarding/hooks/useOnboardingFunnel.ts @@ -115,7 +115,12 @@ export function useOnboardingFunnel() { if (isFinalStep) { postSignData( - { email: userEmail, remindDefault: remindTime, fcmToken }, + { + email: userEmail, + remindDefault: remindTime, + fcmToken, + job: selectedJob ?? '', + }, { onSuccess: () => (window.location.href = '/'), onError: () => { @@ -145,6 +150,7 @@ export function useOnboardingFunnel() { setStep, step, userEmail, + selectedJob, ]); const prevStep = useCallback(() => { From 7d98278fd319e1f4e2952d8ec839a96c87aee858 Mon Sep 17 00:00:00 2001 From: constantly-dev Date: Wed, 25 Feb 2026 22:16:27 +0900 Subject: [PATCH 5/6] =?UTF-8?q?feat:=20patchUserJob=20=EC=A7=81=EB=AC=B4?= =?UTF-8?q?=20=EC=84=A0=ED=83=9D=20api=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/client/src/shared/apis/axios.ts | 9 +++++++++ apps/client/src/shared/apis/queries.ts | 8 ++++++++ .../jobSelectionFunnel/JobSelectionFunnel.tsx | 13 +++++++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/apps/client/src/shared/apis/axios.ts b/apps/client/src/shared/apis/axios.ts index bbbfc958..ee4edaca 100644 --- a/apps/client/src/shared/apis/axios.ts +++ b/apps/client/src/shared/apis/axios.ts @@ -87,3 +87,12 @@ export const getJobs = async (): Promise => { const { data } = await apiRequest.get('/api/v3/enums/jobs'); return data.data; }; + +export interface patchUserJobRequest { + job: string; +} + +export const patchUserJob = async (requestData: patchUserJobRequest) => { + const { data } = await apiRequest.patch('/api/v3/users/job', requestData); + return data; +}; diff --git a/apps/client/src/shared/apis/queries.ts b/apps/client/src/shared/apis/queries.ts index 4d2f9488..35a9fd9a 100644 --- a/apps/client/src/shared/apis/queries.ts +++ b/apps/client/src/shared/apis/queries.ts @@ -20,6 +20,8 @@ import { getGoogleProfile, getMyProfile, getJobs, + patchUserJob, + patchUserJobRequest, } from '@shared/apis/axios'; import { AxiosError } from 'axios'; import { @@ -171,3 +173,9 @@ export const useSuspenseGetJobs = () => { staleTime: Infinity, }); }; + +export const usePatchUserJob = () => { + return useMutation({ + mutationFn: (data: patchUserJobRequest) => patchUserJob(data), + }); +}; diff --git a/apps/client/src/shared/components/jobSelectionFunnel/JobSelectionFunnel.tsx b/apps/client/src/shared/components/jobSelectionFunnel/JobSelectionFunnel.tsx index 1806dc4e..cc3ab4df 100644 --- a/apps/client/src/shared/components/jobSelectionFunnel/JobSelectionFunnel.tsx +++ b/apps/client/src/shared/components/jobSelectionFunnel/JobSelectionFunnel.tsx @@ -1,4 +1,5 @@ import { Button } from '@pinback/design-system/ui'; +import { usePatchUserJob } from '@shared/apis/queries'; import { useFunnel } from '@shared/hooks/useFunnel'; import { useState } from 'react'; import FunnelProgress from './FunnelProgress'; @@ -24,9 +25,14 @@ export default function JobSelectionFunnel({ const [selectedJob, setSelectedJob] = useState(null); const [jobShareAgree, setJobShareAgree] = useState(false); + const { mutateAsync: patchUserJob, isPending: isPatchUserJobPending } = + usePatchUserJob(); - const handleNext = () => { + const handleNext = async () => { if (isLastStep) { + if (selectedJob) { + await patchUserJob({ job: selectedJob }); + } onComplete?.(); return; } @@ -59,7 +65,10 @@ export default function JobSelectionFunnel({ size="medium" className="w-[4.8rem]" onClick={handleNext} - isDisabled={currentStep === 'job' && (!jobShareAgree || !selectedJob)} + isDisabled={ + isPatchUserJobPending || + (currentStep === 'job' && (!jobShareAgree || !selectedJob)) + } > {isLastStep ? '완료' : '다음'} From 6a82805a35a8b07593db7352be73b93284e1c358 Mon Sep 17 00:00:00 2001 From: constantly-dev Date: Thu, 26 Feb 2026 14:58:48 +0900 Subject: [PATCH 6/6] =?UTF-8?q?chore:=20=EB=B6=88=ED=95=84=EC=9A=94=20post?= =?UTF-8?q?SignupRequest=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/extension/src/apis/axios.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/apps/extension/src/apis/axios.ts b/apps/extension/src/apis/axios.ts index 368a4a4d..296db93e 100644 --- a/apps/extension/src/apis/axios.ts +++ b/apps/extension/src/apis/axios.ts @@ -11,12 +11,6 @@ export const postArticle = async (data: PostArticleRequest) => { return response.data; }; -export interface postSignupRequest { - email: string; - remindDefault: string; - fcmToken: string; -} - export const getCategoriesExtension = async () => { const response = await apiRequest.get('/api/v1/categories/extension'); return response.data;