From 7881ed9343b35be8c2f25877a0d5c296774379c8 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 12 Nov 2026 20:18:00 +0900 Subject: [PATCH] =?UTF-8?q?perf(826-2):=20=EC=9E=90=EC=9E=AC=20=ED=95=9C?= =?UTF-8?q?=20=EC=A4=84=20=EC=A0=80=EC=9E=A5=2015=20=EC=B4=88=20=E2=86=92?= =?UTF-8?q?=201=20=EC=B4=88=20=C2=B7=20=EA=B8=B0=EA=B3=84=20=EC=9D=BD?= =?UTF-8?q?=EA=B8=B0=20=ED=95=9C=20=EB=B2=88=EC=97=90=20=ED=92=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Store_Make.save 새 키 찾기 = 3만 키 목록 훑기(제곱) → 묶음 - 기계 상세 = 판만 읽음(표 두 번 풀기 걷음) · 기계 폴더 새 사본 = 줄 글을 이어 한 번에 풂(표 열기 옛 한 파일과 비슷) Co-Authored-By: Claude Opus 5.5 --- M01_MasterData/M01_MasterData_Machine.py | 2 +- M01_MasterData/M01_MasterData_Store_Make.py | 2 +- resources/master_data/scripts/master_machine_files.py | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/M01_MasterData/M01_MasterData_Machine.py b/M01_MasterData/M01_MasterData_Machine.py index 6de6ac86b..4016d920b 100644 --- a/M01_MasterData/M01_MasterData_Machine.py +++ b/M01_MasterData/M01_MasterData_Machine.py @@ -249,7 +249,7 @@ def row(key: str) -> dict: r = next((x for x in _rows() if x.get("키") == key), None) if r is None: raise store.StoreError(404, f"없는 기계 「{key}」") - return {"version": store.read(FILE)[1], "row": r} + return {"version": store.version(FILE), "row": r} # 판만(826-2) # ── 저장 전 손질(`Store_Make.save` 가 부름) ────────────────────────── diff --git a/M01_MasterData/M01_MasterData_Store_Make.py b/M01_MasterData/M01_MasterData_Store_Make.py index 45e06762f..86b3eb86a 100644 --- a/M01_MasterData/M01_MasterData_Store_Make.py +++ b/M01_MasterData/M01_MasterData_Store_Make.py @@ -307,7 +307,7 @@ def save(batch: list[dict], confirmed: bool = False) -> dict: _make_file() fresh = True part["version"] = part.get("version") or store.read(OWN)[1] - before = {p["file"]: _file_keys(p["file"]) for p in batch} + before = {p["file"]: set(_file_keys(p["file"])) for p in batch} # 자재 3만 키 — 목록 찾기 금지 try: files = store.save(batch) except store.StoreError: diff --git a/resources/master_data/scripts/master_machine_files.py b/resources/master_data/scripts/master_machine_files.py index c133b8abe..0325d085c 100644 --- a/resources/master_data/scripts/master_machine_files.py +++ b/resources/master_data/scripts/master_machine_files.py @@ -60,15 +60,17 @@ def _read(entry: os.DirEntry) -> tuple[bytes, object]: def _parts(folder: Path, shared: bool, parse=_parse) -> tuple[list[bytes], dict, list]: - raws, head, rows = [], {}, [] + raws, head, rows, fresh = [], {}, [], [] for entry in _entries(folder): raw, data = _read(entry) - data = data if shared else parse(raw) raws.append(entry.name.encode() + b"\0" + raw) if entry.name == HEAD: - head = data + head = data if shared else parse(raw) elif not entry.name.startswith("_"): rows.append(data) + fresh.append(raw) + if not shared: # 새 사본 — 한 번에 풂(줄마다 풀기보다 빠름) + rows = parse(b"[" + b",".join(fresh) + b"]") return raws, head, rows