diff --git a/A00_Common/b_page_state.ts b/A00_Common/b_page_state.ts index 2c411ffe8..37d5c757f 100644 --- a/A00_Common/b_page_state.ts +++ b/A00_Common/b_page_state.ts @@ -64,6 +64,8 @@ export const STATE_REGISTRY = { "m02-combo-panel-width": { bucket: "pref", scope: "global" }, /** M02 면적산출 카드 미리보기 아래 알약 줄 보임(기본 숨김 · 상세는 늘 보임) */ "m02-card-pills": { bucket: "pref", scope: "global" }, + /** M01 단가산출 로직 상세 오른쪽 — 열린 패널 하나(flow · source · none) */ + "m01-logic-panel": { bucket: "pref", scope: "global" }, /** B05 계획노선 편집 창 — 보던 화면(회전 · 가운데 · 배율). 프로젝트마다 따로 */ "routeedit-view": { bucket: "pref", scope: "project" }, /** B05 계획노선 편집 창 — 시점 · 종점 · 교각점 고정. [저장] 대상이 아니라 draft 에 안 둠 */ diff --git a/M01_MasterData/M01_MasterData_Router.py b/M01_MasterData/M01_MasterData_Router.py index f487a6d78..5b0aaa349 100644 --- a/M01_MasterData/M01_MasterData_Router.py +++ b/M01_MasterData/M01_MasterData_Router.py @@ -190,6 +190,12 @@ def get_logic(key: str) -> dict: return _call(store.logic, key) +@router.get("/logic/source") +def get_logic_source(src: str) -> dict: + """로직 원문 — 출처 글로 찾은 품셈 본문 절(읽기만).""" + return _call(make.source, src) + + @router.get("/logic/auto") def get_logic_auto(key: str) -> dict: """견본 입력 — 마스터 보기용 자동값(프로젝트 기본값 아님) · 흐름 로직은 설계 예시값.""" diff --git a/M01_MasterData/M01_MasterData_Store_Make.py b/M01_MasterData/M01_MasterData_Store_Make.py index 76dc319d9..c5ab2df45 100644 --- a/M01_MasterData/M01_MasterData_Store_Make.py +++ b/M01_MasterData/M01_MasterData_Store_Make.py @@ -103,6 +103,79 @@ def sections(book: str, division: str = "", chapter: str = "", q: str = "", limi return {"total": len(hits), "sections": hits[: min(max(limit, 1), 1000)]} +# ── 로직 원문(출처 글 → 품셈 본문 절) ────────────────────────────────── +_NUMBER = re.compile(r"(? list[dict]: + """md 줄 → 화면 조각 — 제목 {h} · 표 {table} · 글 {p} · 주석 줄은 뺌.""" + out: list[dict] = [] + for line in lines: + text = line.strip() + if not text or text.startswith("