Commit Graph

85 Commits

Author SHA1 Message Date
king 07f71d1df0 feat(cupang): 혼합 박스 그림에 박스 호수 표시
상자 SVG 안에 "2호"처럼 호수만 넣는다("쿠팡 " 접두어 제거).
채움 색 위에서도 읽히도록 흰색 외곽선(paint-order: stroke)을 준다.
aria-label 도 "2호 박스"로 바꿔 스크린리더에서 구분 가능하게 함.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 13:41:33 +09:00
king 5c54c99f7e feat(cupang): 제품명 설정에 수기 추가 폼
itemcode_db 목록에 없는 상품도 제품명·제품코드를 직접 입력해 등록할 수
있게 왼쪽 카드 상단에 폼 추가. 기존 POST /cupang/products (upsert)를
그대로 사용하며 같은 제품코드는 덮어쓴다. itemcode 검색이 비활성인
환경에서도 동작하도록 search_enabled 분기 밖에 둔다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 12:50:22 +09:00
king 414c47e24d fix(cupang): 계산표 제품명 열만 좁히고 나머지 열 헤더 잘림 복구
제품명 열이 남는 폭을 전부 가져가면서 다른 열이 눌려 헤더가 "박…"
처럼 잘렸다. 제품명 열에 고정 폭 180px 을 주고 수량 78 / 박스·입수량
116 / 숫자 64 / 삭제 40 으로 되돌려, 남는 폭은 지정 폭 비율대로
나눠 갖게 한다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 12:40:14 +09:00
king a23cbd7b67 fix(cupang): 계산표 가로 스크롤 제거·좌우 카드 상단선 정렬
요약 카드에 남아 있던 margin-top:16px 이 2열 그리드에서 오른쪽 카드를
아래로 밀고 있었다 → 0 으로.

가로 스크롤: fixed 레이아웃에서도 셀 내용이 밖으로 삐져나오면 래퍼가
스크롤되므로 th/td 에 overflow:hidden + text-overflow:ellipsis 를 주고
래퍼는 overflow-x:hidden 으로 고정. 열 폭도 축소(수량 68 / 박스 96 /
숫자 46 / 삭제 34). 드롭다운 라벨은 "미라네 1호 세트 (2호·8)" 처럼
"쿠팡 " 접두어를 떼어 짧게 표기.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 12:38:41 +09:00
king aab5157386 fix(cupang): 박스 계산표 가로 스크롤 제거·좌우 카드 높이 정렬
.erp-input 의 min-width:240px 때문에 수량 칸이 넓어져 표가 가로로
넘쳤다. 계산표를 table-layout:fixed + colgroup 고정폭으로 바꾸고
수량/선택 입력의 min-width 를 해제, 셀 여백을 8px 6px 로 축소.

박스명·입수량 열을 "박스 / 입수량" 한 열로 합치고(쿠팡 2호 · 8개),
헤더를 박스/낱개/필요 로 줄이고 삭제 버튼을 ✕ 아이콘으로 바꿔 열 수를
8 → 7 로 줄였다.

2열 그리드를 align-items:stretch 로 두고 카드를 flex column 으로 만들어
좌우 카드 높이를 맞춘다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 12:35:48 +09:00
king 127f396366 fix(cupang): 박스 계산 화면 2열 배치·표 잘림 방지
입력표와 요약을 좌우 2열 그리드로 배치(1280px 이하는 세로 쌓기).
입력표는 자체 스크롤(max-height + sticky thead)로 행이 늘어도 카드가
잘리지 않게 하고, 요약 그리드 최소 폭을 줄여 좁은 열에서도 카드가
한 줄에 맞게 조정.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 12:31:33 +09:00
king c6ee37ee48 feat(cupang): 박스 계산 요약 — 자투리 혼합 박스 시각화
하단 "박스명별 합계" 표를 요약 카드로 교체.
- KPI 3개: 총 박스 / 제품별 박스 / 혼합 박스(자투리 N개)
- 제품별 카드: 몇 박스 + 자투리 몇 개(딱 맞으면 "딱 맞음")
- 자투리 혼합 박스: 박스 1개당 카드로 어떤 상품이 몇 개 들어가는지 표시.
  상자 SVG(뚜껑 열림·내용물 차오름), 채움률 바, 카드 등장 애니메이션.
  prefers-reduced-motion 에서는 애니메이션 비활성.

