refactor: [docs] 팀별 폴더 구조 재편 (공유/개발/프론트/기획)
- 개발팀 전용 폴더 dev/ 생성 (standards, guides, quickstart, changes, deploys, data, history, dev_plans 이동) - 프론트엔드 전용 폴더 frontend/ 생성 (api/ → frontend/api-specs/) - 기획팀 폴더 requests/ 생성 - plans/ → dev/dev_plans/ 이름 변경 - README.md 신규 (사람용 안내), INDEX.md 재작성 (Claude Code용) - resources.md 신규 (노션 링크용, assets/brochure 이관 예정) - CURRENT_WORKS.md 삭제, TODO.md → dev/ 이동 - 전체 참조 경로 업데이트 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
81
dev/changes/20260126_quote_v2_test_new_api.md
Normal file
81
dev/changes/20260126_quote_v2_test_new_api.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# 변경 내용 요약
|
||||
|
||||
**날짜:** 2026-01-26
|
||||
**작업자:** Claude Code
|
||||
**관련 계획:** docs/dev_plans/quote-management-url-migration-plan.md (Step 1.2)
|
||||
|
||||
## 📋 변경 개요
|
||||
V2 견적 등록 테스트 페이지(test-new)에서 Mock 저장을 실제 API 연동으로 변경
|
||||
|
||||
## 📁 수정된 파일
|
||||
- `react/src/app/[locale]/(protected)/sales/quote-management/test-new/page.tsx` - API 연동 구현
|
||||
|
||||
## 🔧 상세 변경 사항
|
||||
|
||||
### 1. Import 추가
|
||||
```typescript
|
||||
import { createQuote } from '@/components/quotes/actions';
|
||||
import { transformV2ToApi } from '@/components/quotes/types';
|
||||
```
|
||||
|
||||
### 2. handleSave 함수 수정
|
||||
|
||||
**변경 전:**
|
||||
```typescript
|
||||
const handleSave = useCallback(async (data: QuoteFormDataV2, saveType: 'temporary' | 'final') => {
|
||||
setIsSaving(true);
|
||||
try {
|
||||
// TODO: API 연동 시 실제 저장 로직 구현
|
||||
console.log('[테스트] 저장 데이터:', data);
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000)); // Mock delay
|
||||
toast.success(`[테스트] ${saveType === 'temporary' ? '임시' : '최종'} 저장 완료`);
|
||||
if (saveType === 'final') {
|
||||
router.push('/sales/quote-management/test/1'); // 하드코딩된 ID
|
||||
}
|
||||
} catch (error) {
|
||||
toast.error('저장 중 오류가 발생했습니다.');
|
||||
} finally {
|
||||
setIsSaving(false);
|
||||
}
|
||||
}, [router]);
|
||||
```
|
||||
|
||||
**변경 후:**
|
||||
```typescript
|
||||
const handleSave = useCallback(async (data: QuoteFormDataV2, saveType: 'temporary' | 'final') => {
|
||||
setIsSaving(true);
|
||||
try {
|
||||
// V2 폼 데이터를 API 형식으로 변환
|
||||
const updatedData = { ...data, status: saveType };
|
||||
const apiData = transformV2ToApi(updatedData);
|
||||
|
||||
// API 호출
|
||||
const result = await createQuote(apiData);
|
||||
|
||||
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) {
|
||||
toast.error('저장 중 오류가 발생했습니다.');
|
||||
} finally {
|
||||
setIsSaving(false);
|
||||
}
|
||||
}, [router]);
|
||||
```
|
||||
|
||||
## ✅ 다음 작업 (Phase 1.3~1.4)
|
||||
- [ ] test/[id] 상세 페이지 API 연동 (getQuoteById)
|
||||
- [ ] test/[id] 수정 API 연동 (updateQuote)
|
||||
|
||||
## 🔗 관련 문서
|
||||
- 계획 문서: `docs/dev_plans/quote-management-url-migration-plan.md`
|
||||
- Step 1.1 변경 내역: `docs/changes/20260126_quote_v2_transform_functions.md`
|
||||
- V2 컴포넌트: `react/src/components/quotes/QuoteRegistrationV2.tsx`
|
||||
Reference in New Issue
Block a user