feat(malaysia): 재고조사 랙에 Side B 아래 Ground(G1~G6) 6칸 추가

Side B 다음에 Ground 영역을 추가하고 단일 파렛트 6칸(G1~G6)을
한 줄로 배치. rack_cell_codes 검증 목록과 rack_layout 렌더 구조에
반영. 면 제목을 side.label 로 바꿔 A/B는 'Side A/B', Ground는
'Ground'로 표기. 입력/이동 저장 검증 모두 G1~G6 허용.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-17 14:23:40 +09:00
parent a683c38b76
commit fa396bd237
3 changed files with 15 additions and 5 deletions
+13 -3
View File
@@ -34,17 +34,21 @@ RACK_SIDES: tuple[str, ...] = ("A", "B")
RACK_ROWS: tuple[int, ...] = (3, 2, 1)
RACK_COLS: tuple[int, ...] = (1, 2, 3)
RACK_SUBS: tuple[int, ...] = (1, 2)
# Side B 아래 바닥(Ground) 파렛트 6칸. 코드: 'G1' ~ 'G6'.
RACK_GROUND: tuple[str, ...] = ("G1", "G2", "G3", "G4", "G5", "G6")
def rack_cell_codes() -> list[str]:
"""모든 랙 칸 코드 목록(검증용). 예: 'A3-1-1' ... 'B1-3-2'."""
return [
"""모든 랙 칸 코드 목록(검증용). 예: 'A3-1-1' ... 'B1-3-2', 'G1'~'G6'."""
codes = [
f"{side}{row}-{col}-{sub}"
for side in RACK_SIDES
for row in RACK_ROWS
for col in RACK_COLS
for sub in RACK_SUBS
]
codes.extend(RACK_GROUND)
return codes
def rack_layout() -> list[dict[str, Any]]:
@@ -61,7 +65,13 @@ def rack_layout() -> list[dict[str, Any]]:
for col in RACK_COLS
]
rows.append({"row": row, "cols": cols})
out.append({"side": side, "rows": rows})
out.append({"side": side, "label": f"Side {side}", "rows": rows})
# Side B 아래 Ground: 6칸(G1~G6)을 한 줄에. 각 칸은 분할 없는 단일 파렛트.
out.append({
"side": "Ground",
"label": "Ground",
"rows": [{"row": 0, "cols": [[code] for code in RACK_GROUND]}],
})
return out
@@ -153,7 +153,7 @@
<div class="rv-board" id="rv-board" style="margin-top:10px;">
{% for side in rack_layout %}
<div class="rv-side">
<h3>Side {{ side.side }}</h3>
<h3>{{ side.label }}</h3>
{% for row in side.rows %}
<div class="rv-row">
{% for col in row.cols %}
@@ -124,7 +124,7 @@
<div class="rack-board" style="margin-top:10px;">
{% for side in rack_layout %}
<div class="rack-side">
<h3>Side {{ side.side }}</h3>
<h3>{{ side.label }}</h3>
{% for row in side.rows %}
<div class="rack-row">
{% for col in row.cols %}