혼합 계산은 서버 _pack_leftovers: 박스 용량을 1 로 두고 제품 1개 =
1/units_per_box 부피로 환산, 같은 박스명끼리만 채운다. 부동소수 오차를
피하려고 Fraction 사용. 한 제품 자투리가 두 박스로 나뉘는 것은 허용해
박스 수가 최소가 되게 한다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 12:28:34 +09:00
king c72c0710ad feat(cupang): 박스 계산 화면 추가
달력 상단 "박스 계산" 버튼 → /cupang/box-calc. 제품명+수량을 여러 행
입력하면 제품별 박스 수·남은 낱개·총 필요 박스와 박스명별 합계를 계산.
수량/제품을 고치고 "계산 / 재계산" 으로 다시 계산할 수 있다(수량 칸에서
Enter 도 동일). 저장하지 않는 계산 전용 화면.

계산은 POST /cupang/api/box-calc 에서 store.compute_boxes 로 수행 —
클라이언트 계산을 신뢰하지 않는다. 입수량 규칙이 없는 제품은 "미설정"
으로 표시하고 합계에서 제외.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 12:18:52 +09:00
king 7eb63ff664 feat(cupang): 등록 제품명 표 정렬 + 박스 입수량 시드 SQL
제품명/제품코드 헤더 클릭으로 오름·내림차순 토글. Intl.Collator(ko,
numeric) 사용해 "미라네 2호"가 "미라네 10호"보다 앞에 오도록 정렬.
검색 비활성 상태에서도 동작하게 스크립트를 search_enabled 밖에 배치.

박스 입수량 14건(미라네 1~7호, 황토 김치통 1~7호) 시드 SQL 추가.
피킹비 전용 컬럼이 없어 memo 에 기록.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 12:13:22 +09:00
king d30dcbada4 ui(cupang): 달력 행 유동화(6주 균등 분할) — 1883x938 세로 스크롤 제거
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 18:15:31 +09:00
king 9f361c4e6a ui(shell): 뷰포트(1883x938) 고정 — 문서 세로 스크롤 제거
- erp 셸 height:100vh + body overflow:hidden, .erp-page 가 남은 높이 채우고 내부 스크롤
- 휴가 달력: 6주 행이 가용 높이 균등 분할(유동), 날짜 셀 height:100%, 선택일 패널 내부 스크롤
- 쿠팡 출고 폼: 라인 패널 고정 900px 높이 → 가용 높이 채움
- CORM/Order 는 별도 창이라 해당 없음

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 18:12:41 +09:00
king 162e1d22a9 ui(cupang,vacation): 달력 년월 왼쪽 정렬(쿠팡) + 년월·이동버튼 18pt
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 08:58:35 +09:00
king 652e53c3e8 feat(cupang): 선택일 출고 항목 hover 툴팁(제품명+수량, 커서 따라감)
- index sel_shipments 에 품목 요약(name/qty) 첨부
- 리스트 항목 hover 시 커서 왼쪽에 따라다니는 툴팁 표시
- 캐시 버전 m

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 06:55:52 +09:00
king 5c7730d4a1 ui(cupang): 달력 상단 설정 버튼을 달력 컬럼 오른쪽 끝에 정렬 (Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>) 2026-05-30 06:41:11 +09:00
king 57f0c3426f refactor(cupang): UI에서 제거된 기능의 죽은 코드 정리
- 엑셀 내보내기 전체 제거: /export, /{id}/export, _build_xlsx,
  _flatten_for_sheet, shipments_for_export, SHEET_COLUMNS
- 미사용 라우트 제거: /api/calendar, /api/products/search, /api/box-calc,
  /{id}/status(상태변경 UI 삭제됨)
