fix(M02 실무자료): 358-3 단계 대조 보임 — 장부 짝보다 숫자 판정 맞음 먼저 · 「장부와 다름」 · 목록 수 = 확인 창 수 · 연결할 · 연결된 두 칸 · 목록 열 때 뒤 셈
- 장부 짝(정확 열쇠)이 숫자 판정 맞음 1위를 안 담으면 판정 먼저 + 꼬리표 「장부와 다름」 · 짝은 후보 끝 덤(장부 줄 안 지움) - 체크 제안 한 규칙(_check) — 목록(_brief) · 확인 창(_numeric) 같음 · 응답 연결할(% · 노임 · 뺌 밖) · 연결된 - 목록 길(GET hopyo)이 지금 판 맞춤셈 없는 파일을 뒤 셈 예약 - 실물 북부청(사용자 장부 포함 · 읽기만) 체크 제안 113 → 204 / 415 · 장부와 다름 24줄 · 자재 체크 94 / 142 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XWh5wNNycMkbwMpACz1rte
This commit is contained in:
@@ -159,9 +159,10 @@ def test_별칭_체크_규칙(client):
|
||||
assert got["상태"] == "별칭" and got["체크"] is True and got["대상"][0]["출처"] == {}
|
||||
assert got["별칭"]["층"] == "personal" and not got["별칭"]["근거다름"]
|
||||
first = _hopyo(client, 1)
|
||||
other = first["레미콘타설(장비사용)"] # 숫자 판정 맞음 = GC000198 → 체크 안 함
|
||||
assert other["상태"] == "별칭" and other["체크"] is False
|
||||
assert "숫자 판정 맞음 = GC000198" in other["꼬리표"]
|
||||
other = first["레미콘타설(장비사용)"] # 숫자 판정 맞음 = GC000198 ≠ 장부 짝 → 판정 먼저(358-3)
|
||||
assert other["상태"] == "맞음" and other["체크"] is True and "별칭" not in other
|
||||
assert other["대상"][0]["로직"] == "GC000198" and "장부와 다름" in other["꼬리표"]
|
||||
assert "GC000199" in {c["로직"] for c in other["후보"]} # 장부 짝 = 후보 끝 덤(안 지움)
|
||||
loose = first["합판거푸집"] # 규격 4회 ↔ 장부 6회 — 느슨 열쇠 = 꼬리표 · 후보 덤만(229-4 ①)
|
||||
assert loose["상태"] == "맞음" and "별칭" not in loose and "별칭 · 규격 다름" in loose["꼬리표"]
|
||||
assert all("별칭" not in t["출처"].values() for t in loose["대상"])
|
||||
@@ -327,3 +328,31 @@ def test_북부청_자재_별도계상_맞음_늚(client):
|
||||
assert pipe["상태"] == "후보" and "139.8" in pipe["후보"][0]["규격"]
|
||||
mortar = seen[("드라이모르터", "조적용레미탈")] # 이름 오타 · 규격 같음 = 1위 후보
|
||||
assert mortar["후보"][0]["자재"] == "MT004251"
|
||||
|
||||
|
||||
# ── 단계 대조 보임(358-3) — 목록 수 = 확인 창 수 · 연결 두 칸 · 목록 열 때 뒤 셈 ─────────────
|
||||
def test_목록_수_확인_창_수_한_규칙(client):
|
||||
_ready(client)
|
||||
whole = client.get(f"{URL.format('personal')}/HP-000001").json()
|
||||
need = done = 0
|
||||
for brief in whole["호표"]:
|
||||
one = client.get(f"{URL.format('personal')}/HP-000001/{brief['번']}").json()["호표"]
|
||||
lines = one["줄"]
|
||||
assert brief["맞춤"] == [sum(x["맞춤"]["체크"] for x in lines), len(lines)], brief["번"]
|
||||
inside = [x for x in lines if x["맞춤"]["상태"] not in ("%", "노임", "뺌")]
|
||||
assert (brief["연결할"], brief["연결된"]) == (one["연결할"], one["연결된"])
|
||||
assert one["연결할"] == len(inside) and one["연결된"] == sum(
|
||||
x["맞춤"]["체크"] for x in inside
|
||||
)
|
||||
need, done = need + one["연결할"], done + one["연결된"]
|
||||
assert (whole["연결할"], whole["연결된"]) == (need, done) and 0 < done <= need < 415
|
||||
pct = next(h for h in whole["호표"] if h["번"] == 46) # 잡재료비 % 줄 = 셈 밖
|
||||
assert pct["연결할"] < pct["맞춤"][1]
|
||||
|
||||
|
||||
def test_목록_열_때_뒤_셈_예약(client, monkeypatch):
|
||||
assert _post(client).status_code == 200
|
||||
asked = []
|
||||
monkeypatch.setattr(fit, "ensure", lambda folder, key: asked.append(key) or {"끝": False})
|
||||
rows = client.get(URL.format("personal")).json()["줄"]
|
||||
assert [r["키"] for r in rows] == asked == ["HP-000001"]
|
||||
|
||||
Reference in New Issue
Block a user