Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LLCk2y5xE8YGVgjbTntWsY
12 KiB
12 KiB
조사 D1 — B07 축척 고르기 · 횡단배수 집계표 (10-8 저녁 · 읽기 전용 조사 에이전트)
경로는 프로젝트 루트 기준 · 「추정」 = 코드로 확인 못 한 판단.
1. 평면도 생성 · 업데이트에 축척 고르기 (B07)
현재
- 축척 상수 하나:
DRAWING_SCALE_PLAN = 1200(config/config_system.py:185-187) · 유역도DRAWING_SCALE_BASIN = 6000(:184) · 종이 mm 환산MM = 1000/1200(B07_DesignDetail_Engine_Cad_Plan.py:39-40)이 모듈 상수라 import 때 굳음. - 종류 파일 =
{name, pieces, order, layout}(축척 칸 없음B07_DesignDetail_Router_Support_Plan.py:94-100) · 양식 plan · watershed 둘(:73-74 · :172-183) · 기본 종류Engine_Cad_PlanKinds.py:79-105· 조각 19개PIECES:48-69. - 장 나눔
plan_chunks(Engine_Cad_Plan.py:96-132)가_chunk_span_m(:90-93) — 작도칸plan_area_mm(:81-87) ≈ 701×477 mm → 한 장 1/1,200 약 841×573 m · 1/1,000 701×477 m · 1/600 421×286 m · 목록plan_kind_items(Router_Support_Plan.py:523-551)는 plan_chunks 한 번(:525) · 유역도 한 장(:528-536). - 1200 직접 쓰는 곳:
_chunk_route(Router_Support_Basin.py:398-413) ·_sheet_box(:381-395) ·map_background는 scale 인자 있음(:235-272 · 부르는 쪽Router_Support_Plan.py:401-406만 1200). - 그림
build_plan_kind_drawing(Engine_Cad_PlanKinds.py:529-603) — paper() :538-539 · 실거리 환산 :449-450 · 471 · 485 · 축척 글 「S = 1/1,200」 :570-581 · 도곽 축척 칸scale_fields:587(Engine_Template.py:461-475· A3 는 분모 ×2) · 도곽 fit=False 1:1 · 넘치면 경고(Engine_Template.py:478-525). - 종이 mm → 실거리(축척 따라야 함): IP 표
Engine_Cad_IpTable.py:24 · 156-169 · 189· 필지 라벨Router_Support_Landuse.py:21 · 144-145 · 196-197. - 글 크기는 종이 mm 상수(축척 무관
PlanKinds.py:132-138·Plan.py:55-63·IpTable.py:29-31) · 실거리 상수(비탈 눈금 2 mPlanKinds.py:133· 대피소 라벨 8 mRouter_Support_Plan.py:76· R 라벨 4 mPlanKinds.py:352· 라벨 버퍼 5 m · 틈 2 mLanduse.py:34-35)는 축척 따라 종이 간격 바뀜. - 업데이트
update_kind(Router_Support_Plan.py:198-222) — 이름 · 조각만 · 확정 풀어 다시 그림(:213-221 · 축척 바꿔도 이 길 맞음) · 라우터PlanKindRequest(Router_PlanKinds.py:34-38) · PUT(:93-103) · 화면kindForm(UI_PlanKinds.ts:62-119· 양식 고르기 :74-79 · 있는 종류면 양식 잠금 :98-99) · APIApi_Fetch.ts:179-232. - 도면번호 = 목록 차례(
Router_Support.py:169 · 173-189) — 장 수 바뀌면 뒤 번호 밀림 · idplan_x↔plan_x_n. - DXF 는 종이 mm 그대로 · 축척 머리 없음(
Engine_Frame_Export.py:219-235) → 고칠 것 없음. 고칠 자리 config_system.py:DRAWING_SCALE_PLAN_CHOICES = (600, 1000, 1200)· 기본 1200.Router_Support_Plan.py:_document·list_kindsscale 읽기(없거나 목록 밖이면 1200) ·_checked·add_kind·update_kindscale 인자 ·build_pieces→_chunk_route·_sheet_box·map_background· landuse · ip_table 로 넘김 ·plan_kind_source반환scale·plan_kind_items축척별 plan_chunks.- 기본 인자(= 지금 값):
Engine_Cad_Plan.py_chunk_span_m·plan_chunksscale=DRAWING_SCALE_PLAN·Router_Support_Basin.py_sheet_box·_chunk_route·build_plan_kind_drawingscale· IpTable · Landusemm=MM·Router_Support.py:459-461이stored_design["scale"]. - 라우터
PlanKindRequest.scale·_state(Router_PlanKinds.py:51-57)에scales목록(화면 목록 출처 한 곳) · 화면kindForm에createSelectField「축척」(새 종류 · 업데이트 · 유역도 양식이면 1/6,000 잠금 표시) ·Api_Fetch몸통 scale. 재사용:map_backgroundscale 인자 ·createSelectField·update_kind확정 풀기 ·scale_fields· 후보DRAWING_SCALE_MASSHAUL_H_CANDIDATES(「도면 관행 축척」config_system.py:168-180). 위험: ContextVar 로 넘기면 안 됨(plan_kind_source와_read_drawing이 따로to_threadRouter.py:345-355) → 인자로 ·plan_pieces/{장}/은 쓰기만 하는 캐시(해 없음) · 1/600 이면 장 수 약 2배 · 1/2,500 보다 큰 분모면 2 m 비탈 눈금 빽빽 · 옛 길plan_source·build_plan_drawing·build_lidar_plan_drawing은 호출처 없음(그대로) · 시험이 종류 dict 통째 비교(test_b07_plan_kinds.py:245-250 · 373-378 · 387-394 · 406). 지식DB 축척 근거 - 1/1,200(법정): 시행규칙 별표2 「평면도는 종단도면 상단에 축척 1/1,200」 —
resources/knowledge/original/법률/산림자원의 조성 및 관리에 관한 법률 시행규칙/별표/별표2_산림관리기반시설의 설계 및 시설기준(제5조제1항 관련).md:60·technical_info/01_임도/02_상세설계/설계제원_총괄.md:116·resources/knowledge/03_미결_및_확인사항.md:42. - 1/1,000: 교재 「축척 1/1,000 또는 1/1,200」 —
original/산림과임업기술(임도)/2. 임도/5. 설계.md:24(종단 수평은 평면도 축척과 같게 :205) · 오솔길 1/1,000 방위표(original/경쟁사 프로그램/오솔길 분석/20_분석/02_도면양식/02_임도양식.md:92). - 1/600: 용지도 「1/600 또는 법정도면의 축척」(
5. 설계.md:290). - 1/5,000: 지형도 · 유역면적(
3. 임도계획.md:67·technical_info/01_임도/01_계획노선/임도계획_기본설계.md:50) · 1/6,000 유역도는 사용자 확정 납품 기준(지식DB 근거 없음config_system.py:160-164) · 1/25,000 · 1/50,000 위치도(5. 설계.md:309). 크기: 중간(서버 약 8파일 · 함수 약 12개 인자 · 화면 1칸 · 시험 셋 고침 · 새 시험 하나).
2. 횡단배수 다른 구조물 + 열 폭 절반
어느 표: B07 엔 횡단배수 · 집계 코드 없음(grep 0) · B07 수량표는 횡단 절성토 표(Engine_Cad_Table.py) → B08 「구조물 집계표」(98장)로 봄(추정).
현재
- 서버
pipe_summary(B08_Quantity/B08_Quantity_Router_Summary.py:153-291) 배관만 — raw 옵션facility == "pipe"(:166-170) ·type_id != "pipe"건너뜀(:174) · 열 id 접두pipe:(:124) · 차례 흙막이 0 · 돌붙임 1 · 관 공 2(:201 · 250 · 273) · 머리 글 정의종류.pipe.이름(:294-296) · 98 결정 「이번은 배관만」. - 화면(
B08_Quantity_UI_Summary.ts) 배관만 서버 열(:201-205) · 박스 · 세월교 · 물넘이 · B05 개거 등은 조합 열(머리 1단 + 이름 · 칸 빈칸Summary_Data.ts:63-85· UI :127-134) · 「관 공」 열만 맨 윗 머리가 관 조합 경로(:87-93). - 횡단배수 그룹(
resources/master_template/구조물정의.json:5-6군 A): pipe_points = pipe · box_culvert(:293) · ford_pavement(:472) · ford_bridge(:539) / structures.json = cross_drain_exposed(:674) · open_ditch(:691) · cross_underdrain(:708). 같은 꼴로 펼치는 법(머리 = 구조물 · 형식 · 규격 3단 + 단위) - BOX암거: 본체 [BOX암거, 가로×세로(
box_culvert.body.size=…), 본체] m — 본체 길이 정본 없음 → B06 새 키box_length_m(두 끝 offset 차)을 110 하상경사와 같은 길(B06_Section_Structure_Layouts.ts:226-230·STRUCTURE_ROW_KEYS:153-162 ↔B06_Section_Server_Calc_Prebuild.py:63-71↔B06_Section_Schema.py:186-190) · 날개벽 [BOX암거, 날개벽, 유입/유출] 개소(wing_in/out· 옛 「있음」 정규화design_structure_box.ts:103-109). - 세월교: [세월교, Φ{D}×{n}련, 월류 폭] m =
ford_width_m+ 개소(추정 · 실무 견본 없음) · 날개벽 개소(design_structure_ford.ts:84-96) · 관 길이는 B06 기하에만(B06_Section_UI_Cross_Ford_Geom.ts:266-290). - 물넘이 포장: [물넘이 포장, -, H={ford_height_m}] m =
ford_width_m(실무 2공구 「물넘이 포장 H=1.0 m」docs/raw/요구_1008_2/조사_M_B08집계표_배관.md:19). - 흙막이 · 돌붙임은 기존
pipe:revet|형태|H·pipe:chute|붙임열에 더함(실무 표는 기슭막이 열 공용) — 켜짐 키가 종류마다 다름(관{side}_type == 기슭막이:231-235 · 박스wing_in/out == 흙막이· 세월교{side}_type == 흙막이) · 선택 흙막이 · 도수로(soil_add · chute_add)는 이미 처리(M02_MasterTemplete/M02_Table_Fill_Spec.py:26-32). - B05 개거 · 노출형 횡단수로 · 맹암거: 옵션 거의 없어 개소 1(선택).
고칠 자리:
B08_Quantity_Router_Summary.py(종류별 갈래 · 열 id 접두 · 이름 · 정렬 · 알림) ·B08_Quantity_UI_Summary.ts(:202-205 서버가 펼친 facility 모두 조합 열에서 뺌 · :87-110 맨 윗 머리 = 그 열 조합 경로 · 서버가 열에top) · 선택: 물넘이 도수로 칸(design_structure_ford_pavement.ts:36-47)을CHUTE_ITEMS(design_structure_guard.ts:124-146)로. 재사용:_Sheet(:107-146) ·fill.collect_items·_revet_length(:98-104) ·fill._label·soil_tiers_from_designs·_combo. 위험: 흙막이 빈 높이 규칙 종류마다 다름(관 = 관경 최소 :244-245 · 박스 = 박스 높이 · 세월교 = 본체 끝 높이(기하에만 · 정본 없음) → 세월교는 「미입력」 열) · 옛 값 정규화 서버 사본 = TS 짝 두 벌 · 세월교 필수 컨테이너 잇기(gford · gfordin · gfordout)가 마스터 정의 그룹에 없음(rawgroup_items에서) · 같은 측점 박스 + 관이면pipe@측점키 겹침 ·test_98:172-179 · :223 고침. 크기: BOX · 세월교 · 물넘이(있는 키만) 중간(서버 약 100줄 · TS 약 20줄) · BOX 본체 길이 새 키 작음~중간 · 세월교 관 길이 중간(추정). 열 폭 절반 - 현재:
widthOf = min(200, max(96, 글자수×13+24))(UI_Summary.ts:54) · 배관 열은 위 단 글까지 포함 가장 긴 글(:107 — 위 단은 여러 열에 걸쳐 불필요) · 측점 96(:126) · 조합 열은 이름 길이(:133) · 공용 표는 받은 폭 그대로(ui_template_data_table.ts:59-61 · 165 · 178· 말줄임 · 여백 8px · 글 12pxui_template_data_table.css:46-56). - 고칠 자리:
UI_Summary.ts만 — 맨 아래 단 글만 잼 · 글자 폭 한글 12px · 그 밖 7px 추정 +16 · 최소 44 · 최대 100 → 「m」 96→44 · 「관매설」 96→52 · 「H=2.0」 96→51 · 측점 96→56 · B09 도 쓰는 공용 표 · CSS 안 건드림. - 위험: 위 단 머리 칸엔 title 없음(
ui_template_data_table.ts:96· 맨 아래 단만 :102) → 한 열짜리 위 단 글 말줄임이면 못 읽음 → B08 범위 CSS 로 머리만 줄바꿈 허용 또는 그 열만 쓰는 위 단 글을 폭 계산에. - 크기: 작음.
3. 관련 시험 (resources/tester/)
- 축척:
test_b07_plan_kinds.py·test_b07_landuse_parcel_info.py(MMimport :17 · :58) ·test_b07_masshaul_basin.py·test_b07_frame_export_table.py·test_b07_dxf_clip.py - 집계표:
test_98_b08_pipe_summary.py·test_61_1_b08_summary_table.py·test_61_2_b08_structure_sheets.py·test_ui_data_table.py(+helper_ui_data_table.cjs) ·test_m02_table_fill.py·test_structures_summary_snapshot.py - BOX 본체 길이 새 키:
test_b06_pipe_length.py·test_b06_design_key_split.py·test_110_b08_bed_slope.py - 물넘이 도수로 칸:
test_52_3_structure_spec_ford_pavement.py·test_52_17_single_container.py·test_65_ford_defaults.py
미결 (조사 에이전트 제시)
- 축척 목록 1/600 · 1/1,000 · 1/1,200(기본) · 유역도 1/5,000 · 1/6,000 고르기 · 용지(A1) 고르기는 밖.
- 축척 바꾸면 장 수 · 도면 id · 도면번호 바뀜 · 단추 이름에 축척.
- 「수량 집계표」 = B08 구조물 집계표가 맞는지(추정).
- 펼칠 범위: BOX · 세월교 · 물넘이만 vs B05 개거 · 노출형 횡단수로 · 맹암거(개소)까지.
- 단위 · 머리: BOX 본체 m(B06 새 키) · 날개벽 개소 · 세월교 월류 폭 m · 개소 · 관 연장 · 물넘이 월류 폭 m(H별).
- 흙막이 · 돌붙임 열 공용(실무 꼴) vs 구조물별.
- 열 폭: 좁힌 머리 줄바꿈 vs 말줄임.