- 미사용 db 메서드 제거: deactivate_box_rule, get_box_rule, box_rule_map
- form.html window.CPG + cpg-search-pop, cupang.js CFG, 검색 드롭다운 CSS 제거
- 템플릿 미사용 statuses 컨텍스트 제거, router import 정리
- 캐시 버전 k

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 06:37:51 +09:00
king bcbf3de24c ui(cupang): 달력 상단 엑셀 버튼 삭제 + 설정 버튼 이름/우측정렬
- 엑셀(N월) 버튼 제거
- 제품명 설정 / 입고센터 관리 / 박스 입수량 설정 로 명칭 통일, 우측 정렬
- 캐시 버전 j

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 06:29:22 +09:00
king 2f16457ac6 ui(cupang): 품목 라인 체크박스 칸 가운데 정렬 (Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>) 2026-05-30 06:25:07 +09:00
king fdabeec4e3 ui(cupang): 품목 라인 번호열을 체크박스로 + 선택 라인 삭제 + 전체선택
- # 열 → 체크박스(헤더 전체선택, indeterminate 지원)
- "라인 삭제" → "선택 라인 삭제": 체크된 행 삭제(최소 1줄 유지)
- 캐시 버전 h

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 06:23:16 +09:00
king f25948185b ui(cupang): 박스이름 180px로 맞춰 박스당 입수량을 제품코드와 세로 정렬 (Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>) 2026-05-30 06:14:54 +09:00
king 90e286dc4d ui(cupang): 박스룰 폼 3행 배치 + 목록 컬럼 정리/하드삭제
- 폼: 1행 제품명180/제품코드100, 2행 박스이름/박스당입수량, 3행 메모(전체폭)
- 목록 순서 제품명·제품코드·박스명·입수량·메모, 상태열/비활성 제거
- 삭제 버튼=완전삭제(delete_box_rule, 참조 라인 box_rule_id NULL 처리)
- 캐시 버전 f

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 06:11:57 +09:00
king 2e3ea610b7 ui(cupang): 박스 입수량 2열 배치 + 고정폭 + 입수량 "개" 단위
- 추가/수정 480px(좌), 입수량 규칙 900px(우)
- 제품명/제품코드/박스이름 입력 140px, 박스당 입수량 60px + "개" 접미
- 캐시 버전 e

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 06:03:02 +09:00
king 478cde8caf fix(cupang): 헤더 입력 185px — erp.css min-width:240 오버라이드
진짜 원인: erp.css .erp-input{min-width:240px} 가 width:185 를 눌러 240 고정.
헤더 입력 규칙에 min-width:185px 추가로 해결. 캐시 버전 c 로 bump.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 05:43:37 +09:00
king 800fbd1da4 ui(cupang): 헤더 입력 185px 강제 + 라인 추가/삭제 버튼 제목행 우측
- 헤더 입력 185px 특이도 강화(.cpg .cpg-header-grid .erp-field>input)
- 라인 추가/삭제 버튼을 "품목 라인" 제목행 우측으로 이동(하단 footer 제거)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 05:38:33 +09:00
king 2607e0610f ui: 콘텐츠 영역 1550px, 쿠팡 헤더 입력란 185px 고정
- erp-page max-width 1280 -> 1550 (우측 콘텐츠 사용 영역)
- 공통 헤더 작성일/출고일/센터입고일/입고센터/출고방식/작업자 185px 컬럼 고정

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 05:32:58 +09:00
king 150335cf87 ui(cupang): 폼 프레임 크기 고정 + 라인 추가/삭제 버튼 하단 우측
- 공통 헤더 450px, 품목 라인 900x900 내부 스크롤
- 저장/취소 위 구분선 제거
- 라인 추가 + 라인 삭제 버튼을 품목 라인 하단 우측에 배치
- 행별 ✕ 삭제 제거 → "라인 삭제"가 마지막 라인 삭제(최소 1줄 유지)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 05:24:49 +09:00
king d4e823f1fa ui(cupang): 저장·취소 버튼을 공통 헤더 카드 하단에 고정 배치
품목 라인 수가 늘어도 좌측 헤더 카드 하단에 고정(우측 컬럼 높이와 무관)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 05:13:41 +09:00
king b75fda5901 ui(cupang): 신규/수정 폼 저장·취소 버튼 하단 sticky 고정
라인 수가 늘어도 저장/취소 위치가 밀리지 않도록 position:sticky bottom

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 05:11:05 +09:00
king d9ea7550b0 feat(cupang): 출고방식 파렛트, 상태/문서번호 폼 제거, 폼·상세 레이아웃 개편
- 출고방식 선택지에 "파렛트" 추가
- 신규/수정 폼에서 상태·문서번호 입력 제거 (status는 작성중 기본 + 취소처리로만 변경)
- document_no DB 컬럼 제거: init.sql 반영 + 기존 DB용 002 드롭 마이그레이션(승인 후 실행)
- 폼: 공통 헤더(좌) / 품목 라인(우) 2열 배치
- 상세: 엑셀·상태변경 버튼 삭제, ◀◀ 달력(검정) 좌측, 수정 우측 정렬, 문서번호 표시 제거

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 05:07:21 +09:00
king 4113a034f4 ui(cupang): 입고센터 페이지 좌우 배치 + 목록 가나다순/900px 스크롤
- 추가 폼에서 정렬순서 입력란 제거(좌측), 센터 목록 우측
- 센터 목록 이름 오름차순, 프레임 900px 고정 내부 스크롤, 1열 행
- 행 편집은 이름 저장 + 활성/비활성 + 삭제 (정렬 입력 제거)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 04:39:47 +09:00
king 17dfd23cfc ui(cupang): 설정 프레임 높이 950->900 (Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>) 2026-05-30 04:24:24 +09:00
king 867bc510da ui(cupang): 박스입수량 라벨/겹침, 입고센터 컴팩트 재디자인, 출고 완전삭제
- 박스 입수량 폼: 제품명(스냅샷)→제품명, 헤더그리드로 교체해 입력란 겹침 해소
- 입고센터: 추가 폼 슬림화 + 센터 목록 2열 그리드(한 줄/센터)로 압축
- 출고 상세: 완전삭제 버튼 추가(/{id}/hard-delete, 라인 CASCADE). 취소 처리는 outline 로

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 04:16:24 +09:00
king 69b84db4bb ui(cupang): 설정 프레임 크기 고정 + 라벨 변경 + 코드 우측 타입 제거
- "itemcode_db 상품" → "미라네 주방 상품"
- 미라네 주방 상품 500x950, 등록된 제품명 600x950 고정, 내부 스크롤
- 좌측 리스트 코드 옆 type(낱개/세트) 표기 제거

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 03:57:32 +09:00
king 1d33761003 feat(cupang): 설정 화면 2열 개편 — itemcode 다중선택 등록 + 활성/삭제
- 수동 등록 카드 제거
- 왼쪽: itemcode_db 전체 목록(낱개+세트) 다중선택, 등록된 항목 진회색+흰글씨
  /cupang/api/products/all + /cupang/products/bulk(JSON 일괄 upsert)
