- 플랫폼 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>
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>
malaysia_items 시드에 MY-0006 추가, 운영 DB용 멱등 마이그레이션 추가.
BOM 구성은 itemcode_db.set_components 에서 실시간 조회 — 코드 변경 불필요.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
뚜껑 저장 시 daily_stocktake_rack.sku_code CHECK 제약(MT/MX/MZ/MY만)
위반으로 Internal Server Error 발생. init SQL 의 CHECK 에 'MD-%' 추가,
운영 DB용 멱등 마이그레이션(malaysia_stock_db_rack_allow_lid.sql) 제공.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- set_movement(콤보 단위 출고 원장) 테이블 신설 + 마이그레이션 SQL
- create_set_out: 낱개 OUT 과 함께 콤보 OUT 1행 기록(같은 트랜잭션)
- 콤보 재고 = 최근 재고조사 콤보수량 − 재고조사일 이후 콤보 출고
- 재고현황 콤보 패널: 조사/출고/재고 3열 표시
- reset_all_data 에 set_movement 삭제 포함
배포: malaysia_stock_db_set_movement.sql 적용(테이블+GRANT) 후 코드 배포.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
낱개/콤보 평면 수량 그리드를 창고 랙 그림(A/B 36칸) 입력으로 대체.
각 칸에 아이템·박스당 입수량·박스 수를 넣고 + 로 한 칸 여러 아이템 추가.
저장 시 SKU별 qty=SUM(입수량×박스수) 집계로 daily_stocktake_line 재생성.
이후 분해/확정 로직은 라인 기준 그대로 동작.
- DB: daily_stocktake_rack 테이블 + grant (멱등)
- store: rack_cell_codes/rack_layout/aggregate_rack 순수함수
- db: list_rack_entries/replace_rack(1 트랜잭션, draft만)
- router: rack 컨텍스트 + POST /stocktakes/{id}/rack/bulk
- UI: 랙 보드 템플릿 + malaysia_rack.js(행 추가/삭제·실시간 소계)
- 테스트 4건 추가(18 전부 통과)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 설정 화면 추가: /cupang/products — itemcode_db 검색 등록 + 수동 등록.
제품명 드롭다운 소스. cupang_products 테이블 신규(init.sql 멱등 재실행 필요)
- 폼 품목라인: 제품명 드롭다운 선택 → 제품코드 자동 입력
- 라인 컬럼 순서 제품명·제품코드·수량·입수량·박스계산·메모
- 제품코드 140px, 수량·입수량 60px 폭 고정
- 공통 헤더 입력란 겹침 수정(min-width:0, width:100%, box-sizing)
- 달력: 일/공휴일 빨강, 토 파랑, 글자 크기 확대. 한국 공휴일 모듈(holidays.py)
- document_no null → "None" 출력 버그 수정
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
dollar-quoted ($$...$$) 안의 :'app_password' 는 psql 이 치환하지 않아
서버에서 syntax error 발생. DO 블록을 제거하고 \gexec 로 동적 SQL 생성.
- CREATE ROLE: 미존재 시에만
- ALTER ROLE: 비밀번호 항상 동기화
- 메뉴 카드 새 탭 열기 + /orderlist/health/db 헬스 배지 (온라인/오프라인) 추가
- CUSTOMER_ORDER_LIST_URL 기본값을 /orderlist/ 로 (NPM 같은 도메인 하위 경로)
- orderlist 측 compose 정리 스크립트 추가 (ports 제거, npm_default 외부 네트워크 attach)