fix(cupang): 센터 분배 드롭 동작·수량 대화상자·센터 선택
드래그가 먹지 않던 원인: 드롭 대상이 점선 상자(.cpg-dist-drop) 안쪽으로 한정돼 센터 카드 여백에 놓으면 dragover 에서 preventDefault 가 걸리지 않았다 → 드롭 대상을 센터 패널 전체로 넓혔다. 카드를 클릭해도 같은 대화상자가 열리는 대체 경로도 추가. - ③ 은 처음에 비어 있고, 셀렉트에서 고른 센터만 패널로 추가된다(✕ 로 제거, 제거하면 담긴 박스는 잔여로 복귀) - 드롭/클릭 시 대화상자에서 박스 수량을 입력한다. "잔여 전부 담기" 버튼으로 남은 수량을 한 번에 담을 수 있고, Enter 로 확정 / Esc 로 취소 - 센터에 담긴 줄과 센터 합계에 박스 수와 상품 수(박스×입수량)를 함께 표시 - 요약 카드에도 잔여 개수(잔여 박스 × 입수량)를 표시 tests/js: jsdom 으로 계산→드래그→대화상자→수량 수정→제거까지 36개 항목을 검증하는 UI 테스트 추가(README 에 실행법). 전체 통과 확인. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
"""box_calc.html 을 테스트용 HTML 로 렌더한다 (erp_base.html 은 최소 스텁으로 대체)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import io
|
||||
import os
|
||||
|
||||
import jinja2
|
||||
|
||||
ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
OUT_DIR = os.path.join(ROOT, "tests", "js", ".out")
|
||||
|
||||
BASE_STUB = "{% block head_extra %}{% endblock %}<body>{% block content %}{% endblock %}</body>"
|
||||
|
||||
BOX_RULES = [
|
||||
{"product_code": "MS-1001", "product_name_snapshot": "미라네 1호 세트",
|
||||
"box_name": "쿠팡박스", "units_per_box": 8},
|
||||
{"product_code": "MS-1004", "product_name_snapshot": "미라네 4호 세트",
|
||||
"box_name": "쿠팡박스", "units_per_box": 8},
|
||||
]
|
||||
CENTERS = [{"id": 1, "name": "대구3"}, {"id": 2, "name": "인천32"}]
|
||||
|
||||
|
||||
def main() -> None:
|
||||
env = jinja2.Environment(
|
||||
loader=jinja2.ChoiceLoader([
|
||||
jinja2.DictLoader({"erp_base.html": BASE_STUB}),
|
||||
jinja2.FileSystemLoader(os.path.join(ROOT, "app", "modules", "cupang", "templates")),
|
||||
])
|
||||
)
|
||||
html = env.get_template("cupang/box_calc.html").render(box_rules=BOX_RULES, centers=CENTERS)
|
||||
os.makedirs(OUT_DIR, exist_ok=True)
|
||||
path = os.path.join(OUT_DIR, "box_calc_render.html")
|
||||
io.open(path, "w", encoding="utf-8", newline="\n").write(html)
|
||||
print("rendered:", path)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user