feat(m01-easycalc): usesOf 회사 · 개인 층 조합까지 — M02 층 길 읽기만

- 내 층 /combos/all · 남의 회사 /layers/company/owners · 회사마다 사람 /layers/personal/owners → 층 조합 하나씩 읽어 담은 것만
- EasyUse.where(「회사 · 이름」 · 「개인 · 이름」) · 못 읽은 층은 「일부를 못 읽음」 한 줄
- 시험 — holding 견본(담은 것만 · 자리 글)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
This commit is contained in:
2026-10-01 09:49:18 +09:00
co-authored by Claude Opus 5.5
parent c7f12a0aad
commit a06863e2ec
2 changed files with 134 additions and 5 deletions
+28
View File
@@ -282,6 +282,34 @@ def test_기계_부름글이_서버_검사와_계산을_지남(client: TestClien
_call(client, "/api/m01/logic/delete", {"key": made["key"], "version": made["version"]})
# ── 회사 · 개인 층 조합 ────────────────────────────────────────────────
@pytest.mark.skipif(NO_NODE, reason="node 가 없음")
def test_층_조합_가운데_이_로직을_담은_것만_자리_글과_함께() -> None:
combos = [
{
"키": "UC3-000001",
"이름": "돌쌓기 한 벌",
"담은로직": [{"로직": "GX000001", "메모": None}],
},
{"키": "UC3-000002", "이름": "다른 것", "담은로직": [{"로직": "GX000002"}]},
{"키": "UC3-000003", "이름": "빈 것"},
{
"키": "UC3-000004",
"이름": "둘째 자리",
"담은로직": [{"로직": "GF000001"}, {"로직": "GX000001"}],
},
]
got = _node(
f"holding({json.dumps(combos, ensure_ascii=False)}, 'GX000001', 'company', '산림조합')"
)
assert got == [
{"kind": "combo", "where": "회사 · 산림조합", "key": "UC3-000001", "name": "돌쌓기 한 벌"},
{"kind": "combo", "where": "회사 · 산림조합", "key": "UC3-000004", "name": "둘째 자리"},
]
person = _node("holding([{키: 'UP15-000001', 담은로직: [{로직: 'K'}]}], 'K', 'personal', '나')")
assert person == [{"kind": "combo", "where": "개인 · 나", "key": "UP15-000001", "name": ""}]
# ── 쉬운 말 ─────────────────────────────────────────────────────────────
@pytest.mark.skipif(NO_NODE, reason="node 가 없음")
def test_plainError_상태와_검사글을_쉬운_말로() -> None: