feat(dispatch): 말레이시아 TikTok 출고관리 모듈 추가
03_TikTok_Order_Export.xlsx 업로드 → 1박스=1카드 출고 작업 리스트, SKU 피킹 요약, Kagayaku 전달표(A4 인쇄)를 자동 생성. - 1박스 묶음 기준: Package ID > Tracking ID > Order ID, 같은 박스 같은 SKU 합산 - 작업 상태 5단계 토글(AJAX 즉시 저장) + dispatch_logs 기록 - 고객 이름/주소/전화 미저장(파싱 시 폐기, 스키마에 컬럼 없음) - 엑셀은 openpyxl 파싱(pandas 미사용), DB는 dispatch_db 전용 - 인증은 기존 Google OAuth + 신규 권한키 dispatch 재사용 - scripts/sql/dispatch_db_init.sql, docs/DISPATCH_MODULE.md 동봉 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
"""말레이시아 TikTok 출고관리(dispatch) 모듈.
|
||||
|
||||
라우터/저장소/파서/템플릿을 한 디렉토리에서 관리한다.
|
||||
- 라우터: `router.py` (FastAPI APIRouter, prefix=/dispatch)
|
||||
- 저장소: `db.py` (dispatch_db / PostgreSQL 전용)
|
||||
- 파서: `parser.py` (TikTok Order Export XLSX → 박스 묶기, openpyxl)
|
||||
- 순수 로직: `store.py` (컬럼 정규화/박스 묶기/SKU 합산/상태 상수)
|
||||
- 템플릿: `templates/dispatch/`
|
||||
|
||||
데이터 저장은 dispatch_db 전용이다. DISPATCH_DB_URL 미설정 시
|
||||
build_dispatch_store 는 None 을 반환하고, 라우터가 "설정 필요" 안내 페이지를
|
||||
보여준다(앱은 죽지 않음).
|
||||
|
||||
업로드 원본 파일은 DATA_DIR/dispatch/<날짜>/<배치>/ 아래에 저장하고, DB 에는
|
||||
경로만 기록한다. 고객 이름/주소/전화 등 개인정보는 저장하지 않는다.
|
||||
"""
|
||||
|
||||
from typing import Any
|
||||
|
||||
from . import store
|
||||
from .parser import ParseError, parse_order_export
|
||||
from .router import router
|
||||
from .store import STATUS_FIELDS, STATUS_LABELS, group_parcels, sku_summary
|
||||
|
||||
__all__ = [
|
||||
"router",
|
||||
"store",
|
||||
"STATUS_FIELDS",
|
||||
"STATUS_LABELS",
|
||||
"group_parcels",
|
||||
"sku_summary",
|
||||
"parse_order_export",
|
||||
"ParseError",
|
||||
"build_dispatch_store",
|
||||
]
|
||||
|
||||
|
||||
def build_dispatch_store(*, dsn: str | None) -> Any:
|
||||
"""DISPATCH_DB_URL 이 있으면 DispatchStore, 없으면 None.
|
||||
|
||||
JSON 폴백을 두지 않는다(운영 데이터 분기 방지). None 이면 라우터가 안내 표시.
|
||||
"""
|
||||
if not dsn:
|
||||
return None
|
||||
from .db import DispatchStore # 지연 import (개발 환경 deps 없을 수 있음)
|
||||
|
||||
return DispatchStore(dsn)
|
||||
Reference in New Issue
Block a user