feat(b07): 도면 작도 영역 가이드 선 · 숫자 칸 공용 부품 · 끌기 · 도각 편집 영역 저장 (169-1·169-3·169-4)

- 그림칸 = 양식 drawing_area 그대로(여백 2 % 없앰) · 도각 편집이 영역 싣고 [완료] 때 저장
- 도면 응답 guide(작도 영역 도면 좌표) · M02 구조물 도각 응답 area
- CAD 그리기 겹판 점선 사각형(저장 · DXF · 인쇄 제외) · 모서리 · 변 끌기(도각 편집 · M02 양식만)
- 숫자 칸 공용 부품(왼쪽 · 위 · 폭 · 높이 mm) — M02 양식 · B07 도각 편집 · 끌기와 한 벌
- B08 구조물도 · M02 도면 카드 = 얹은 도각 영역 가이드(보기만)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TNMXVCZXMpHpVvqmFkeChL
This commit is contained in:
2026-10-10 08:35:31 +09:00
co-authored by Claude Opus 5.5
parent 1f1646781f
commit 3e5b7cf21f
19 changed files with 624 additions and 70 deletions
@@ -233,7 +233,9 @@ async def put_frame_template(
if not isinstance(entities, list):
raise ValueError("도각 엔티티가 없습니다.")
project_root = await _project_root(project_id)
await asyncio.to_thread(save_project_template, project_root, entities)
# 작도 영역(169-1) — 편집 화면 숫자 칸 · 끌기 값 · 없으면 옛 값을 이어 받음
area = request.drawing.get("drawing_area")
await asyncio.to_thread(save_project_template, project_root, entities, area=area)
return FrameTemplateSaveResponse(project_id=str(project_id))
except (FileNotFoundError, ValueError) as exc:
return JSONResponse(status_code=400, content={"status": "error", "message": str(exc)})