feat(dispatch): Shopee 플랫폼 추가 + 받는 사람 정보 저장/출고 엑셀

- 플랫폼 TikTok/Shopee 분리: 업로드 화면이 선택에 따라 파일 안내 변경
  (TikTok=Order Export xlsx, Shopee=Packing List xlsx / 라벨 PDF 선택)
- TikTok Picking List.pdf 업로드 제거(피킹 요약은 데이터 엑셀로 생성)
- 파서 공용화 + 헤더 행 자동탐지(Shopee 제목행 대응), 두 포맷 헤더 별칭 통합
- 받는 사람 이름/전화/주소를 박스 단위로 dispatch_db 에 저장(개인정보)
  · init SQL 갱신 + 기존 DB용 멱등 마이그레이션 dispatch_add_recipient_columns.sql
- 출고 작업 카드: Package 제거, 받는 사람 이름(크게)+주소(여러 줄)+전화 표시
- 배치 다운로드 zip 에 취합 출고 엑셀 포함
  파일명 YYYY.MM.DD(Ddd)_tictoc.xlsx / _shopee.xlsx (export.py)
- 문서(CLAUDE.md, DISPATCH_MODULE.md) PII 보관·Shopee 반영

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 14:16:11 +09:00
parent c0a661db82
commit f1097b85dc
13 changed files with 388 additions and 86 deletions
@@ -0,0 +1,24 @@
-- =====================================================================
-- dispatch_db 마이그레이션 — 박스에 받는 사람(PII) 컬럼 추가
-- =====================================================================
-- 멱등(idempotent): 여러 번 실행해도 안전(ADD COLUMN IF NOT EXISTS).
--
-- 배경: 기존 dispatch 모듈은 개인정보(이름/주소/전화)를 저장하지 않는 구조였다.
-- 운영 요청으로 출고 작업 카드 표시 + 출고 엑셀(취합본) 생성을 위해
-- 받는 사람 정보를 박스 단위로 보관하도록 정책을 변경한다.
--
-- 실행 (운영 PostgreSQL 컨테이너명: postgres-db):
-- docker exec -i postgres-db psql -U postgres -d dispatch_db \
-- < scripts/sql/dispatch_add_recipient_columns.sql
--
-- ⚠️ 개인정보 컬럼이다. 접근 권한/보관 기간 정책을 함께 검토할 것.
-- =====================================================================
\set ON_ERROR_STOP on
\connect dispatch_db
ALTER TABLE dispatch_parcels ADD COLUMN IF NOT EXISTS recipient_name TEXT NOT NULL DEFAULT '';
ALTER TABLE dispatch_parcels ADD COLUMN IF NOT EXISTS recipient_phone TEXT NOT NULL DEFAULT '';
ALTER TABLE dispatch_parcels ADD COLUMN IF NOT EXISTS recipient_address TEXT NOT NULL DEFAULT '';
SELECT 'dispatch_parcels recipient columns ready' AS status;
+6 -2
View File
@@ -22,7 +22,8 @@
-- 주의:
-- - 기존 DB 가 있으면 DROP 하지 않는다(CREATE DATABASE 는 미존재 시에만).
-- - 비밀번호는 절대 Git 에 커밋하지 않는다. psql -v 로만 전달.
-- - 개인정보(고객 이름/주소/전화)는 저장하지 않는 구조다(컬럼 자체가 없음).
-- - 받는 사람 정보(이름/전화/주소)는 출고 작업 카드 표시 + 출고 엑셀 생성을
-- 위해 박스 단위로 보관한다(개인정보 — 접근/보관 정책 검토 대상).
-- - 작업 기준 키: order_id / package_id / tracking_id / seller_sku / quantity.
-- =====================================================================
@@ -80,7 +81,7 @@ CREATE TRIGGER trg_dispatch_batches_updated
-- ════════════════════════════════════════════════════════════
-- 2) 출고 박스 (1박스 = 1행 = 1작업카드)
-- 묶음 기준: package_id > tracking_id > order_id (파서가 결정).
-- 개인정보 컬럼 없음(이름/주소/전화 저장 안 함).
-- 받는 사람(recipient_*) 정보 보관 — 작업 카드 표시 + 출고 엑셀 생성용.
-- seq 는 배치 내 박스 표시 순번(No).
-- ════════════════════════════════════════════════════════════
CREATE TABLE IF NOT EXISTS dispatch_parcels (
@@ -91,6 +92,9 @@ CREATE TABLE IF NOT EXISTS dispatch_parcels (
package_id TEXT NOT NULL DEFAULT '',
tracking_id TEXT NOT NULL DEFAULT '',
shipping_provider TEXT NOT NULL DEFAULT '',
recipient_name TEXT NOT NULL DEFAULT '',
recipient_phone TEXT NOT NULL DEFAULT '',
recipient_address TEXT NOT NULL DEFAULT '',
product_ready BOOLEAN NOT NULL DEFAULT FALSE,
packed BOOLEAN NOT NULL DEFAULT FALSE,
label_attached BOOLEAN NOT NULL DEFAULT FALSE,