2026-01-26 22:12:17 +09:00
|
|
|
# 변경 내용 요약
|
|
|
|
|
|
|
|
|
|
**날짜:** 2026-01-26
|
|
|
|
|
**작업자:** Claude Code
|
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>
2026-03-05 16:46:03 +09:00
|
|
|
**관련 계획:** docs/dev_plans/quote-management-url-migration-plan.md (Phase 1 버그 수정)
|
2026-01-26 22:12:17 +09:00
|
|
|
|
|
|
|
|
## 📋 변경 개요
|
|
|
|
|
V2 견적 등록 컴포넌트에서 작성자 필드가 "드미트리"로 하드코딩된 버그 수정
|
|
|
|
|
|
|
|
|
|
## 📁 수정된 파일
|
|
|
|
|
- `react/src/components/quotes/QuoteRegistrationV2.tsx` - 로그인 사용자 정보 연동
|
|
|
|
|
|
|
|
|
|
## 🔧 상세 변경 사항
|
|
|
|
|
|
|
|
|
|
### 1. Import 추가
|
|
|
|
|
```typescript
|
|
|
|
|
import { useAuth } from "@/contexts/AuthContext";
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 2. INITIAL_FORM_DATA 수정
|
|
|
|
|
|
|
|
|
|
**변경 전:**
|
|
|
|
|
```typescript
|
|
|
|
|
const INITIAL_FORM_DATA: QuoteFormDataV2 = {
|
|
|
|
|
registrationDate: new Date().toISOString().split("T")[0],
|
|
|
|
|
writer: "드미트리", // TODO: 로그인 사용자 정보
|
|
|
|
|
// ...
|
|
|
|
|
};
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**변경 후:**
|
|
|
|
|
```typescript
|
|
|
|
|
const INITIAL_FORM_DATA: QuoteFormDataV2 = {
|
|
|
|
|
registrationDate: new Date().toISOString().split("T")[0],
|
|
|
|
|
writer: "", // useAuth()에서 currentUser.name으로 설정됨
|
|
|
|
|
// ...
|
|
|
|
|
};
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3. useAuth 훅 사용
|
|
|
|
|
```typescript
|
|
|
|
|
export function QuoteRegistrationV2({ ... }) {
|
|
|
|
|
// 인증 정보
|
|
|
|
|
const { currentUser } = useAuth();
|
|
|
|
|
|
|
|
|
|
// 상태 초기화 시 currentUser.name 사용
|
|
|
|
|
const [formData, setFormData] = useState<QuoteFormDataV2>(() => {
|
|
|
|
|
const data = initialData || INITIAL_FORM_DATA;
|
|
|
|
|
// create 모드에서 writer가 비어있으면 현재 사용자명으로 설정
|
|
|
|
|
if (mode === "create" && !data.writer && currentUser?.name) {
|
|
|
|
|
return { ...data, writer: currentUser.name };
|
|
|
|
|
}
|
|
|
|
|
return data;
|
|
|
|
|
});
|
|
|
|
|
// ...
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 4. useEffect로 지연 로딩 처리
|
|
|
|
|
```typescript
|
|
|
|
|
// 작성자 자동 설정 (create 모드에서 currentUser 로드 시)
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (mode === "create" && !formData.writer && currentUser?.name) {
|
|
|
|
|
setFormData((prev) => ({ ...prev, writer: currentUser.name }));
|
|
|
|
|
}
|
|
|
|
|
}, [mode, currentUser?.name, formData.writer]);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## ✅ 동작 방식
|
|
|
|
|
1. **초기 렌더링**: useState 초기화 시 currentUser.name 사용
|
|
|
|
|
2. **지연 로딩**: currentUser가 나중에 로드되면 useEffect로 writer 업데이트
|
|
|
|
|
3. **edit/view 모드**: initialData의 writer 값 유지 (덮어쓰지 않음)
|
|
|
|
|
|
|
|
|
|
## 🔗 관련 문서
|
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>
2026-03-05 16:46:03 +09:00
|
|
|
- 계획 문서: `docs/dev_plans/quote-management-url-migration-plan.md`
|
2026-01-26 22:12:17 +09:00
|
|
|
- AuthContext: `react/src/contexts/AuthContext.tsx`
|