Commit Graph

383 Commits

Author SHA1 Message Date
king f54344c3ef feat(project): 홈 화면 업무추가·멤버표시·댓글팝업·실시간 새로고침 추가
- 카드 이름 옆 호버 노출 업무 추가 버튼(기존 업무편집 팝업을 생성 모드로 재사용)
- 카드 이름 아래 배정 멤버 아이콘+이름 표시, 새 프로젝트 모달에서 멤버 다중 선택
- 업무별 댓글 말풍선+개수 표시, 더블클릭 시 카톡형 댓글 전용 팝업
- 확인 안 한 새 댓글은 말풍선이 커지며 반짝임(localStorage 로 확인 여부 추적)
- GET /project/api/live-version 폴링으로 다른 사용자의 변경사항을 자동 새로고침
- 날짜 표기를 yy/mm/dd(요일)에서 mm/dd(요일)로 변경

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 13:03:02 +09:00
king 1aad9844dd feat(project): 업무 클릭 시 페이지 이동 없이 그 자리에서 팝업 편집
- 좌측 트리(프로젝트 상세 페이지): 이미 로드된 업무 데이터로 즉시 팝업 —
  더 이상 페이지를 새로고침하며 달력 탭으로 넘어가지 않음
- 홈 화면 카드/내 업무 리스트: 홈에도 업무편집 모달을 추가해 페이지 이동 없이
  팝업으로 편집(담당자·단계는 해당 프로젝트를 API 로 조회해 채움, 첨부·댓글 포함)
- 교차 프로젝트 업무 편집 시 담당자 select 가 현재 프로젝트 멤버만 보이던 문제 수정
  (해당 업무의 프로젝트 멤버를 다시 조회)
- 완료 프로젝트 숨기기 토글을 인라인 style.display 로 직접 제어하도록 변경
  ([hidden] 속성 + 클래스 규칙 조합이 기대대로 안 먹히는 경우 대비, 원인 불문 확실히 동작)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 09:16:39 +09:00
king ef05f9d362 fix(project): 완료 프로젝트 숨기기 버튼 동작 안 하던 CSS 특이도 문제 수정
- .pj-project-grid[hidden] 규칙 추가 — display:grid 규칙과 특이도가 같아
  [hidden] 속성이 무시되던 버그
- 홈 카드 업무 미리보기에 단계(stage_name) 칩 표시
- 홈 화면 날짜 표기를 yy/mm/dd(요일) 형식으로 통일(프로젝트 마감·업무 마감·내 업무 기간)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 09:02:31 +09:00
king a09ceee7a5 feat(project): 홈 화면 진행중/완료 프로젝트 구분, 완료 업무 취소선 유지
- 프로젝트 카드를 "진행중"/"완료" 두 섹션으로 분리(완료는 접기/펼치기)
- 완료된 업무도 미리보기 목록에서 숨기지 않고 취소선으로 계속 표시
- 사이드바 빠른 프로젝트 생성(+)에도 마감일 입력 추가 (홈 새 프로젝트 모달은 기존에 지원)
- 카드 편집/삭제 버튼이 완료 섹션 카드도 인식하도록 수정

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 08:55:50 +09:00
king 78683a9ae4 feat(project): 홈 화면 프로젝트 카드에 업무 미리보기·진행률 표시
카드마다 완료/전체 진행률 바와 미완료 업무 목록(담당자·마감일, 최대 8건)을
붙여 프로젝트 전체 현황을 홈에서 한눈에 볼 수 있게 함.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 08:42:28 +09:00
king 32cc8299e3 feat(malaysia): 일자별 엑셀을 상품(행) x 날짜(열) 양식으로
요청 양식에 맞춰 전치. A=상품명, B=자체상품코드, C~ 는 'MM월 DD일'.
기간 내 모든 날짜를 열로 유지(빈 날 포함), 등록된 낱개 아이템은 이동이
없어도 행으로 표시. 수량 0 은 빈칸. 헤더 갈색 배경 + 흰 굵은글씨,
C2 틀고정, 데이터 영역 얇은 테두리.

