미리보기는 vmin 비율로 자동 축소돼 한 장에 맞지만 실제 인쇄는
고정 cm 크기를 상품 1개 기준으로 사용해 2개 이상이면 세로로
용지를 넘어가 글자가 잘렸다. 칸 상품 수에 따라 인쇄 글자 크기를
단계(rvp-multi/rvp-many)로 축소해 A4 가로 1장에 맞게 수정.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
헤더(조사/출고/재고) data-ko/data-en, 안내문 i18n(날짜 분리), malaysia.js 캐시버전 갱신. 짧은 단어는 사전 대신 data 속성 사용해 RICH 부분치환 오염 방지.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 인쇄/미리보기에서 랙 번호 제거(불필요)
- 여백 축소(@page 4mm, 시트 2mm), 글자 전반 확대
- 상품명과 용량(750ml 등) 줄 분리, 용량을 최대(5.5cm)로 키워 원거리 가독
- 계산식의 박스 수(21box)를 굵게 3cm로 강조
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
랙 보기에서 칸을 드래그해 다른 칸으로 구성을 옮긴다(채워진 칸끼리 맞교환,
Side A↔B 가능). 칸 번호는 유지되고 수량 합계도 불변(위치만). 저장하면 그
배치로 기록되며, 재고조사 '이전값 불러오기'가 이 최종 위치를 불러온다.
- db.reposition_rack: 칸(cell_code) 배치만 교체, daily_stocktake_line 보존,
확정본도 허용(취소만 불가). 위치 이동은 전산재고에 영향 없음
- db.previous_rack_entries: 정렬을 랙 저장시각(MAX created_at) 기준으로 통일 →
'이전값 불러오기'가 랙 보기 최종 위치와 일치
- POST /malaysia/rack/save: latest_rack_stocktake 대상 reposition
- rack_view.html + malaysia_rack_view.js: HTML5 드래그 이동/swap, 칸 체크 선택,
저장(병렬배열 직렬화), 인쇄 미리보기 모달
- 인쇄: 선택한 칸을 칸마다 A4 가로 1장, 굵은 대형 글씨(@media print),
미리보기 후 인쇄
- i18n 항목 추가, malaysia.js 캐시버스트 v20260615c
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
작성중 재고조사 상세에서 직전 조사의 랙 저장값을 한 번에 불러와 채운다.
사용자는 이어서 수정 후 저장/확정. 직전 조사에 랙 입력이 있을 때만 버튼 노출.
- db.previous_rack_entries: 현재 제외·취소 제외, 랙 있는 가장 최근 조사의
랙 항목 반환(replace_rack 입력 형식과 호환)
- POST /stocktakes/{id}/rack/load-previous: 이전 랙을 현재 조사로 replace_rack
적용 후 리다이렉트(화면 복원). 작성중만 허용, 이전값 없으면 400
- 상세 핸들러에 has_prev_rack 플래그, 템플릿에 formaction 버튼(덮어쓰기 confirm)
- i18n '이전값 불러오기'→'Load previous', JS 캐시버스트 v20260615b
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ENG 토글 시 topbar 제목 '창고 랙'(page_title)·'랙 보기'(page_subtitle)가
KO_EN 사전에 없어 '랙' 글자만 한글로 남았다. 두 항목 추가로 전체 번역.
malaysia.js 캐시버스트 v20260615a.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 입수량/박스 입력을 한 줄로(.rk-line)
- 칸 ∑ 합계 제거 — 서로 다른 상품을 합산해 의미 없음(입력·랙보기 양쪽)
- 상품별 행 소계(합계)는 유지(개별 SKU 기준 유효)
- malaysia_rack.js: 칸 합계 로직 삭제, 행 소계만 갱신
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- malaysia_rack.js: 행 소계/칸 합계 toLocaleString, 로드 시 기존 행도 recalc
- stocktake_detail/rack_view: 서버 렌더 합계도 {:,} 포맷
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
좁은 칸에서 placeholder 가 잘려 안 보이던 문제 해결.
- 각 입력행을 세로 스택(상품 select → 입수량 → 박스 → 합계/삭제)
- '입수량'·'박스' 레이블 항상 표시
- 중복 .rk-del CSS 정리, i18n 키 추가
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
최근(취소 제외) 재고조사의 랙 입력을 칸별로 한눈에 보는 읽기전용 메뉴.
각 칸에 상품명·박스수×입수량=총개수, 칸 합계(∑) 표시.
- nav: '창고 랙 보기' 탭 추가(active_tab='rack')
- router: GET /malaysia/rack — latest_stocktake → list_rack_entries 칸별 그룹
- 템플릿 rack_view.html — Side A/B 세로 적층, 칸별 아이템 목록
- i18n 키 추가(Rack View 등)
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>
- '일괄 적용' 버튼명 '입력'으로 변경
- 입력 버튼 우측 '다운로드' 버튼 추가
- GET /malaysia/movements/export: 해당 일자/종류(IN/OUT) 낱개 합계를
엑셀(A=사방넷코드, B=수량, C=이름)로 스트리밍
- db.daily_movement_totals(): 일자/종류별 낱개 합계 집계
- itemcode.sabangnet_code_map(): item_code → 사방넷 코드 매핑
- i18n 사전 '입력'/'다운로드' 추가, malaysia.js 캐시 버전 bump
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 메인 메뉴/라벨 '말레이시아 재고' → '말레이시아 재고관리'
- EN 토글 시 사이드바 활성 항목(말레이시아만)·상단 페이지 제목/부제 부분치환 번역
(다른 메뉴는 그대로)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- static/malaysia.js: KO_EN 사전 + 토글(localStorage 기억, 새로고침 없이 즉시)
- _i18n.html 공용 include(ENG/한글 버튼 + 스크립트), 전 화면 상단 삽입
- UI 고정 문구는 사전 치환(제목/헤더/버튼/라벨/배지/옵션/안내)
- 상품/콤보명은 data-en(영문, malaysia_items)·data-ko(itemcode_db 한글) 동시 렌더
- _base_ctx 에 ko_names(itemcode_db name_map) 주입
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- erp 셸 height:100vh + body overflow:hidden, .erp-page 가 남은 높이 채우고 내부 스크롤
- 휴가 달력: 6주 행이 가용 높이 균등 분할(유동), 날짜 셀 height:100%, 선택일 패널 내부 스크롤
- 쿠팡 출고 폼: 라인 패널 고정 900px 높이 → 가용 높이 채움
- CORM/Order 는 별도 창이라 해당 없음
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
진짜 원인: 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>
- 헤더 입력 185px 특이도 강화(.cpg .cpg-header-grid .erp-field>input)
- 라인 추가/삭제 버튼을 "품목 라인" 제목행 우측으로 이동(하단 footer 제거)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- erp-page max-width 1280 -> 1550 (우측 콘텐츠 사용 영역)
- 공통 헤더 작성일/출고일/센터입고일/입고센터/출고방식/작업자 185px 컬럼 고정
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 공통 헤더 450px, 품목 라인 900x900 내부 스크롤
- 저장/취소 위 구분선 제거
- 라인 추가 + 라인 삭제 버튼을 품목 라인 하단 우측에 배치
- 행별 ✕ 삭제 제거 → "라인 삭제"가 마지막 라인 삭제(최소 1줄 유지)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 추가 폼에서 정렬순서 입력란 제거(좌측), 센터 목록 우측
- 센터 목록 이름 오름차순, 프레임 900px 고정 내부 스크롤, 1열 행
- 행 편집은 이름 저장 + 활성/비활성 + 삭제 (정렬 입력 제거)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 출고 폼 입고센터 드롭다운 이름 오름차순 정렬
- 사이드바: is-active 메뉴는 hover 무변화, 그 외 진한 회색(#d9d9d9)
- 설정/센터/박스 페이지 "← 달력" → "◀◀ 달력", 검정 배경 흰 글씨(primary)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>