Files
Aislo/resources/tester/test_779_2_hopyo_marks.py
eomsangdonandClaude Opus 5.5 c5067aa2b6 feat(809-1a): 일위대가 불러오기 = 경쟁사 로직 인정 · 요소만 연결 · [수정] 모달 = 일위대가 컨테이너 부품 · 기초 판정 걷음
- [수정] 모달 = Labor_Table(읽기 · 덧칸 표지 · 엑셀 금액) · 줄 = 로직(단가산출 · 일위대가) / 요소(연결됨 · 후보 · 못 이음) · 단가산출 줄 = 가져온 식 SK 수식 탭 모달(Labor_SkEdit) · 서버 hopyo-view(M02_Hopyo_View)
- 엑셀 보기 목록 · 칠 = 줄 표지(View.listing) · 단가산출 탭 = 블록 목록 + [가져온 식으로 열기] · [내 단가산출로]
- 걷음(요구 703): 판정 체계 785(Judge · Solve · Bind · San_Basis 다섯 · Make.Move · Row 1차 판정 · 화면 Check · CheckRows · Rows · Block · JudgeApi · Picks · Judge.css) · [우리 기초로 바꾸기](to-base) · 근거 기초 제안 · Clause 기초 판정
- 시험 지움: 642_2(Bind · Solve) · 642_3(Row 1차 판정) · 642_5(옮기기 Move) · 642_6(판정 화면) · 786_2(옛 [수정] 모달) · 793_3a(근거 → 기초 제안) — 모두 걷은 기초 판정 길 몫
- 시험 고침: 642_1 · 794_2a2 · 794_2b(근거 제안 부분만 뺌) · 793_2 · 793_3b(기초 바꾸기 기대 → 없음) · 627 · 779_2 · 785_4 · 807_1 · m02_hopyo_excel · grid · stmate(judge 길 → view 길)
- 새 시험 test_809_1_import_labor(기초 길 0 · 표지 1,350 줄 · 가져온 식 SK · 모달 = Labor_Table · 금액 = 엑셀)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 19:17:58 +09:00

59 lines
2.7 KiB
Python

"""779-2 불러오기 엑셀 하이라이트 재료 — 목록 `줄상태` 수 = 줄 수 · 상태 = 줄 표지(809-1 · `View.listing`) ·
`hopyo-marks` 길 읽기만(층 폴더 파일 변화 0) · 블록 판정 = 불리는 블록 「가져온 식」 · 안 불림 None · SK = 만든 것."""
import hashlib
from M02_MasterTemplete import M02_Template_Layers as layers
from resources.tester.test_m02_hopyo_excel import NORTH, URL, _post, client # noqa: F401
# ruff: noqa: F811
KEY = "HP-000001"
def _tree(root) -> dict[str, str]:
return {
str(p.relative_to(root)): hashlib.sha256(p.read_bytes()).hexdigest()
for p in sorted(root.rglob("*"))
if p.is_file()
}
def _ready(client):
res = _post(client, data=NORTH.read_bytes(), name=NORTH.name)
assert res.status_code == 200 and res.json()["키"] == KEY
return layers.personal_dir(7, 42)
def test_줄상태_수_줄_수_표지_같음(client):
_ready(client)
base = URL.format("personal")
whole = client.get(f"{base}/{KEY}").json()
assert len(whole["호표"]) == 68 and whole["셈"]["끝"] is True # 뒤 셈 없음(809-1)
for h in whole["호표"][:4]:
one = client.get(f"{base}-view/{KEY}/{h['번']}").json()["줄"]
assert len(h["줄상태"]) == len(one) == h["맞춤"][1], h["번"]
assert [x[1] for x in h["줄상태"]] == [r["표지"] for r in one]
assert [x[2] for x in h["줄상태"]] == [
r["갈래"] == "로직" or r["표지"] == "연결됨" for r in one
]
assert h["맞춤"][0] == sum(x[2] for x in h["줄상태"]) and h["만든"] is None
assert [x[0] for x in h["줄상태"]] == list(range(len(h["줄상태"])))
assert whole["맞춤"][1] == 415
def test_marks_읽기만_가져온_식_판정(client):
folder = _ready(client)
base = URL.format("personal")
before = _tree(folder)
got = client.get(f"{base}-marks/{KEY}")
assert got.status_code == 200, got.text
rows = got.json()["블록"]
assert _tree(folder) == before # 읽기만 — 파일 변화 0
assert rows and [r["번"] for r in rows] == sorted(r["번"] for r in rows)
assert all(r["판정"] == ("가져온 식" if r["부름"] else None) for r in rows) # 경쟁사 로직 인정
assert all("고를수" not in r and r["이름"] for r in rows)
assert all(r["SK"] is None and r["갈래"] is None and r["못옮김"] == [] for r in rows)
# 778-5 D-6 — 엑셀 셈 어긋남 덧칸(780-1 모든 블록) · 2 · 33 = 엑셀 합이 줄 뺌 · 4 … 78 = 일위대가 밖
assert {r["번"] for r in rows if r["어긋남"]} == {2, 33, 64, 95, 4, 44, 48, 77, 78}
assert client.get(f"{base}-marks/HP-999999").status_code in (404, 400)