기간 생략 시 이력 최소~최대 날짜를 사용하고 2년 초과는 400 으로 막는다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 23:38:59 +09:00
king bc6e2a3417 feat(malaysia): 이동 이력 일자별 낱개 수량 엑셀 다운로드
기간 전체를 일자 x 낱개 아이템 피벗으로 내려받는 /movements/export-daily 추가.
콤보(세트) 출고는 등록 시 이미 BOM 으로 분해돼 구성 낱개 OUT movement 로
저장되므로 별도 분해 없이 낱개 기준 합계에 포함된다.

- db.movement_totals_by_date(): 기간/종류별 일자 x 아이템 합계
- 시트 '일자별'(행=날짜, 열=아이템, 합계 행/열) + '상세'(긴 형식, 자동필터)
- 이동 이력 카드에 종류/기간 선택 + 다운로드 버튼

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 23:33:23 +09:00
king af87f317ab fix(cupang): 자동 등록된 센터가 이름 대신 id 로 보이던 문제
센터 이름은 페이지를 열 때 받은 목록(cpg-centers)에서 찾는데,
업로드 도중 자동 등록된 센터는 그 목록에 없어 centerName() 이
id 숫자를 그대로 반환했다. 업로드 응답의 센터를 목록에 합친다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 18:28:18 +09:00
king 4fce96b438 feat(cupang): 발주 업로드 시 미등록 입고센터 자동 등록
발주서에 있는 센터가 cupang_centers 에 없으면 자동 배분에서 제외됐다.
이제 발주서에 적힌 이름 그대로 센터를 등록(sort_order 는 기존 최대값 다음)
하고 계산에 포함한다. 경고문도 "등록되지 않은 센터" 대신
"새 입고센터 자동 등록" 으로 바꿨다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 18:21:39 +09:00
king 0b79629207 style(cupang): 매출 표 줄무늬 색을 #caedfb 로
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 16:41:36 +09:00
king 35f849ba0c feat(cupang): 매출 표에 그룹 줄무늬 — 입고센터(센터 검색 시 출고일) 기준
연속된 같은 그룹은 같은 배경, 그룹이 바뀌면 배경을 번갈아 칠한다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 16:34:11 +09:00
king 2128d622b8 fix(cupang): 순번 없는 매출 행이 누락되던 문제 — 시트 데이터 22건 추가
- 시트 마지막 부분(2026-09 등)에 순번(B열)이 비어 있는 발주 라인이 있어
  파서가 건너뛰었다. 판정 기준을 "발주번호가 숫자 + SKU/품목 존재"로 변경
- seed 재생성: 2,218 → 2,240행. 2026년 9월계(1,447개 / 11,035,564원)가
  시트와 정확히 일치

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 16:31:07 +09:00
king 49228dc1ff style(cupang): 매출 표 머리글 굵게
.erp-table thead th (font-weight:500, 회색) 에 눌리지 않게 특이도를 올려
font-weight 800 + 검정으로 지정

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 16:22:41 +09:00
king f781204094 fix(cupang): 매출 조회 조건이 세로로 쌓이던 문제, 주차 없음 안내
- .cpg > form { flex-direction: column } 에 눌려 세로 배치되던 것을
  form.cpg-sales-filter 로 가로(row) 고정, 높이도 내용만큼만
- 고른 주차에 자료가 없으면 "<주차> 주차에 등록된 매출 자료가 없습니다" 표시
- 주차 목록은 최근 주차(출고일 최댓값 기준)부터

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 16:18:37 +09:00
king 9ae27bce8a style(cupang): 매출 조회 조건 1행 고정 + 주차 필터, 상단 합계 KPI 제거
- 조회 조건은 flex-wrap: nowrap 로 한 줄 유지(좁은 화면은 가로 스크롤)
- 주차(week_label) 필터 추가 — 최근 주차부터 목록
- 공급가/원가/물류비/마진/순마진 합계 카드 삭제, 표 영역 높이 확대

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 16:13:49 +09:00
king 0979a89ed9 feat(cupang): 쿠팡 로켓 매출 화면 + cupang_sales 테이블
- scripts/sql/cupang_db_006_sales.sql: cupang_sales(발주 라인) / cupang_sales_weekly(광고비·할인·장려금) 생성
- scripts/sql/cupang_sales_seed.sql: 구글 시트 초기 데이터 2,218행 + 주차비용 100건
  (공급가 합계가 시트 2024/2025 총계와 일치)
