- 자재단가대비표: 적용 칸을 calc+rule(기.가·유.물·견적), 값 없는 원천 칸은 blocked - 환율및기초자료: 공표·공시값 standard 와 사용자가 고른 유가 범위 input 을 가름 - 단가산출근거·산출기초: 모으는 표라 식을 비우고 source·등급만 채움 - 설계서 구성표·산출 조건 패널은 일부러 뺌(프로젝트 값이 아니거나 근거 한 줄과 중복) - 원가계산서 금액은 총원가·도급금액·총계 세 줄에만 칸 단위 final 을 심음 - 700줄을 넘어 Provenance / _Sources / _Common 셋으로 가름(공통 조각을 한쪽에 두면 불러들이기가 고리를 이룸) 사전 16장 92열, 등급 여덟이 모두 쓰임. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GrXDD23Dvt2sR7q3X6oekp
54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
"""B09 근거 사전이 **여러 장에서 같이 쓰는 조각** (PLAN 8-36 ④).
|
|
|
|
왜 따로 두나
|
|
사전이 두 파일로 갈리면서(값을 낳는 장 / 바깥에서 오거나 모으는 장) 두 쪽이 같은
|
|
이름표 열과 같은 「비고」 설명을 쓴다. 한쪽에 두고 다른 쪽이 가져가면 **고리가 생겨**
|
|
(`Provenance` → `Provenance_Sources` → `Provenance`) 불러들이지 못한다.
|
|
그래서 두 쪽이 함께 바라보는 자리를 따로 뒀다.
|
|
|
|
⚠ 여기에는 **여러 장이 실제로 같이 쓰는 것만** 둔다. 한 장만 쓰는 문장을 여기로 올리면
|
|
사전을 읽을 때 그 장에서 눈이 떠나 버린다.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from common_util.common_util_provenance import (
|
|
TIER_STANDARD,
|
|
TIER_UNCLASSIFIED,
|
|
ColumnProvenance,
|
|
)
|
|
|
|
#: 이름표 열(코드·명칭·규격·단위)이 공통으로 쓰는 문장.
|
|
CATALOG_SOURCE = "단가판·품셈 표의 이름을 그대로 옮긴 자리 — 여기서 짓지 않음"
|
|
|
|
#: 「비고」가 왜 미분류인지 — 표마다 같은 말을 쓴다.
|
|
NOTE_RULE = (
|
|
"이 칸은 등급을 붙일 열이 아니라 **다른 열의 사유를 담는 그릇**이다. "
|
|
"안에 든 조각마다 닿는 열이 다르므로(갈래 근거는 규격, 반영률은 수량, "
|
|
"막힘 사유는 단가) 호버는 조각을 그 열의 칸에만 띄운다"
|
|
)
|
|
|
|
|
|
def _label(key: str, label: str, extra: str = "") -> ColumnProvenance:
|
|
"""이름표 열 — 값을 낳은 것이 아니라 옮겨 적은 자리."""
|
|
return ColumnProvenance(
|
|
key=key,
|
|
label=label,
|
|
tier=TIER_STANDARD,
|
|
formula="옮겨 적은 값 (여기서 계산하지 않음)",
|
|
source=CATALOG_SOURCE + (f" · {extra}" if extra else ""),
|
|
)
|
|
|
|
|
|
def _note_column(code: str) -> ColumnProvenance:
|
|
"""「비고」 열 — 여덟 어디에도 안 맞아 `unclassified` 로 둔다(PLAN 8-36 ㉮)."""
|
|
return ColumnProvenance(
|
|
key="note",
|
|
label="비고",
|
|
tier=TIER_UNCLASSIFIED,
|
|
formula="줄에 달린 사유 조각을 차례로 이어 붙인 글",
|
|
source="조각마다 원천이 다름 — 조각별 원천은 그 조각이 닿는 열의 카드에 뜸",
|
|
rule=NOTE_RULE,
|
|
code=code,
|
|
)
|