change(cupang): 화면 문구 "박스" → "상자" 통일
템플릿·라우터 메시지·페이지 제목과 seed/DDL 기본값(쿠팡박스→쿠팡상자)까지 표기를 맞췄다. URL(/box-calc)과 코드 식별자(box_name 등)는 그대로. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+10
-10
@@ -8,8 +8,8 @@
|
||||
앱 계정(cupang_app)은 SELECT/INSERT/UPDATE/DELETE 권한만 받는다.
|
||||
- 연결 풀은 lazy open — 부팅 시 DB 가 잠시 끊겨도 컨테이너가 죽지 않게.
|
||||
|
||||
박스 수 계산은 서버에서 `store.compute_boxes` 로 재계산하여 저장한다.
|
||||
클라이언트가 보낸 박스 수는 신뢰하지 않는다.
|
||||
상자 수 계산은 서버에서 `store.compute_boxes` 로 재계산하여 저장한다.
|
||||
클라이언트가 보낸 상자 수는 신뢰하지 않는다.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -136,7 +136,7 @@ class CupangDBStore:
|
||||
return {"deleted": True, "deactivated": False}
|
||||
|
||||
# ════════════════════════════════════════════════════════════
|
||||
# 박스 입수량 규칙 (cupang_box_rules)
|
||||
# 상자 입수량 규칙 (cupang_box_rules)
|
||||
# ════════════════════════════════════════════════════════════
|
||||
def list_box_rules(self, *, include_inactive: bool = False) -> list[dict[str, Any]]:
|
||||
where = "" if include_inactive else "WHERE active = TRUE"
|
||||
@@ -153,7 +153,7 @@ class CupangDBStore:
|
||||
product_code: str,
|
||||
units_per_box: int,
|
||||
product_name_snapshot: str = "",
|
||||
box_name: str = "쿠팡박스",
|
||||
box_name: str = "쿠팡상자",
|
||||
memo: str = "",
|
||||
) -> dict[str, Any]:
|
||||
code = (product_code or "").strip()
|
||||
@@ -161,7 +161,7 @@ class CupangDBStore:
|
||||
raise ValueError("제품코드 필수")
|
||||
upb = int(units_per_box)
|
||||
if upb <= 0:
|
||||
raise ValueError("박스당 입수량은 1 이상이어야 합니다.")
|
||||
raise ValueError("상자당 입수량은 1 이상이어야 합니다.")
|
||||
with self._pool.connection() as conn:
|
||||
row = conn.execute(
|
||||
"""
|
||||
@@ -176,7 +176,7 @@ class CupangDBStore:
|
||||
active = TRUE
|
||||
RETURNING *
|
||||
""",
|
||||
(code, product_name_snapshot.strip(), (box_name or "쿠팡박스").strip(), upb, memo.strip()),
|
||||
(code, product_name_snapshot.strip(), (box_name or "쿠팡상자").strip(), upb, memo.strip()),
|
||||
).fetchone()
|
||||
return self._rule_serialize(row)
|
||||
|
||||
@@ -196,8 +196,8 @@ class CupangDBStore:
|
||||
raise KeyError(rule_id)
|
||||
|
||||
# ════════════════════════════════════════════════════════════
|
||||
# 박스 계산 임시 저장 (cupang_box_calc_drafts)
|
||||
# payload 는 화면 상태 스냅샷(JSONB). 박스 수 계산은 불러온 뒤
|
||||
# 상자 계산 임시 저장 (cupang_box_calc_drafts)
|
||||
# payload 는 화면 상태 스냅샷(JSONB). 상자 수 계산은 불러온 뒤
|
||||
# 서버에서 다시 하므로 여기 값은 신뢰 대상이 아니다.
|
||||
# ════════════════════════════════════════════════════════════
|
||||
def list_box_calc_drafts(self, *, limit: int = 50) -> list[dict[str, Any]]:
|
||||
@@ -348,7 +348,7 @@ class CupangDBStore:
|
||||
) -> dict[str, Any]:
|
||||
"""등록된 제품 수정(제품명/제품코드/쿠팡상품코드).
|
||||
|
||||
제품코드가 바뀌면 같은 코드로 연결돼 있던 박스 규칙(cupang_box_rules)의
|
||||
제품코드가 바뀌면 같은 코드로 연결돼 있던 상자 규칙(cupang_box_rules)의
|
||||
product_code 도 함께 옮긴다(출고 라인은 과거 기록이라 스냅샷 유지).
|
||||
"""
|
||||
name = (product_name or "").strip()
|
||||
@@ -694,7 +694,7 @@ class CupangDBStore:
|
||||
"worker": str(header.get("worker") or "").strip(),
|
||||
"status": status,
|
||||
"memo": str(header.get("memo") or "").strip(),
|
||||
# 확정 당시 박스 구성(제품별/혼합). 화면 표시 전용이라 형태만 검사한다.
|
||||
# 확정 당시 상자 구성(제품별/혼합). 화면 표시 전용이라 형태만 검사한다.
|
||||
"box_plan": header.get("box_plan") if isinstance(header.get("box_plan"), list) else [],
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user