- NAS 프록시 공통 헬퍼 (_nas.ts): nasGet/Post/Put/Delete + requireSubscription - API 라우트 7개: stats/performance, report/latest, report/history, analysis/personal, purchase CRUD - ReportTab: 주간 공략 리포트 (신뢰도, 추천 세트, 핫/콜드 번호, 히스토리) - PurchaseTab: 구매 기록 CRUD + 투자 통계 (총구매/당첨금/순손익/최대당첨) - PatternTab: 개인 번호 패턴 분석 (자주 선택/기피 번호, 구간 분포) - 성과 배너: 실제 검증 통계 (3개 이상 일치율, 평균 일치 개수, 무작위 대비 개선율) - 탭 네비게이션: 구독자 전용 (번호 생성/이번 주 공략/구매 기록/내 패턴) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import { NextResponse } from 'next/server';
|
|
import { nasGet, nasPost, requireSubscription, handleNasError } from '../_nas';
|
|
|
|
export async function GET(request: Request) {
|
|
try {
|
|
const auth = await requireSubscription();
|
|
if (auth instanceof NextResponse) return auth;
|
|
const { searchParams } = new URL(request.url);
|
|
const params = new URLSearchParams();
|
|
if (searchParams.get('draw_no')) params.set('draw_no', searchParams.get('draw_no')!);
|
|
if (searchParams.get('days')) params.set('days', searchParams.get('days')!);
|
|
const qs = params.toString() ? `?${params}` : '';
|
|
const data = await nasGet(`/api/lotto/purchase${qs}`);
|
|
return NextResponse.json(data);
|
|
} catch (err) { return handleNasError(err); }
|
|
}
|
|
|
|
export async function POST(request: Request) {
|
|
try {
|
|
const auth = await requireSubscription();
|
|
if (auth instanceof NextResponse) return auth;
|
|
const body = await request.json();
|
|
const data = await nasPost('/api/lotto/purchase', body);
|
|
return NextResponse.json(data, { status: 201 });
|
|
} catch (err) { return handleNasError(err); }
|
|
}
|