feat(malaysia): 뚜껑(MD-) 랙 위치확인 배치 허용, 재고는 미반영

뚜껑(MD-0000~0005)을 재고조사 랙 입력 드롭다운에 노출해 창고 랙
어디에 있는지 위치만 기록할 수 있게 함. 재고에는 반영하지 않음.

- store.LID_ITEMS / lid_name_map 추가
- validate_rack_code 신설(개별/세트/뚜껑 허용) → replace_rack·
  reposition_rack 검증에 적용. 직접 라인 입력(validate_stocktake_code)은
  여전히 MD- 차단해 재고 오염 방지.
- aggregate_rack 에서 MD- 집계 제외 → daily_stocktake_line 미생성.
- 랙 드롭다운 목록에 LID_ITEMS 추가, 랙 보기 이름맵에 뚜껑 이름 병합.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-17 14:40:17 +09:00
parent fa396bd237
commit 55a2fc8793
4 changed files with 42 additions and 6 deletions
+4 -2
View File
@@ -190,7 +190,8 @@ async def rack_view(request: Request) -> HTMLResponse:
# 랙보기는 '랙을 가장 최근에 저장한' 조사 기준(조사 날짜 아님).
latest = st.latest_rack_stocktake(warehouse_code=wh)
rack_by_cell: dict[str, list[dict[str, Any]]] = {}
names = st.item_name_map()
# 뚜껑(MD-)은 malaysia_items 에 없으므로 이름맵에 병합해 코드 대신 이름 표시.
names = {**st.item_name_map(), **store.lid_name_map()}
if latest:
for e in st.list_rack_entries(stocktake_id=latest["id"]):
e["item_name"] = names.get(e["sku_code"], e["sku_code"])
@@ -547,7 +548,8 @@ async def stocktake_detail(request: Request, stocktake_id: int) -> HTMLResponse:
"stocktake": head,
"rack_layout": store.rack_layout(),
"rack_by_cell": rack_by_cell,
"rack_items": st.list_items(),
# 낱개·세트 + 뚜껑(MD-, 위치확인용). 뚜껑은 재고 집계엔 빠진다.
"rack_items": st.list_items() + list(store.LID_ITEMS),
"entered": entered,
"result_rows": computed["rows"],
"missing_bom": computed["missing_bom"],