sync: 4환경 수렴본 main 반영 (커밋 34건) #10

Merged
eomsangdon merged 34 commits from main_laptop_1 into main 2026-09-02 17:24:19 +09:00
2 changed files with 10 additions and 5 deletions
Showing only changes of commit 23fea9846b - Show all commits
@@ -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