- /cupang/sales: 기간·센터·발주유형·검색 조회, 합계 KPI(공급가/원가/물류비/마진/순마진),
  행 추가·수정·삭제, 시트(xlsx·csv) 업로드 일괄 등록, 조회 조건 그대로 엑셀 다운로드
- 달력 상단에 "쿠팡 로켓 매출" 버튼 추가
- sales_import.py: 병합 머리글 3행 건너뛰고 라인/주차 소계 분리, 월계·총계는 저장하지 않음

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 16:03:08 +09:00
king 15de38cb74 style(cupang): 달력 다듬기 — 이전/다음 달 더 흐리게, 연도를 월 위로, 오늘 버튼 굵게
- 다른 달 칸 opacity .5 → .28
- 달 머리글 세로 배치: 연도(작게, 위) + 월(크게, 아래)
- "오늘" 버튼 글자 굵게 + 테두리 2px 검정

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 14:48:51 +09:00
king d128744346 style(cupang): 달력 하단 범례와 구분선 제거
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 14:43:33 +09:00
king 76ba2eb8bf fix(cupang): 달력 칸이 겹치던 문제 — 칸에 box-sizing: border-box
전역 border-box 가 없어 height:100% + padding/border 가 고정 행 높이를 넘어
아래 주와 겹쳤다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 14:40:59 +09:00
king bf8f36bc40 fix(cupang): 달마다 다르던 달력 칸 크기 통일
주 수(5주/6주)에 따라 1fr 로 나뉘던 행 높이를 고정값(--mcal-row)으로 바꿔
두 달의 칸 크기와 세로 간격을 동일하게 맞춘다. 화면 높이에 따라 84/72/62px.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 14:38:02 +09:00
king ba2478d461 style(cupang): 달 이동 화살표를 짧고 굵은 SVG 로 교체
글꼴 글리프는 두께 조절이 안 돼 stroke-width 5.5 SVG 로 대체

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 14:34:33 +09:00
king e259e7d370 style(cupang): 달력 헤더 재구성 — 큰 화살표·가운데 제목, 오늘 버튼 중앙 이동
- 상단 바: ← 제목 → 을 가운데 정렬, 화살표는 테두리 없는 큰 글리프
- "오늘" 버튼을 두 달 사이 상단 중앙으로 이동
- 달 머리글 가운데 정렬, 출고 건수 배지는 오른쪽에 겹쳐 배치

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 14:29:37 +09:00
king 9cba09d646 feat(cupang): 공휴일 데이터 2030년까지 확장 (설날·추석·대체공휴일 포함)
- 2028~2030 음력 공휴일: 설날/부처님오신날/추석 연휴
- 대체공휴일: 2028-10-05(추석·개천절 겹침), 2029-05-07(어린이날 토),
  2029-05-21(부처님오신날 일), 2029-09-24(추석 연휴 일),
  2030-02-05(설날 연휴 일), 2030-05-06(어린이날 일)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 03:06:41 +09:00
