Files
Aislo/resources/tester/spreadsheet/test_spreadsheet_saved_values.py
T
eomsangdonandClaude Opus 5.5 2a3051fbca feat(M02): 마스터 구조물집계표 초기화 · 시험 견본화(PLAN 26-5a)
- 마스터 층 구조물 항목 51개 지움 — 나무 지우기(tree.apply delete) → 집계표 저장(store.write) 한 줄기 · 집계표 구조물 열 · SS 장부 줄 · structure/area/material 파일 153개 · 남김 = no · sta · 비고 열 · 변수 · 쪽줄 · 합계줄 · 바인딩규칙 · 자재조합 · 구조물옵션표시 · drawing · M01 · 회사 · 개인 층 · 프로젝트 복사본 · 지운 열의 열너비만 뺌
- 키 · 번호 다시 안 씀 — 장부 다음 52(새 항목 SS000052) · 지운번호 51개 기록(새 번호는 SD-000001 모양이라 옛 8자리와 안 겹침)
- 지우기 전 사본 tmp/마스터_집계표_초기화전_0930/(git 밖 · 156 파일 = 지우기 전과 같음)
- 시험 안 견본 fixtures/m02_master_sample(옛 집계표 · 장부 · 자재조합 · rv · c4 · pp_len · ms 세 파일 · 도면 줄임) + helper_m02_master_sample — 실제 마스터를 읽던 시험 일곱(table_fill · template_layers · structures_summary_snapshot · item_copy_complete · m02_tree · m02_item_inputs · spreadsheet_saved_values)을 견본으로 · M01 쓰는 곳 찾기(users_of) 시험은 이미 임시 표(combo_inputs)라 그대로
- 새 시험 test_m02_empty_master — 빈 마스터에서 항목 0 · 빈 나무 · 첫 화면 길 · 새 폴더 · 새 항목(SS000052 · SD-000001) · 지우기 · 고르기 모달 마스터 0 · 프로젝트 복사본 calc 그대로 · 원본없음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-09-30 09:41:04 +09:00

49 lines
1.9 KiB
Python

"""저장 뒤 식 · 값 유지 — M02 면적산출 · 재료산출 저장본을 서버 엔진으로 다시 풀면 저장된 `계산값` 과 같음.
시험 안 견본 저장본(`fixtures/m02_master_sample` · PLAN 26-5a)을 읽기만 함.
저장 때 서버가 적은 값과 지금 엔진 풀이가 어긋나면 화면을 다시 열 때
값이 달라 보임.
"""
import json
import shutil
import pytest
from common_util import common_util_spreadsheet as spreadsheet
from resources.tester.helper_m02_master_sample import SAMPLE as FOLDER
pytestmark = pytest.mark.skipif(shutil.which("node") is None, reason="node 가 없음")
def _books() -> list[tuple[str, dict]]:
out = []
for kind in ("area", "material"):
for path in sorted((FOLDER / kind).glob("[!.]*.json")):
book = json.loads(path.read_text(encoding="utf-8"))
if isinstance(book, dict) and book.get("시트"):
out.append((f"{kind}/{path.stem}", book))
return out
def test_저장본_서버_재계산_같음():
books = _books()
assert any("계산값" in b for _, b in books), "계산값 있는 저장본이 없음"
fresh = spreadsheet.recalc_workbooks([b for _, b in books])
diffs = []
for (name, book), values in zip(books, fresh):
if "계산값" not in book:
continue # 옛 저장본 — 풀리기만 하면 됨
saved = book["계산값"]
for sheet, cells in values.items():
for addr, v in cells.items():
if saved.get(sheet, {}).get(addr) != v:
diffs.append(
f"{name} {sheet}!{addr}: 저장 {saved.get(sheet, {}).get(addr)} · 지금 {v}"
)
for sheet, cells in saved.items():
for addr in cells:
if addr not in values.get(sheet, {}):
diffs.append(f"{name} {sheet}!{addr}: 저장에만 있음")
assert not diffs, "\n".join(diffs[:30])