sync: 4환경 수렴본 main 반영 (커밋 34건) #10
@@ -42,8 +42,8 @@ NOTE_LAYER_ID = "b08-cover-note"
|
||||
def build_cover_drawing(drawing_id: str, fields: dict[str, str] | None = None) -> dict[str, Any]:
|
||||
"""표지 도면 문서. 템플릿이 없으면 빈 도면을 낸다.
|
||||
|
||||
`fields` 의 `{{키}}` 는 도각과 같은 규약으로 치환하고, 값이 없으면 빈칸으로 둔다
|
||||
(남의 값이 남지 않는다). 값 공급은 다음 판(메타 배선) 몫이다.
|
||||
`{{키}}` 는 도각과 같은 규약으로 치환한다 — 값은 요청 문맥(`use_title_fields`)에서
|
||||
오고, `fields` 로 준 것이 그 위에 얹힌다. 값이 없으면 빈칸(남의 값이 남지 않는다).
|
||||
"""
|
||||
template = _load_template(COVER_TEMPLATE) or {}
|
||||
entities: list[dict[str, Any]] = []
|
||||
|
||||
@@ -264,7 +264,13 @@ _PLACEHOLDER = re.compile(r"\{\{\s*([^}]+?)\s*\}\}")
|
||||
|
||||
|
||||
def _fill_placeholders(entities: list[dict[str, Any]], fields: dict[str, str]) -> None:
|
||||
"""도각 텍스트의 {{키}}를 값으로 바꾼다. 값이 없으면 빈칸 — 남의 값이 남지 않는다."""
|
||||
"""도각 텍스트의 {{키}}를 값으로 바꾼다. 값이 없으면 빈칸 — 남의 값이 남지 않는다.
|
||||
|
||||
요청 문맥의 표제란 값(`use_title_fields`)이 바탕이고, 인자로 준 값(도면마다 다른
|
||||
도면명 등)이 위에 얹힌다. 합치는 자리를 **치환 함수 한 곳**에 둬야 도각을 두르지
|
||||
않는 표지처럼 다른 경로로 들어온 도면도 같은 값을 받는다(2026-09-02 표지 누락).
|
||||
"""
|
||||
fields = {**_title_fields.get(), **(fields or {})}
|
||||
for entity in entities:
|
||||
if entity.get("type") != "Text":
|
||||
continue
|
||||
@@ -317,6 +323,5 @@ def frame_entities(
|
||||
_transform_entity(entity, f"{drawing_id}:frame:{index}", scale, dx, dy)
|
||||
for index, entity in enumerate(template.get("entities", []))
|
||||
]
|
||||
# 요청 문맥의 값이 바탕, 호출부가 준 값(도면명 등 도면마다 다른 것)이 위에 얹힌다.
|
||||
_fill_placeholders(placed, {**_title_fields.get(), **(fields or {})})
|
||||
_fill_placeholders(placed, fields or {})
|
||||
return placed
|
||||
|
||||
Reference in New Issue
Block a user