king df46784474 fix(cupang): 성탄절 대체공휴일 반영 (2027-12-27)
대체공휴일 대상 목록을 주석으로 명시 — 삼일절·어린이날·광복절·개천절·한글날·
설날·추석·부처님오신날·성탄절 (신정·현충일·제헌절은 제외)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 03:03:03 +09:00
king 0762fb9b44 docs(cupang): 제헌절은 대체공휴일 대상 아님을 주석으로 명시
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 03:00:25 +09:00
king cd8f54d187 feat(cupang): 제헌절(7/17) 공휴일 추가
2026년부터 공휴일로 재지정 — 고정 양력 공휴일 목록에 추가

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 02:55:51 +09:00
king b302ec0951 feat(cupang): 달력 칸에 공휴일 이름 표시(대체공휴일 포함)
- holidays.py 를 이름까지 담도록 확장(holiday_name), is_holiday 는 이름 유무로 판정
- 대체공휴일은 원래 명칭 대신 "대체공휴일"로 표기, 겹치는 날은 "어린이날·부처님오신날"
- 달력 칸에 날짜 아래 빨강 소형 라벨 + title 툴팁, 칸 최소 높이 62→70px

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 02:52:59 +09:00
king 15f181318b feat(cupang): 채움률 낮은 혼합 상자 경고, 직접 입력 제거하고 출고일 목록으로 대체
- 혼합 상자 채움률 60% 이하면 "상자 변경 필요"(오렌지) 도장 + 업로드/날짜 전환 시 안내 팝업
- ① 직접 입력 표와 계산/제품 추가/초기화 버튼·이벤트 제거. 품목은 업로드(또는 임시 저장 불러오기)로만
- 상단 출고일 탭 바를 없애고 ① 카드 안 세로 목록으로 이동 (날짜·센터수·상자수·수량)
- 임시 저장에 ship_date 를 함께 담아 불러올 때 출고일 유지

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 01:55:51 +09:00
king 7d9f7fa364 feat(cupang): 분배 확정 즉시 실행 + 저장 중 스피너
- 출고일자 선택 대화상자 제거. 확정 시 활성 출고일(업로드 F13−1일, 없으면 오늘)로 바로 저장
- 저장 중 스피너 모달 표시 → 응답 오면 닫고 달력으로 이동(여러 날짜면 다음 날짜로 이어감)
- 실패 시 모달 닫고 사유를 상단 메시지로 표시, 버튼 재활성화

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 20:39:25 +09:00
king 1a2291f510 refactor(cupang): 입고센터 관리 화면 제거
- /cupang/centers GET/POST, 수정·삭제 라우트와 centers.html 삭제
- 달력 상단 "입고센터 관리" 버튼 제거, 상자 계산의 안내 문구 정리
- 센터 관리 화면 전용 CSS 제거(공용 .cpg-icon-btn/.cpg-btn-sm 은 유지)
- 센터 데이터(cupang_centers)와 db 계층은 그대로 — 출고 확정·발주 업로드에서 계속 사용

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 20:34:41 +09:00
king 46ce6d78b8 style(cupang): 상자 목록 머리글 굵게·가운데 정렬, 열 너비 확대
머리글 글자가 잘리지 않도록 상자번호 82px / 제품코드 100px / 수량 62px

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 20:26:06 +09:00
king cd8a594e05 style(cupang): 상자 목록 엑셀 버튼 글자 흰색 고정, 오버 시 굵게
.erp-body a { color: inherit } 에 밀려 글자가 검게 나오던 문제 — a+클래스 선택자로 흰색 지정

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 20:24:48 +09:00
king 9f0a3f7f73 style(cupang): 상자 목록 엑셀 버튼 초록, 머리글 안 줄임, 행 클릭 체크 토글
- 엑셀 다운로드 버튼 배경 #217346
- 표 머리글은 말줄임 없이 전체 표시(상자번호 열 74px)
- 행 클릭 시 상자 단위로 체크 색 토글 + 체크 개수 표시(세는 용도)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 20:11:43 +09:00
king 3926b6a431 feat(cupang): 상자 목록을 번호·제품명·제품코드·수량 표로, 엑셀 다운로드 추가
- ② 상자 목록: 카드 대신 표. 한 상자에 여러 제품이면 상자번호 칸 rowspan 병합
- GET /cupang/{id}/boxes.xlsx — 같은 표를 xlsx 로 (export.build_box_list_workbook)
- box_list 항목에 product_code 포함

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 19:55:06 +09:00
king 15947e73ed feat(cupang): 달력 월 표기 확대, 출고 보기 ②를 상자 번호별 내용물 목록으로
- 달력 월 이름/연도 글자 크기 2배·굵게
- 출고 상세 ② 상자 요약 → ② 상자 목록: 전체 상자에 1번부터 번호를 붙이고
  상자마다 담긴 제품·수량을 표시. box_plan 스냅샷 우선, 없으면 계산 결과로 대체

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 19:49:42 +09:00
king e49abc4b8c fix(cupang): 3열에서 ③ 카드 자체를 스크롤러로
카드 높이는 grid 행(1fr)으로 화면에 맞춰져 있으므로 카드에 overflow-y:auto
를 걸면 안쪽 구조와 무관하게 스크롤된다. 목록은 자연 높이로 두고 헤더는
sticky. JS 높이 계산 대상에서 ③ 제외(①② 만 유지).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:50:06 +09:00
king 2608fd7f23 fix(cupang): 좁은 화면에서는 카드가 늘고 페이지가 스크롤되게 분기
진단 결과 1열로 접힌 상태에서 .cpg-calc3 가 704px 를 세 카드가 나눠
가져(224px씩) 내용이 잘렸고, JS 가 준 높이(561px)는 카드보다 커서
무용지물이었다.

