Skip to content

Story: SettlementMargin ETL 수정

메타

항목
Story IDE-03-S-02
EpicE-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원)
WhenSettlementMargin ETL 실행
Then1/10 주문 → 10,000원, 1/20 주문 → 12,000원 적용

상세 스펙:

  • DELETE-INSERT 구조 유지
  • 재생성 시 각 주문의 orderDate 기준 원가 조회
  • E-03-S-01의 조회 함수 활용

AC-02: 기존 로직 fallback

항목내용
Given원가 히스토리 없는 상품
WhenETL 실행
Then기존 로직대로 Product.purchasePrice 사용

AC-03: 성능 유지

항목내용
Given대량 주문 데이터 ETL
WhenETL 실행
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

항목
생성 AgentClaude Opus 4.5
생성일2026-01-27
마지막 수정2026-01-27
검증자-

검증 결과: 🔄 PENDING (PO 승인 대기) 검증일: -


생성일: 2026-01-27마지막 수정: 2026-01-27

장사왕 Product Team