feat: Step 1.2 V2 견적 등록 페이지 API 연동
- test-new 페이지에서 Mock 저장을 실제 createQuote API 호출로 변경 - transformV2ToApi 함수로 V2 폼 데이터 변환 - 저장 후 실제 생성된 견적 ID로 상세 페이지 이동 - 에러 처리 및 사용자 피드백 유지 관련: docs/plans/quote-management-url-migration-plan.md
This commit is contained in:
@@ -13,6 +13,8 @@ import { QuoteRegistrationV2, QuoteFormDataV2 } from '@/components/quotes/QuoteR
|
||||
import { IntegratedDetailTemplate } from '@/components/templates/IntegratedDetailTemplate';
|
||||
import { quoteCreateConfig } from '@/components/quotes/quoteConfig';
|
||||
import { toast } from 'sonner';
|
||||
import { createQuote } from '@/components/quotes/actions';
|
||||
import { transformV2ToApi } from '@/components/quotes/types';
|
||||
|
||||
export default function QuoteTestNewPage() {
|
||||
const router = useRouter();
|
||||
@@ -25,20 +27,29 @@ export default function QuoteTestNewPage() {
|
||||
const handleSave = useCallback(async (data: QuoteFormDataV2, saveType: 'temporary' | 'final') => {
|
||||
setIsSaving(true);
|
||||
try {
|
||||
// TODO: API 연동 시 실제 저장 로직 구현
|
||||
console.log('[테스트] 저장 데이터:', data);
|
||||
console.log('[테스트] 저장 타입:', saveType);
|
||||
// V2 폼 데이터를 API 형식으로 변환
|
||||
const updatedData = { ...data, status: saveType };
|
||||
const apiData = transformV2ToApi(updatedData);
|
||||
|
||||
// 테스트용 지연
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
console.log('[QuoteTestNewPage] 저장 데이터:', apiData);
|
||||
console.log('[QuoteTestNewPage] 저장 타입:', saveType);
|
||||
|
||||
toast.success(`[테스트] ${saveType === 'temporary' ? '임시' : '최종'} 저장 완료`);
|
||||
// API 호출
|
||||
const result = await createQuote(apiData);
|
||||
|
||||
// 저장 후 상세 페이지로 이동 (테스트용으로 ID=1 사용)
|
||||
if (saveType === 'final') {
|
||||
router.push('/sales/quote-management/test/1');
|
||||
if (!result.success) {
|
||||
toast.error(result.error || '저장 중 오류가 발생했습니다.');
|
||||
return;
|
||||
}
|
||||
|
||||
toast.success(`${saveType === 'temporary' ? '임시' : '최종'} 저장 완료`);
|
||||
|
||||
// 저장 후 상세 페이지로 이동 (실제 생성된 ID 사용)
|
||||
if (result.data?.id) {
|
||||
router.push(`/sales/quote-management/test/${result.data.id}`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('[QuoteTestNewPage] 저장 오류:', error);
|
||||
toast.error('저장 중 오류가 발생했습니다.');
|
||||
} finally {
|
||||
setIsSaving(false);
|
||||
|
||||
Reference in New Issue
Block a user