feat(797-1): 엑셀 불러오기 요소 연결 — 기계 이음 [우리 단가로] 셈 · 유가 · 환율 이음 · 산근 속 산근 형제 참조 · 읽기 불가 사유 응답
- 기계(EQ) 이음 줄 [우리 단가로] = 시간당 기계경비의 그 비목(옛 Decimal × dict 실패 387 블록 풀림) · 시간당 자료 없는 EQ = 엑셀 단가 그대로 - 내보내기 `_m01` = 유가(MO) · 환율(FX) 유일 짝만 자동 · 여럿 = 표지 · 화폐는 이름 그대로일 때만(「유로폼」 오판 막음) - 산근 속 산근 = 같은 엑셀 안쪽 블록을 형제 가져온 식 SK 로 먼저 만들어 `참조`(비목 한 줄 부름 = `참조비목`) · 단가기준 따라감 · 못 잇는 줄 = 얼림 + 표지 - 쓰는 곳 · 층 복사 · 프로젝트 굳힘이 가져온 호표 참조를 봄(`Labor_Ref.refs_in` · `_move_doc`) - 올림 응답 `읽기불가` + 화면 토스트 - 시험 test_797_1_import_links 9 · 낡은 시험 없음 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -54,24 +54,30 @@ class Expand:
|
||||
return got
|
||||
return labor._number(qty.get(refs.SAVED)) if self.hands else hand
|
||||
|
||||
def __call__(self, ref: Ref, trail: tuple[str, ...] = ()) -> dict[str, Any]:
|
||||
def __call__(
|
||||
self, ref: Ref, trail: tuple[str, ...] = (), basis: str | None = None
|
||||
) -> dict[str, Any]:
|
||||
"""`basis` = 가져온 식 SK(797-1 산근 속 산근)를 부르는 쪽 단가기준(엑셀 | 우리)으로 셈."""
|
||||
rid = refs.ref_id(ref)
|
||||
if rid in trail:
|
||||
keys = [t.rsplit("|", 1)[-1] for t in (*trail, rid)]
|
||||
return self._stop(ref, "순환 — " + " → ".join(keys))
|
||||
if len(trail) >= refs.DEPTH:
|
||||
return self._stop(ref, f"참조가 {refs.DEPTH}단을 넘음")
|
||||
if rid not in self.memo:
|
||||
memo = f"{rid}|{basis}" if basis else rid
|
||||
if memo not in self.memo:
|
||||
doc = self.read(ref)
|
||||
if not isinstance(doc, dict):
|
||||
return self._stop(ref, f"없는 참조 「{ref['키']}」")
|
||||
if refs.kind_of(ref["키"]) == "promote":
|
||||
self.memo[rid] = self._promote(doc)
|
||||
self.memo[memo] = self._promote(doc)
|
||||
elif refs.kind_of(ref["키"]) == "sangeun": # 단가산출(715-2) = 고친 줄 셈 1 단위
|
||||
self.memo[rid] = calc.unit(doc, self.whole, self, (*trail, rid))
|
||||
if basis and isinstance((doc.get("가져온") or {}).get("로직"), dict):
|
||||
doc = {**doc, "가져온": {**doc["가져온"], "단가기준": basis}}
|
||||
self.memo[memo] = calc.unit(doc, self.whole, self, (*trail, rid))
|
||||
else: # 사전조합 = 그 SC 로직 사본(795-2)
|
||||
self.memo[rid] = lc.combo(self, doc, (*trail, rid))
|
||||
return self.memo[rid]
|
||||
self.memo[memo] = lc.combo(self, doc, (*trail, rid))
|
||||
return self.memo[memo]
|
||||
|
||||
@staticmethod
|
||||
def _stop(ref: Ref, why: str) -> dict[str, Any]:
|
||||
|
||||
Reference in New Issue
Block a user