좁은 칸에서 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>
- Side A/B 를 세로로 적층(각 면 풀폭) → 칸·입력란 넓게, 한 화면 활용
- 상단 정보(날짜/창고/상태/안내/저장)를 mys-info-bar 로 한 줄 고정
(erp-card 중앙정렬에 먹혀 세로로 쌓이던 문제 해결)
- 칸 넓어진 만큼 입력란 폭·폰트 확대
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 날짜/창고/상태/안내를 상단 가로 스트립으로 이동(좌측 280px 칸 제거)
- 랙 보드 풀폭 → A/B 두 면 한 화면에 나란히
- 드롭다운에 상품코드 숨기고 이름만 표시(value 는 코드 유지)
- 입력란 폭 축소·min-width:0 으로 칸 넘침 방지
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>
- 콤보(MY-)는 입고 불가 구조. 입고 선택 + 콤보 수량 입력 시 차단.
- 클라이언트: 제출 전 alert 안내(낱개로 분리 입고)
- 서버: 동일 조건 400 (JS 우회 대비)
- 세트 movement 는 항상 OUT 유지(create_set_out 원복)
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>
- 재고현황 헤더 "전산 재고 현황", Last Stocktake 옆 조사수량+차이(±) 표기
(차이 = 마지막 재고조사 낱개 total − 전산재고)
- 재고조사 확정(전산 반영)은 관리자(is_admin)만 가능, 비관리자 안내
- 슈퍼관리자만 재고조사 완전 삭제(목록/상세 버튼 + /delete 라우트)
- "◀◀ 조사 목록" 버튼 검정 바탕(primary)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 이동 이력에 날짜 선택 필터(요일 포함 표시), 날짜+종류 조합 유지
- 이력 Ref 컬럼 삭제
- "낱개 아이템"→"낱개 상품", "세트 아이템 — 출고(OUT)"→"콤보 상품"
- 안내 문구 삭제
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- /movements/bulk + /movements/set-out-bulk → /movements/apply 단일 엔드포인트
- 낱개는 선택 종류(IN/OUT/ADJUST), 세트는 항상 OUT(BOM 분해)
- 2컬럼 그리드 한 폼, "일괄 적용" 버튼 하나
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 상단 "월별 집계" 버튼 삭제
- 경비 내역: 월 선택(input month, 변경 시 자동 조회) 기본 이번 달
- 선택 월(사용일 기준)만 표시 + 해당 월 합계금액 표시
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 가로 > 1000px 이미지: 비율 유지 1000px 축소 후 JPEG 품질 80 재인코딩
- EXIF 회전 보정, 알파/팔레트 → RGB 변환, 확장자 .jpg 로 통일
- 1000px 이하/비이미지/처리 실패 시 원본 그대로 저장
- 업로드를 메모리 읽기 후 처리 방식으로 변경(20MB 제한 유지)
- requirements: pillow>=10.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 제목행: 파랑(4472C4) 배경 + 흰 굵은 글씨 + 가운데 정렬
- 금액/합계금액: #,##0 쉼표 표시형식
- A~K 열너비 내용 기준 자동(한글/전각 2칸 계산)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- "첨부 일괄(zip)" → "전부 다운로드(zip)"
- stored_path 깨진 경우 업로드루트/item_id/파일명 으로 폴백 탐색
- X-Attachment-Stats 헤더(total/added/missing)로 빈 zip 원인 진단
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- /expense/settings 및 분류 CRUD 가드 관리자 → 승인자(expense_approver|admin)
- index 설정 버튼 is_approver 조건으로 노출
- 미사용 _require_admin 헬퍼 제거
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- CategoryStore: 분류 항목 JSON 저장소(DATA_DIR/expense_categories.json)
- 관리자 설정 페이지(/expense/settings) + 분류 CRUD API
- _normalize 분류 고정목록 검증 제거 — 추가 분류 즉시 등록 폼/집계 반영
- index/reports 분류를 동적 목록으로 교체
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- ItemcodeReader.last_error 추가, _run 실패 시 logger.exception + 메시지 보존
- /api/products/all 응답에 error/count 추가
- products 화면: 결과 0 일 때 조회오류/사유 표시 (그냥 '결과 없음' 대신)
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>