- 1501px 이상: 카드 안쪽만 스크롤. 높이는 "카드 아래끝 − 영역 top" 으로 계산
- 1500px 이하: 카드/영역 높이 제한 해제, .cpg 를 flex:0 0 auto 로 두어
  내용만큼 늘고 페이지(.erp-page)가 스크롤

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:46:40 +09:00
king 71194de2eb fix(cupang): 스크롤 영역 높이를 rAF 후 JS 로 지정 + 진단 로그
CSS flex 체인만으로 잡히지 않는 환경 대비. render() 이후 다음 프레임에
각 영역의 화면 위치를 재서 max-height 를 !important 로 지정한다.
window.CPG_DEBUG = true 후 window.cpgFit() 으로 계산값 확인 가능.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:41:36 +09:00
king ca87c254c0 fix(cupang): 3열 프레임 높이를 그리드 행(1fr)로 고정 — ③ 목록만 스크롤
원인: .cpg-calc3 의 행 높이가 auto 라 카드가 화면 아래로 넘치도록 늘어났고,
페이지 스크롤도 없어서 아래쪽(마지막 상자, [+ 새 혼합 상자])이 잘렸다.

- grid-template-rows: minmax(0,1fr) 로 행을 컨테이너 높이에 고정
- 카드 overflow:hidden, ①표/②목록/③센터목록만 내부 스크롤
- 그동안 덧댄 !important 패치와 JS 높이 강제 지정 제거(충돌 정리)
- 2열/1열로 접히면 행이 여러 개라 카드 max-height(76vh)로 처리

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:38:51 +09:00
king f1c16e8282 fix(cupang): ③ 만 내부 스크롤, 페이지 전체 스크롤은 없앰
앞선 커밋의 .cpg-page-grow(페이지가 늘어나는 방식)를 되돌리고,
③ 카드는 overflow:hidden + 목록만 스크롤로 복구.
JS 높이 계산 대상에 ③ 목록을 다시 포함(창높이-요소top, 260 이하면 60vh).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:36:16 +09:00
king 99c0581d9a fix(cupang): 상자 계산 화면이 내용만큼 늘고 페이지가 스크롤되게
.cpg 가 flex:1 1 auto + min-height:0 이라 남은 높이에 맞춰 눌리기만 해서
③ 이 늘어나도 페이지 높이가 그대로였다(=스크롤 안 됨).
이 화면에만 .cpg-page-grow 를 붙여 flex:0 0 auto 로 두고,
페이지 스크롤 시 ①② 내부 스크롤 높이를 다시 계산한다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:33:09 +09:00
king 1047175346 fix(cupang): ③ 센터 분배는 내용만큼 늘어나게 (클리핑 제거)
혼합 상자를 추가하면 칸이 아래로 늘어나야 하는데 카드/목록에 걸어둔
max-height + overflow:hidden 이 잘라내고 있었다. ③ 은 높이 제한과
클리핑을 없애고 넘치면 페이지가 스크롤되게 한다.
①(입력 표) ②(요약 목록) 의 내부 스크롤은 그대로 유지.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:29:37 +09:00
king 5339ee4538 fix(cupang): 접힌 레이아웃에서 스크롤 영역 높이가 160px 로 잘리던 문제
3열이 접혀 ③ 카드가 둘째 줄로 내려가면 (창높이 − 요소top) 이 음수가 되어
최소값 160px 로 고정됐다. 260px 이하면 창 높이의 60% 를 쓰도록 바꾸고,
페이지 스크롤 시에도 높이를 다시 계산한다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:20:44 +09:00
king 9706fd70c7 fix(cupang): 스크롤 높이를 id 선택자 + !important 로 확정
CSS 우선순위나 flex 높이 계산에 밀리지 않도록
#cpg-dist-list / 표 / 요약 목록에 !important 최대 높이를 주고,
JS 도 setProperty(..., "important") 로 지정한다(data-fit 로 확인 가능).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:12:53 +09:00
king c3d2141474 fix(cupang): 스크롤 영역 높이를 JS 로 직접 계산
CSS flex/grid 만으로는 브라우저에 따라 높이가 잡히지 않아 카드가 계속
늘어났다. render()/resize 시 각 영역의 화면 위치를 재서
max-height 를 픽셀로 지정한다(① 표 / ② 요약 목록 / ③ 센터 목록).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:10:55 +09:00
king 6962b79f28 fix(cupang): 3열 카드 자체도 스크롤되도록 이중 안전장치
카드에 max-height(82vh)를 주고 ③ 카드는 overflow-y:auto 로 바꿔,
안쪽 목록 스크롤이 동작하지 않는 상황에서도 카드가 스크롤되게 한다.
스크롤바는 gutter 고정 + webkit 스크롤바 폭 지정으로 보이게.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:51:52 +09:00
king da6ae2cd13 fix(cupang): 혼합 상자 이동은 용량 제한 없이, ③ 목록 max-height 로 스크롤 보장
- mixPut/moveUnits 에서 용량 제한 제거. 이동 목록도 "가득"이어도 선택 가능
  (채움률이 100% 를 넘으면 빨간색으로 표시만)
