fix(일위대가실무): 339 덧고침 4 — 우리 지문 build() 가 메모(표 · 표판)까지 갱신 · warm() 중복 갱신 줄 지움

- 빈 캐시 폴더에서 table() 이 None 을 먼저 메모하면 build() 뒤에도 ready() 거짓 · 맞춤 「맞음」 0 이던 흠
- 시험: 캐시 쓰기 읽기 준비 전 none 에 build 직후 ready() 참 · table() = build 결과 한 줄

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ji4nuyLVHcxrXWHTdb5nRD
This commit is contained in:
2026-10-16 06:26:09 +09:00
co-authored by Claude Opus 5.5
parent a03e9e139b
commit 94838450d8
2 changed files with 4 additions and 4 deletions
+3 -4
View File
@@ -326,6 +326,8 @@ def build(ver: str | None = None) -> list[dict]:
ver = ver or version()
table = [fingerprint(one["로직"], one["단위"]) for one in hopyo_match.targets()["로직"]]
atomic_write_json(path_of(ver), {"판": ver, "지문판": FP_VERSION, "표": table})
with _LOCK:
_STATE.update(표=table, 표판=ver)
return table
@@ -351,10 +353,7 @@ def warm(build_missing: bool = False) -> threading.Thread | None:
def work() -> None:
try:
if table() is None and build_missing:
ver = version()
got = build(ver)
with _LOCK:
_STATE.update(표=got, 표판=ver)
build(version())
except Exception: # noqa: BLE001 — 마스터가 깨져도 서버를 막지 않음(보기에서 「준비 중」)
pass
+1
View File
@@ -34,6 +34,7 @@ def test_캐시_쓰기_읽기_준비_전_none(cache):
built = ours.build()
assert [o["로직"] for o in built] == ["GC000198", "GC000211", "GC000268"]
assert ours.path_of().parent == cache and ours.path_of().is_file()
assert ours.ready() and ours.table() == built
ours._STATE.update(표판=None, 표=None)
assert [o["로직"] for o in ours.table()] == ["GC000198", "GC000211", "GC000268"]
assert master_hash() == before