fix(m02): 이름 없는 옛 보낸 범위 연결 — 면적 열 때 도면_{연결} 이름 · 면적 저장 때 연결표 줄에 이름(114-1)
- 면적 상세를 열 때 화면이 이름 없는 보낸 범위마다 책에 이름정의를 둠(고침 표시 없음) · 그 이름으로 점선
- 면적 [저장] 때 서버 refresh_drawing 이 책에 도면_{연결} 이 있으면 연결표 줄에 이름 적음
- 옛 줄 시험 기대 뒤집음 · 새 시험(옛 연결 → 열기 → 행 넣기 → 저장 → 도면 표 값 따라감)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
This commit is contained in:
@@ -25,6 +25,18 @@ DROPPED = "지운연결"
|
||||
CANCELS = "보내기취소" # 면적 [저장] 문서의 임시 칸 — 저장 안 함(112-2)
|
||||
# spreadsheet_area_table.ts `NAME_GONE` 과 같은 글자 — 이름이 지워졌을 때 까닭
|
||||
NAME_GONE = "이름없음"
|
||||
NAME = "도면_" # 보낸 범위 이름 앞머리 — AreaToDrawing.ts `NAME` 과 같은 글자
|
||||
|
||||
|
||||
def _book_names(book: Any) -> set[str]:
|
||||
"""책 모든 시트 이름정의 이름(작은 글자 · 화면 `resolveName` 과 같이 대소문자 무시)."""
|
||||
return {
|
||||
str(n.get("이름", "")).lower()
|
||||
for s in (book.get("시트") or [] if isinstance(book, dict) else [])
|
||||
if isinstance(s, dict)
|
||||
for n in s.get("이름정의") or []
|
||||
if isinstance(n, dict)
|
||||
}
|
||||
|
||||
|
||||
def to_table(
|
||||
@@ -119,6 +131,7 @@ def refresh_drawing(column: str, unlink: Any = ()) -> list[str]:
|
||||
"""지금 층 그 열 도면(모든 장)의 연결표마다 칸 글 다시 · 마지막 값 갱신 → 칸을 간 표의 `연결` 목록.
|
||||
`unlink` = 면적 [저장] 때 [보내기 취소]한 연결 — 그 줄을 연결표에서 뺌
|
||||
(도면 표는 남음 · 알림 없음 · 112-2).
|
||||
이름 없는 옛 줄은 책에 `도면_{연결}` 이름이 있으면 그 이름을 줄에 적음(114-1 · 면적 화면이 열 때 둠).
|
||||
이름(104-1)이 있으면 그 이름이 지금 가리키는 범위로 `범위` 도 갱신 — 이름이 지워졌으면(범위가
|
||||
통째로 지워짐) 그 연결을 끊고(도면 표는 남음) `지운연결` 목록에 적어 다음에 열 때 알림."""
|
||||
try:
|
||||
@@ -137,6 +150,12 @@ def refresh_drawing(column: str, unlink: Any = ()) -> list[str]:
|
||||
atomic_write_json(drawing, doc)
|
||||
return []
|
||||
book = json.loads(area.read_bytes())
|
||||
names = _book_names(book)
|
||||
for (
|
||||
x
|
||||
) in links: # 이름 없는 옛 연결(114-1) — 면적 화면이 책에 둔 `도면_{연결}` 이 있으면 줄에 적음
|
||||
if not x.get("이름") and f"{NAME}{x['연결']}".lower() in names:
|
||||
x["이름"] = f"{NAME}{x['연결']}"
|
||||
asks = [
|
||||
{
|
||||
"book": book,
|
||||
|
||||
Reference in New Issue
Block a user