diff --git a/src/apis/verify/queries.ts b/src/apis/verify/queries.ts index 284ab01..69b55f7 100644 --- a/src/apis/verify/queries.ts +++ b/src/apis/verify/queries.ts @@ -1,26 +1,14 @@ import { useInfiniteQuery } from '@tanstack/react-query' -import { http } from '#/shared/apis/http' import { getVerify } from './mock' -import type { VerifyResponse } from '#/types/verify' export const verifyKeys = { bySector: (sector: string) => ['verify', sector] as const, } -/** GET /api/verify가 쓰는 sector/cursor 쿼리스트링. */ -function pageSearchParams(sector: string, cursor?: string) { - const searchParams: Record = {} - if (sector && sector !== '전체') searchParams.sector = sector - if (cursor) searchParams.cursor = cursor - return searchParams -} - -async function fetchVerify( - sector: string, - cursor?: string, -): Promise { - const searchParams = pageSearchParams(sector, cursor) - return http.get('verify', { searchParams }).json() +/** 예측 검증 탭 — 실 백엔드에 해당 API가 없어 verify.json 더미 데이터를 + * API를 거치지 않고 클라이언트에서 직접 페이징한다. */ +function fetchVerify(sector: string, cursor?: string) { + return getVerify({ sector, cursor }) } /** 검증 목록 — 무한 스크롤용 커서 기반 페이징. `data.pages.flatMap(p => p.news)`로 펼쳐 쓴다. */ diff --git a/src/mocks/analysis/handlers.ts b/src/mocks/analysis/handlers.ts index f27f060..a283374 100644 --- a/src/mocks/analysis/handlers.ts +++ b/src/mocks/analysis/handlers.ts @@ -2,7 +2,7 @@ import { HttpResponse, delay, http } from 'msw' import { getNewsImpact } from '#/apis/analysis/mock' export const analysisHandlers = [ - http.get('/api/news/:id/impact', async ({ params }) => { + http.get('/api/v1/news/:id/impact', async ({ params }) => { await delay(350) const impact = getNewsImpact(Number(params.id)) if (!impact) { diff --git a/src/mocks/graph/handlers.ts b/src/mocks/graph/handlers.ts index 68f6135..7d98998 100644 --- a/src/mocks/graph/handlers.ts +++ b/src/mocks/graph/handlers.ts @@ -2,7 +2,7 @@ import { HttpResponse, delay, http } from 'msw' import { getGraph } from '#/apis/graph/mock' export const graphHandlers = [ - http.get('/api/graph', async () => { + http.get('/api/v1/graph', async () => { await delay(250) return HttpResponse.json(getGraph({ mode: 'full' })) }), diff --git a/src/mocks/news/handlers.ts b/src/mocks/news/handlers.ts index 551460b..ac67aed 100644 --- a/src/mocks/news/handlers.ts +++ b/src/mocks/news/handlers.ts @@ -8,7 +8,7 @@ import { getNews } from '#/apis/news/mock' */ export const newsHandlers = [ - http.get('/api/news', async ({ request }) => { + http.get('/api/v1/news', async ({ request }) => { await delay(300) const searchParams = new URL(request.url).searchParams const cursorId = searchParams.get('cursorId') diff --git a/src/mocks/verify/data.ts b/src/mocks/verify/data.ts index 37c2754..94486dd 100644 --- a/src/mocks/verify/data.ts +++ b/src/mocks/verify/data.ts @@ -1,433 +1,15 @@ +import rawVerify from './verify.json' import type { VerifyDaily, VerifyEntry } from '#/types/verify' -export const VERIFY_ENTRIES: VerifyEntry[] = [ - { - newsId: 'v1', - date: '07-17', - sector: '반도체', - title: 'SK하이닉스, 엔비디아향 HBM 공급 계약 확대', - items: [ - { - name: '한미반도체', - predicted: 'UP', - actualReturn: 3.42, - hit: true, - pathLabel: '장비 공급 · 1단계', - }, - { - name: '삼성전자', - predicted: 'DOWN', - actualReturn: -0.81, - hit: true, - pathLabel: '경쟁 관계 · 1단계', - }, - { - name: 'HPSP', - predicted: 'UP', - actualReturn: 1.94, - hit: true, - pathLabel: '고압 어닐링 장비 · 1단계', - }, - { - name: '원익IPS', - predicted: 'UP', - actualReturn: -0.35, - hit: false, - pathLabel: '증착 장비 · 1단계', - }, - ], - }, - { - newsId: 'v2', - date: '07-17', - sector: '2차전지', - title: '유럽 배터리 규제 완화 논의 시작', - items: [ - { - name: 'LG에너지솔루션', - predicted: 'UP', - actualReturn: 1.62, - hit: true, - pathLabel: '뉴스 직접 언급', - }, - { - name: '삼성SDI', - predicted: 'UP', - actualReturn: 0.94, - hit: true, - pathLabel: '전기차 배터리 공급 · 2단계', - }, - { - name: 'SK이노베이션', - predicted: 'UP', - actualReturn: -0.42, - hit: false, - pathLabel: '전기차 배터리 공급 · 2단계', - }, - ], - }, - { - newsId: 'v3', - date: '07-16', - sector: '2차전지', - title: '美 전기차 보조금 개편안 발표', - items: [ - { - name: 'LG에너지솔루션', - predicted: 'UP', - actualReturn: 2.15, - hit: true, - pathLabel: '뉴스 직접 언급', - }, - { - name: '에코프로비엠', - predicted: 'UP', - actualReturn: -1.24, - hit: false, - pathLabel: '양극재 조달 · 1단계', - }, - { - name: '엘앤에프', - predicted: 'UP', - actualReturn: 0.88, - hit: true, - pathLabel: '양극재 조달 · 1단계', - }, - ], - }, - { - newsId: 'v4', - date: '07-16', - sector: '반도체', - title: 'D램 고정거래가 3개월 연속 상승', - items: [ - { - name: '삼성전자', - predicted: 'UP', - actualReturn: 1.85, - hit: true, - pathLabel: 'D램 생산 · 1단계', - }, - { - name: 'SK하이닉스', - predicted: 'UP', - actualReturn: 2.94, - hit: true, - pathLabel: 'D램 주력 생산 · 1단계', - }, - { - name: '리노공업', - predicted: 'UP', - actualReturn: 1.06, - hit: true, - pathLabel: '테스트 소켓 · 2단계', - }, - ], - }, - { - newsId: 'v5', - date: '07-15', - sector: '방산', - title: '루마니아, K9 자주포 도입 검토 보도', - items: [ - { - name: '한화에어로스페이스', - predicted: 'UP', - actualReturn: 4.86, - hit: true, - pathLabel: 'K9 생산 · 1단계', - }, - { - name: '풍산', - predicted: 'UP', - actualReturn: 2.03, - hit: true, - pathLabel: '탄약 공급 · 2단계', - }, - { - name: '현대로템', - predicted: 'UP', - actualReturn: 1.42, - hit: true, - pathLabel: '방산 수출 · 2단계', - }, - { - name: 'LIG넥스원', - predicted: 'DOWN', - actualReturn: -0.55, - hit: true, - pathLabel: '경쟁 관계 · 2단계', - }, - ], - }, - { - newsId: 'v6', - date: '07-15', - sector: '반도체', - title: '파운드리 선단공정 수율 개선 발표', - items: [ - { - name: '삼성전자', - predicted: 'UP', - actualReturn: 0.74, - hit: true, - pathLabel: '파운드리 영위 · 1단계', - }, - { - name: '동진쎄미켐', - predicted: 'UP', - actualReturn: 2.21, - hit: true, - pathLabel: '포토레지스트 · 2단계', - }, - { - name: '주성엔지니어링', - predicted: 'UP', - actualReturn: 1.55, - hit: true, - pathLabel: '장비 공급 · 2단계', - }, - ], - }, - { - newsId: 'v7', - date: '07-14', - sector: '2차전지', - title: '리튬 현물가 반등, 3주 만에 상승 전환', - items: [ - { - name: '에코프로비엠', - predicted: 'UP', - actualReturn: 1.77, - hit: true, - pathLabel: '양극재 판가 연동 · 2단계', - }, - { - name: '포스코퓨처엠', - predicted: 'UP', - actualReturn: 1.31, - hit: true, - pathLabel: '양극재 판가 연동 · 2단계', - }, - { - name: 'LG에너지솔루션', - predicted: 'DOWN', - actualReturn: 0.42, - hit: false, - pathLabel: '원가 상승 부담 · 3단계', - }, - ], - }, - { - newsId: 'v8', - date: '07-14', - sector: '방산', - title: '중동 방산 전시회서 수출 상담 확대', - items: [ - { - name: 'LIG넥스원', - predicted: 'UP', - actualReturn: 1.24, - hit: true, - pathLabel: '방산 수출 · 1단계', - }, - { - name: '한국항공우주', - predicted: 'UP', - actualReturn: 0.66, - hit: true, - pathLabel: '방산 수출 · 1단계', - }, - { - name: '풍산', - predicted: 'UP', - actualReturn: -0.31, - hit: false, - pathLabel: '탄약 수출 · 1단계', - }, - ], - }, - { - newsId: 'v9', - date: '07-11', - sector: '반도체', - title: '국내 파운드리 신규 수주 소식', - items: [ - { - name: 'DB하이텍', - predicted: 'UP', - actualReturn: 2.68, - hit: true, - pathLabel: '파운드리 영위 · 1단계', - }, - { - name: '삼성전자', - predicted: 'UP', - actualReturn: 1.12, - hit: true, - pathLabel: '파운드리 영위 · 1단계', - }, - { - name: '주성엔지니어링', - predicted: 'UP', - actualReturn: -0.92, - hit: false, - pathLabel: '장비 공급 · 2단계', - }, - ], - }, - { - newsId: 'v10', - date: '07-11', - sector: '2차전지', - title: '현대차 전용 전기차 플랫폼 증산 계획', - items: [ - { - name: '현대차', - predicted: 'UP', - actualReturn: 1.44, - hit: true, - pathLabel: '뉴스 직접 언급', - }, - { - name: 'LG에너지솔루션', - predicted: 'UP', - actualReturn: 1.02, - hit: true, - pathLabel: '배터리 공급 · 2단계', - }, - { - name: '천보', - predicted: 'UP', - actualReturn: 0.58, - hit: true, - pathLabel: '첨가제 조달 · 3단계', - }, - ], - }, - { - newsId: 'v11', - date: '07-10', - sector: '방산', - title: '중동 지역 유도무기 수출 협상 개시', - items: [ - { - name: 'LIG넥스원', - predicted: 'UP', - actualReturn: 3.55, - hit: true, - pathLabel: '유도무기 생산 · 1단계', - }, - { - name: '한화에어로스페이스', - predicted: 'DOWN', - actualReturn: -0.64, - hit: true, - pathLabel: '경쟁 관계 · 1단계', - }, - { - name: '한국항공우주', - predicted: 'UP', - actualReturn: 0.71, - hit: true, - pathLabel: '방산 수출 · 2단계', - }, - ], - }, - { - newsId: 'v12', - date: '07-10', - sector: '반도체', - title: 'HBM 후공정 장비 발주 확대 관측', - items: [ - { - name: '한미반도체', - predicted: 'UP', - actualReturn: 2.86, - hit: true, - pathLabel: 'TC본더 필수 · 1단계', - }, - { - name: '이오테크닉스', - predicted: 'UP', - actualReturn: 1.33, - hit: true, - pathLabel: '레이저 장비 · 2단계', - }, - { - name: '티씨케이', - predicted: 'UP', - actualReturn: -0.28, - hit: false, - pathLabel: '소모품 공급 · 2단계', - }, - ], - }, - { - newsId: 'v13', - date: '07-09', - sector: '방산', - title: '국방예산 증액안 국회 제출', - items: [ - { - name: '현대로템', - predicted: 'UP', - actualReturn: 1.18, - hit: true, - pathLabel: '방산 수출 · 1단계', - }, - { - name: '한화에어로스페이스', - predicted: 'UP', - actualReturn: 0.92, - hit: true, - pathLabel: '수출 주도 · 1단계', - }, - { - name: '풍산', - predicted: 'UP', - actualReturn: 1.47, - hit: true, - pathLabel: '탄약 수출 · 1단계', - }, - ], - }, - { - newsId: 'v14', - date: '07-08', - sector: '2차전지', - title: '양극재 신규 증설 계획 발표', - items: [ - { - name: '포스코퓨처엠', - predicted: 'UP', - actualReturn: 2.34, - hit: true, - pathLabel: '양극재 생산 · 1단계', - }, - { - name: '엘앤에프', - predicted: 'UP', - actualReturn: -1.06, - hit: false, - pathLabel: '양극재 생산 · 1단계', - }, - { - name: '에코프로비엠', - predicted: 'UP', - actualReturn: 0.85, - hit: true, - pathLabel: '양극재 생산 · 1단계', - }, - ], - }, -] +/** + * 예측 검증 탭 전용 더미 데이터. 실 백엔드에 해당 API가 없어 verify.json을 + * 정적으로 읽어 쓴다 — apis/verify/queries.ts가 API를 거치지 않고 이 데이터를 + * 클라이언트에서 직접 가공한다. + */ -const DAILY_HIT_RATES = [ - 0.62, 0.71, 0.55, 0.68, 0.74, 0.66, 0.58, 0.7, 0.77, 0.64, 0.6, 0.72, 0.69, - 0.75, 0.58, 0.63, 0.71, 0.8, 0.66, 0.61, 0.73, 0.68, 0.7, 0.59, 0.76, 0.72, - 0.65, 0.7, 0.74, 0.69, -] +export const VERIFY_ENTRIES: VerifyEntry[] = rawVerify.entries as VerifyEntry[] + +const DAILY_HIT_RATES: number[] = rawVerify.dailyHitRates /** 최근 30거래일(=최근 30일, 어제까지)에 적중률을 매핑. 실행 시점 기준으로 계산해 데모가 언제 열려도 날짜가 맞는다. */ export function buildVerifyDaily(): VerifyDaily[] { diff --git a/src/mocks/verify/handlers.ts b/src/mocks/verify/handlers.ts deleted file mode 100644 index 6c70132..0000000 --- a/src/mocks/verify/handlers.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { HttpResponse, delay, http } from 'msw' -import { getVerify } from '#/apis/verify/mock' - -export const verifyHandlers = [ - http.get('/api/verify', async ({ request }) => { - await delay(300) - const searchParams = new URL(request.url).searchParams - return HttpResponse.json( - getVerify({ - sector: searchParams.get('sector') ?? undefined, - cursor: searchParams.get('cursor') ?? undefined, - limit: Number(searchParams.get('limit')) || undefined, - }), - ) - }), -] diff --git a/src/mocks/verify/verify.json b/src/mocks/verify/verify.json new file mode 100644 index 0000000..9e61464 --- /dev/null +++ b/src/mocks/verify/verify.json @@ -0,0 +1,429 @@ +{ + "entries": [ + { + "newsId": "v1", + "date": "07-17", + "sector": "반도체", + "title": "SK하이닉스, 엔비디아향 HBM 공급 계약 확대", + "items": [ + { + "name": "한미반도체", + "predicted": "UP", + "actualReturn": 3.42, + "hit": true, + "pathLabel": "장비 공급 · 1단계" + }, + { + "name": "삼성전자", + "predicted": "DOWN", + "actualReturn": -0.81, + "hit": true, + "pathLabel": "경쟁 관계 · 1단계" + }, + { + "name": "HPSP", + "predicted": "UP", + "actualReturn": 1.94, + "hit": true, + "pathLabel": "고압 어닐링 장비 · 1단계" + }, + { + "name": "원익IPS", + "predicted": "UP", + "actualReturn": -0.35, + "hit": false, + "pathLabel": "증착 장비 · 1단계" + } + ] + }, + { + "newsId": "v2", + "date": "07-17", + "sector": "2차전지", + "title": "유럽 배터리 규제 완화 논의 시작", + "items": [ + { + "name": "LG에너지솔루션", + "predicted": "UP", + "actualReturn": 1.62, + "hit": true, + "pathLabel": "뉴스 직접 언급" + }, + { + "name": "삼성SDI", + "predicted": "UP", + "actualReturn": 0.94, + "hit": true, + "pathLabel": "전기차 배터리 공급 · 2단계" + }, + { + "name": "SK이노베이션", + "predicted": "UP", + "actualReturn": -0.42, + "hit": false, + "pathLabel": "전기차 배터리 공급 · 2단계" + } + ] + }, + { + "newsId": "v3", + "date": "07-16", + "sector": "2차전지", + "title": "美 전기차 보조금 개편안 발표", + "items": [ + { + "name": "LG에너지솔루션", + "predicted": "UP", + "actualReturn": 2.15, + "hit": true, + "pathLabel": "뉴스 직접 언급" + }, + { + "name": "에코프로비엠", + "predicted": "UP", + "actualReturn": -1.24, + "hit": false, + "pathLabel": "양극재 조달 · 1단계" + }, + { + "name": "엘앤에프", + "predicted": "UP", + "actualReturn": 0.88, + "hit": true, + "pathLabel": "양극재 조달 · 1단계" + } + ] + }, + { + "newsId": "v4", + "date": "07-16", + "sector": "반도체", + "title": "D램 고정거래가 3개월 연속 상승", + "items": [ + { + "name": "삼성전자", + "predicted": "UP", + "actualReturn": 1.85, + "hit": true, + "pathLabel": "D램 생산 · 1단계" + }, + { + "name": "SK하이닉스", + "predicted": "UP", + "actualReturn": 2.94, + "hit": true, + "pathLabel": "D램 주력 생산 · 1단계" + }, + { + "name": "리노공업", + "predicted": "UP", + "actualReturn": 1.06, + "hit": true, + "pathLabel": "테스트 소켓 · 2단계" + } + ] + }, + { + "newsId": "v5", + "date": "07-15", + "sector": "방산", + "title": "루마니아, K9 자주포 도입 검토 보도", + "items": [ + { + "name": "한화에어로스페이스", + "predicted": "UP", + "actualReturn": 4.86, + "hit": true, + "pathLabel": "K9 생산 · 1단계" + }, + { + "name": "풍산", + "predicted": "UP", + "actualReturn": 2.03, + "hit": true, + "pathLabel": "탄약 공급 · 2단계" + }, + { + "name": "현대로템", + "predicted": "UP", + "actualReturn": 1.42, + "hit": true, + "pathLabel": "방산 수출 · 2단계" + }, + { + "name": "LIG넥스원", + "predicted": "DOWN", + "actualReturn": -0.55, + "hit": true, + "pathLabel": "경쟁 관계 · 2단계" + } + ] + }, + { + "newsId": "v6", + "date": "07-15", + "sector": "반도체", + "title": "파운드리 선단공정 수율 개선 발표", + "items": [ + { + "name": "삼성전자", + "predicted": "UP", + "actualReturn": 0.74, + "hit": true, + "pathLabel": "파운드리 영위 · 1단계" + }, + { + "name": "동진쎄미켐", + "predicted": "UP", + "actualReturn": 2.21, + "hit": true, + "pathLabel": "포토레지스트 · 2단계" + }, + { + "name": "주성엔지니어링", + "predicted": "UP", + "actualReturn": 1.55, + "hit": true, + "pathLabel": "장비 공급 · 2단계" + } + ] + }, + { + "newsId": "v7", + "date": "07-14", + "sector": "2차전지", + "title": "리튬 현물가 반등, 3주 만에 상승 전환", + "items": [ + { + "name": "에코프로비엠", + "predicted": "UP", + "actualReturn": 1.77, + "hit": true, + "pathLabel": "양극재 판가 연동 · 2단계" + }, + { + "name": "포스코퓨처엠", + "predicted": "UP", + "actualReturn": 1.31, + "hit": true, + "pathLabel": "양극재 판가 연동 · 2단계" + }, + { + "name": "LG에너지솔루션", + "predicted": "DOWN", + "actualReturn": 0.42, + "hit": false, + "pathLabel": "원가 상승 부담 · 3단계" + } + ] + }, + { + "newsId": "v8", + "date": "07-14", + "sector": "방산", + "title": "중동 방산 전시회서 수출 상담 확대", + "items": [ + { + "name": "LIG넥스원", + "predicted": "UP", + "actualReturn": 1.24, + "hit": true, + "pathLabel": "방산 수출 · 1단계" + }, + { + "name": "한국항공우주", + "predicted": "UP", + "actualReturn": 0.66, + "hit": true, + "pathLabel": "방산 수출 · 1단계" + }, + { + "name": "풍산", + "predicted": "UP", + "actualReturn": -0.31, + "hit": false, + "pathLabel": "탄약 수출 · 1단계" + } + ] + }, + { + "newsId": "v9", + "date": "07-11", + "sector": "반도체", + "title": "국내 파운드리 신규 수주 소식", + "items": [ + { + "name": "DB하이텍", + "predicted": "UP", + "actualReturn": 2.68, + "hit": true, + "pathLabel": "파운드리 영위 · 1단계" + }, + { + "name": "삼성전자", + "predicted": "UP", + "actualReturn": 1.12, + "hit": true, + "pathLabel": "파운드리 영위 · 1단계" + }, + { + "name": "주성엔지니어링", + "predicted": "UP", + "actualReturn": -0.92, + "hit": false, + "pathLabel": "장비 공급 · 2단계" + } + ] + }, + { + "newsId": "v10", + "date": "07-11", + "sector": "2차전지", + "title": "현대차 전용 전기차 플랫폼 증산 계획", + "items": [ + { + "name": "현대차", + "predicted": "UP", + "actualReturn": 1.44, + "hit": true, + "pathLabel": "뉴스 직접 언급" + }, + { + "name": "LG에너지솔루션", + "predicted": "UP", + "actualReturn": 1.02, + "hit": true, + "pathLabel": "배터리 공급 · 2단계" + }, + { + "name": "천보", + "predicted": "UP", + "actualReturn": 0.58, + "hit": true, + "pathLabel": "첨가제 조달 · 3단계" + } + ] + }, + { + "newsId": "v11", + "date": "07-10", + "sector": "방산", + "title": "중동 지역 유도무기 수출 협상 개시", + "items": [ + { + "name": "LIG넥스원", + "predicted": "UP", + "actualReturn": 3.55, + "hit": true, + "pathLabel": "유도무기 생산 · 1단계" + }, + { + "name": "한화에어로스페이스", + "predicted": "DOWN", + "actualReturn": -0.64, + "hit": true, + "pathLabel": "경쟁 관계 · 1단계" + }, + { + "name": "한국항공우주", + "predicted": "UP", + "actualReturn": 0.71, + "hit": true, + "pathLabel": "방산 수출 · 2단계" + } + ] + }, + { + "newsId": "v12", + "date": "07-10", + "sector": "반도체", + "title": "HBM 후공정 장비 발주 확대 관측", + "items": [ + { + "name": "한미반도체", + "predicted": "UP", + "actualReturn": 2.86, + "hit": true, + "pathLabel": "TC본더 필수 · 1단계" + }, + { + "name": "이오테크닉스", + "predicted": "UP", + "actualReturn": 1.33, + "hit": true, + "pathLabel": "레이저 장비 · 2단계" + }, + { + "name": "티씨케이", + "predicted": "UP", + "actualReturn": -0.28, + "hit": false, + "pathLabel": "소모품 공급 · 2단계" + } + ] + }, + { + "newsId": "v13", + "date": "07-09", + "sector": "방산", + "title": "국방예산 증액안 국회 제출", + "items": [ + { + "name": "현대로템", + "predicted": "UP", + "actualReturn": 1.18, + "hit": true, + "pathLabel": "방산 수출 · 1단계" + }, + { + "name": "한화에어로스페이스", + "predicted": "UP", + "actualReturn": 0.92, + "hit": true, + "pathLabel": "수출 주도 · 1단계" + }, + { + "name": "풍산", + "predicted": "UP", + "actualReturn": 1.47, + "hit": true, + "pathLabel": "탄약 수출 · 1단계" + } + ] + }, + { + "newsId": "v14", + "date": "07-08", + "sector": "2차전지", + "title": "양극재 신규 증설 계획 발표", + "items": [ + { + "name": "포스코퓨처엠", + "predicted": "UP", + "actualReturn": 2.34, + "hit": true, + "pathLabel": "양극재 생산 · 1단계" + }, + { + "name": "엘앤에프", + "predicted": "UP", + "actualReturn": -1.06, + "hit": false, + "pathLabel": "양극재 생산 · 1단계" + }, + { + "name": "에코프로비엠", + "predicted": "UP", + "actualReturn": 0.85, + "hit": true, + "pathLabel": "양극재 생산 · 1단계" + } + ] + } + ], + "dailyHitRates": [ + 0.62, 0.71, 0.55, 0.68, 0.74, 0.66, 0.58, 0.7, 0.77, 0.64, 0.6, 0.72, 0.69, + 0.75, 0.58, 0.63, 0.71, 0.8, 0.66, 0.61, 0.73, 0.68, 0.7, 0.59, 0.76, 0.72, + 0.65, 0.7, 0.74, 0.69 + ] +} diff --git a/src/shared/apis/http.ts b/src/shared/apis/http.ts index 8468f89..d88fb9e 100644 --- a/src/shared/apis/http.ts +++ b/src/shared/apis/http.ts @@ -1,12 +1,13 @@ import ky from 'ky' /** - * 모든 API 호출의 공통 진입점. 항상 같은 오리진의 /api로 붙는다 — 개발 중에는 - * MSW가 이 경로를 가로채고, 프로덕션 빌드에서는 nginx.conf의 /api/ 프록시가 - * 실 백엔드(koslink-backend-app)로 그대로 전달한다. + * 모든 API 호출의 공통 진입점. 항상 같은 오리진의 /api/v1로 붙는다(실 백엔드가 + * 버전 프리픽스를 요구함) — 개발 중에는 MSW가 이 경로를 가로채고, 프로덕션 + * 빌드에서는 nginx.conf의 /api/ 프록시가 실 백엔드(koslink-backend-app)로 + * 그대로 전달한다. */ export const http = ky.create({ - prefix: '/api', + prefix: '/api/v1', timeout: 10_000, retry: { limit: 1 }, }) diff --git a/src/shared/mocks/handlers.ts b/src/shared/mocks/handlers.ts index ce089b9..e72386d 100644 --- a/src/shared/mocks/handlers.ts +++ b/src/shared/mocks/handlers.ts @@ -1,11 +1,5 @@ import { newsHandlers } from '#/mocks/news/handlers' import { analysisHandlers } from '#/mocks/analysis/handlers' import { graphHandlers } from '#/mocks/graph/handlers' -import { verifyHandlers } from '#/mocks/verify/handlers' -export const handlers = [ - ...newsHandlers, - ...analysisHandlers, - ...graphHandlers, - ...verifyHandlers, -] +export const handlers = [...newsHandlers, ...analysisHandlers, ...graphHandlers] diff --git a/src/types/verify/index.ts b/src/types/verify/index.ts index b694fab..83023a4 100644 --- a/src/types/verify/index.ts +++ b/src/types/verify/index.ts @@ -21,7 +21,9 @@ export interface VerifyDaily { hitRate: number } -/** GET /api/verify 응답. news는 커서 기반 페이지, daily는 필터와 무관한 전체 추이라 페이징하지 않는다. */ +/** 예측 검증 탭 데이터 — 실 백엔드에 해당 API가 없어 verify.json을 클라이언트에서 + * 직접 페이징해 이 모양으로 반환한다. news는 커서 기반 페이지, daily는 필터와 + * 무관한 전체 추이라 페이징하지 않는다. */ export interface VerifyResponse { daily: VerifyDaily[] news: VerifyEntry[]