- 부모 flex 높이 계산에 기대던 스크롤을 max-height 로 직접 지정
  (③ 72vh, ① 표 64vh, ② 목록 64vh)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:42:51 +09:00
king 58ebf1c232 change(cupang): 미배치 자투리 제거 — 상자 간 직접 이동만, ③ 스크롤 보정
- "미배치로 빼기" 옵션과 미배치 풀 UI/상태 삭제
- [−] 는 자리가 있는 다른 상자로 1개 이동(없으면 새 상자 자동 생성),
  [+] 는 같은 제품이 있는 다른 상자에서 1개 가져오기 → 총량 항상 보존
- 혼합 상자 ✕ 는 내용물을 다른 상자로 옮긴 뒤 상자를 없앤다
- 3열이 2열/1열로 접히는 폭에서 카드 max-height 를 줘서 ③ 목록이
  카드 안에서 스크롤되도록 수정(편집으로 줄이 늘어나도 페이지가 안 밀림)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:33:32 +09:00
king f3a681ccfe feat(cupang): 혼합 상자 내용물 편집 (수량 스테퍼 + 이동 + 미배치 풀)
- ③ 센터 분배의 혼합 상자 트리에서 항목마다 [−] n [+] 와 이동 드롭다운
  (다른 혼합 상자 / 새 상자 / 미배치로 빼기). 용량(부피 합)을 넘지 않게 제한
- 센터마다 "미배치 자투리" 풀 + [자동 담기], [+ 새 혼합 상자] 버튼
- 혼합 상자 ✕ 는 내용물을 미배치로 옮기고 상자를 없앤다
- 상자가 비면 자동 제거, 채움률은 헤더에 실시간 표시
- 확정 조건에 "미배치 자투리 0" 추가
- 혼합 상자 키를 위치 index → 상자별 고유 id 로 바꿔 추가/삭제에도 배분 유지
- 미배치 풀은 출고일 탭 전환 시에도 함께 보관

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:26:58 +09:00
king ba3b3a5ad8 feat(cupang): 출고 삭제 시 구글 시트도 동기화
- GoogleSheetsWriter.delete_sheet 추가 (없으면 no-op, 마지막 남은 시트면
  삭제 대신 내용만 비움 — 구글이 마지막 시트 삭제를 거부)
- 건별 삭제(soft/hard)와 날짜 전체 삭제 후 해당 출고일 시트를 동기화:
  남은 출고가 있으면 다시 기록, 없으면 시트 삭제
- 시트 설정 조회를 _sheet_target 으로 공통화, 결과는 로그로 남김
- 건별 삭제 후 기본 이동 경로를 그 출고일 달력으로

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:17:32 +09:00