파일 내용은 openpyxl 로 작성된 xlsx 포맷이지만
확장자만 .xls 였던 것을 실제 포맷과 맞춰 .xlsx 로 정정.
- 서버 다운로드 파일명 확장자 변경
- 프론트 fallback 파일명 변경
xls 파일을 "쓰는" 코드(xlwt 등)는 원래 없었음.
xlrd 는 입력 파일(.xls) 을 "읽는" 용도라 유지.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
콘텐츠 길이에 맞춰 열 너비를 계산해서 적용한다.
한글은 ASCII 폭의 약 2배로 가중치를 두고,
최소 10 · 최대 60 으로 클램프해 너무 좁거나 넓지 않게 한다.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
itemcode_db 의 single_items.sabangnet_code 가 비어 있거나
마스터에 등록되지 않은 상품(미등록 코드 / 세트 구성 단품 미등록)은
결과 엑셀의 상품코드[필수] 컬럼에 들어갈 값이 없으므로 제외한다.
- 폴백 시 sabangnet_code 자리에 내부 코드 채우던 동작 제거
- 엑셀 빌드 단계에서 사방넷 코드가 빈 행을 스킵하고 warning 로그
- success 로그에 excel_row_count / skipped_no_sabang_count 노출
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
기존 데이터는 "YYYY-MM-DD HH:MM:SS" 형식으로 저장되고
검색 쿼리도 "YYYY-MM-DD 00:00:00" 으로 문자열 비교하는데,
새 업로드는 custom_date(YYYY-MM-DD)를 그대로 저장해서
문자열 비교상 날짜 필터에 잡히지 않아
"DB 업로드가 안 된 것처럼" 보이는 문제 발생.
달력에서 고른 날짜에 시간 00:00:00 을 붙여
"YYYY-MM-DD HH:MM:SS" 로 정규화 저장한다.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 주문 날짜(custom_date) 형식 검증을 진입부로 이동 (400 응답)
- 엑셀 파싱/템플릿 컬럼 누락은 500이 아닌 400으로 분리
- 빈 행 자동 스킵으로 빈 Order 레코드 저장 방지
- safe_int_quantity 헬퍼 도입: 수량/세트 구성수량의 None·비숫자·
'1.0' 같은 문자열도 견고하게 정수 변환
- itemcode_db 엔진 생성/조회 실패 시 단품 처리로 폴백하고
치명적 오류 대신 warning 로그로 기록
- 세트 구성 단품이 single_items 에 없을 때 보강하여 결과 행 누락 방지
- 마스터 미등록 상품코드를 모아 warning 로그로 가시화
- 완료 시 단품/미등록 코드 수를 success 로그에 함께 기록
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CS_RETURN_REQUEST_URL 기본값을 http://dbx-corm:8002/api/return/request 로
(docker 컨테이너 간 통신, 옛 127.0.0.1:8001 폐기).
- httpx 요청에 X-Service-Token 헤더 첨부 (CORM AuthGuard 우회용).
INTERNAL_SERVICE_TOKEN env 가 있을 때만 첨부.
- .env.example 에 두 항목 안내 추가.