테마
Story: SettlementMargin ETL 수정
메타
| 항목 | 값 |
|---|---|
| Story ID | E-03-S-02 |
| Epic | E-03 원가 히스토리 |
| 상태 | draft |
| 우선순위 | P0 |
| 규모 | L |
| 담당 개발자 | BE (희선님) |
사용자 스토리
As a 장사왕 시스템, I want ETL 실행 시 주문 시점 원가를 적용, So that 과거 주문의 순이익이 원가 변경에 영향받지 않는다.
수락 기준 (Acceptance Criteria)
AC-01: ETL 시 원가 히스토리 적용
| 항목 | 내용 |
|---|---|
| Given | 원가 변경 이력이 있는 상품 (1/1: 10,000원, 1/15: 12,000원) |
| When | SettlementMargin ETL 실행 |
| Then | 1/10 주문 → 10,000원, 1/20 주문 → 12,000원 적용 |
상세 스펙:
- DELETE-INSERT 구조 유지
- 재생성 시 각 주문의 orderDate 기준 원가 조회
- E-03-S-01의 조회 함수 활용
AC-02: 기존 로직 fallback
| 항목 | 내용 |
|---|---|
| Given | 원가 히스토리 없는 상품 |
| When | ETL 실행 |
| Then | 기존 로직대로 Product.purchasePrice 사용 |
AC-03: 성능 유지
| 항목 | 내용 |
|---|---|
| Given | 대량 주문 데이터 ETL |
| When | ETL 실행 |
| Then | 기존 대비 처리 시간 20% 이내 증가 |
상세 스펙:
- 배치 조회로 N+1 방지
- 필요시 임시 테이블 활용
태스크 분해
Task 1: ETL 로직 분석 AC-01
- [ ] 1.1: 현재 SettlementMargin ETL 로직 파악
- [ ] 1.2: purchasePrice 참조 지점 식별
- [ ] 1.3: 수정 범위 및 영향도 분석
Task 2: ETL 로직 수정 AC-01 AC-02
- [ ] 2.1: 원가 히스토리 조회 함수 연동 (E-03-S-01)
- [ ] 2.2: orderDate 기준 원가 적용 로직
- [ ] 2.3: 히스토리 없을 때 fallback 처리
Task 3: 성능 최적화 AC-03
- [ ] 3.1: 배치 단위 원가 조회 적용
- [ ] 3.2: 쿼리 실행 계획 검토
- [ ] 3.3: 성능 벤치마크
Task 4: 테스트 및 검증
- [ ] 4.1: 단위 테스트 (원가 변경 시나리오)
- [ ] 4.2: 통합 테스트 (실제 ETL 실행)
- [ ] 4.3: 회귀 테스트 (기존 데이터 정합성)
Dev Notes (AI Agent 최적화)
영향 받는 소스 트리
src/
├── etl/
│ └── settlement-margin/
│ └── settlement-margin.etl.ts # 🔧 수정 (핵심 변경)
├── purchase/
│ └── purchase-price.service.ts # 참조 (E-03-S-01)
└── tests/
└── etl/
└── settlement-margin.etl.spec.ts # 🔧 수정현재 ETL 흐름 (추정)
1. Settlement 데이터 조회
2. Product 테이블 JOIN → purchasePrice 가져옴 (❌ 문제점)
3. 순이익 계산 (settlementAmount - purchasePrice × quantity)
4. SettlementMargin INSERT변경 후 ETL 흐름
1. Settlement 데이터 조회
2. 주문별 (productId, orderDate) 추출
3. getPurchasePricesByDateBatch() 호출 (✅ 수정)
4. 주문 시점 원가로 순이익 계산
5. SettlementMargin INSERT충돌 감지
| 항목 | 상태 | 설명 |
|---|---|---|
| 기존 코드 충돌 | 🔴 높음 | ETL 핵심 로직 변경 |
| DB 스키마 변경 | ✅ 없음 | SettlementMargin 구조 유지 |
| 다른 ETL 영향 | 🟡 확인필요 | 의존 ETL 파악 필요 |
의존성
| 의존 | 설명 | 상태 |
|---|---|---|
| E-03-S-01 | 원가 히스토리 조회 로직 | 선행 필요 |
위험 요소
| 위험 | 완화 방안 |
|---|---|
| ETL 성능 저하 | 배치 조회, 인덱스 최적화 |
| 기존 데이터 불일치 | 신규 변경분부터 적용 (소급 X) |
| 롤백 어려움 | 기능 플래그로 on/off 가능하게 |
Dev Agent Record
| 항목 | 값 |
|---|---|
| 생성 Agent | Claude Opus 4.5 |
| 생성일 | 2026-01-27 |
| 마지막 수정 | 2026-01-27 |
| 검증자 | - |
검증 결과: 🔄 PENDING (PO 승인 대기) 검증일: -
생성일: 2026-01-27마지막 수정: 2026-01-27
