feat(736-1): 일위대가 [항목 추가] 하나 · 찾아 넣기 창 하나로 — 자재 추가 단추 걷음 · 엑셀 연결 · 별칭 장부 · 견본
- 일위대가표 · 구조물 조합 상세 [로직 추가] → [항목 추가] · [자재 추가] 걷음 · 재료 고름 = 자재 목록(로직 안 자재 · 이미 있는 자재 막힘 그대로) - 찾아 넣기 창 탭 막기(kinds) · 찾기 칸 미리 넣기(query) · 재료 길(material) - 불러오기 엑셀 연결 = 「다른 항목 검색…」 한 창(기초 · 재료) · 별칭 장부 = 기초 · 재료 둘 - 부품 모음 단추 견본에 갈래 색(옵션값 · 요소 연결) 칸 - 낡은 시험 고침: 175(머리 단추) · 721(부르는 곳) · 자재 개인(상세 단추) · 호표 화면(장부 단추 글) · 헬퍼 넷(Find_Pick 대역) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,7 @@ const STUBS = { "@config/config_frontend": { API_BASE_URL: "/api", ROUTES: {} }
|
||||
const STUB_FILES = [
|
||||
"M02_MasterTemplete_Labor_Pick",
|
||||
"M02_Material_Pick",
|
||||
"M02_MasterTemplete_Find_Pick",
|
||||
"M02_MasterTemplete_Labor_Api",
|
||||
"M02_MasterTemplete_Labor_Input",
|
||||
"M01_MasterData_UI_LogicLab_Source",
|
||||
|
||||
@@ -11,6 +11,7 @@ const STUBS = { "@config/config_frontend": { API_BASE_URL: "/api" } };
|
||||
const STUB_FILES = [
|
||||
"M02_MasterTemplete_Labor_Pick",
|
||||
"M02_Material_Pick",
|
||||
"M02_MasterTemplete_Find_Pick",
|
||||
"M02_MasterTemplete_Labor_Api",
|
||||
"M02_MasterTemplete_Labor_Input",
|
||||
"M01_MasterData_UI_LogicLab_Source",
|
||||
|
||||
@@ -12,6 +12,7 @@ const STUBS = { "@config/config_frontend": { API_BASE_URL: "/api" } };
|
||||
const STUB_FILES = [
|
||||
"M02_MasterTemplete_Labor_Pick",
|
||||
"M02_Material_Pick",
|
||||
"M02_MasterTemplete_Find_Pick",
|
||||
"M02_MasterTemplete_Labor_Api",
|
||||
"M02_MasterTemplete_Labor_Input",
|
||||
"M01_MasterData_UI_LogicLab_Source",
|
||||
|
||||
@@ -12,6 +12,7 @@ const STUBS = { "@config/config_frontend": { API_BASE_URL: "/api" } };
|
||||
const STUB_FILES = [
|
||||
"M02_MasterTemplete_Labor_Pick",
|
||||
"M02_Material_Pick",
|
||||
"M02_MasterTemplete_Find_Pick",
|
||||
"M02_MasterTemplete_Labor_Api",
|
||||
"M02_MasterTemplete_Labor_Input",
|
||||
"M01_MasterData_UI_LogicLab_Source",
|
||||
|
||||
@@ -35,7 +35,7 @@ def _save(folder, doc):
|
||||
|
||||
|
||||
def test_화면_서고_모드도_자재목록_세_칸_자재_저장(world): # noqa: F811
|
||||
"""723-2 — 서고 = 일위대가표만(`Labor_Table`) · [자재 추가] 머리 · 세 칸 = 줄 모달(`Labor_RowModal`)."""
|
||||
"""723-2 — 서고 = 일위대가표만(`Labor_Table`) · [항목 추가] 머리(736-1 · 자재 추가 단추 걷음) · 세 칸 = 줄 모달(`Labor_RowModal`)."""
|
||||
read = lambda name: open(os.path.join(SRC, name), encoding="utf-8").read() # noqa: E731
|
||||
detail, lib = (
|
||||
read("M02_MasterTemplete_Labor_Detail.ts"),
|
||||
@@ -43,7 +43,7 @@ def test_화면_서고_모드도_자재목록_세_칸_자재_저장(world): # n
|
||||
)
|
||||
modal = read("M02_MasterTemplete_Labor_RowModal.ts")
|
||||
assert 'if (opt.mode === "precombo") return mountLaborTable(host, doc, opt);' in detail
|
||||
assert 'className: "ui-btn-group", children: [addLogic, addMat]' in lib
|
||||
assert 'className: "ui-btn-group", children: [addLogic]' in lib and "addMat" not in lib
|
||||
assert "setLogicMark(row, at, key, v);" in modal and "setMark(o.mat, key, v);" in modal
|
||||
assert "delete out.자재" not in lib and "delete out.열" in lib
|
||||
|
||||
|
||||
@@ -43,15 +43,16 @@ def test_721_2_부르는_곳_셋만_새_창():
|
||||
assert "logicOnly" not in find
|
||||
assert "openFindPicker({" in _text(M02 / "M02_MasterTemplete_Sangeun_Pick.ts")
|
||||
assert "sangeun: true," in _text(M02 / "M02_MasterTemplete_Hopyo_Pick.ts") # 일위대가
|
||||
# 옛 창 그대로 — B09 · 불러오기는 sangeun 없이 부름
|
||||
# 옛 창 그대로 — B09 단가 연결은 sangeun 없이 부름(736-1 불러오기 · 별칭 장부는 찾아 넣기 창으로)
|
||||
for f in (
|
||||
ROOT / "B09_Estimation" / "B09_Estimation_UI_Link.ts",
|
||||
ROOT / "B09_Estimation" / "B09_Estimation_UI_Tabs_Bill_Link.ts",
|
||||
M02 / "M02_MasterTemplete_Hopyo_Choose.ts",
|
||||
M02 / "M02_MasterTemplete_Hopyo_Ledger.ts",
|
||||
):
|
||||
text = _text(f)
|
||||
assert "openLogicPicker(" in text and "sangeun:" not in text, f.name
|
||||
for f in ("Hopyo_Choose", "Hopyo_Ledger"):
|
||||
text = _text(M02 / f"M02_MasterTemplete_{f}.ts")
|
||||
assert "openFindPicker({" in text and "openLogicPicker" not in text.split("*/", 1)[1], f
|
||||
# 탭 셋 · 찾기 칸 하나 · 거름 고르기 없음 · M01 = 로직 · 인력 · 재료(기계 · 호표 없음)
|
||||
for key in ('key: "m01"', 'key: "sk"', 'key: "pre"'):
|
||||
assert key in find
|
||||
@@ -105,3 +106,27 @@ def test_721_2_인력_재료_서버가_받아_셈():
|
||||
assert sk["노무비"] == pytest.approx(wage) and sk["재료비"] > 0
|
||||
assert got["반영합"]["계"] == pytest.approx(sk["계"])
|
||||
assert [ln["이은"] for ln in got["줄"]] == [["노무비"], ["재료비"]]
|
||||
|
||||
|
||||
def test_736_1_항목_추가_찾기_창_하나():
|
||||
"""736-1 — [로직 추가] → [항목 추가] · [자재 추가] 걷음 · 재료 = 자재 목록 · 자리마다 탭 막음."""
|
||||
locale = _text(ROOT / "ui_template" / "ui_template_locale_m2.ts")
|
||||
assert "[로직 추가]" not in locale and "기초는 [항목 추가]로" in locale
|
||||
assert 'AddLogic: ["항목 추가", "Add item"]' in _text(M02 / "M02_MasterTemplete_Labor_Text.ts")
|
||||
table = _text(M02 / "M02_MasterTemplete_Labor_Table.ts")
|
||||
detail = _text(M02 / "M02_MasterTemplete_Labor_Detail.ts")
|
||||
for text in (table, detail):
|
||||
assert "addMaterialButton" not in text and "addMat" not in text
|
||||
assert "material: (m: {" in text # 재료 고름 → 「자재 목록」
|
||||
assert '"Labor_InLogicMat"' in text and '"Labor_AlreadyMat"' in text # 중복 검사 그대로
|
||||
pick = _text(M02 / "M02_MasterTemplete_Labor_Pick.ts")
|
||||
assert "material: lib.material," in pick
|
||||
find = _text(M02 / "M02_MasterTemplete_Find_Pick.ts")
|
||||
assert 'kind === "재료" && opt.material ? opt.material : opt.element' in find
|
||||
assert 'export type FindKind = "logic" | "labor" | "material" | "sk" | "pre";' in find
|
||||
# 불러오기 엑셀 연결 = 기초(자재 아닌 줄) · 재료(자재 · 재료비 줄) · 별칭 장부 = 기초 · 재료 둘
|
||||
choose = _text(M02 / "M02_MasterTemplete_Hopyo_Choose.ts")
|
||||
assert "다른 로직 검색" not in choose and "다른 자재 검색" not in choose
|
||||
assert 'material ? [] : (["logic"] as const)' in choose
|
||||
assert 'canPickMaterial(line) ? (["material"] as const) : []' in choose
|
||||
assert 'kinds: ["logic", "material"],' in _text(M02 / "M02_MasterTemplete_Hopyo_Ledger.ts")
|
||||
|
||||
@@ -517,7 +517,7 @@ def test_명사형_단추와_별칭_장부_풀이_359():
|
||||
assert hint in ledger and "note(`${LEDGER_HINT}" in ledger
|
||||
side = _text("M02_MasterTemplete_Hopyo_Side.ts")
|
||||
assert "title: LEDGER_HINT" in side
|
||||
for label in ('"변경 취소"', '"로직 추가"', '"내 층 복사"', '"삭제"'):
|
||||
for label in ('"변경 취소"', '"항목 추가"', '"내 층 복사"', '"삭제"'):
|
||||
assert f"label: {label}" in ledger, label
|
||||
assert '"우리에 없음": "로직없음"' in ledger and '"안 씀": "사용안함"' in ledger
|
||||
mine = ("Hopyo_Side", "Hopyo_Sheet", "Hopyo_Check", "Hopyo_CheckRows", "Hopyo_Ledger")
|
||||
|
||||
@@ -228,4 +228,4 @@ def test_화면_신규_자재는_머리_단추_개인_층만():
|
||||
"`/layers/personal/materials" in pick and "키:" not in pick.split("JSON.stringify")[1][:200]
|
||||
)
|
||||
detail = open(os.path.join(here, "M02_MasterTemplete_Labor_Detail.ts"), encoding="utf-8").read()
|
||||
assert 'opt.layer === "personal" ? { owner: library.owner } : undefined' in detail
|
||||
assert "addMaterialButton" not in detail # 736-1 [자재 추가] 단추 걷음 — 재료는 찾아 넣기 창
|
||||
|
||||
Reference in New Issue
Block a user