- 오른쪽: 등록 제품명 목록 — 제품명/코드/상태 + 활성·비활성 토글 + 완전삭제
  /products/{id}/active (토글), /products/{id}/delete (hard delete)
- ItemcodeReader.list_all 추가

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 03:46:35 +09:00
king 34c7e2f964 feat(cupang): 제품명 카탈로그 설정 + 달력 공휴일 색상 + 폼 UI 개선
- 설정 화면 추가: /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>
2026-05-30 03:24:05 +09:00
king 9e707be5ac feat(cupang): 쿠팡 밀크런 모듈 추가 (출고 달력/박스계산/입고센터)
- app/modules/cupang: router/db/store/itemcode + 템플릿 5종
- cupang_db 전용(JSON 폴백 없음). CUPANG_DB_URL 미설정 시 안내 페이지
- 월간 달력 + 출고 묶음(헤더+라인), 박스 입수량 자동계산(서버 재계산)
- 입고센터 관리(사용중 soft delete), 박스규칙 upsert, 엑셀 내보내기
- 상품 검색은 itemcode_db 읽기 전용(미설정 시 수동 입력)
- MODULE_KEYS/메뉴/아이콘/라벨 동기화, scripts/sql/cupang_db_init.sql(멱등)
- app/data/ gitignore 추가(PII)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 20:47:32 +09:00