Import S-CANVAS source + iter=1~7 lint cleanup

S-CANVAS (Saman Corp.) — DXF + DEM + AI 기반 3D 조감도 생성 엔진.
~24k LOC Python (scanvas_maker.py 7072 LOC GUI + 구조물 파서/빌더 다수).

이 커밋은 7-iter cleanup이 적용된 상태로 import:
- F821 8 + B023 6: 비동기 lambda + except/loop 변수 캡처 NameError
  (Py3.13에서 reproduce 확인된 진짜 버그)
- RUF012 4 + RUF013 1: ClassVar / implicit Optional 명시화
- F811/B905/B904/F401/F841/W293/F541/UP/SIM/RUF/PLR 700+ cleanup/modernization

신규 파일:
- ruff.toml: target=py313, Korean unicode/저자 스타일/도메인 복잡도 무력화
- requirements-py313.txt: pyproj>=3.7, scipy>=1.14, numpy>=2.0.2 (Py3.13 wheel)
- .gitignore: gcp-key.json, 캐시, 백업, 생성 이미지 제외

검증: ruff 0 errors, py_compile 0 errors, import 33/33 OK on Py3.13.13.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-08 10:29:08 +09:00
parent 53d8b53c2f
commit b9342f6726
92 changed files with 3413501 additions and 0 deletions

View File

@@ -0,0 +1,168 @@
version: "v1"
description: "S-CANVAS 구조물 유형 레지스트리 - 댐/도로/단지/하천 범용"
types:
terrain:
name_ko: "지형 (등고선)"
render_mode: "tin"
color: "#8B7355"
description: "Z값이 있는 등고선/지형 데이터 → TIN 생성에 사용"
z_source: "entity"
excavation:
name_ko: "굴착"
render_mode: "surface_overlay"
color: "#D4A373"
z_offset: -2.0
opacity: 0.7
description: "굴착 계획 영역 (폐합 폴리라인 → 지형 아래 면)"
embankment:
name_ko: "성토/제체"
render_mode: "surface_overlay"
color: "#A0522D"
z_offset: 3.0
opacity: 0.7
description: "성토/댐 제체 영역 (폐합 → 지형 위 면)"
road:
name_ko: "도로/공사용도로"
render_mode: "path_extrude"
color: "#3D3D3D"
width: 6.0
z_offset: -0.3
slope_ratio: 1.5
description: "도로 중심선 → 지형을 깎아 평탄화 + 양쪽 굴착사면 생성 (1:1.5)"
cofferdam_upstream:
name_ko: "상류 가물막이"
render_mode: "wall_extrude"
color: "#6C757D"
height: 8.0
thickness: 2.0
description: "유수전환 상류 가물막이 (폐합/선형 → 벽체)"
cofferdam_downstream:
name_ko: "하류 가물막이"
render_mode: "wall_extrude"
color: "#8D9CA6"
height: 6.0
thickness: 2.0
description: "유수전환 하류 가물막이"
diversion:
name_ko: "유수전환 수로"
render_mode: "path_extrude"
color: "#4A90D9"
width: 8.0
z_offset: -3.0
description: "유수전환 터널/수로 중심선"
spillway:
name_ko: "여수로 (수로)"
render_mode: "path_extrude"
color: "#2E86C1"
width: 12.0
z_offset: -1.0
description: "여수로 수로 중심선 (수문 아님 — 수문은 spillway_gate)"
spillway_gate:
name_ko: "수문 (여수로 게이트)"
render_mode: "box_extrude"
color: "#34495E"
height: 8.0
description: "여수로 수문 — 평면도에서는 위치만 잡고 상세도면으로 3D 빌드"
intake_tower:
name_ko: "취수탑"
render_mode: "box_extrude"
color: "#566573"
height: 25.0
description: "취수탑 — 평면도에서는 위치만 잡고 상세도면으로 3D 빌드"
valve_chamber:
name_ko: "제수변실/밸브실"
render_mode: "box_extrude"
color: "#707B7C"
height: 3.5
description: "제수변실/밸브실 — 평면도에서는 위치만 잡고 상세도면으로 3D 빌드"
building:
name_ko: "건축물/가설건물"
render_mode: "box_extrude"
color: "#BDC3C7"
height: 5.0
description: "건축물 평면 (폐합 → 박스 extrude)"
temp_facility:
name_ko: "가설부지/야적장"
render_mode: "surface_overlay"
color: "#E8DACC"
z_offset: 0.5
opacity: 0.6
description: "임시 시설 부지 영역"
bridge:
name_ko: "교량"
render_mode: "elevated_path"
color: "#95A5A6"
width: 10.0
height: 8.0
description: "교량 (선형 → 공중 경로)"
tunnel:
name_ko: "터널"
render_mode: "path_extrude"
color: "#555555"
width: 10.0
z_offset: -15.0
description: "터널 (선형 → 지하 경로)"
retaining_wall:
name_ko: "옹벽"
render_mode: "wall_extrude"
color: "#7F8C8D"
height: 4.0
thickness: 0.5
description: "옹벽 (선형 → 수직 벽체)"
revetment:
name_ko: "호안"
render_mode: "surface_overlay"
color: "#B8B8B0"
z_offset: 0.0
opacity: 0.5
description: "하천 호안 영역"
pipeline:
name_ko: "관로"
render_mode: "tube_path"
color: "#1ABC9C"
diameter: 1.5
z_offset: -2.0
description: "관로/파이프라인 중심선"
boundary:
name_ko: "경계선 (참고용)"
render_mode: "line_only"
color: "#E74C3C"
line_width: 2.0
description: "부지 경계, 사업 범위 등 참고 표시선"
ignore:
name_ko: "무시 (사용 안 함)"
render_mode: "none"
color: "#CCCCCC"
description: "이 레이어의 요소는 무시"
# 렌더 모드 설명
render_modes:
tin: "Z값 있는 점 → TIN 표면 생성"
surface_overlay: "폐합 폴리라인 → TIN 위에 면 오버레이"
path_extrude: "선형 → 폭/오프셋으로 도로/수로 면 생성"
wall_extrude: "선형/폐합 → 수직 벽체 생성"
box_extrude: "폐합 → 일정 높이 박스 생성"
elevated_path: "선형 → 공중 경로 (교량)"
tube_path: "선형 → 원형 단면 튜브"
line_only: "선만 표시 (3D 면 없음)"
none: "렌더링 안 함"