chore(plan): 81~91장 요구 원문 · 조사 여덟 · 분석 정함(10-8 요구)
전역 공통 · M02 · 노면공 · B06 요구 30건을 11장으로 나눈 근거 묶음. 조사 A~H 는 파일:줄 근거 · 분석_정함 은 브레인 정함과 창 사이 약속. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LLCk2y5xE8YGVgjbTntWsY
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
# 10-8 요구 — 분석 · 정함 (브레인)
|
||||
|
||||
원문 = `사용자요구_1008.md` · 근거(파일:줄) = 같은 폴더 `조사_A~H_*.md` · 계획서 = `PLAN.md` 81~91장. 정함(브레인)은 사용자가 바꿀 수 있음 · 사용자 말이 앞섬.
|
||||
|
||||
## 0. 한눈에
|
||||
|
||||
- 요구 30건 = 전역 4 · M02 13 · 노면공 4(B06 끝 줄 「노면공 구조물군의 형상」은 노면공 형상 장에 합침) · B06 9. M01 · B05 계획노선 = 없음.
|
||||
- 장 · 창 · 모델:
|
||||
|
||||
| 장 | 내용 | 창 | 모델 |
|
||||
|---|---|---|---|
|
||||
| 81 | 전역 글 선택 · 스프레드시트 우클릭(속도 · 기능) · 알약 일괄 해제 · 단위 Φ | 데스크탑 메인 | Sonnet high |
|
||||
| 82 | CAD 공용 탭 · M02 여러 장 도면 · 면적→도면 표 여러 장 · B07 탭 | sub6 | Opus high |
|
||||
| 83 | 도면 → 엑셀(면적산출) 한 번 옮기기 | 데스크탑 보조 | Opus high |
|
||||
| 84 | 도면 불러오기 오류(중력식사방댐) · 호 방향 흠 | sub8 | Opus high |
|
||||
| 85 | M02 일위대가 — 이름 규격 · 켜쌓기 · 순서 끌기 · 원문 다운로드 · 패널 스크롤 | sub3 | Opus high |
|
||||
| 86 | M02 구조물 조합 — 저장 후 넘어감 · 이름(1) · 합계 행 | sub2 | Sonnet high |
|
||||
| 87 | 노면공 패널 — 시작·종료 측점 · 길이 출력 · 확폭 구간 단추 | sub5 | Sonnet high |
|
||||
| 88 | 노면공 횡단 형상 — 두께 · 무늬 · 범위 · 확폭 | sub1 | Opus high |
|
||||
| 89 · 90 | B06 세월교 · 박스 — 관 끝 · 선택 영역 · 수평공간 · 유출 단 수 · 도수로/돌붙임 | sub7 | Opus high |
|
||||
| 91 | B06 원지반 · 암 제약 삭제 · 유출측 복합경사 | sub4 | Opus high |
|
||||
|
||||
## 1. 정함 (브레인) — 항목별
|
||||
|
||||
### 전역 공통 (81 · 82)
|
||||
- **글 선택(81-1)** — 해석: 드래그로 글이 파랗게 잡혀 조작이 불편 → B·M 페이지 드래그 글 선택 막음. 허용 = input · textarea · select · contenteditable · 스프레드시트 칸 편집기 · 원문 본문(복사 쓸모). 조사 결과 지금은 전역 막기 없음(국소 규칙만). 39-9a 브라우저 우클릭 막기는 그대로.
|
||||
- **우클릭 속도(81-2)** — 원인 1순위 = 상태줄 통계가 고른 칸 전부를 셈(열 머리 104만 칸 · 약 0.5초 · 전체 고름은 멈춤). 쓴 범위까지만 셈 · 알약 점 읽기/쓰기 분리 · 고름만 바뀐 새로 그림은 점 건너뜀 · 행 머리 전체 고름 배열(`Math.min(...rows)`) 고침. 목표 = 열 머리 우클릭 메뉴 100 ms 안 · Ctrl+A 멈춤 없음.
|
||||
- **우클릭 기능(81-3)** — 구글 시트 항목 중 기능이 이미 있는 것(조사_A 3 표 (a))만 메뉴에 붙임: 붙여넣기 · 선택하여 붙여넣기 ▸(값만 · 서식만) · 행 위/아래 삽입 · 열 왼/오른 삽입 · 셀 삽입 ▸ · 셀 삭제 ▸ · 칸 메뉴 행/열 삭제 · 행/열 크기(숫자) · 데이터에 맞추기 · 정렬 A→Z/Z→A · 필터 · 고정 · 드롭다운 · 조건부 서식 · 범위 이름 · 그룹 · 구분선 · 읽기 전용 시트 「복사」. 안 만듦 = 하이퍼링크 · 댓글 · 범위/시트 보호 · 다른 파일로 복사. 메뉴 붙여넣기는 보안 문맥(localhost · https)에서만 실제 붙임 · http(Tailscale 주소)는 Ctrl+V 안내 그대로. 몸통은 늦게 부름(`import()` · 크기 예산 72 KB). 구분선은 공용 메뉴 타입에 덧붙이는 꼴(B04 · B05 · 나무 메뉴 그대로).
|
||||
- **CAD 탭(82)** — CAD 를 감싸는 공용 탭 줄(`ui_template/cad_host/cad_host_tabs.ts` 새 파일). CAD 안 전역 상태는 안 건드림. 탭 바꿀 때 지금 장을 받아 두고(requestSave) 다음 장을 실음. 쓰는 곳 = M02 구조물 도면(장 더하기 · 이름 · 지우기 · 끌어 순서) · B07(목록에서 연 도면이 탭 · 닫기 · 전환 — B07 은 새 빈 도면 만드는 서버 길이 없어 [+] 없음).
|
||||
- **M02 여러 장 저장 꼴** — 한 파일. `도면` = 1장(옛 읽기 그대로) · `더한장: [{장id, 이름, 도면:{format, entities, layers}}]` · 장 도번 = 열 도번 + `-n`(SD-000010-2) · 도각 `{{도면번호}}` = 장 도번 · 연결표 줄에 `장`(장id · 1장은 빈 값). 카드 미리보기 = 1장 + 「장 n」 표시.
|
||||
|
||||
### M02 (83 · 84 · 85 · 86 · 81-4 · 81-5)
|
||||
- **이름 규격(85-1)** — 보이는 글 = 「이름 규격」(예 굴착기(무한궤도) 0.6㎥) · 원문번호는 풍선(title) · 저장 값은 원문번호 그대로 · 직종 번호도(입력 이름에 「직종」) · 서버가 이름표를 붙임(M01 길은 관리자 전용이라). M01 화면은 안 고침.
|
||||
- **켜쌓기 적용율(85-2)** — 대상 = 표 주문에 「골쌓기 기준」이 붙은 로직(자동 판정 · 지금 GC000260 메쌓기 · GC000261 찰쌓기). 산림 GF000219 · 221 은 이미 골/켜 입력이 있어 제외. 그 로직 세부항목 줄 전부(인력 · 기계 · 자재) 수량 × 율 → 금액도 따라감(실무 「켜쌓기적용 90% = 전체금액의 %」와 같은 결과). 기본 100 · 0 초과 200 이하 · 소수 한 자리. 자리 = `담은로직[].켜쌓기율`(없음 = 100). 곱은 서버 `run_line` 한 곳 → 일위대가 문서 · 프로젝트 사본(`M02_Item_Prices.py`) · 서고(`M02_Labor_Ref.py`) 모두 같은 함수. 원본 로직 · 표 파일은 안 고침. 근거 조사_H 1(켜쌓기 % 는 원문 없음 · 실무만).
|
||||
- **순서(85-3)** — ▲▼ 작은 단추(글은 풍선) + 손잡이 끌기. 상세 · 구조물 조합 일위대가 카드 · 서고 모달(같은 부품). 단가산출 로직 줄만(자재목록은 그대로).
|
||||
- **원문 다운로드(85-4)** — 원문 제목 행 오른쪽 [원문 다운로드] · pdf 통째 내려받기(쪽 자르기 없음 · 새 의존성 없음) · 새 길 `GET /api/m02/logic-lib/source-pdf?book=<건설|산림>`(책 이름만 받음 · 경로 안 받음) · 로그인 사용자 모두. 지금 M02 원문 패널은 M01 관리자 길을 불러 일반 사용자에게 안 보임 → 원문 읽기도 `logic-lib` 아래 대리 길로 옮김(단추가 보일 자리).
|
||||
- **패널 따로 스크롤(85-5)** — 공용 `ui_template_side_panels.ts` 에 `follow:false` · 일위대가 · 면적산출 상세만 씀(M01 그대로) · 칸 고정 높이 · `overscroll-behavior: contain` · 원문 패널 `scrollIntoView` → 패널 몸 `scrollTop`.
|
||||
- **저장 후 넘어감(86-1)** — 단추 셋 = [취소] [버리고 넘어감] [저장 후 넘어감](주 단추) · 기본 초점 취소 · Esc = 취소 · M02 자리 전부(구조물 조합 표 · 카드 · 도면 · 일위대가 · 면적산출 · 서고) · 저장 실패면 머묾. 열린 양식이 없는 화면(옵션 정의)은 2단추 그대로. 이미 있는 흠(settle 이 화면 고침만 보고 카드 저장 실패를 놓침) 같이 고침. B 페이지 항목 고르기 편집은 그대로.
|
||||
- **이름(1)(86-2)** — 옮기기(끌기 · 메뉴 · 여러 개)에서 같은 폴더 같은 이름 = 말없이 「이름(1)」 · 「이름(2)」… 로 바꾸고 토스트에 새 이름. 항목 · 폴더 모두. 붙여넣기 · 복사 생성의 옛 꼴 「이름 (2)」도 같은 꼴 「이름(1)」로 통일(`_unique` 한 벌). 사용자가 직접 친 이름(새로 만들기 · 이름 바꾸기) 겹침은 지금처럼 막음. 번호(SD · SU · SA) 영향 없음.
|
||||
- **합계 행(86-3)** — 구조물 조합 상단 표에 읽기 전용 줄 「일위대가 합계」 · 값 = 반영합 · 없으면 기준합 + 「(기준)」(목록 39-8 B2 규칙과 같음) · 저장된 `계산값` 사용 · 카드 [저장] 뒤 다시 읽음.
|
||||
- **알약 일괄 해제(81-4)** — 알약 줄 끝 [연결 모두 해제] · 편집 가능하고 연결 1개 이상일 때만 · 물음 한 번 · 되돌리기 한 번 · 알약 줄이 있는 곳 전부(면적 상세 · 카드 미리보기 수정 · 항목 편집).
|
||||
- **단위 파이(81-5)** — Φ(관 지름 기호 · 자재 규격에서 압도적 · 조사_C 4) · 숫자 앞에 붙임(Φ300) · 길이 묶음 끝.
|
||||
- **도면 → 엑셀(83)** — 연동 아님 · 한 번. 자리 = 면적산출 상세 오른쪽 도면 패널(고르기가 꺼져 있으면 켬) · 고른 범위 → 면적산출 새 시트(이름 「도면에서 n」 · 기존 시트 안 덮음 · 화면 고침 표시 → [저장]). 표 엔티티 = 칸 그대로 · 선+글 표 = 격자 인식(선 경계 허용오차로 묶음 · 안쪽 선 빠진 곳 = 병합 · 글 자리로 칸) · 둘 다 아니면 글 자리로 줄 · 칸 폴백. 「1,500」 같은 글은 숫자로. 지금 탭(장)만.
|
||||
- **도면 불러오기(84)** — 저장본(`storage/1/10/templates/structure/item1_2.json` · 15 MB)엔 호가 0개(불러올 때 선으로 펴짐) · 작은 호 반전 꼴 0 → 원본 DXF/DWG 로 재현이 먼저(⬜ 사용자 제공). 의심 = 불러오기에서 LWPOLYLINE/POLYLINE bulge 버림 · OCS(압출 −Z 거울 블록) 그대로 · 겹 INSERT 버림 → ezdxf `path.make_path().flattening()` 으로. 같이: MOVE/SCALE 때 색 · 층 잃음 · Arc mirror 축 무시 · DXF 내보내기 시계방향 호 · 15 MB 열기 감시 시계(15 s). SVG 가져오기 호 흠은 이번 밖.
|
||||
|
||||
### 노면공 (87 · 88)
|
||||
- **패널(87)** — 시작 · 종료 측점 = 기준측점 자리(위치 줄 · B군 구간형과 같은 길) · 기준측점 · 전/후 · 길이 입력 없앰 · 상세내용 안 = 포장사양 → 길이(출력 · 시작~종료) → 높이(두께). 알약 = 시점(기준 비움 → 서버가 시점). 옛 `length_m` · `before_m` · `after_m` 은 저장 때 뺌 + M02 집계 `_length` 는 구간형이면 시작~종료 먼저(뿌리 고침). 포장사양 = 콘크리트 · 아스콘 · 쇄석(근거 별표2 · 별표3 · 교본 3장 — 조사_H 3). 높이(두께) 기본 0.20 m(교본 「두께 0.2m 기준」).
|
||||
- **확폭 구간(87-3)** — 상세내용 아래 새 상자 「확폭 구간」 · 범위 안 확폭 > 0 측점을 이어진 구간으로 묶어 구간마다 단추(「No.5+10 ~ No.7+0 · 확폭 0.75 m」) · 기본 켬 · 끈 구간 = `options.widening_off = "시작-끝,…"`(측점 m) · 노선이 바뀌어 안 맞는 값은 무시(= 켬).
|
||||
- **형상(88)** — 두께 = 구조물 높이 값 · 노면선 아래로 두께만큼(지금 그림 방향 · 노면선 = 포장 윗면) · 무늬 = 포장사양별 셋(콘크리트 · 아스콘 · 쇄석) · 범위 안 모든 횡단 카드 · 확폭 끈 구간 = 규격 폭 끝까지만. 카드별 얹기 = ① 짝(새 `common_util/common_util_structure_pavement.py` ↔ `.ts` · 거울 시험 · C군 벽 선례) · 저장 전 범위도 카드에 바로. 토공 면적 영향 없음(그림 · 정보).
|
||||
|
||||
### B06 (89 · 90 · 91)
|
||||
- **관 끝(89-1)** — 흙막이 전면 사면을 따라 꼭짓점마다 그 높이의 전면 자리(관보호공 「흙막이 사면 이용」과 같은 식) · 횡단 + 3D.
|
||||
- **배관 선택(89-2)** — 측벽 · 흙막이 판정면을 뺀 안쪽 전부(바닥판 밑 ~ 측벽 상단 최고) · 그 안 면적 밴드 클릭은 배관이 가져감.
|
||||
- **유입 수평공간(89-3)** — 수평공간 칸이 있는 구조(흙막이)만 · 시작 높이 = 본체 바닥(세월교 바닥판 상면 · 박스 저판 상면) → 수평 → 절토(경사는 91-4 도우미). 날개벽 · 없음은 그대로.
|
||||
- **유출 수평공간 없앰(89-4)** — 칸 · 기하 · 세트 짝 · 구조물정의 이름 줄 · 유출 끝이 원지반에 묻히면 바로 절토 · 저장된 `outlet_revet_berm_m` 은 다음 저장 때 빠짐.
|
||||
- **유출 단 수(90-1)** — 관보호공 「추가 흙막이(단)」 스테퍼를 공용으로 세월교 · 박스 유출에 · 「+ 흙막이」 단추 없앰 · 단 수 → 상자 수(관보호공과 같은 방향) · 집계표도 단 수로 상자 자름 · 유출이 날개벽 · 없음인데 상자가 있던 자료 = 숨기고 집계에서 뺌(값은 파일에 남음).
|
||||
- **도수로 · 돌붙임(90-2)** — 두께 칸(cm · 기본 30 · 사용자 확정) · 유출 성토사면 선을 사면 안쪽으로 두께만큼 오프셋한 띠(윗면 = 사면선 · 근거 교본 「지반선보다 낮게 원지반에 설치」) · 유출 끝 ~ 성토사면이 원지반 만나는 곳(흙막이 단 사이 성토 조각 포함) · 안에 돌 무늬(흙막이 돌 그리기 재사용) · 도수로 · 돌붙임 형상 같음 · 배관 · 박스 · 세월교 · 물넘이포장(`ford_chute`) · 면적 · 터파기 영향 없음.
|
||||
- **제약 삭제(91)** — 형상 자체(벽 외곽)는 원지반 · 암 참조 없음(조사_G 1). 「해당」 = 세월교 바닥 · 흙막이 기본 높이(하상) · 다단 자동 자리(원지반에 앉는 x) · I형 집수정 하단. 더 = 설계선 끝 2 px 판정(줌마다 끝점 변동) · 전면 기울기 지형 자동판정. 91-1 에서 재현 목록 → 브레인 판정 → 91-3. 끝 연결선(성토부선 · 절토선이 원지반에서 끝남)은 형상 아님 → 남김.
|
||||
- **세월교 바닥(91-2)** — 처음 놓을 때 하상값 · 손 조정 칸(박스 `riseM` 꼴) · 원지반이 바뀌어도 안 따라감 · 흙막이 기본 높이도 이 값 기준.
|
||||
- **복합경사(91-4)** — 공용 도우미 하나(`common_util_cross_berm.ts cutProfilePoints` · 경계 = 원지반 + `rock_boundary_offset_m` · 켬 = 암 프리셋 + `two_stage_slope` · 소단 = `design.berm`) · 쓰는 곳 = 흙막이 수평공간 뒤 · 박스 끝 · 세월교 측벽 끝 · ㄴ·ㄷ 집수정 끝 · 절토 쪽 배관 유출 벽 뒤(지금 절토사면이 사라짐) · 소단 셈은 구조물 끝에서 새로 · `cutLine` 두 점 → 점열(횡단 셋 · 3D).
|
||||
|
||||
## 2. 창 사이 약속
|
||||
|
||||
- **노면공(87 ↔ 88)** — structures.json 노면공 항목: `placement: "interval"` · `start_m` · `end_m` · `chainage_m` 비움 · `options.pave_spec` ∈ 콘크리트 · 아스콘 · 쇄석 · `options.height_m`(m) · `options.widening_off`("s-e,s-e" · 빈 = 모두 켬) · `length_m` · `before_m` · `after_m` 없음. 횡단 얹기: `section.pavement = [{type_id, spec, thickness_m, start_m, end_m, widening_on}]`(측점이 범위 ±0.02 m 안 · `widening_off` 구간 안이면 `widening_on: false`).
|
||||
- **M02 여러 장(82 ↔ 83)** — 82 가 `더한장[]` · 연결표 `장` 을 먼저 정해 커밋 → 83 은 지금 실린 장만 읽음(그 뒤 받음).
|
||||
- **도면 → 엑셀(83)** — CAD → 부모 메시지는 새 파일 `B07_DesignDetail/openwebcad/src/integration/aislo-table-export.ts` · 인식 함수 새 파일 `B07_DesignDetail/openwebcad/src/helpers/table-from-drawing.ts` · 스프레드시트 부품은 고치지 않음(공개 손잡이만 · 없으면 브레인에 물음 — 스프레드시트 몫 = 81).
|
||||
- **켜쌓기(85-2)** — `담은로직[].켜쌓기율`(숫자 % · 없음 = 100).
|
||||
|
||||
## 3. 같은 파일 몫
|
||||
|
||||
| 파일 | 몫 |
|
||||
|---|---|
|
||||
| `M02_MasterTemplete_UI_Main.ts` | 86 = confirmLeave · settle · 상단 표 라벨 · 82 = 도면 열기 · 저장(419-438 · 507-514) · 83 = 면적 상세 도면 패널 이음 · 85 = 손대지 않음 |
|
||||
| `M02_MasterTemplete_Store.py` | 86 = `structure_numbers` · 82 = 새 문서 · 여러 장 |
|
||||
| `M02_MasterTemplete_Api_Fetch.ts` | 각자 자기 함수만 |
|
||||
| `B06_Section_Api_Types.ts` · `B06_Section_Engine_Culvert.py` ↔ `common_util_culvert_sets.ts` | 88 = `pavement` 타입 · 89/90 = 유출 수평공간 · 도수로 두께 칸 |
|
||||
| `B06_Section_UI_Cross_Body_Guard.ts` | 89 = 관 끝(240-253) · 91 = 기본 높이(83-95) |
|
||||
| `B06_Section_UI_Cross_Culvert_Extra.ts` | 89 = 수평공간 시작 높이(413-418) · 91 = 다단 자리(305-337) · `bermCut` 절토(57-97) |
|
||||
| `B06_Section_UI_Cross_Culvert_Geom.ts` | 89 = 597-602 · 91 = 트림(617-630) |
|
||||
| `A00_Common/design/design_structure_guard.ts` | 89/90 만 |
|
||||
| `A00_Common/spreadsheet/**` | 81 만 |
|
||||
| `B07_DesignDetail/openwebcad/src/**` | 83 = 새 파일 둘 · 84 = move-tool · ArcEntity · 82 = 손대지 않음(필요하면 브레인에 물음) |
|
||||
| `resources/master_template/구조물정의.json` | 87 = 노면공 줄 · 89 = outlet.berm 이름 줄 · 줄 단위 · 사용자 편집과 겹치면 사용자 값 살림 |
|
||||
|
||||
- 700줄 가까운 파일: `B06_Section_UI_Cross_Design.ts`(787 · 이미 넘음) · `B06_Section_Router.py`(695) · `B05_Profile_UI_Structures_Panel.ts`(698) · `B06_Section_UI_Cross_Culvert_Geom.ts`(699) — 더하면 새 파일로 나눔.
|
||||
|
||||
## 4. 검증 자리
|
||||
|
||||
- B05 · B06 = 자기 `검증_subN` 프로젝트(`OWNERS.md`) · 바꾼 값 되돌림.
|
||||
- M02 쓰기 = 자기 워크트리 시스템 층(git 안 · 창마다 따로 · 시스템 관리자) · 회사 · 개인 층은 읽기만 · 검증 항목 이름에 「subN임시」 · 끝나면 지움.
|
||||
- 84 = `storage/1/10/…/item1_2.json` 읽기만 · 사본을 자기 시스템 층에 「sub8임시」로.
|
||||
- 85-4 일반 사용자 확인 = `tmp/verify_accounts.json` 계정 · 비밀번호 출력 안 함.
|
||||
- 랩탑 화면 검증 = 동시 둘 · 시험 · typecheck 끝나면 물음(ask)으로 「탭 차례」 요청 · 브레인이 줌. 데스크탑 = 자기 ORCA.
|
||||
|
||||
## 5. 찾은 흠 — 이번 요구 밖(남김)
|
||||
|
||||
- 노면공 범위를 줄이거나 지워도 이미 포장으로 켜진 횡단 카드는 그대로(`B06_Section_Router_Design.py:194` 켜기만).
|
||||
- SVG 가져오기 작은 호 흠(`convert-svg-path-to-line-segments.ts:106-158 · 184`).
|
||||
- 메뉴 잘라내기 · 복사가 `execCommand` 라 초점이 격자 밖이면 빈 복사 가능(추정) — 81-3 때 확인만.
|
||||
- `test_b08_box_culvert_unit` 옛 모듈로 이미 깨짐.
|
||||
- B05 종단 숫자 표 전체 글 선택 막힘(`B05_Profile_UI_Style_Table.css:26`) — 81-1 방향(막음)과 같아 그대로.
|
||||
@@ -0,0 +1,52 @@
|
||||
# 사용자 요구 (2026-10-08 · 원문 그대로)
|
||||
|
||||
계획서 = `PLAN.md` 81장부터 · 분석 = 같은 폴더 `분석_정함.md`.
|
||||
|
||||
```
|
||||
전역 공통 및 공통 프로그램
|
||||
- 프로그램의 전역에서 사용자의 마우스 드래그로 텍스트 선택을 못하게 프로그램 제어시 불편함.
|
||||
- 엑셀 프로그램의 마우스 우클릭 속도가 너무 느림 확인
|
||||
- 엑셀 프로그램에서 마우스 우클릭 기능 부족, 크롬의 스프레드시트 기능을 참고하여 추가 기능 부여
|
||||
- 캐드 프로그램에서 탭 생성으로 여러 도면을 분리 관리하는 기능
|
||||
|
||||
M01 마스터 데이터
|
||||
- 없음
|
||||
M02 마스터 템플릿
|
||||
- 구조물 조합의 일위대가 컨테이너 및 상세페이지의 기계류와 집게 항목 등을 선정할때 원문번호가 드롭다운 메뉴로 나오고 있음. 숫자로만 구성된 경우 확인이 어려움. 원문번호보다는 테이블 항목들 중 이름 + 규격 형태로 표현되어야 사용자가 선택 가능
|
||||
- 구조물 조합의 일위대가 컨테이너 및 상세페이지의 단가산출 로직 중 원문에 '골쌓기 기준' 이라는 주문에 내용이 있는 경우 추가 옵션으로 '켜쌓기 적용율' 항목을 추가하고 값을 % 로 받은 기본 값은 100%로 사용자가 원할경우 수치를 변경함. 이때 변경되는 값은 해당로직 중 세부항목의 수량산출의 값을 %만큼 곱해서 계산.
|
||||
- 구조물 조합의 일위대가 컨테이너 및 상세페이지에서 항목의 위치변경은 화살표로 방향으로 작게 표현하고 로직의 순서를 드래그하여 이동할수 있게 변경.
|
||||
- 구조물조합에서 도면정보, 일위대가, 면적산출 미리보기나 상세페이지에서 수정 후 다른 곳으로 이동할 때 저장 안 한 고침이 있음 - 버리고 넘어갈까? 문구가 뜨는데 아래 선택란에 취소, 확인 버튼이 있는데 저장 후 넘어감 이란 버튼 필요함.
|
||||
- 구조물 조합 좌측 패널에서 기존 구조물 조합 복사 후 옮길 때에 같은 폴더에 같은이름이 있으면 안 됨. 이미있는 항목 ... 이란 문구가 뜨고 안되는데 같은이름이면 뒤에 같은문구(1) 으로 명칭 바꾸면서 같은 폴더에 저장은 되었으면 함.
|
||||
- 구조물 조합에서 상단 테이블에 행을 하나추가하고 해당일위대가에 대한 합계금액 표기
|
||||
- 면적산출에서 엑셀화면 하단 알약 나열되어 있는 부분에 한꺼번에 연결해제 있었으면 함.
|
||||
- 면적산출에서 단위 항목 중에 파이 추가
|
||||
- 원문보이기에서 원문 다운로드 버튼을 원문제목 행 우측맞춤으로 버튼 추가하고 내부에 보관된 pdf문서를 브라우져 다운로드 할 수 있게 기능 추가
|
||||
- 구조물 조합의 일위대가/면적산출 상세의 우측패널의 내용이 메인페이지 스크롤에 맞춰 동작하고 다시 돌아옴. 별개로 동작하게 점검
|
||||
- 도면을 불러오는 경우 오류 있음. 엄상준 개인의 구조물 조합 중 중력식사방댐 도면 확인. 예상하기로 호가 작아 반전이 된걸로 판단됨.
|
||||
- 구조물 조합의 여러장이 하나의 구조물 도면인 경우 탭관리 기능(공통 항목에 있음. ) 이때 조심해야하는 내용은 엑셀에서 도면으로 테이블 전달하는 기능 구현시 조심해야함.
|
||||
- 지금 면적산출에서 도면으로 테이블 보내기는 좋음. 여기서 초기에 기존 도면을 불러올 경우 기존 내용을 삭제하고 엑셀에서 새로 작업 후 전달하고 있음. 일회성 기능으로 연결은 안되어 있지만 도면의 정보를 엑셀로 양식을 맞춰서 전달하는 기능이 있으면 초기에 엑셀 작업에 도움이 될것같음. 연동기능 아님. 엑셀 완료 후 다시 도면으로 전달해야 싱크됨. 조심해야할 점은 불러온 도면에서 정보가 테이블이 아닌경우가 있음.
|
||||
|
||||
B05 계획노선 편집
|
||||
- 없음
|
||||
B05/B06 구조물 배치 패널
|
||||
- 노면공 구조물군의 세부 옵션 중 상세내용 컨테이너 안으로 들어와야 함.
|
||||
- 노면공 구조물군의 기준 측점은 기준측점이 아니라 시작측점과 종료 측점으로 구성되어야하며 거이에 따라 길이 값은 결정이 됨. 범위로 지정되었으니 기준측점 전/후의 정의가 필요없음. 길이값은 컨테이너 내부에 포장사양 다음 항목으로 넣되 사용자 입력값이 아니라 출력을 보는 형태로 변경.
|
||||
- 노면공의 높이에따라 노면 바닥을 기준으로 두께만큼 형상이 추가되어야하며 종류에 따라 내부 채움 형상이 달라야함. 채움형상은 흙막이의 형상 참고 및 신규 가능
|
||||
- 노면공은 범위임으로 여러 측점을 걸쳐 형상이 표현되어야함. 거기에 따라 확폭 구간이 발생되는 경우 상세내용 컨테이너 하단에 신규 컨테이너로 확폭 구간측점에 대한 정보를 버튼으로 보여주고 활성화된경우에는 확폭 포함 영역을 비활성화 된경우에는 규격 영역만 형상을 구현.
|
||||
|
||||
B06 횡단도 형상
|
||||
- 세월교에서 원지반선에 연동되어 하단부의 형상들이 잡혀있음. 자유도를 가지게 변경(제약 삭제)
|
||||
- 관보호공/세월교/박스암거의 흙막이, 사면안정의 흙막이, 옹벽은 하나의 로직으로 공통 동작할텐데 여기서 일부 항목들의 원지반이나 암 경계선에 영향을 받아. 형상이 미세하게 변경되는 경우가 있음. 확인 후 제약 삭제
|
||||
- 세월교와 박스암거의 유입 부분에서 형상에 따라 수평공간이 존재하며 이는 바닥형상에서 수평으로 연장후 절토 형상을 넣어야한다는 의미임.
|
||||
- 세월교의 유출/유입 부분의 흙막이 적용시 관 형상이 튀어나가는 경우가 있음. 다른 흙막이를 보면 알 수 흙막이 사면을 이용하는 기능이 있음. 확인
|
||||
- 세월교의 배관 선택 영여이 조금 좁은 것같음. 좌우의 유입유출 구조 선택 영역을 제외한 내부는 배관 선택으로 변경
|
||||
- 세월교와 박스암거의 유출에는 수평공간 옵션이 필요없음.
|
||||
- 세월교나 박스암거의 유출에는 관보호공의 유출의 옵션과 동일해야함. 단추가 제어등(이 렇게 되면 흙막이 추가 버튼은 사라지게 됨. 유출 컨테이너에서 단수로 조절할테니)
|
||||
- 도수로.돌붙임. 옵션에 의해 횡단도에 형상이 들어와야하함. 도수로와 돌붙임의 경우 물의 낙차에 의해 성토사면이 패임을 방지하기 위한 옵션으로 형상은 유출의 성토사면에 따라 형상이 있어야함(도수로나 돌붙임의 의한 횡단면 형상 차이는 없음). 도수로/돌붙임 형상 옵션을 컨테이너에서 수기입력 받음. 성토사면의 30cm 기본값. 성토사면을 선을 옵셋하면 됨. 내부에 돌형상 추가, 추가
|
||||
- 횡단 배수군의 유출측에서 절토사면을 이루는 경우 복합경사가 반영안되는 경우 있음. 확인
|
||||
- 노면공 구조물군의 형상
|
||||
```
|
||||
|
||||
## 함께 받은 말
|
||||
|
||||
내용이 많고 범위가 넓음. 브레인으로써 노트북과 데스크탑 워크트리들 관리와 감시에 신경써야함. 먼저 프로그램 현재 코드와 현황을 분석하여 상세 계획서를 수립할 것. 누락부분 없게 조심히 정리할 것.
|
||||
@@ -0,0 +1,74 @@
|
||||
# 조사 A — 전역 글 선택 · 스프레드시트 우클릭 속도 · 메뉴 기능 (10-8 · 읽기 전용 조사 원문)
|
||||
|
||||
결정은 `분석_정함.md` 가 앞섬 · 이 파일은 근거(파일:줄)용.
|
||||
|
||||
핵심: 앱 전체에 글 선택을 막는 CSS 없음(국소 규칙뿐) · 우클릭 느린 주원인 = 상태줄 통계가 고른 칸을 하나하나 다 셈(열 머리 = 104만 칸 · Node 근사 약 0.5초).
|
||||
|
||||
## 1. 전역 글 선택
|
||||
- body · html · `*` · 전역 클래스에 `user-select:none` 없음 · CSS 20곳 · JS 1곳 모두 국소 · JS `selectstart` 막기 · 문서 단위 `mousedown` preventDefault · 전역 `removeAllRanges` 없음(문서 캡처 down 9곳은 「바깥 누르면 닫기」만).
|
||||
- 이미 막는 곳(캔버스 · 끌기 · 격자): `.aislo-grid` `spreadsheet_grid.css:27-28`(d5c5090 09-27) · `.ss-fx` `spreadsheet.css:47` · `.m02-dfdg__view` `M02_DF_Diagram.css:76-77`(d562f09 10-01 35-8g) · `.b04-map__viewport/__image` `B04_PreProcess_UI_Style_Map.css:105,122` · `.b05-drainage__viewport/__image` `B05_Profile_UI_Style_Drainage.css:129,144` / 끄는 동안만: `.ui-side-panels.is-resizing` `ui_template_side_panels.css:57`(712d3f1 10-05) · `.m02-dfp.is-resizing` `M02_DF_Panel.css:100` · `overlay.css:104 .is-dragging` · B05 `B05_Profile_UI_Profile_Wheel.ts:166-167`(끌기 문턱 넘은 뒤에만 · 122 에서 풂 · a1a5081 09-06) / 클릭 자리 제목 · 손잡이: `ui_template_theme.css:439 .ui-collapsible__title` · `overlay.css:210` · `progress.css:10` · B06 `Style.css:167,192,284` · M02 `UI_Style.css:205` · A07 `:73` · B04 `Style.css:434` / `.b05-profile-table` `B05_Profile_UI_Style_Table.css:26` 종단 숫자 표 전체 막힘(370ff30).
|
||||
- 「전역처럼」 느끼는 원인: ⓐ `blockNativeMenu` `ui_template_native_menu.ts:27-35` + `main.ts:56` — B·M 모든 페이지에서 입력 칸 밖 우클릭의 브라우저 메뉴 막음(글은 골라지나 「복사」 메뉴 없음 · 0f8efaa 10-04 · 39-9a 결정 「입력 칸 밖 고른 글은 막음」) ⓑ 읽기 전용 · 미리보기 시트는 우리 메뉴도 없어 우클릭 무반응(`spreadsheet.ts:113,145`) ⓒ 추정: 버튼으로 만든 줄(나무 줄) · draggable 줄(`M02_MasterTemplete_TreePanel_Drag.ts:62`)은 크롬에서 끌어 고르기 안 됨.
|
||||
- 고칠 자리(조사자 해석 = 선택을 살리는 쪽): `ui_template_native_menu.ts:31` 조건에 「고른 글이 있고 그 범위 안을 눌렀으면 막지 않음」 · B05 표 `Style_Table.css:26` 빼고 Wheel 끌기 중 막기에 맡김(추정) · 재사용 `isTextEditable` 옆 판정 · Wheel.ts 「끌기 중에만 막기」 양식 · 위험: 39-9a 뒤집음 · `test_common_native_menu.py` 기대값 · 크기 작음.
|
||||
|
||||
## 2. 우클릭이 느림 — 처리 경로
|
||||
1. mousedown `spreadsheet_mouse.ts:258` → `onDown` 169-176(오른 버튼) — 누른 자리가 고름 밖이면 `ctx.select`(칸 · 행 전체 · 열 전체).
|
||||
2. `select()` `spreadsheet.ts:238-254` → `renderSelection` `spreadsheet_grid.ts:438-489` · `ed.sync`→`place`→`slotOf` getBoundingClientRect 2번(`spreadsheet_editor.ts:241-242`) · 모든 부품 refresh `:247`(도구 모음 `toolbar.ts:491` · 상태줄 `statusbar.ts:98` → `computeSelectionStats` 32-61 · `data_menu.ts:296-311`(유효성 ▼ getBoundingClientRect 231-232) · 알약 `links.ts:548-551`(renderBar 316-359 알약 단추 전부 새로 · `scrollIntoView` 357 · placeDots 362-410)) · onSelect: M02 `UI_Main.ts:295` 가벼움 · `M02_DF_FuncPanel.ts:588-600` drawHead · drawVars + MutationObserver→rAF.
|
||||
3. contextmenu → `spreadsheet_menu.ts:257` `onContextMenu` 198-255 — `hitTest`(`spreadsheet_grid.ts:531,534`) 쓰기 직후 강제 레이아웃 · `ctx.root` getBoundingClientRect(202) · 열 머리인데 칸 범위 고른 상태면 `select` 한 번 더(224-237) · `menu.open` `ui_template_context_menu.ts:116-158` 단추 생성 뒤 getBoundingClientRect(152).
|
||||
- 경로에 없는 것: 서버 호출 · await · setTimeout · 동적 import · 공용 양식 `createMapContextMenu("ss")`(B04 · B05 · 나무와 같은 장부 · CSS) · 항목 형식 `[글, 동작]` · `{label, children}`뿐(구분선 · 꺼짐 · 단축키 글 없음 · `.ss__context-menu-sep`/`.is-danger` CSS `spreadsheet_toolbar.css:246-253` 미사용).
|
||||
- 원인 순위: ① 상태줄 통계가 고른 칸 전부 돎(`spreadsheet_statusbar.ts:38-51` 칸마다 키 문자열 · Set) — 열 머리 1,048,576칸(약 490 ms) · 행 머리 16,384칸(약 4 ms) · 모서리 · Ctrl+A(`mouse.ts:196` · `keys.ts:140`) 1.7×10¹⁰칸 → 화면 멈춤(코드상) · 왼클릭도 같음 · 고칠 자리 `computeSelectionStats` 범위를 `computeExtent`(`spreadsheet_grid_cells.ts:85`)로 자름(작음 · 위험: 넘침 칸이 쓴 범위+100 밖이면 빠짐 추정) · 다음 벽: 전체 고름 + 행 머리 우클릭 `spreadsheet_menu.ts:210-212` 104만 칸 배열 + `Math.min(...rows)`(115) → RangeError(코드상) ② 알약 있는 시트(면적산출) 레이아웃 흔들기 — `placeDots` 가 이은 칸마다 읽기 뒤 append 쓰기 반복(`links.ts:371-392`) → 읽기 먼저 다 하고 쓰기 · 고름만 바뀐 refresh 에서는 건너뜀(작음) ③ `select` 마다 부품 전부 동기 재그림(`spreadsheet.ts:247`) — 측정 뒤(중간) ④ 우클릭 안 강제 레이아웃 2~3번(`spreadsheet_grid.ts:531` · `spreadsheet_menu.ts:202` · `ui_template_context_menu.ts:152`) 수 ms(작음) ⑤ 윈도 크롬 contextmenu 는 버튼 뗄 때 옴(대상 아님).
|
||||
- 덤(추정): 메뉴 잘라내기 · 복사는 `execCommand`(`spreadsheet_menu.ts:41-43`) · 항목 누르면 메뉴를 먼저 비움(`ui_template_context_menu.ts:94-99,107-109`) → 초점 · 고름이 격자 밖이면 빈 복사 가능.
|
||||
|
||||
## 3. 메뉴 항목 — 지금 vs 구글 시트
|
||||
- 지금: 칸(77-112) 잘라내기 · 복사 · 「Ctrl+V 를 쓸 것」(토스트) · 내용 지우기 · 서식 지우기 · 병합/해제 · 메모 삽입·편집 · 메모 삭제 · (conditions) 조건 만들기 / 행 머리(114-152) 잘라내기 · 복사 · Ctrl+V 안내 · 행 넣기(위만) · 행 지우기 · 숨기기 · 숨김 취소 / 열 머리(154-192) 같은 꼴(왼쪽만) / 시트 탭(`spreadsheet_tabs.ts:121-164`) 이름 바꾸기 · 복사 · 지우기 · 숨기기 · 숨긴 시트 보이기▸(앱 화면은 모두 `tabs:false` 라 안 보임) / 그 밖 상태줄 · 알약 · [데이터 ▾](`data_menu.ts:173-205`).
|
||||
|
||||
| 구글 항목 | 분류((a) 기능 있음 · 메뉴만 없음 / (b) 기능 없음) · 재사용 자리 |
|
||||
|---|---|
|
||||
| 붙여넣기 | (a) 절반 — `clipboard.ts:393 parseClipboard` + 붙이기 몸통 `:538~` · 클립보드 읽기 권한 필요 |
|
||||
| 선택하여 붙여넣기(값만 · 서식만) | (a) `paste_special.ts:71`(지금 Ctrl+Shift+V `extras.ts:121-159`) · 권한 같음 |
|
||||
| 위·아래 행 / 왼·오른 열 삽입 | (a) 명령 `행넣기` · `열넣기`(at, 수) — 아래 · 오른쪽 = at+수 · 칸 메뉴엔 없음 |
|
||||
| 셀 삽입(오른쪽 · 아래로 밀기) | (a) `insert_dialog.ts:58,72` · 창 172 |
|
||||
| 행 삭제 · 열 삭제(칸 메뉴) | (a) `행지우기` · `열지우기`(지금 머리 메뉴만) |
|
||||
| 셀 삭제(왼쪽 · 위로 당기기) | (a) `insert_dialog.ts:86,100` · 창 208 |
|
||||
| 드롭다운(데이터 확인) | (a) `validation.ts:86` · 패널 127 |
|
||||
| 조건부 서식 | (a) `condfmt.ts:122` · 패널 160 |
|
||||
| 범위 이름 지정 | (a) `names.ts:68 defineName` · 패널 141 |
|
||||
| 셀 작업 더보기 | (a) [데이터 ▾] `act.items`(`spreadsheet_actions.ts:159-176`) |
|
||||
| 행 · 열 지우기(내용) | (a) `내용지움`(칸 메뉴에만) |
|
||||
| 행 · 열 크기 조절 · 데이터에 맞추기 | (a) 절반 — `headers.ts:248,253` + `autofit.ts:58` · 숫자 입력 창 새로 |
|
||||
| 그룹 | (a) `actions_run.ts:53`(데이터 ▾ 윤곽) |
|
||||
| 정렬 A→Z / Z→A | (a) `sort_dialog.ts:72` · 열 전체 고른 상태 확인 필요 |
|
||||
| 필터 만들기 | (a) `filter.ts:45 toggleFilter` |
|
||||
| 고정 | (a) `view_menu.ts:119,128,138,150` |
|
||||
| 탭 색 · 시트 이동 | (a) `sheet_extra.ts:44` · `commands_sheet.ts:50` |
|
||||
| 링크(하이퍼링크) · 댓글(스레드) | (b) |
|
||||
| 범위 · 시트 보호 | (b)(서식 창 보호 탭은 자리만 `format_dialog.ts:7-8`) |
|
||||
| 다른 파일로 복사 | (b) |
|
||||
|
||||
- 고칠 자리: `spreadsheet_menu.ts` · 몸통은 늦게 부르는 `go(act)` 양식(`spreadsheet_actions.ts:148-150` → `actions_run.ts:16`) 재사용 · act 몇 개 추가.
|
||||
- 주의: 크기 예산 `test_spreadsheet_size.py`(화면 72 KB gzip) → `import()` 로 · 메뉴 길면 하위 ▸ · 구분선은 공용 타입 바뀜(B04 · B05 · 나무 메뉴 영향 · 덧붙이는 꼴이면 안전). 크기: (a) 묶음 중간 · (b) 항목마다 큼.
|
||||
|
||||
## 4. 스프레드시트 쓰는 화면
|
||||
| 화면 | 파일:줄 | 옵션 | 우클릭 |
|
||||
|---|---|---|---|
|
||||
| M02 면적산출 전체 편집 | `M02_MasterTemplete_UI_Main.ts:285` | tabs:false · links · readOnly 권한 | 편집 가능 = 칸 · 행 · 열 + 알약 + 상태줄 / 읽기만 = 무반응 |
|
||||
| M02 카드 미리보기 | `M02_MasterTemplete_ItemCards.ts:418` | readOnly | 무반응 |
|
||||
| M02 카드 미리보기 수정 | `M02_MasterTemplete_ItemCards.ts:379` | preview · links | 칸 메뉴 없음(알약 · 상태줄만) |
|
||||
| M02 면적 칸 고르기 | `M02_MasterTemplete_AreaCellPick.ts:82` | readOnly | 무반응 |
|
||||
| M02 흐름도 함수 패널 | `DataFlow/M02_DF_FuncPanel.ts:582` | preview · conditions | 「조건 만들기」 한 줄(`spreadsheet_condition.ts:341-352`) |
|
||||
| 항목 고르기 → 편집(B05 구조물 · B08 수량 추정) | `ui_template_item_picker_edit.ts:117` | 편집 · links | 전체 메뉴 |
|
||||
|
||||
- 메뉴 내용은 옵션으로만 갈림(`spreadsheet.ts:113,145,176`) · 페이지가 항목 더하는 길은 `conditions`(→ `cellMenuExtra`) 하나.
|
||||
|
||||
## 5. 시험
|
||||
- `resources/tester/spreadsheet/`: `e_harness.ts`(attachMenu :10,159) · `spreadsheet_d_fakes.cjs`(:483) · `harness_spreadsheet_d.cjs/.html` · `helper_spreadsheet_d.cjs` · `helper_spreadsheet_d_bundle.cjs` · `test_spreadsheet_d_input.py` · `test_stage3_statusbar.ts`(열 전체 경우 없음) · `test_stage2_insert_dialog.ts` · `test_stage2_paste_special.ts` · `test_stage2_view_menu.ts` · `test_stage2_comments.ts` · `test_stage2_shortcuts.ts` · `test_stage3_condfmt.ts` · `test_stage3_validation.ts` · `test_stage3_names.ts` · `test_stage3_sheet_extra.ts` · `test_spreadsheet_size.py` · `test_spreadsheet_bench.py` + `bench_spreadsheet_engine.cjs` · `spreadsheet_grid_test.ts` · `harness_links.ts` · `test_spreadsheet_set_link.py`.
|
||||
- 밖: `resources/tester/test_common_native_menu.py` + `helper_common_native_menu.cjs` · `test_m02_card_sheet_edit.py` · `test_item_picker_detail.py` · 우클릭 메뉴 구성 · 열리는 속도를 재는 시험 없음.
|
||||
|
||||
## 미결(조사자 제시)
|
||||
1. 39-9a 「입력 칸 밖 고른 글 = 브라우저 메뉴 막음」 유지 vs 고른 글 위 우클릭이면 브라우저 메뉴(복사) 살림.
|
||||
2. 읽기 전용 · 미리보기 시트 우클릭 「복사」 한 줄 메뉴.
|
||||
3. B05 종단 표 글 선택 풀지.
|
||||
4. 메뉴 붙여넣기 클립보드 읽기 권한 창 감수 vs Ctrl+V 안내 유지.
|
||||
5. 칸 메뉴에 구글처럼 삽입 · 삭제 다 vs 「행·열·칸 ▸」 하위.
|
||||
6. 공용 메뉴 구분선 · 꺼짐(B04 · B05 · 나무 메뉴도).
|
||||
7. (b) 항목(하이퍼링크 · 댓글 · 범위/시트 보호).
|
||||
8. 상태줄 통계를 쓴 범위까지만(결과 같음).
|
||||
@@ -0,0 +1,61 @@
|
||||
# 조사 B — M02 일위대가 다섯 건 (10-8 · 읽기 전용 조사 원문)
|
||||
|
||||
결정은 `분석_정함.md` 가 앞섬 · 이 파일은 근거(파일:줄)용. `M02\` = `M02_MasterTemplete\` · `MD\` = `resources\master_data\`
|
||||
|
||||
먼저 짚을 것:
|
||||
- 원문 패널은 일반 사용자에게 막혀 있을 가능성 큼(추정) — 일위대가 상세 원문 패널이 `/api/m01/logic/source` 를 부르고 이 길은 시스템 관리자만(`main.py:653`) · 일반 사용자는 「원문 연결 없음」만 볼 것.
|
||||
- 켜쌓기 율 금액이 두 곳에서 계산 — 일위대가 문서 계산과 프로젝트 사본 계산(`M02_Item_Prices.py:295`)이 따로 엔진을 부름 · 한 곳만 고치면 어긋남.
|
||||
|
||||
## 1. 드롭다운에 원문번호
|
||||
- 선택지 = M01 로직 입력의 `고르기` 원문번호 글 그대로(예 `MD\로직_건설품셈_07장_돌공사.json:17-18` 기계 `0201-0060…` · 집게 `7206-0070…`) · 서버 `M02_Labor_Inputs.py:17,51` 그대로 넘김 · `M02_Labor_Values.ts:65-70` 이 `choicesOf().이름`(= 원문번호)을 option 글로.
|
||||
- 「기계류」라는 입력 이름은 없음 — 실제 「기계」 「집게」 「크레인」 등.
|
||||
- 원천에 이름·규격 있음: `MD\기계.json` 줄 = 원문번호 · 이름 · 규격(예 :1836-1843 0201-0020 = 굴착기(무한궤도) 0.2㎥ · :27354-27361 7206-0020 = 부착용 집게 0.2㎥) · `MD\인력.json` 원문번호 → 직종(1048 = 건설기계운전사) · 엔진 표 `MD\scripts\master_formula.py:283-295` `Master.numbers["EQ"/"LB"]`.
|
||||
- 실측: 기계 번호 입력 274(번호 254) · 직종 번호 입력 58(번호 13) · 모두 원본에 있음 · 기계 「이름+규격」 겹침 0 · 원문번호 겹침은 산림 `2-2-x` 4종뿐(고르기에 안 쓰임).
|
||||
- 고칠 자리(저장 값은 번호 그대로 · 보이는 글만): 서버 `_listed` 가 입력마다 이름표(번호 → 「이름 규격」) 덧붙임 · TS `M02_Labor_Values_Model.ts` `choicesOf`(58-65) 옆에 `labelOf(input, 값)` · 번호가 새는 다른 자리 `valueHint`(18-29) · `valueLine`(106-119) · `M02_Labor_Values.ts:195-203` · `M02_MasterTemplete_Labor_Diagram.ts:137-146`.
|
||||
- 재사용: `choicesOf` 가 `{값, 이름}` 꼴 이미 받음(`helper_item_picker_project.cjs:268`) · M01 `M01_MasterData_UI_Logic_CalcPick.ts:138-171`(「번호 · 이름 규격」 + 표 모달) · `M01_MasterData_UI_Logic_Calc.ts:30-50`.
|
||||
- 같은 값 칸(`createValueControl`) 쓰는 곳: 일위대가 [옵션] 모달(`M02_MasterTemplete_Labor_Input.ts:71`) · 프로젝트 고르기 값 카드(`ui_template\ui_template_item_picker_edit.ts:152` · `_detail.ts:326`) · M01 시험계산은 다른 부품(직종 번호 「1048」 날것).
|
||||
- 주의: 고르기를 객체로 바꾸면 `valueHint` 가 JSON 글 → 고르기는 두고 이름표 따로 · M01 길은 관리자 전용이라 서버에서 붙임 · 4자리 직종 번호는 입력 이름에 「직종」 든 경우만. 크기: 작음~중간.
|
||||
|
||||
## 2. 「골쌓기 기준」 → 「켜쌓기 적용율(%)」
|
||||
- 정본 로직(old 제외): GC000260 메쌓기(굴착기+부착용 집게) 건설 7-1-1 `MD\로직_건설품셈_07장_돌공사.json:9-10` · 표 QC000487 주① 「…깬돌 및 깬잡석의 골쌓기 기준이다.」(`MD\소요량_건설품셈_07장_돌공사.json:24`) / GC000261 찰쌓기(굴착기+부착용 집게) 건설 7-1-2 같은 파일 :75-76 · QC000488 주① 「콘크리트를 채움재로 … 골쌓기 기준이다.」(:47) / GF000219 메쌓기(인력) 산림 13-4-1 `MD\로직_산림품셈_13장_구조물.json:291,296` 입력 `쌓기` = [골쌓기, 켜쌓기] 이미 있음 · 표 QF000421 켜쌓기 줄 따로 / GF000221 찰쌓기(인력) 산림 13-4-4 :423,494-495 같음 · QF000433.
|
||||
- 참고: 산림 장비 쌓기 GF000220 · 222 주는 「돌쌓기 기준」(골쌓기 아님) · 실무문서는 GF000222 에 「찰쌓기(켜쌓기)」 메모(`MD\일위대가조합.json:153` · `resources\master_template\labor\item1.json:78`) · 원문 대조 건설 원문 md 7-01 :30,49 같음 · 주문 「골쌓기 기준」은 GC000260 · 261 둘뿐.
|
||||
- 세부 수량산출 계산 지점: 엔진 `MD\scripts\master_formula.py:584`(호표 줄 수량) → :626-628 · 서버 `M02\M02_Labor_Doc.py:353`(`run_line` 안 `mf.run`) → :359 「줄」 → `calc` :334 · 화면은 받은 값만(`M02_MasterTemplete_Labor_Rows.ts:251-256` · :278-285) · TS 짝 `M02_MasterTemplete_Labor_Calc.ts:117-150` 은 반영(× 줄 수량)만.
|
||||
- 곱할 자리(원본 안 고치는 길): `M02_Labor_Doc.run_line` :353 바로 뒤에서 「줄」 수량 · 금액 · 비목 · 비목 합 × 율/100 · 같은 함수를 `M02_Item_Prices.py:295`(프로젝트 사본)도 · `run_line` 다른 호출 `M02_Labor_Ref.py:371,398`(서고) · 기준 단계에서 곱하므로 TS 짝(`settle`) 안 고침.
|
||||
- 담을 자리 = 새 칸 `담은로직[].켜쌓기율`(null/없음 = 100%) · `입력값` 은 못 씀(서버 `clean` 이 입력 이름 밖 버림 `M02_Labor_Doc.py:103,113` · 화면 `keepKnown` 도 버리고 「사라진 값」 알림 `M02_Labor_Values_Model.ts:91-103`) · 고칠 곳 `clean` :108-116 · `normalizeLabor` · `LaborRow`(`M02_MasterTemplete_Labor_Api.ts:124-132,159-167`) · [옵션] 모달 한 줄(`M02_MasterTemplete_Labor_Input.ts:39-42,105`).
|
||||
- 어느 로직에 보일지: 표 `용도.로직키` + `주` 에서 「골쌓기 기준」 찾아 `_listed` 가 표시 · 또는 키 둘 박음.
|
||||
- 주의: `M02_MasterTemplete_Labor_Detail.ts:353` `same` 이 입력값만 비교 → 율만 바꾸면 서버 안 부름 → 비교에 율 넣음 · 끝수 처리 뒤 곱이라 원 단위 조금 틀어질 수 있음. 크기: 중간.
|
||||
|
||||
## 3. 줄 순서 → 작은 화살표 + 끌기
|
||||
- 단추 `M02\M02_MasterTemplete_Labor_Rows.ts:364-399` — 위 행 [위로][아래로](:372-379) · 아래 행 [옵션|수정][삭제] · 줄 누름 = 고름(:403) · 처리 `M02_MasterTemplete_Labor_Detail.ts:183-193` · `move` :313-318(옆 줄과 맞바꿈) · `removeRow` :327-331.
|
||||
- 같은 부품: 상세(`M02_MasterTemplete_UI_Main.ts:386-401`)와 구조물 조합 일위대가 카드(`M02_MasterTemplete_ItemCards.ts:301-308` `card: true`) 모두 `mountLaborDetail` → `logicTable` 한 벌 · 카드는 `move` 를 뺌(`Labor_Detail.ts:189`) → [옵션][삭제]만 · 서고 모달(`M02_MasterTemplete_Labor_RefEdit.ts:91`)도 같은 부품.
|
||||
- 고칠 자리: Rows 순서 칸 ▲▼ 작은 단추(글은 title · aria) + 끌기 손잡이 · Detail `reorder(from, to)`(splice) · `M02_MasterTemplete_Labor.css:89-94`.
|
||||
- 재사용: `A00_Common\spreadsheet\spreadsheet_tabs.ts:65-93`(차례 목록 끌기 · 가장 비슷) · `M02_MasterTemplete_TreePanel_Drag.ts:21-74`(강조 지우기 규칙).
|
||||
- 주의: 줄 안 별칭 입력칸 → 줄 전체 draggable 이면 글 고르기 깨짐 · 손잡이만 끌기 · `test_m02_card_shell.py:135-142` 가 `small(tc("Up")` 글 검사 → 고침. 크기: 작음~중간.
|
||||
|
||||
## 4. 구조물 조합 상단 표 일위대가 합계 행
|
||||
- 상단 표 = 구조물집계표의 조합 보기 `M02_MasterTemplete_UI_Main.ts:343-375` `createSheet(comboView(doc), {combo, laborLabel…})` · `comboView` 가 줄·합계줄 비움(`M02_MasterTemplete_Structure.ts:92-108`) → 머리(분류 이름)만 · 조합이면 일위대가·도면·면적 줄 안 그림(`ui_template\sheet\ui_template_sheet_render.ts:262-270`).
|
||||
- 값 원천: labor 문서 `계산값.반영합.계` / `기준합.계` · [저장] 때 서버가 다시 적음(`M02_Labor_Doc.py:382-385`) · 면적 저장 때도(`M02_MasterTemplete_Store.py:527-537`) · 목록이 이미 씀(`M02_MasterTemplete_Items.py:89-124`).
|
||||
- 고칠 자리: `M02_MasterTemplete_Store.py:229-236` `structure_numbers`(labor 문서 이미 읽음 · 합계 칸 하나) · 장부 `M02_MasterTemplete_Book.py:78` 은 번호 칸만 복사 · `StructureNumbers` 타입(`M02_MasterTemplete_Api_Fetch.ts:173-182`) · render 조합일 때 행 하나 + 새 키 `REF_ROWS` 에(읽기만 · `ui_template_sheet_ops.ts:21-31` · `ui_template_sheet_render.ts:57-62,78-84`) · `UI_Main.ts:350` 옆 라벨 함수.
|
||||
- 재사용: `M02_MasterTemplete_ItemList.ts:63-72` `laborSum`(반영 합 없으면 기준 합 + 「기준」 · 39-8 B2).
|
||||
- 주의: `REF_ROWS` 에 안 넣으면 고칠 수 있게 열림(`ui_template_sheet_render.ts:80`) · 카드 [저장] 뒤 번호 다시 읽기 없음(`ItemCards.ts:311-319` vs `UI_Main.ts:524-528`) → 합계 늦게 바뀜 · M01 단가 바뀌어도 저장값이라 그대로. 크기: 작음~중간.
|
||||
|
||||
## 5. 원문보이기 → 원문 다운로드
|
||||
- 원문 보기 = `M01_MasterData\M01_MasterData_UI_LogicLab_Source.ts:73-118` · 제목 행 `title`(:75,81) · 절마다 파일 줄 :99-108 · M01 로직 상세(`M01_MasterData_UI_LogicLab_Side.ts:38-50`)와 M02 일위대가 상세(`Labor_Detail.ts:133-151` · 카드엔 없음)가 같이 씀 · 서버 `M01_MasterData_Router.py:193-196` → `M01_MasterData_Store_Make.py:221-240` · `_section`(:189-218)은 md 파일 이름만.
|
||||
- pdf(git 안): 건설 `resources\knowledge\original\원가계산\건설공사_표준품셈\2026년_건설공사_표준품셈.pdf`(7.0MB) · 산림 `…\산림_표준품셈\첨부\(산림청고시 제2025-82호) 산림사업 표준품셈.pdf`(6.1MB · 257쪽).
|
||||
- 연결: 직접 정보 없음 · 로직 `출처` → `source()` 가 md 찾음 → md 머리 `PDF쪽:`(예 `7-01_돌쌓기.md` = 215쪽 · `13-04_돌쌓기.md` = 195~199쪽) · 책 → pdf 경로 표 새로(지금 폴더만 `Store_Make.py:20-21`).
|
||||
- 백엔드 길 없음 · 쓸 것 `common_util\common_util_http_cache.py:28-39` `cached_file_response`(FileResponse + ETag · B04 씀) · 한글 파일명 예 `B07_DesignDetail\B07_DesignDetail_Router_Frame.py:106-122` · 같은 출처라 `<a download>` 또는 `#page=215` 새 탭.
|
||||
- 권한: M01 길 = 시스템 관리자만(`main.py:652-653`) · `/api/m02/logic-lib/*` = 로그인만(`M02_MasterTemplete_Router_Combos.py:24-27,78-102`) → 새 길(source 대리 + source-pdf)을 logic-lib 아래 두면 일반 사용자 원문 문제도 풀림.
|
||||
- 주의: 경로 받지 말고 책 이름(둘 중 하나)만 · 쪽만 자르려면 pypdf(venv 엔 있으나 requirements.txt 에 없음). 크기: 중간.
|
||||
|
||||
## 6. 시험
|
||||
- 일위대가: test_m02_labor_doc · test_m02_labor_calc_mirror(+helper_m02_labor_calc.cjs) · test_m02_labor_values · test_m02_labor_ref · test_m02_labor_copy · test_m02_labor_diagram · test_m02_labor_migrate · test_m02_labor_tree · test_m02_item_labor.
|
||||
- 카드·표: test_m02_card_shell(위로/아래로 글 검사) · test_m02_combo_table · test_m02_combo_screen · test_m02_structure_panel · test_sheet_drawing_select(`laborLabel` 글).
|
||||
- 원문·값 카드: test_m01_logic_source · test_item_picker_detail · ui\item-picker-data.test.ts · helper_item_picker_project.cjs.
|
||||
- 화면 스크립트 `ui_checks\`: 43-4_일위대가_카드 · 44-6_일위대가_표 · 45-7_일위대가_표_줄 · 47-4_일위대가_원문패널 · 47-5_일위대가_줄_고름 · 50-2_원문_항강조 · 50-4_일위대가_줄_상세 · 51-6_사전조합_줄넣기 · 51-14_순서칸_2행_옵션수정(원문 패널 시험은 모두 시스템 관리자로만).
|
||||
|
||||
## 미결(조사자 제시)
|
||||
1. 드롭다운 글: 「굴착기(무한궤도) 0.6㎥」만 vs 끝에 「(0201-0060)」 · 직종 번호도 · M01 시험계산 화면도.
|
||||
2. 켜쌓기: 대상 GC000260 · 261 만 vs 산림 장비 GF000220 · 222 도 · 곱할 세부항목 전부 vs 인력만 · 기계 줄도 · 허용 범위 · 서고(사전조합 · 단가승격) · 프로젝트 사본에도 같은 율.
|
||||
3. 순서: 구조물 조합 일위대가 카드에도 화살표·끌기(지금 카드엔 위/아래 없음) · 자재목록도 끌기.
|
||||
4. 합계 행: 반영합 vs 기준합 · 반영 합 없으면 「기준」 표시(39-8 B2) · 저장된 계산값 vs 매번 계산.
|
||||
5. 원문 다운로드: pdf 통째 해당 쪽 열기 vs 그 쪽만 자르기(pypdf) · 새 탭 보기 vs 내려받기 · 로그인 전체 vs 시스템 관리자만 · M02 원문 패널을 M02 길로 옮겨 일반 사용자도 원문 보게.
|
||||
@@ -0,0 +1,58 @@
|
||||
# 조사 C — M02 화면 이동 · 나무 · 면적산출 (10-8 · 읽기 전용 조사 원문)
|
||||
|
||||
결정은 `분석_정함.md` 가 앞섬 · 이 파일은 근거(파일:줄)용. `M02\` = `M02_MasterTemplete\` · `ss\` = `A00_Common\spreadsheet\` · `ui\` = `ui_template\` · `T\` = `resources\tester\`
|
||||
|
||||
## 1. 「저장 안 한 고침이 있음 — 버리고 넘어갈까?」 에 「저장 후 넘어감」
|
||||
- 같은 뜻 문구 넷: `ui\ui_template_locale_m2.ts:52` M02_DiscardConfirm(본체) · `M02\M02_MasterTemplete_Structure.ts:59` discardCards(일위대가 빠짐) · `M02\M02_MasterTemplete_ItemCards.ts:71` 「…다른 항목을 열까요?」 · `ui\ui_template_item_picker_edit.ts:37` 「…버리고 돌아갈까요?」(B05/B06 항목 고르기 편집) · 비슷한 것 `M02\M02_MasterTemplete_Labor_Text.ts:45` Ref_Discard · `B01_Dashboard\B01_Dashboard_UI_Common.ts:156`.
|
||||
- 본체: `M02\M02_MasterTemplete_UI_Main.ts:205-217` confirmLeave · busy()(:196 = 화면 고침 + 카드 고침 + 도면 표 놓기 대기)일 때 공용 `ui\ui_template_elements.ts:317-344` showConfirmDialog · [취소](ghost) · [확인](danger) · Esc 취소.
|
||||
- 뜨는 화면: 구조물 조합 표·카드 · 도면 · 일위대가 · 면적산출 · 서고 상세 · 옵션 정의 / 뜨는 때: 좌측 줄 누름(`UI_Side.ts:135,230` · Precombo:48 · Practice:93 · SO_Options:45) · 층 단추(`UI_Page.ts:99`) · 새 항목(`UI_Page.ts:151`) · 카드 [수정](`Structure.ts:327`) · 면적산출에서 잇기(`UI_Main.ts:396`) · [돌아가기] · [다시 읽기](`UI_Main.ts:591,601`) · 머리 메뉴 · 뒤로가기(`UI_Main.ts:218` → `A00_Common\main.ts:72-82`) / 카드만 묻는 곳: 표에서 다른 열(`Structure.ts:252-260`) · 가져오기(`Structure.ts:275`) · `ItemCards.ts:464`.
|
||||
- M01 엔 이 물음 없음(초안 캐시 · [캐시 삭제]만 `M01_MasterData_UI_Page.ts:135`).
|
||||
- 3단추 대화창 이미 있음: `M02\M02_MasterTemplete_TreePanel_Dialogs.ts:187-218` askSettle(저장하고 계속 · 버리고 계속 · 취소) · 지금은 나무 고치기 전(`UI_Main.ts:575-586` settle)에만 · 「저장하고 진행」 선례 `M02\M02_MasterTemplete_AreaToDrawing.ts:211-215`(저장 뒤 isDirty() 로 실패 가림).
|
||||
- 저장 함수: UI_Main doSave(:502) 같은 범위 · 실패면 알림 · 고침 표시 유지 → 저장 뒤 `busy()` 참이면 머묾 · 카드 `cards.saveAll()`(`ItemCards.ts:533-535`) 실패 때 던짐 · 토스트 `CardShell.ts:122-142` · B 편집 doSave(`item_picker_edit.ts:173`) 범위 밖이면 저장 안 함 · 옵션 정의 같은 화면(showView)은 열린 양식 없어 doSave 아무것도 안 함 → 저장 손잡이 따로.
|
||||
- 고칠 자리: `ui\ui_template_elements.ts` showConfirmDialog 옆 3단추 대화창 공용 · `UI_Main.ts` confirmLeave 와 settle 한 몸 · `Structure.ts:255,275` · `ItemCards.ts:464` · `item_picker_edit.ts:208` · showView 저장 인자.
|
||||
- 재사용: askSettle 몸과 글(M02_TreeSaveGo · M02_TreeDiscardGo · M02_TreeCancel) · AreaToDrawing 실패 판정.
|
||||
- ⚠ 이미 있는 버그: settle 이 화면 고침만 봄(`UI_Main.ts:581`) · doSave 는 표 저장 뒤 고침 표시 끄고(:521) 카드 저장(:525) → 카드 저장 실패해도 「changed」로 넘어가 카드 고침 사라짐 → busy() 로 봐야 함.
|
||||
- 주의: 옵션 정의 화면 「저장하고 계속」 말없이 막힘(지금 settle 도) · 브라우저 닫을 때 창(:198-204)은 단추 못 넣음 · 문구 검사 시험 `T\test_m02_card_sheet_edit.py:69` · `T\test_m02_drawing_card.py:49`. 크기: 중간.
|
||||
|
||||
## 2. 좌측 나무 옮길 때 「이미 있는 항목」 막힘
|
||||
- 막는 곳은 서버뿐: `M02\M02_MasterTemplete_Tree.py:171-173` `_taken_item`(409) — 항목 더하기 :247 · 이름 바꾸기 :259 · 옮기기 :276 · 폴더 더하기 :241 · 폴더 이름 :265-268 · 폴더 옮기기 :286 · 여러 개 옮기기 `M02\M02_MasterTemplete_Router_Items.py:235-242`(하나라도 막히면 아무것도 안 씀).
|
||||
- 화면 이름 검사 없음: 끌기(`TreePanel_Drag.ts:27-33`) 제 안으로만 막음 · [옮기기](`TreePanel.ts:483-498`) · 여러 개(:554-568) · 끌어 놓기(:300-318) 모두 apply(:404-441) · 막히면 토스트 「안 됨 — 이미 있는 항목 「…」」(:435-436).
|
||||
- 복사 길은 안 막힘: 붙여넣기 · 「〇〇로 복사…」 · 복사 생성(`TreePanel.ts:527-552,639`) → `/items/paste`(`Router_Items.py:262-280`) → `M02\M02_Item_Paste.py:43-47` `_unique` 가 「이름 (2)」(띄어쓰기 · 2부터) · 폴더 :88-90 · 같은 규칙 한 벌 더 `M02\M02_Item_Personal.py:36-43` `_free_path` → 복사해 붙인 뒤 같은 이름 있는 폴더로 옮길 때 :276 에서 막힘.
|
||||
- 고칠 자리: `Tree.py` 옮기기 갈래(:271-289) 한 곳 — `_taken_item` 대신 `_unique` 로 새 이름 → 끌기 · 메뉴 · 여러 개 한 번에 · 바뀐 이름 토스트 `TreePanel.ts:428` · 재사용 `Item_Paste._unique` 를 Tree.py 로 옮겨 셋이 같이.
|
||||
- 번호 영향 없음: SD · SU · SA 는 열 id 짝 파일로 매김(`Store.py:65-69,221`) · 이름·경로 바뀌어도 그대로(`T\test_m02_tree.py:173-176`) · 복사할 때만 새 열·번호(`M02_MasterTemplete_Items.py:134-184`).
|
||||
- 주의: 더하기 · 이름 바꾸기 겹침 409 시험 있음(`test_m02_tree.py:162-163,179`) · 옮기기 겹침 시험 없음 → 새로. 크기: 작음.
|
||||
|
||||
## 3. 면적산출 알약 줄 「한꺼번에 연결 해제」
|
||||
- 알약 줄 공용 `ss\spreadsheet_links.ts`(renderBar :316-359) · 지금 하나씩: 우클릭 [연결 풀기](:262-292) · ⚠ 알약 [×](:240-248) · 자재 모드 [목록에서 빼기](:279-288) · 모두 put(:168-172) 「시트 통째」 명령(되돌리기 한 번).
|
||||
- 손잡이 `ss\spreadsheet.ts:298-305` setLink(키, 칸|null) → `ss\spreadsheet_link_set.ts:33-71`(시트 여럿이면 「묶음」) · 오른쪽 패널 칸 지정 창 [풀기]가 이 길(`M02\M02_MasterTemplete_AreaLink.ts:110`) · 일위대가 수량 창은 linkAreaCell(:75-91) → 일위대가 [저장] 때 함께.
|
||||
- 연결 정본 = 면적산출 문서 시트 `연결`(설계_정함 :24 · :58) · 해제 뒤 고침 → onChange 고침 표시(면적 상세 `UI_Main.ts:291-294` · 카드 `ItemCards.ts:383-386` · B 편집 `item_picker_edit.ts:120`) · [저장]하면 서버가 일위대가 계산값도 다시(`Store.py:174`) · M02 엔 sessionStorage 캐시 없음.
|
||||
- 고칠 자리: `spreadsheet_links.ts` renderBar 끝 「+ 자재 추가」(:347-355) 자리에 단추 · 읽기 전용 아니고 연결 1개 이상일 때만 · 물음 한 번 뒤 연결 지운 시트 사본들을 「묶음」 한 번(되돌리기 1회) · 모양 `spreadsheet_links.css`.
|
||||
- 주의: 공용 부품이라 면적 상세 · 카드 미리보기 · B05/B06 항목 편집 셋 모두에 단추 → M02 상세만이면 LinkOptions 켜기 칸 · 알약 목록은 남고 칸 연결만 빠짐 → 일위대가 수량 「—」. 크기: 작음.
|
||||
|
||||
## 4. 면적산출 단위에 「파이」
|
||||
- 면적 상세 시트 도구 모음 [단위 ▾] = `ss\spreadsheet_toolbar.ts:65-71`(글 `ss\spreadsheet_text.ts:103-108`) · 지금 값: ㎡ ㎥ m ㎝ ㎜ ㎞ / kg t ℓ ㎖ / 개 본 식 EA 매 / m/s ° % ‰ / × ÷ ± ≤ ≥ Σ · 누르면 칸 글 뒤에 붙임 · 「서식으로」면 형식 코드 끝(:94-98 · :398-420) · 서버 검사·환산 없음 · 일위대가 단위 고르기(`M02\DataFlow\M02_DF_UnitPick.ts` ← `M02\DataFlow\_standard\단위표준.json`)는 별개.
|
||||
- 판단 근거: 자재 규격 Φ 4,277 · Ø 268 · ø 23 · φ 4 · 구조물 글 「관공/Φ800」(`ui\sheet\ui_template_sheet_text.ts:21`) · B05 배수 `Ø{d}`(`ui_template_locale_b2.ts:101`) · π 는 B08 수리 식 설명에만(`B08_Quantity_UI_Hydro_Sheet.ts:201-209`) · 「파이」 글자는 「…파이프」에만 → 관 지름 기호 Φ 로 봄(추정).
|
||||
- 고칠 자리: UNIT_GROUPS 한 글자 · 주의: 지름은 보통 앞(Φ300) · 지금 방식은 뒤만(300Φ) → 앞에 붙이려면 넣는 함수에 갈래 · 시험 없음. 크기: 작음.
|
||||
|
||||
## 5. 일위대가 · 면적산출 상세 오른쪽 패널이 메인 스크롤 따라갔다 돌아옴
|
||||
- 공통 원인: 공용 `ui\ui_template_side_panels.ts:186-223` followView — CSS sticky 대신 JS 로 위치 · 모든 스크롤(capture) · resize · ResizeObserver 때 높이와 `transform: translateY` 재계산 · 패널이 문서 흐름 안이라 브라우저가 스크롤을 먼저 그리면 같이 밀렸다가 JS 가 늦게 되돌림 · sticky 막는 위 칸 `ui\ui_template_workflow_layout.css:132-138` `.ui-workflow-layout__main{overflow:auto}`.
|
||||
- 일위대가 상세: 화면 높이 고정 아님 → 창 전체 스크롤 → 지연이 그대로 보임 · 원문 패널 `M01_MasterData\M01_MasterData_UI_LogicLab_Source.ts:113` `scrollIntoView({block:"center"})` 가 창까지 굴림 → 로직 줄 누를 때 메인이 튐.
|
||||
- 면적산출 상세(추정): 화면 고정 높이(`M02\M02_MasterTemplete_UI_Style.css:138-152`)인데 followView 가 패널 높이를 칸 바닥 +48 까지(:209 · :211 · 커밋 a82275b38) · 처음 CSS 높이 calc(100vh - 80px)(`.css:26`) → 패널이 칸 밑으로 약 30px 삐져나와 메인에 가짜 스크롤 여유 · 휠 · 패널 끝 이어지는 스크롤 · 알약 줄 scrollIntoView(`spreadsheet_links.ts:358`)가 메인을 굴리면 JS 가 다시 맞춤.
|
||||
- 고칠 자리: `ui_template_side_panels.ts` 에 `follow:false` 옵션 → followView 안 부르고 패널이 칸 높이 채움(M01 그대로) · `.css:110-116` 패널 몸 `overscroll-behavior: contain` · 면적 `M02\M02_MasterTemplete_AreaPanel.ts:99` follow:false · 일위대가 `M02\M02_MasterTemplete_Labor_Detail.ts:138` follow:false + UI_Style.css 면적용 고정 높이 규칙(:137-152)을 `.ui-side-panels-row` 에도 · 본문 칸 overflow:auto · 원문 패널 `LogicLab_Source.ts:113` 을 패널 몸 scrollTop 만.
|
||||
- 주의: M01 로직 상세(`M01_MasterData_UI_LogicLab_Side.ts:41`) · 사전조합 수정 창(`Labor_RefEdit.ts:91`)도 같은 부품 · `__main` overflow 바꾸는 길은 B 페이지 전부 영향이라 비권장 · `T\ui_checks\49_오른쪽패널_양식.js` · `51-1_오른쪽패널_높이.js` 기대값 고침. 크기: 중간.
|
||||
|
||||
## 6. 시험
|
||||
- 1번: test_m02_card_sheet_edit · test_m02_drawing_card · test_m02_structure_panel · test_m02_layer_screen · test_m02_area_to_drawing · test_m02_card_shell · test_m02_practice · test_item_picker_detail.
|
||||
- 2번: test_m02_tree · test_m02_tree_paste · test_m02_treepanel(+helper_m02_treepanel.cjs) · test_m02_item_keys · test_item_copy_complete · test_m02_pair_copy.
|
||||
- 3번: test_spreadsheet_set_link · spreadsheet\test_spreadsheet_d_input(+helper_spreadsheet_d.cjs) · test_m02_area_marks · test_m02_area_panel · test_54_29_pick_same_panel · ui_checks\50-1_알약_강조_표시.js · ui_checks\43-1_수량산출_모달.js.
|
||||
- 4번: 없음 · 5번: test_ui_side_panels · ui_checks\ 47-3 · 47-4 · 47-6 · 49 · 49-6 · 50-2 · 50-3 · 51-1 · 그 밖: test_m02_store · test_m02_structure* · test_m02_labor_* · test_m02_combo_* · test_m02_layer*.
|
||||
|
||||
## 미결(조사자 제시)
|
||||
1. 3단추 글(예 「저장하고 넘어감 · 버리고 넘어감 · 취소」) · 기본 초점 취소.
|
||||
2. B 페이지(항목 고르기 편집 · B01 모달 닫기)에도 넣을지.
|
||||
3. 열린 양식 없는 화면(옵션 정의): 저장 손잡이 vs 2단추.
|
||||
4. 옮길 때 이름 겹침: 물어보고 vs 말없이 · 이름 바꾸기 · 더하기도 자동(지금 409 시험 있음).
|
||||
5. 새 이름 꼴: 지금 규칙 「이름 (2)」(띄어쓰기 · 2부터 · 설계_정함 5장 :67) vs 요청 「이름(1)」.
|
||||
6. 일괄 해제 단추 자리(면적 상세만 / 카드 · B 편집까지) · 물음 · 단추 글.
|
||||
7. 「파이」 = Φ · φ · Ø · π · 숫자 앞(Φ300) vs 뒤(300Φ) · 묶음.
|
||||
8. 일위대가 상세를 「본문만 스크롤 + 패널 고정 높이」로 · M01 로직 상세도.
|
||||
@@ -0,0 +1,49 @@
|
||||
# 조사 D — CAD 탭 · 면적↔도면 표 · 도면 불러오기 오류 (10-8 · 읽기 전용 조사 원문)
|
||||
|
||||
결정은 `분석_정함.md` 가 앞섬 · 이 파일은 근거(파일:줄)용. R = 루트 · CAD = `B07_DesignDetail/openwebcad/src` · M02 = `M02_MasterTemplete`
|
||||
|
||||
## 1. CAD 구조
|
||||
- 도면 상태 전역 한 벌: `CAD/state.ts:39`(entities) · :159(layers) · :572(undoStack) · 선택 · 활성 층도 모듈 변수 → iframe 하나에 도면 하나 · 탭 · 여러 문서 · 종이 공간 없음(대신 잠금 층 `b08-frame` · `m02-structure-frame` `state.ts:213-219` · `drawControllers/screenCanvas.drawController.ts:152-163`).
|
||||
- 저장 꼴 `{entities, layers}`(`helpers/import-export-handlers/export-entities-to-json.ts:14-32`) · 읽기 `import-entities-from-json.ts:44-94`(엔티티 11종 · 모르는 type throw).
|
||||
- B07 장마다 파일 `drawings/<id>.json` + manifest(`B07_DesignDetail/B07_DesignDetail_Router_Support.py:417,594-596`) · 여러 장 = 부모 목록 + 이전/다음 한 장씩(`B07_DesignDetail_UI_Page.ts:106,252,277`).
|
||||
- M02 구조물 도면 열마다 파일 `templates/structure/<열>.json` = `{양식, 종류, 판, 열, 도번, 도면:{format, entities, layers}, 연결표[]}`(`M02_MasterTemplete_Api_Fetch.ts:146-161`) · 층 자리 `M02_Template_Layers.py:3-8` · 뼈대 검사 :172-173(`도면.entities` 필수) · 새 문서 `M02_MasterTemplete_Store.py:300`.
|
||||
- 띄우는 곳(모두 iframe `/b07-cad/index.html` · 부모 `ui_template/cad_host/cad_host.ts:109` 한 벌): B07 `B07_DesignDetail_UI_Page.ts:106` · M02 `M02_MasterTemplete_Drawing.ts:143` 경유 — 상세 `M02_MasterTemplete_UI_Main.ts:419-438` · 카드 `M02_MasterTemplete_DrawingCard.ts:67-91` · 면적 패널 `M02_MasterTemplete_AreaDrawing.ts:36-42` · 항목 고르기 `ui_template/ui_template_item_picker_edit.ts:130`.
|
||||
- 주고받기: 같은 출처 postMessage `aislo:b08:*`(CAD 짝 `integration/aislo-drawing-bridge.ts:38-47` · `aislo-table-bridge.ts:16-18`) · 실으면 entities · layers 통째(`bridge:214-220`) · 서버는 부모만(읽기/쓰기 `M02_MasterTemplete_Router_Layers.py:288-314` · DXF 불러오기 · 도각 `M02_MasterTemplete_Router_Drawing.py:56-130`) · CAD 직접 길은 DXF 붙이기 하나(`integration/dxf-clip-paste.ts:24`).
|
||||
|
||||
## 2. CAD 탭(한 구조물 = 여러 장)
|
||||
- (가) 부모(M02) 탭: `M02_MasterTemplete_Drawing.ts` 에 탭 줄 · 탭 바꿀 때 `requestSave` → `load` · `cad_host.ts` 그대로 · B07 이전/다음 길과 같은 꼴 · 자동백업 칸에 탭 id(`M02_MasterTemplete_Drawing.ts:59-64` · `CAD/helpers/autosave.ts:49`). 크기 중간.
|
||||
- (나) CAD 안 탭: `state.ts` 전역 상태를 문서별(엔티티 · 층 · undo · 선택 · 화면 위치 · 백업 칸)로 묶고 탭 UI · bridge 여러 장 · 모든 tools/commands 가 state 직접 읽어 파급 큼. 크기 큼.
|
||||
- 저장 꼴: `도면.entities` 직접 읽는 곳 `M02_Template_Layers.py:172-173` · `M02_Area_Table.py:64` · `AreaToDrawing.ts:244,326` · `DrawingCard.ts:75,132` · `UI_Main.ts:425,507-514` · `AreaDrawing.ts:40` · `ui_template_item_picker_edit.ts:130` → 한 파일 안 `도면`(1장) 두고 `장[]` 덧붙이기가 가장 덜 고침(추정) · 장마다 파일이면 복사 · 개인 복사 · 스냅샷(`M02_Item_Source.py:25` · `M02_Item_Copy.py:50-57` · `M02_Item_Personal.py:25` · `M02_Item_Snapshot.py:112-140`) 다 고침 · 도번 열마다 `SD-` 하나(`Store.py:49-66` · `ItemCards.ts:428` · `ItemList.ts:85,105` · `Items.py:31,76`) · 장 번호 규칙 · 도각 자리표 `{{도면번호}}`(`Router_Drawing.py:50`) · B07 은 M02 구조물 도면 안 읽음.
|
||||
- 위험: 판 = 파일 sha(`M02_Template_Layers.py:123-127`) · 한 장 저장해도 전체 판 바뀜 · 15 MB 도면 여러 장이면 파일 커짐.
|
||||
|
||||
## 3. 면적산출 → 도면 표 보내기
|
||||
- 보내기 `M02_MasterTemplete_AreaToDrawing.ts:209-239` → 서버 변환(`M02_MasterTemplete_Router_Items.py:320` → `M02_Area_Table.py:24-33` → `common_util/common_util_spreadsheet_node.ts:65-143`) → 같은 열 구조물 도면(지금 실린 한 장) 열고 `placeTable` 로 PLACETABLE(놓을 자리 사용자 · :298-319 · `aislo-table-bridge.ts:41-55`).
|
||||
- 표 꼴 `{type:"Table", shapeData:{origin, columnWidths[], rowHeights[], cells[r][c]{text,colSpan,rowSpan,align,key}|null, style{fontSize,fontFamily,textColor,padding,연결}}}`(`CAD/entities/TableEntity.ts:29-46,323-339` · `CAD/helpers/table-geometry.ts:12-29`).
|
||||
- 식별: 표 `style.연결="T1…"` · 문서 맨 위 `연결표[{연결,시트,범위,글자크기,값}]` · 새 id = 안 쓴 가장 작은 T번호(`AreaToDrawing.ts:242-248`) · 도면 열 때 값 다르면 [업데이트] → `updateTable` 로 `연결===link` 표 칸만(크기 그대로 `aislo-table-bridge.ts:29-38` · `TableEntity.ts:102-105`) · 면적 [저장] 때 서버도 갈음(`M02_Area_Table.py:42-84` · 칸 수 바뀌면 크기도 새로 :75-79 → CAD 규칙과 다름) · 도면 저장 때 `withLinks` 는 남은 표만(`AreaToDrawing.ts:322-335`) · COPY 하면 연결 남음(`TableEntity.ts:234-243`) · EXPLODE 하면 선+글로 풀려 끊김(`CAD/tools/modify/modify.helpers.ts:162-184`).
|
||||
- 탭 생기면 깨질 자리: ① 놓을 장 정하는 길 없음 ② `nextId` 가 지금 장만 봐서 T번호 겹침 ③ `withLinks` 가 다른 장 표를 「지운 표」로 봄 ④ CAD 갱신은 실린 장만 ⑤ 서버 `refresh_drawing` 도 `도면.entities` 만 → 연결표 줄에 `장` 칸 + ①~⑤(`AreaToDrawing.ts` · `M02_Area_Table.py` · `aislo-table-bridge.ts`). 크기 중간.
|
||||
|
||||
## 4. 도면 → 엑셀 한 번 옮기기
|
||||
- 표 엔티티: 쉬움 · 면적 시트 붙여넣기가 HTML `<table>`(colspan · rowspan 병합 · 정렬 · 테두리) · TSV 받음(`A00_Common/spreadsheet/spreadsheet_clipboard.ts:340-405` · 붙이기 :463) → CAD 에서 고른 표를 `text/html` + `text/plain` 클립보드로(추정) · 병합 판정 `B07_DesignDetail/B07_DesignDetail_Engine_Frame_Export.py:81-140`(`table_parts`) · `table-geometry.ts:58`(cellOwners) · 칸 읽기 예 `B07_DesignDetail_Engine_Cad_Table.py:232-271`.
|
||||
- 선 · 글로 그린 표: 범용 인식 코드 없음(`Engine_Cad_Table.py:274-292` 는 정해진 id 만) · 필요: 가로·세로 선 x·y 경계를 허용오차로 묶음 → 안쪽 선 빠진 곳 = 병합 → 글 basePoint 를 칸에(`columnEdges` · `rowEdges` · `cellRect`) · 어려움: 불러온 선은 PolyLine 자식 · 끊김 · 겹침 · 회전 · 축척 · TEXT 정렬점 무시(`Frame_Import.py:120-135,171-175`) · MTEXT 여러 줄 · SHX 폭발 글자는 선 · 「1,500」 표시 글 → 값. 크기: 표 엔티티 작음~중간 · 선+글 큼.
|
||||
|
||||
## 5. 도면 불러오기 오류(중력식사방댐)
|
||||
- 파일: `storage/1/10/templates/structure/item1_2.json`(15,371,412 B · 10-08 10:53 · 열 item1_2 · 도번 SD-000010 · 판 1 · 연결표 빔) · 같은 층 `구조물집계표조합.json` `SP10-000010 사방댐/비투과식/중력식사방댐` 줄 → item1_2 · 사용자 10 = 엄상준(`docs/raw/조사/2026-10-06_54-44_새프로젝트.md:18`) · uuid5 이름공간이 `Frame_Import` 와 맞음 → 📂 DXF/DWG 불러오기로 만든 도면.
|
||||
- 실측(저장본엔 「작은 호 반전」 확인 못 함): 맨 위 9,319 = Line 7,146 · PolyLine 1,352(자식 선 22,058) · Point 413 · Text 408 · Arc · Circle 0 · JSON 정상(NaN · null 없음 · 모든 type 받음) · 호는 불러올 때 이미 선분 · 호 모양 사슬 213 — 열림 148(90° 이하 135 · 180° 이하 3 · 270° 이하 10 = 3마디 U자) · 닫힘 65 · 작은 호가 큰 호로 뒤집힌 꼴 0 · 정상 호 예 중심(−2077.82, 517.78) r 3.978 30마디 · (−2079.45, 517.50) r 2.317 39마디 · (−2081.04, 517.10) r 0.742 21마디.
|
||||
- 눈에 띈 것: 불러온 그대로인 PolyLine 107 이 도각(0~841) 밖 x −2158.6~−2078.2 · y 516.4~528.4(화면맞춤이 도각 기준이라 안 보임) · 나머지 9,212 는 CAD 가 새로 만든 것(uuid4 · 색 #fff · 층 b08-frame) — MOVE/SCALE 가 clone 으로 갈아 끼우며 DXF 색 · 층 버림(`CAD/tools/move-tool.ts:214,252-259` · `CAD/entities/LineEntity.ts:78-80`).
|
||||
- 반전 날 수 있는 코드: 불러오기 `B07_DesignDetail/B07_DesignDetail_Engine_Frame_Import.py` — :150-156 LWPOLYLINE `get_points("xy")` · POLYLINE `location` 이 bulge 버림(호 → 직선) · OCS 좌표 그대로(압출 (0,0,−1)이면 x 뒤집혀 놓임 · 거울 블록을 `virtual_entities` 로 풀면 흔함 · 추정) · ARC/CIRCLE 은 `flattening` 이 WCS 로(:157-162) → 같은 블록 안 호와 폴리선이 어긋나 「호 반전」처럼 보일 수 있음(추정) · :171-175 TEXT OCS 그대로 · 정렬점 무시 · :185-193 INSERT 한 겹만(속 INSERT :182 버림) · 단위 변환 없음(:14) · ezdxf 1.4.4(requirements 버전 고정 없음).
|
||||
- CAD(Arc 있는 다른 도면): `CAD/entities/ArcEntity.ts:88-98` mirror 가 축 각도 무시(세로축 대칭이면 호 뒤집힘) · :32-34 getAngle `Line.slope`(±π 모호 → TRIM/BREAK :186-212 추정) · :63-64 `endAngle || 2π`(끝각 0 → 2π).
|
||||
- 내보내기: `B07_DesignDetail_Engine_Frame_Export.py:195-204` `add_arc` 가 counterClockwise 무시(시계방향 작은 호 → DXF 큰 호) · `CAD/drawControllers/svg.drawController.ts:181-195` 각 부호 안 뒤집음(화면판 `screenCanvas.drawController.ts:478-479` 은 뒤집음) → SVG/PNG 작은 호가 대칭된 큰 호(추정).
|
||||
- SVG 가져오기 `CAD/helpers/convert-svg-path-to-line-segments.ts` — :106-112 반지름 키운 뒤 :135-136 · 155-158 원래 rx·ry · :150 r < 0.25 면 NaN(호 사라짐) · :184 붙여 쓴 플래그(`0110`) 못 가름.
|
||||
- 고칠 자리: `Frame_Import._convert_entity` 한 곳 · 재사용 ezdxf `ezdxf.path.make_path(e).flattening(0.2)`(bulge · OCS→WCS) · TEXT `ocs().to_wcs()` · `get_placement()` · 위험: 저장본은 이미 선으로 펴지고 옮겨져 코드 고쳐도 이 파일 안 바뀜(원본으로 다시 불러와야) · 원본 DXF/DWG 저장소에 없음 · 15 MB · 선 약 3만이라 불러오기 감시 시계 15 s(`cad_host.ts:148-149`) 넘을 수 있음(추정). 크기: 불러오기 작음~중간 · Arc mirror / 내보내기 ccw 각각 작음.
|
||||
|
||||
## 6. 시험
|
||||
- `resources/tester/cad/`: geometry · table · grips · dxf-clip · block-library · origin-marker · theme-auto-color · random-uuid-polyfill(`.test.ts`).
|
||||
- `resources/tester/`: test_b07_dxf_clip · test_b07_frame_export_table · helper_b07_table_geometry.cjs · test_m02_router_drawing · test_m02_drawing_card · test_m02_drawing_area · test_m02_area_to_drawing · test_m02_area_table · test_m02_area_panel · test_m02_area_marks · test_m02_structure*(8) · test_m02_template_layers · test_sheet_drawing_select · test_cad_rect_harvest.mjs · `ui_checks/` 43-6_도면표_선색 · 47-6_면적_도면패널 · 44-8_CAD_한글입력.
|
||||
- CAD 안: `CAD/entities/ArcEntity.test.ts` · `CAD/integration/aislo-table-bridge.test.ts` · `CAD/helpers/import-export-handlers/group-id-roundtrip.test.ts` · 빈 곳: DXF 불러오기 ARC · bulge · OCS(압출 −Z) · 중첩 블록 시험 없음.
|
||||
|
||||
## 미결(조사자 제시)
|
||||
1. 탭을 CAD 안(큼) vs M02 부모(중간) · B07 에도.
|
||||
2. 여러 장 저장: 한 파일 `장[]`(추정 권장) vs 장마다 파일 · 장 도번(예 SD-000010-2) · `{{도면번호}}`.
|
||||
3. 면적→도면 표 놓을 장 고르기 · 안 열린 장 표 갱신을 서버가.
|
||||
4. 도면→엑셀: 1단계(표 엔티티 · 클립보드) vs 선+글 인식까지 · 붙일 자리 새 시트 vs 고른 칸.
|
||||
5. 사방댐: 원본 파일 받아 재현 · 고친 뒤 다시 불러오기 · 도각 밖 107 지우기 · MOVE 때 색 · 층 사라지는 문제.
|
||||
@@ -0,0 +1,68 @@
|
||||
# 조사 E — B05/B06 노면공 구조물군 (10-8 · 읽기 전용 조사 원문)
|
||||
|
||||
결정은 `분석_정함.md` 가 앞섬 · 이 파일은 근거(파일:줄)용 · 경로는 루트 기준.
|
||||
|
||||
요약: 시작·종료 측점 길은 이미 있음 — 정의 파일에서 노면공 길이·전·후 세 칸을 빼면 그 길로 넘어가고 저장 꼴도 그대로. 막히는 곳 셋: ① M02 구조물집계표가 옛 `length_m` 을 먼저 읽음 ② 구조물 `height_m` · `pave_spec` 을 그리기에서 아무도 안 읽음 ③ 범위로 포장을 켜는 판정이 서버에만 있음.
|
||||
|
||||
## 1. 정의 · 패널 화면 구성
|
||||
- 종류: G군에서 켜진 것 `pavement_concrete`(콘크리트 포장) 하나 · `gravel_surfacing`(쇄석 포설)은 꺼져 B06 목록에만(`B06_Section_UI_Page_Structures_Panel.ts:341`).
|
||||
- 정의 옵션(`resources/master_template/구조물정의.json:3164-3266`): `length_m` 10 · `before_m` 5 · `after_m` 5(phase 없어 B05 칸) · 옛 상세 6칸(`thickness_cm` · `width_m` · `widening_area_m2` · `joint_spacing_m` · `separation_sheet` · `wire_mesh`) · 동작 「포장_물넘이_겹침」(:3517-3521) · 「그룹」 없음.
|
||||
- 명세(`A00_Common/design/design_structure_road.ts:18-47`): 필수 컨테이너 「상세 내용」(link `gpavedetail`) 안 포장사양(`pave_spec` · 선택지 「콘크리트」 하나) · 높이(`height_m` 0.05 단위) · 옛 6칸 retired · 등록 `design_structure_pipe.ts:99-106`.
|
||||
- M02 StructOptions: 노면공 전용 코드 없음(공통 — 이름 바꾸기 `M02_SO_Def_Spec.ts` · 기준측점 켬/끔 `M02_SO_Def.ts:213` · 옵션 보이기).
|
||||
- 화면 차례(`B05_Profile/B05_Profile_UI_Structures_Form.ts:170-181`): 상세내용 밖 = [구조물군·종류] → 「측점 범위」(계산 표시만 `Panel.ts:153-167`) + 「기준 측점」 → 구분선 → 옵션 칸(길이 · 기준측점 전 · 후 맞물림 `Panel_Options.ts:145-160`) / 안 = 포장사양 · 높이 · 「구조물 조합」 잇기 / 아래 메모 · [추가/삭제/리셋] · B06 은 [횡단 조정].
|
||||
- 범위 계산 길로 가는 까닭: `hasComputedRange`(`Panel_Types.ts:215-222`)가 `length_m` 이 B05 칸이면 참 → 시작·종료 칸 숨김(`Panel.ts:227-244`).
|
||||
- 고칠 자리: `구조물정의.json` 노면공 length/before/after 뺌 → 시작·종료 직접 받는 길(`Panel_Commit.ts:309-322`) 자동 · `design_structure_road.ts` retired 에 세 키 + 포장사양 다음 `{id:"length", kind:"auto"}` · `B05_Profile_UI_Structures_Spec.ts:28-47` 시작·종료로 길이 셈 `auto` 훅 · 측점 바뀌면 다시 그림 · 상세내용 안으로 = 시작·종료 칸(`startFields`/`endFields.wrap`)을 `form.slot("detail")` 또는 `hooks.fields` 로(`design_structure_form.ts:245-257`).
|
||||
- 재사용: 관 길이 자동 칸 `design_structure_pipe.ts:50` + `B05_Profile_UI_Drainage_Facility.ts:351-355` · slot 으로 옮기는 길 `B06_Section_UI_Page_Structures_Panel.ts:318-331`.
|
||||
- 주의: slot 은 컨테이너 끝에 붙음(앞에 두려면 새 훅) · 정의 그룹 상자 칸 옮기기는 명세 종류에서 꺼짐(`B05_Profile_UI_Structures_Groups.ts:120`) · 기준 측점 숨기면 숨은 칸 옛 값이 범위 밖일 때 focus 하고 조용히 멈춤(`Commit.ts:317-322` 추정) · `hasComputedRange` 는 enabled 안 봄 → M02 에서 길이만 「안 씀」이면 [추가] 막힘(추정). 크기: 중간.
|
||||
|
||||
## 2. 저장 꼴 · 영향
|
||||
- 지금 저장(`B05_Profile_UI_Structures_Panel_Commit.ts:285-308` · :340-371): `{type_id, placement:"interval", chainage_m(기준), start_m=기준−전, end_m=시작+길이, options{length_m,before_m,after_m,pave_spec,height_m,옛 키…}, group_items{gpavedetail}, …}` · 스키마(`B05_Profile_Structures_Schema.py:226-244`) 구간형 start/end 필수 · 기준은 범위 안 · 비면 시점 · 저장소(`B05_Profile_Structures_Repository.py:199-202`) 정의 밖 키 그대로 · 지문에 options(:151-168) → 바뀌면 B06 이후 STALE.
|
||||
- 서버: start_m/end_m 이미 있어 schema · repository · router 고칠 것 없음 · 세 키만 찌꺼기.
|
||||
- ⚠ M02 구조물집계표: `M02_Table_Fill.py:196-201` `_length` 가 `options.length_m` 을 구간보다 먼저 읽음 · [수정] 병합은 안 그린 키를 지킴(`B05_Profile_UI_Structures_Summary.ts:19-29`) → 시작·종료만 고치면 집계 길이 옛 값 · 이미 있는 결함(물넘이 조각마다 length_m 복사 `Commit.ts:363-371`).
|
||||
- B05 종단: 띠 start~end(`B05_Profile_UI_Structures_Marks.ts:171-186`) · 알약 chainage_m(:161) · 목록 start~end(`List.ts:54-57`) → 기준 없애면 알약이 시점으로.
|
||||
- B06 카드: 포장 켜기 `pavement_ranges`(`B06_Section_Router_Design.py:52-80`) · 경계 `paved_at`(:113-118) · 카드 고름 `coversChainage`(`design_selection.ts:65-74`) — 셋 다 start/end → 안 바뀜.
|
||||
- B07: `B07_DesignDetail_Cross_Overlay.ts:417-418` 같은 함수 · CAD 도면도 이 오버레이 수확 → 따라옴.
|
||||
- B08: 포장 수량식은 `tmp/old_code`(PLAN 7-3)로 옮겨져 안 돎 · 시험 conftest `collect_ignore` · 지금 B08 집계 줄은 `chainage_m ?? start_m`(`B08_Quantity_Summary_Data.ts:46`).
|
||||
- migration 무관 · 세 키 정리 따로(저장 때 지움 또는 `_length` 가 구간형은 start~end 먼저) · 초기값 무관(`common_util_initial_snapshot.py:38-43` · 자동설계 체인은 structures.json 안 만듦 :246).
|
||||
- 그 밖: 물넘이 겹침 안내 문구 「기준 측점·길이·전후」(`B05_Profile_UI_Structures_Pavement.ts:57`) · 우클릭 추가 기본 구간 15 m(`Panel_Types.ts:85` · `Panel.ts:651-654`). 크기: 작음.
|
||||
|
||||
## 3. 범위형 선례
|
||||
- C군 벽(흙막이 · 옹벽 · 돌쌓기): 서버 `B06_Section_Engine_Structures_Wall.py:93-121` 구간 안 측점(±0.02 m)에 `section.revetment` 얹음(호출 `B06_Section_Router.py:276` · :499) · 브라우저 짝 `common_util/common_util_structure_walls.ts`(`wallSpecsFrom`:74 · `attachWallSpecs`:109) · 미저장 초안 `B06_Section_Section_Store.ts:57-86` `withDraftWalls` · 거울 시험 `test_b06_structure_walls_mirror.py`.
|
||||
- 물넘이포장: 월류 폭 절반 안 모든 카드(서버 `B06_Section_Engine_Culvert.py:61` · :613-615 · 짝 `common_util_culvert_sets.ts:37` · :500).
|
||||
- 시작·종료 직접 입력 UI: B군 측구 · 도수로 등(`Panel.ts:227-236` · `Commit.ts:309-322`).
|
||||
- 확폭 보간: `_widening` · `_widening_at` · `pavement_from_designs`(`tmp/old_code/B08_Quantity/B08_Quantity_Engine_UnitQuantity_Pavement.py:53-104`).
|
||||
|
||||
## 4. 횡단 형상
|
||||
- 카드가 포장이면 `appendPavementOverlay`(`B06_Section_UI_Cross_Design_Surface.ts:32-54`) — 차도 끝(확폭 포함)에서 노면 아래로 두께만큼 단색 사각형 · 두께 = 표준 횡단면 「포장」 값(기본 0.2 · `B06_Section_Engine_Design.py:115-117` · :518-519) · 구조물 `height_m` · `pave_spec` 은 아무도 안 읽음 · 물넘이 자리는 빗금 판 · 일반 포장 건너뜀(`B06_Section_UI_Cross_View.ts:422-432`) · 포장 여부 = 카드 포장/비포장 토글(`B06_Section_UI_Cross_Design.ts:446-447`) · 서버는 [저장]·[확정] 때 범위 안 카드를 포장으로 강제(`B06_Section_Server_Calc_Prebuild.py:172-197` → `Router_Design.py:175-227` · 켜기만 :194 · 브라우저 짝 없음 → 저장 전 범위는 카드에 안 보임).
|
||||
- 넣을 자리: 그리기 `Cross_Design_Surface.ts`(호출 `Cross_View.ts:432` · `B07_DesignDetail_Cross_Overlay.ts:418`) · 카드별 값(사양 · 높이 · 확폭 켬)은 C군 벽처럼 `section.pavement` 로(서버 `B06_Section_Router.py:276` · :499 옆 · 브라우저 초안 `withDraftWalls` 옆 · 타입 `B06_Section_Api_Types.ts:304-319`).
|
||||
- 재사용: 빗금 `B06_Section_UI_Cross_Ford_Pavement.ts:147-172`(SVG pattern · id 일련번호) · 종류→무늬 `B06_Section_UI_Cross_Wall_Hatch.ts:34-45` `hatchOfForm`(`appendWallHatch` 는 벽 띠 좌표틀이라 포장 판엔 안 맞음).
|
||||
- 세월교 포장 관계: 물넘이포장(pipe_points 정본)은 노면을 파고 바닥 아래로 두께 · 노면공과 겹치면 B05 저장 때 앞·뒤로 나눔(`Pavement.ts:41-78`) · 카드에선 물넘이가 이김 · 세월교는 노면 하강만.
|
||||
- 주의: 두께 정본 둘(`height_m` vs `pavement_thickness_m`) · B07 CAD 수확이 pattern 채움을 옮기는지 모름(추정) · 경계 허용치 다름(`paved_at` ±1e-9 · 벽 ±0.02). 크기: 큼.
|
||||
|
||||
## 5. 확폭
|
||||
- 원천: 노선 곡선표 `…_curves.json`(`B05_Profile_Engine_Sections.py:76-95`) → `_design_curve_widenings`(`B05_Profile_Engine_Sections_Core.py:278-310` · 표 · 테이퍼 10 m · 상한 5 m `config/config_system_design.py:464-492`) → 측점마다 `curve_widening_m` · `plan_radius_m` · `curve_outer_side`(:464) → 횡단 설계 `Engine_Design.py:249-263` ↔ `common_util_cross_design.ts:333-346` → `design.widening_left_m/right_m` · `carriageway_standard_width_m` · `carriageway_edges`(확폭 포함 · `Engine_Design.py:423-457`).
|
||||
- 범위 안 확폭 측점: start ≤ chainage ≤ end · 확폭 좌+우 > 0 · 브라우저 자료 `design_structure_pipe_calc.ts:17-21` sectionsSource(종단 `design_view_profile.ts:198` · 횡단 `design_view_cross.ts:107` 이 걸어 둠 · 비공개라 getter 필요).
|
||||
- 규격 폭만 그리기: 노면 한 방향 직선 경사(`common_util_cross_design_geometry.ts:238-240`) · 좌 끝 = `left.offset−widening_left` · 우 끝 = `right.offset+widening_right` · 표고는 두 차도 끝 사이 선형 보간.
|
||||
- 화면 자리: `B05_Profile_UI_Structures_Form.ts:170-181` 명세 폼 바로 다음 새 상자(`group()` · `stationLabel`).
|
||||
- 저장 제안: 그 포장 항목 structures.json `options`(사용자 고른 값 · 횡단 patch 아님 · 정의 밖 키 통과) · 예 `widening_off_m: "120,140"`(끈 측점 목록 · 기본 전부 켬) 또는 전체 한 값.
|
||||
- 주의: 노선 [확인] · 재생성으로 측점 바뀌면 키 고아 · 횡단 자료 없으면 단추 못 그림 · 테이퍼 측점도 확폭 > 0. 크기: 중간.
|
||||
|
||||
## 6. 계산 자리
|
||||
- 범위 → 포장 켜기: ③ 서버 단독(Python) · 브라우저 짝 없음(「조작 중은 브라우저가 같은 코드로 즉시」에 어긋남) · 차도·확폭·두께 기하: ① 짝(`B06_Section_Engine_Design.py` ↔ `common_util_cross_design.ts` · `test_b06_cross_design_mirror.py`) · 그리기 · B07 도면: TS 만 · 시작/종료 셈 · 물넘이 겹침 나눔: TS 패널만 · M02 구조물집계표: 서버 Python 단독 · 권장: 카드별 포장 얹기는 C군 벽 선례대로 ① 짝 + 거울 시험.
|
||||
|
||||
## 7. 시험
|
||||
- 노면공 명세: `test_52_10_structure_spec_road.py`(옵션 앞 세 키 = length/before/after · 「length_m 은 retired 아님」 단언 → 바꾸면 깨짐) · `helper_52_structure_spec.cjs` · `ui_checks/52-10_노면공_기타.js`(길이·전·후 칸 보임 기대 → 깨짐) · `ui_checks/53-1_횡단_고르기.js`(길이 10 입력) · `ui_checks/52-15_같은측점_고르기.js`.
|
||||
- B06 포장: `test_b06_pavement_and_ford.py` · `test_b06_recompute_keeps_user_values.py` · `test_user_values_survive.py` · `test_b06_design_key_split.py`.
|
||||
- 등록부 · 측점 · 집계: `test_b05_structures_registry_policy.py` · `test_b05_extra_stations_supplier.py`(G군은 측점 안 심음) · `test_m02_table_fill.py`.
|
||||
- 범위 · 확폭: `test_b06_structure_walls_mirror.py` · `test_b06_cross_design_mirror.py` · `test_b06_curve_widening.py`/`.mjs` · `test_77_recommend_widening.py`.
|
||||
- 물넘이 · 세월교: `test_52_3_structure_spec_ford_pavement.py` · `test_b06_ford_pavement_slope.py` · 안 돎: `test_b08_pavement_concrete_unit.py`.
|
||||
|
||||
## 미결(조사자 제시)
|
||||
1. 시작·종료 칸 자리: 위쪽 위치 줄(B군 구간형 길) vs 「상세 내용」 안(포장사양 앞/뒤).
|
||||
2. 기준 측점(알약 자리) 남길지 · 없애면 알약 시점 vs 가운데.
|
||||
3. 「노면 바닥 기준 높이」 방향: 노면 위로(계획고 = 포장면?) vs 아래로(지금 그림) · 두께 정본 `height_m` vs 표준 0.2 · 토공 면적 반영.
|
||||
4. 포장사양 선택지 늘릴지(지금 콘크리트 하나) · 종류별 채움 무늬.
|
||||
5. 확폭 단추 단위: 측점별 · 곡선별 · 전체 한 단추 · 저장 키 · 노선 바뀔 때.
|
||||
6. 옛 `length_m` · `before_m` · `after_m` 정리: 저장 때 지움 vs M02 `_length` 가 구간 먼저.
|
||||
7. 범위 줄이거나 지운 뒤 이미 포장으로 저장된 측점 되돌릴지(지금 켜기만).
|
||||
8. 저장 전 범위를 카드에 바로 보일지(① 짝 도입) · 물넘이 겹침 나눔 유지 · 문구.
|
||||
@@ -0,0 +1,58 @@
|
||||
# 조사 F — 세월교 · 박스암거 · 관보호공 횡단 (10-8 · 읽기 전용 조사 원문)
|
||||
|
||||
결정은 `분석_정함.md` 가 앞섬 · 이 파일은 근거(파일:줄)용.
|
||||
|
||||
파일 약칭: FG `B06_Section/B06_Section_UI_Cross_Ford_Geom.ts` · FD `B06_Section_UI_Cross_Ford.ts` · BG `B06_Section_UI_Cross_Body_Guard.ts` · BS `B06_Section_UI_Cross_Culvert_Basin.ts` · EX `B06_Section_UI_Cross_Culvert_Extra.ts` · TI `B06_Section_UI_Cross_Culvert_Tiers.ts` · CG `B06_Section_UI_Cross_Culvert_Geom.ts` · SV `B06_Section_UI_Cross_Culvert_Solve.ts` · CC `B06_Section_UI_Cross_Culvert_Const.ts` · BX `B06_Section_UI_Cross_Box_Geom.ts` · BD `B06_Section_UI_Cross_Box.ts` · VW `B06_Section_UI_Cross_View.ts` · AD `B06_Section_UI_Adjust_Dock.ts` · PO `B06_Section_UI_Page_Pipe_Options.ts` · SL `B06_Section_Structure_Layouts.ts` · EC `B06_Section_Engine_Culvert.py` · GD `A00_Common/design/design_structure_guard.ts` · SF `A00_Common/design/design_structure_form.ts` · PC `A00_Common/design/design_structure_pipe_calc.ts` · DF `B05_Profile/B05_Profile_UI_Drainage_Facility.ts` · RC `B05_Profile/B05_Profile_UI_Drainage_Revet_Choice.ts` · MG `B05_Profile/B05_Profile_UI_Drainage_Facility_Merge.ts` · CR `B05_Profile/B05_Profile_UI_Corridor_Structures.ts` · CS `common_util/common_util_culvert_sets.ts` · NB `common_util/common_util_node_bundle.py` · MT `M02_MasterTemplete/M02_Table_Fill_Spec.py` · DJ `resources/master_template/구조물정의.json` · T `resources/tester/`
|
||||
|
||||
## 1. 세월교 하단부가 원지반에 묶임
|
||||
- 묶인 자리 한 곳: FG:153-160 `bedElevation` = 두 노견 사이 원지반 최저점 → FG:170-176 바닥판 상면(관 바닥 높이) · ㄴ형 측벽 높이.
|
||||
- 손 높이(`ford_adjust.heightM`)는 자료에만 있고 칸 없음 — 65-1 에서 높이 줄을 날개벽 칸으로 안 옮김(AD:68-74) · test_65:150-152 가 고정.
|
||||
- 따라오는 곳: 흙막이 기본 높이(BG:83-95) · 3D(CR:201-212) · 서버 면적(SL:119-125). 바닥판 끝 절·성토 마감선(BS:326-354)은 원지반을 읽기만 함.
|
||||
- 고칠 자리: FG:153-171 한 곳 · 나머지 자동.
|
||||
- 기본값 후보: ① 관경 + 토피 0.5 m(지금 하한 `minWallHeight` FG:107-109 · 근거 별표2 「복토 50㎝ 이상」 CC:10-14 · 박스 상판 = 노면 − 0.5 BX:133 과 같은 규칙) ② 지금처럼 하상값 기본 + 손 조정 칸 되살림(FG:34 「바닥판이 계류 하상」 08-25 확정 · 박스 `riseM` BX:136 과 같은 꼴).
|
||||
- 위험: 모든 세월교 기하 · 흙막이 기본 높이 · 절성토 면적 바뀜 · [저장] 때 서버 재계산 → B08 수량도 바뀜 · ①은 깊은 계곡에서 바닥판이 하상 위로 뜸. 크기: 규칙만 작음 · 손 조정 칸까지 중간.
|
||||
|
||||
## 2. 유입부 수평공간 → 절토
|
||||
- 수평공간 칸은 구조가 「흙막이」일 때만(GD:91-98) · TI:87-94 `cutBerm`(빈칸 1 m · CC:193-195) → EX:429-430 → `bermCut`(EX:57-97) 수평 → 절토.
|
||||
- 시작 높이가 본체 바닥이 아니라 「흙막이 벽 바닥 + 0.5」(CG:597-602 · EX:413-418) → 세월교는 바닥판 상면보다 약 0.2 m · 박스는 저판 상면보다 약 0.8 m 위에서 시작(추정).
|
||||
- 「날개벽 · 없음」에는 수평공간 없음 — 세월교 BS:340-348 · 박스 BX:174-181 바닥 끝 → 바로 절토.
|
||||
- 고칠 자리: (가) 흙막이 쪽 시작 높이를 본체 바닥으로 CG:597-602(본체 바닥 = `BodyEnd.invert` BG:30-38 · 박스는 저판 밑면이라 저판 두께 더함 BG:68). (나) 날개벽·없음 쪽에 넣으려면 BS:330-348 · BX:172-181 에 `bermCut` 끼움 · 절토선 두 점 → 그리는 쪽도(FD:140-142 · BD:137-141) · 값 자리는 세트 짝 EC `_ford_set`/`_box_set`(411-539) ↔ CS `fordSet`/`boxSet`(336-444) 에 칸 · GD:97 표시 조건 넓힘.
|
||||
- 재사용: `bermCut`(EX:57 · 원지반 교차 보간 · 수평공간 안에서 지반 만나면 끝 · 지금 export 안 함).
|
||||
- 주의: 흙막이 쪽 절토선만 면적에 들어감(CG:635-645) · 날개벽·없음 끝선은 면적 밖(FG:305-312). 크기: (가) 작음 · (나) 중간.
|
||||
|
||||
## 3. 흙막이 적용 때 관이 튀어나감
|
||||
- 원인(추정): BG:240-253 이 관 끝 자리를 관 바닥 높이 한 점에서만 재고(`front`) 위·아래 꼭짓점을 그 자리에 수직으로 맞춤 · 흙막이 전면은 1:n 으로 기울어 위로 갈수록 도로 쪽으로 물러남 → 관 윗모서리가 「기울기 × 관경」만큼 벽 밖(1:0.3 × Ø1.0 = 0.3 m).
|
||||
- 관보호공의 「흙막이 사면 이용」: 관 끝단면을 벽 전면 변 그대로 복사(CG:395-402) · `pipeAxisSolver.corners`(SV:442-472) 가 관 축과 전면 사면 교점으로 꼭짓점을 자름 · 같은 식 한 줄 판 TI:32-40 · BG:246-247.
|
||||
- 고칠 자리: BG:240-253 — 꼭짓점마다 그 높이의 전면 자리로 `faceAt(z) = wall.points[2].offset + outward·lean·(topJoint.z − z)` · 아래 꼭짓점 그대로라 1 m 맞춤(BG:147-170) · test_80 영향 없음.
|
||||
- 주의: 3D(CR:449-478)는 이 함수를 안 거침(80장부터의 차이). 크기: 작음.
|
||||
|
||||
## 4. 세월교 배관 선택 영역
|
||||
- 본체 판정면 = 바닥판(두께 0.3) · 관 외곽뿐(FD:147-156) · 관 위 성토 · 벽-관 사이는 안 잡힘 · 측벽 판정면 = ㄴ 감싸는 사각형(FD:157-177) · 흙막이 쪽은 측벽이 걷혀 건너뜀(BG:237-239) · 흙막이 벽은 배관 오버레이가 잡음(VW:541-554).
|
||||
- 고칠 자리: FD:149 두 판정면 → 사각형 하나(가로 = 두 측벽 판정면 안쪽 변까지 · 흙막이 쪽은 바닥판 끝까지 / 세로 = 바닥판 밑 ~ 측벽 상단 최고) · 측벽 판정면을 뒤에 얹으면 겹친 곳은 측벽·흙막이가 가져감.
|
||||
- 재사용: 박스 `band()`(BD:166-183). 위험: 그 밑 면적 밴드 클릭이 막힘(FD:39-40). 크기: 작음.
|
||||
|
||||
## 5. 유출 수평공간 없애기
|
||||
- GD:87-100 이 유입·유출 둘 다 칸 · 기하도 유출까지 씀(TI:98) · 세트 짝 EC:332-334 ↔ CS:217-220 양쪽 다 실음.
|
||||
- 고칠 자리: GD:87 유입일 때만 칸 · TI:98 유출 수평공간 0(또는 옛 3° 선 EX:431-444) · DJ:3421 · 3492 「outlet.berm」 이름 줄 삭제 · (선택) EC:332 · CS:219 유입만 · MG:46 · 64 목록 정리.
|
||||
- 저장값: 흙막이 고를 때 기본 "1" 이 실제 값으로 적히는 듯(GD:96 · 추정) → `outlet_revet_berm_m` 많을 수 있음 · MG 목록에 남기면 다음 [저장] 때 폼이 안 보내 지워짐(MG:11-12) · 유출 끝이 원지반에 묻힌 측점은 선 · 면적 바뀜.
|
||||
- 시험 수정: test_65:31-39 · 55-58 · test_79:79-87 · helper_79:149-155. 크기: 작음.
|
||||
|
||||
## 6. 유출 = 관보호공 유출과 같게(단 수) · 「+ 흙막이」 단추 없앰
|
||||
- 관보호공: 유출 상자 안 「추가 흙막이(단)」 스테퍼(DF:298-317) → `setPipeExtraCount`(PC:40-44) → 횡단 단 수 · 흙막이 상자 수는 지형이 세운 단 수(PC:81-90) · `count` 훅(DF:357)으로 [추가]/[빼기] 숨음(SF:268 · 316).
|
||||
- 세월교 · 박스: 폼(DF:410-416 · 471-477)에 `count` 없음 → 「+ 흙막이」 단추(SF:316-329) 보임 · 방향 반대(상자 수가 단 수를 정함 PO:145-151 · `soilCount` PO:193-199) · 단별 형태·높이·구간 코드(PO:211-262)는 배관과 공용.
|
||||
- 고칠 자리: ① 배관 스테퍼(DF:298-317) → RC 로 공용화 · `guardChoiceFields`(RC:59-73) 유출 칸에 붙임 ② 세월교·박스 폼에 `count` 훅 ③ 반대 방향 길(PO:145-151 · 193-199) 지움 ④ AD:180-187 다단 벽 고를 때 흙막이 상자로 가는 조건에 세월교·박스 칸 ⑤ MT:80-87 집계표가 단 수로 상자 자르는 것을 세월교·박스도(안 하면 숨긴 상자까지 셈).
|
||||
- 이관: 상자 값 키(`soil_add_{n}_*`) 그대로 · B06 거친 자료는 PO:146-151 이 이미 상자 수를 단 수로 써 둠(추정) · 어긋남 = 유출이 날개벽·없음인데 상자 있음 → 단 수 0(세트 없으면 「모름」)이라 상자 숨음(값은 파일에 남음 SF:303-306).
|
||||
- 시험 수정: test_65:136-147(「세월교 상자는 단 수와 무관」 고정) · test_54_27 · test_54_10. 크기: 중간.
|
||||
|
||||
## 7. 서버 짝 · 시험
|
||||
- 파이썬은 세트 칸만: `_guard_set`(EC:322-348) ↔ `guardSet`(CS:210-237) · `_ford_set`/`_box_set` ↔ `fordSet`/`boxSet` · 짝 검사 `test_b06_culvert_sets_mirror` · 기하·면적은 같은 TS 를 Node 번들로(SL:92-130 · TS 바뀌면 번들 자동 재빌드 NB:42-61 · 102-107) → 1 · 2 · 3 · 5 는 서버 면적 자동 · 6 만 MT(파이썬) 직접.
|
||||
- 시험: test_80_ford_pipe · test_79_guard_shape · test_73_4_body_guard(helper_*.cjs) · test_65_ford_defaults(+helper_65_ford_box) · test_52_4_structure_spec_ford · test_52_structure_spec_box · test_54_10_soil_tiers · test_54_27_soil_tier_field · test_52_1b_pipe_links · test_ford_wall_vertical.mjs · test_ford_surface_drop · test_b06_ford_set · test_b06_box_set · test_b06_box_thickness_registry · test_b06_pavement_and_ford · test_b06_culvert_set · test_b06_culvert_sets_mirror · test_b06_pipe_length · test_b06_server_calc_node.mjs · test_user_values_survive · test_b08_extra_walls · test_b06_extra_shift_floor · test_b06_wall_body_in_fill · test_b08_wing_wall · (제외: test_b08_box_culvert_unit 옛 모듈로 이미 깨짐 · probe_berm_infinite 무관).
|
||||
|
||||
## 미결(조사자 제시)
|
||||
1. 세월교 바닥 기본값: 관경 + 토피 0.5 m vs 하상값 + 손 조정 칸.
|
||||
2. 유입 수평공간을 날개벽·없음에도 둘지 · 시작 높이 = 본체 바닥(세월교 바닥판 상면 · 박스 저판 상면)이 맞는지.
|
||||
3. 날개벽·없음 쪽 끝 절토선도 면적에 넣을지.
|
||||
4. 유출 끝이 원지반에 묻힐 때: 바로 절토(수평공간 0) vs 옛 3° 선.
|
||||
5. 유출이 날개벽·없음인 세월교·박스에 이미 있는 흙막이 상자: 숨기고 집계표에서도 뺄지 vs 본체 끝에서 단 세우기(큰 작업).
|
||||
6. 배관 선택 영역 위 끝 = 측벽 상단(노면)까지 · 그 안 면적 밴드 클릭 막혀도 되는지.
|
||||
7. 저장된 `outlet_revet_berm_m` 다음 저장 때 지울지.
|
||||
@@ -0,0 +1,65 @@
|
||||
# 조사 G — 공통 흙막이 제약 · 도수로/돌붙임 · 유출측 복합경사 (10-8 · 읽기 전용 조사 원문)
|
||||
|
||||
결정은 `분석_정함.md` 가 앞섬 · 이 파일은 근거(파일:줄)용.
|
||||
|
||||
약어: W `B06_Section/B06_Section_UI_Cross_Wall.ts` · WH `…_Cross_Wall_Hatch.ts` · G `…_Cross_Culvert_Geom.ts` · S `…_Culvert_Solve.ts` · E `…_Culvert_Extra.ts` · T `…_Culvert_Tiers.ts` · BS `…_Culvert_Basin.ts` · BG `…_Cross_Body_Guard.ts` · BX `…_Cross_Box_Geom.ts` · FD `…_Cross_Ford_Geom.ts` · RV `…_Cross_Revetment.ts` · DS `…_Cross_Design.ts` · K `…_Culvert_Const.ts` · GD `A00_Common/design/design_structure_guard.ts` · EC `B06_Section/B06_Section_Engine_Culvert.py` · CS `common_util/common_util_culvert_sets.ts` · CB `common_util/common_util_cross_berm.ts` · SA `common_util/common_util_cross_structure_areas.ts`
|
||||
|
||||
## 1. 공통 흙막이 로직과 원지반 · 암 경계
|
||||
- 형상은 한 벌 · 자리 잡는 길은 둘.
|
||||
- 형상 공통: 벽 외곽 W:69 `buildRevetWallGeometry` · 안 무늬 WH:234 · 다단 E:480 `buildExtrasAt` — 관 보호공 · 세월교/박스 흙막이 · 독립 기슭막이 · C군(사면안정 흙막이 · 옹벽) 넷 모두(시험 test_b06_wall_shape_unified) · 이 함수 안에 원지반·암 참조 없음 · 한도는 「윗면 ≤ 노면」(W:72-75) 하나.
|
||||
- 암 경계선은 형상에 안 쓰임(벽 · 박스 · 세월교 · 집수정 기하 grep 0) · 설계선 복합경사와 면적 토사/암 분리(SA:156-160)에만.
|
||||
- 자리 길 ① 관 · 본체 흙막이 · 독립 기슭막이: G:79 → S:373 `placePipeWall`(d = 1:1.2 사면 따른 수평 성분 · x = 노견 연장) / ② C군: RV:158 `computeRevetmentLayout` 자체 배치(RV:203-227 · d = 순수 수직 · x = 4 m 원점 기준 · 하한 xFloor) — 두 길의 축 뜻이 다름.
|
||||
- 세월교·박스 전용: 자리 = 본체 끝(BG:107) · 세월교 관 1 m 맞춤(BG:147) · minX = −∞(G:190) · 관 길이 맞춤 제외(G:501) · 본체 선 걷기(BG:206) · 트림 병합(G:697).
|
||||
- 끝 연결선: 관 · C군 = 3° 절토선(안 그리고 면적에서도 뺌 T:46-49 · RV:360) / 본체 흙막이 = 수평공간 뒤 절토(면적에 넣음 T:88-94).
|
||||
- 서버 부착: 관 세트 붙은 측점에선 C군 벽 건너뜀(`B06_Section_Engine_Structures_Wall.py:108`).
|
||||
|
||||
| 자리 | 무엇을 바꾸나 | 사용자 말 「제약」인가 | 지우면 |
|
||||
|---|---|---|---|
|
||||
| W:69-111(W:72-75) | 외곽 · 원지반 무관 · 윗면이 노면에서 멈춤 | 아님(노면 기준) | 벽이 노면 위로 솟음 |
|
||||
| S:373-404 · RV:219-227 | 자리 · 원지반 안 봄(54-45) · 지반은 floatGapM 경고(G:262 · 451 · 515 · RV:227)에만 | 아님 | 툴팁 경고만 사라짐 |
|
||||
| FD:154-171 → BG:83-94 | 세월교 흙막이 높이 빈칸이면 노면 − 계류 하상(두 노견 사이 원지반 최저점) · 바닥도 하상 | **해당** | 기본 높이 규칙 새로 · test_79 기대값 |
|
||||
| E:305-337 | 다단 자동 자리 = 높이 h 벽이 원지반에 앉는 x | **해당**(지형 따라 x 미세 이동) | 고정 간격 규칙 필요 · 등간격(E:449-468) 재검토 |
|
||||
| E:222-260 · 424-445 · 57-97 · 110-132 | 성토부선(1:1.2) · 절토선 끝 = 원지반 교점 | 연결선(제약 아님) | 선이 샘플 끝까지 · 흙막이 면적 바뀜(G:644-645) |
|
||||
| BS:243-244 · 246-293 | I형 집수정 하단을 원지반까지 묻음 · 관 하단 = 벽면×원지반 | 해당(집수정 한정) | I형 관 자리 규칙 다시 |
|
||||
| BS:330-353 · BX:170-191 · FD:177-210 | ㄴ·ㄷ형/박스/세월교 끝: 묻히면 절토선 · 뜨면 성토부선 | 연결선 | 흙막이 선 쪽은 이미 BG:204-269 가 걷음 |
|
||||
| G:138 · G:217-224 · BS:57-102 · BS:397-436 | 유입 invert 초기값 · I형 관 시작 invert · 자동 집수정(유입 사면 ≤ 3 m) · 선택지 숨김 | 관 규칙(흙막이 고르면 revet 로 우회) | 관이 원지반에 묻히는 선택지 노출 |
|
||||
| G:270-278 | 유출 사면 끝(설계선×원지반) · 설계선 없을 때 폴백 · 사면길이 툴팁 | 미미 | 툴팁 값만 |
|
||||
| G:160-167 · RV:195-201 → `common_util/common_util_masonry_slope.ts:53-67` | 전면 기울기 = 단면유형(지형 자동판정)×설치 측×높이 · 양절이면 0.3 | 간접 해당 | B08 수량 기울기와 갈림(같은 표) |
|
||||
| W:169-197 `raiseWalls` | 벽 안을 지나는 원지반 · 암 경계 · 설계선 가림(그림만) | 아님 | 선이 벽 관통해 보임 |
|
||||
| DS:577-626 | 설계선 끝 = 원지반 첫 접점 · 2 px 판정 → 줌마다 끝점 조금씩 | 추정: 「미세 변동」 후보 | 벽과 무관 |
|
||||
| SA:102-117 | 구조물 선 바깥 = 원지반(면적 0) | 수량만 | — |
|
||||
| 잔재: S:227-233 · S:292-318 · K:24 · 212 · Types:76 `shiftBlockedM`(대입 0) · `…_Culvert_Wire.ts:524-531` · RV:332-346 · E:10-11 · 319 주석 | 옛 「지형에 막힘」 「묻혀 단 못 섬」 안내 | 옛 제약 흔적 | 지워도 동작 그대로 |
|
||||
|
||||
- 고칠 자리: 세월교 높이 기본값(FD:170-171 또는 BG:91) 작음 · 다단 자동 자리(E:305-337) 중간 · 잔재 삭제 작음.
|
||||
- 위험: test_79_guard_shape · test_73_4_body_guard · test_80_ford_pipe 바뀜 · 다단 목록(`B06_Section_Structure_Layouts.ts:277`) 거쳐 B08 다단 수량도.
|
||||
|
||||
## 2. 도수로 · 돌붙임
|
||||
- 입력: GD:112-131 `CHUTE_ADD` — 「구조」(도수로/돌붙임) 칸 하나 · 최대 1개 · 두께 칸 없음 · 배관 · 박스 · 세월교 공용(`design_structure_pipe.ts:92` · `_box.ts:94` · `_ford.ts:68`) · 물넘이포장은 따로 `ford_chute`(`A00_Common/design/design_structure_ford_pavement.ts:28-45`).
|
||||
- 화면: 공용 명세 폼 `createSpecForm`(`A00_Common/design/design_structure_form.ts:97`)이 B05 「구조물 배치」 서브폼(`B05_Profile/B05_Profile_UI_Drainage_Facility.ts`)에 · B05 배수 유역 패널엔 없음.
|
||||
- 저장: pipe_points.json `options.chute_add_{n}_structure`(`B05_Profile_UI_Drainage_Facility_Merge.ts:71-74`) · 집계 `M02_MasterTemplete/M02_Table_Fill_Spec.py:21-29` · 옛 `{side}_protection` 키는 읽을 때 옮김(`common_util/common_util_drainage_pipes.py:301-324`).
|
||||
- 횡단 형상 없음 · B06 세트(EC · CS)로 안 넘어감 · 커밋 9a58e3b1b(2026-08-22)가 「유출부 보호공(돌붙임) 띠」 지움 · 잔재 CSS `.b06-chart__culvert-pitching`(`B06_Section_UI_Style_Cross_Areas.css:347-353`) · `PITCHING_THICKNESS_M`(K:24) · `apron_*`(EC:66-71 · 229-232 · CS:127-130) 미사용.
|
||||
- 넣을 자리: 입력 GD `CHUTE_ADD.items` 두께 칸(기본 30) → 저장 키 `chute_add_1_thickness` 자동 · 세트 전달 EC `_culvert_set/_box_set/_ford_set` · 짝 CS · Api_Types(79-7 `revet_berm_m` 과 같은 길 EC:332-334 · CS:217-220) · 따라갈 선 = 관·흙막이 `layout.outletFill.segments`(kind≠cut · E:222-260) / 흙막이 없는 박스·세월교 유출 쪽 `fillSegments`(BX:182-191 · FD:203-210) · 그리기 = `appendCulvertOverlay`/`appendBoxOverlay`/`appendFordOverlay` 안 → B07 자동(`B07_DesignDetail_Cross_Overlay.ts:438-443` · DXF clip :212).
|
||||
- 재사용: 옛 띠 코드 `git show 9a58e3b1b -- B06_Section/B06_Section_UI_Cross_Culvert_Geom.ts`(벽면 방향 평행이동 → 성토선 오프셋으로 바꿈) · 꺾임 접합 S:76-86 `intersect` · 돌 WH:67-104 `cell/courses/drawStones` + clipPath(WH:254-266 · 비공개 · 두께 0.45 박힘 → export · 두께 인자) · 대안 빗금 pattern(`B06_Section_UI_Cross_Ford_Pavement.ts:147-172`).
|
||||
- 주의: test_52_structure_spec_pipe/box · test_52_4_structure_spec_ford · test_52_17_single_container · test_b06_culvert_sets_mirror(양쪽) 손봄 · M02 집계 옵션에 두께 실림 · 면적 영향 없음(라이닝). 크기: 중간.
|
||||
|
||||
## 3. 배수군 유출측 절토사면 복합경사 빠짐
|
||||
- 일반 절토사면: `common_util/common_util_cross_design_geometry.ts:260-283` `cutPoints` → CB:57-146 `cutProfilePoints`(암→토사 무릎 · 소단) · 파이썬 짝 `B06_Section_Engine_Design_Geometry.py:192-215` · `common_util_cross_berm.py:51` · `B06_Section_UI_Cross_CutSlope.ts` 는 측점별 암 경사 입력칸일 뿐.
|
||||
- 배수 구조물: 설계선을 트림으로 지우고(DS:629-679 · 우선순위 `B06_Section_UI_Cross_View.ts:474-478`) 자기 절토선을 경사 하나로 · `design.cut_slope_ratio` 만(암 지반이면 1:0.4 `config/config_system_design.py:291`) · `soil_cut_slope_ratio` · `two_stage_slope` · `rock_boundary_offset_m` · `berm` 안 읽음.
|
||||
- 경사 하나로 그리는 자리: ① 세월교·박스 흙막이 끝 E:57-97 `bermCut` ← T:92(79-7 · 그림·면적 둘 다) ② 박스 끝 BX:138 · 174-181(박스 트림 BX:245-250 이 양쪽 설계선 · 측구 지움 · 박스 선 면적 안 듦 SA:102-117) ③ 세월교 측벽 끝 · 관 ㄴ·ㄷ 집수정 끝 BS:341-348 ← FD:151 · 185 · G:338 ④ 관 유입 접속선 E:182-203(안 그림) ⑤ 배관 유출 벽이 절토 쪽: 트림(S:147 → G:617-630)이 노견부터 설계선 지우고 끝은 안 그리는 3° 선 → 절토사면 자체 사라짐.
|
||||
- 재현(추정): 암 지반(토사 끔) + 복합경사 켬 + 암 경계 있음 + 유출 끝이 원지반 아래 → 1:0.4 직선 하나 · 토사 측점은 경사 맞고 소단만 빠짐.
|
||||
- 고칠 자리: 공용 도우미(CB `cutProfilePoints` · 경계 = groundAt + `rock_boundary_offset_m` · 켬 = 암 프리셋 + `two_stage_slope` + 오프셋 · 소단 = `design.berm` · 원지반 교점에서 자름) → ①②③(④) 교체 · `cutLine` 꼴 {from,to}(`B06_Section_UI_Cross_Culvert_Types.ts:119`) → 점열(소비처 `B06_Section_UI_Cross_Culvert.ts:230-243` · `_Cross_Box.ts:137-141` · `_Cross_Ford.ts:140-141` · 3D `B05_Profile/B05_Profile_UI_Corridor_Station_Structure.ts:205-214 · 349-351`).
|
||||
- 주의: test_79_guard_shape `tail["points"] == 3` 깨짐 · 흙막이 면적 · B08 수량 바뀜 · ⑤는 별건(트림 정책) · 소단 간격 시작점 미정. 크기: 중간.
|
||||
|
||||
## 4. 서버 짝 · 시험
|
||||
- 벽 · 끝선 · 면적 · 다단 기하는 파이썬 짝 없음 — 서버가 같은 TS 를 Node 번들(`B06_Section_Server_Calc_Node.ts` ← `B06_Section_Server_Calc_Prebuild.py:58` · 낡으면 `build:server-calc` 자동).
|
||||
- 거울 짝: EC ↔ CS(test_b06_culvert_sets_mirror) · `Engine_Structures_Wall.py` ↔ `common_util_structure_walls.ts`(test_b06_structure_walls_mirror) · 복합경사 파이썬 ↔ TS(test_b06_cross_design_mirror · test_berm_knee_progress) · 기울기 표(test_b06_wall_lean_table) · 터파기(test_excavation_mirror) · GD ↔ `M02_Table_Fill_Spec.py`.
|
||||
- 시험: 1번 test_b06_wall_shape_unified · test_73_4_body_guard · test_79_guard_shape · test_80_ford_pipe(helper_*.cjs) · test_revet_wall_path.mjs · test_revet_link_level.mjs · test_ford_wall_vertical.mjs · test_b06_structure_areas.mjs · test_b06_wall_body_in_fill · test_b08_extra_walls / 2번 test_52_structure_spec_pipe/box · test_52_4_structure_spec_ford · test_52_3_structure_spec_ford_pavement · test_52_17_single_container · test_b05_protection_migration · test_b06_culvert_set / 3번 test_b06_two_stage_slope_kept · test_b06_cut_slope_user_input · test_b06_cut_slope_legal_check · test_b06_berm_review_info · probe_berm_infinite.py.
|
||||
|
||||
## 미결(조사자 제시)
|
||||
1. 제약 걷을 범위: 세월교 흙막이 기본 높이(하상 기준)와 다단 자동 자리 둘 다 지형 무관 · 대신 쓸 규칙.
|
||||
2. 끝 연결선(성토부선 · 절토선) 남길지.
|
||||
3. 띠 범위: 관 유출 끝 ~ 원지반 · 노견부터 사면 전체 · 다단 벽 넘어 · 옛 규칙(원지반 따라 최소 길이 낙차고×2).
|
||||
4. 두께 단위 cm(기본 30) vs m(0.3) · 물넘이포장 `ford_chute` · 유입 쪽에도.
|
||||
5. 띠를 성토면 아래(안쪽)로 오프셋 확정 · 면적 · 터파기 · B08 돌붙임 ㎡.
|
||||
6. 복합경사 소단 간격 시작점: 구조물 끝 vs 본선 사면 · 흙막이 수평공간 뒤에도 무릎 · 소단.
|
||||
7. 배관 유출 벽이 절토 쪽일 때 절토사면 되살릴지 · 박스·세월교 끝 절·성토선 면적에.
|
||||
@@ -0,0 +1,50 @@
|
||||
# 조사 H — 지식DB 도메인 근거 (10-8 · 읽기 전용 조사 원문)
|
||||
|
||||
결정은 `분석_정함.md` 가 앞섬. 교본 · KDS(도로) · 사방 수치는 참고값(임도 현행 법정값 아님 · 운영지침 §5).
|
||||
약어: K = `resources\knowledge\original\` · M = `resources\master_data\`
|
||||
|
||||
## 1. 골쌓기 · 켜쌓기
|
||||
- 「골쌓기 기준」 주문은 건설품셈 2026 7-1-1 메쌓기 · 7-1-2 찰쌓기 두 곳뿐(PDF 215쪽) — `K원가계산\건설공사_표준품셈\본문\01_공통부문\제07장_돌공사\7-01_돌쌓기.md` L30 · L49 「잡석(콘크리트)을 채움재로 사용하는 깬돌 및 깬잡석의 골쌓기 기준이다」 · 켜쌓기 보정 % 문구 없음 · 7-2 돌붙임 · 7-3 전석 · 건축 2-2-1 블록쌓기 · 3-8 보강토옹벽엔 골·켜 언급 없음.
|
||||
- 산림품셈 13-4-1 메쌓기(인력) · 13-4-4 찰쌓기(인력) PDF 195~199쪽 `K원가계산\산림_표준품셈\본문\제13장_구조물\13-04_돌쌓기.md` L22~33 · L113~124 — 견치돌 · 깬돌 · 깬잡석마다 골쌓기 · 켜쌓기 품이 별도 열(할증 % 방식 아님) · 표 비율: 깬돌 · 깬잡석 켜 = 골 × 0.83~0.92 · 견치돌 켜 = 골 × 1.10~1.11 · 예외 찰쌓기 견치돌 55 · 60㎝ 석공은 골=켜(0.58 · 0.69) · 장비품 13-4-2 · 13-4-5 엔 골·켜 구분 없음.
|
||||
- 시방은 쌓는 법만: 교본 7장 2.돌쌓기 L49(PDF 168~173) 「견칫돌 및 깬돌 쌓기는 골쌓기를 원칙」 · 부록 4-5 3.1.9 L399 같음 · `K표준시방서\…\KCS 11 80 25 돌(블록)쌓기옹벽 (2018 KS 부합화).md` L168 · L172.
|
||||
- **켜쌓기 품 할증 %: 원문 근거 없음** · 실무(STmate · 영덕 2025)에만 「켜쌓기적용 90%(전체금액의 %)」 — `K경쟁사 프로그램\STmate 분석\30_원자료\stmate_code_name_list.csv` L793(W00005) · 같은 폴더 `일위대가_현행품셈_대조.json` L8432 · L8559 · 실무 찰쌓기(켜쌓기) 품 0.072 / 0.036 / 0.27 = 13-4-5 55㎝ 품(0.08 / 0.04 / 0.30) × 0.9 와 정확히 같음.
|
||||
- master_data 로직: GC000260 「메쌓기(굴착기+부착용 집게)」 · GC000261 「찰쌓기(굴착기+부착용 집게)」 `M로직_건설품셈_07장_돌공사.json` L9 · L75 · 골쌓기 주문은 표 QC000487 · QC000488(`M소요량_건설품셈_07장_돌공사.json` L24 · L47)에 / GF000219 「돌쌓기 메쌓기(인력)」 · GF000221 「돌쌓기 찰쌓기(인력)」 `M로직_산림품셈_13장_구조물.json` L286 · L418 · 입력 「쌓기 = 골쌓기 / 켜쌓기」(표 QF000421 · QF000433).
|
||||
- 불일치: `M일위대가조합.json` UA000008 「관보호공(유입·유출구)」 L153 이 GF000222(찰쌓기 장비)를 메모 「찰쌓기(켜쌓기)」로 담음 · GF000222 엔 골·켜 입력 없어 90% 미반영.
|
||||
|
||||
## 2. 도수로 · 돌붙임
|
||||
- 법정 기준은 설치 의무만 · 규격 수치 없음: 별표2 Ⅰ.2.사.(2)(라) `K법률\산림자원의 조성 및 관리에 관한 법률 시행규칙\별표\별표2_산림관리기반시설의 설계 및 시설기준(제5조제1항 관련).md` L215 「배수구에는 유출구로부터 원지반까지 도수로·물받이를 설치한다」(노출형 횡단수로 L222 · 산불진화임도 L499 · L505 · 작업임도 L681 같음).
|
||||
- 임도규정 `K행정규칙\임도설치 및 관리 등에 관한 규정\현행_20240719.md` L119 「물받이를 설치하여 유수가 분산」 · `별표\별표3_임도구조 개량사업(제17조 관련).md` L43 「콘크리트수로ㆍ찰쌓기수로ㆍ낙차공」.
|
||||
- 교본도 두께 · 폭 · 길이 수치 근거 없음: 8장 1.암거 L87~93(PDF 179~184) 「수로는 제형을 원칙」 「지반선보다 낮게 원지반에 설치」 · 8장 4.다(PDF 188~190) L41 「도수로 하단부의 끝부분은 침식되지 않도록 방비」 · `K임도기술교본\15. 부록\4-6. 제6장 배수공사.md` 3.13 L373 「메붙이기로 시공하는 것을 원칙」.
|
||||
- 돌 크기: 산림품셈 13-4-4 주⑩ L161~168 돌붙이기 뒷길이 메붙임 25~60㎝ · 찰붙임 20~40㎝ · 주⑥ L147 경사 1:1 보다 완만하면 돌붙임 · 13-5 주④ 틈메우기돌 고임돌량 15% 까지 · 교본 7장 L17 뒤채움돌 최대직경 15㎝ 이하.
|
||||
- 급류 끝 처리: `K표준시방서\건설공사 비탈면 표준시방서 (KCS 11 70 00)\KCS\114030_비탈면 배수.md` L110 「비탈면 경사 32° 이상 및 유속 3m/s 이상 … 끝 문턱(end sill), 조약돌부설(riprap pad)」.
|
||||
- 사방 교차 참조(확정값 아님): 떼수로 폭 60~120㎝ `K행정규칙\사방사업의 설계·시공 세부기준\현행_20221122.md` L93 · 윤주 80~100㎝ / 60㎝ `K사방기술교본\2. 산지사방\2-가. 기초공사.md` L366~368 · 표준도 근거 없음(`K구조물도\` 엔 기슭막이 dwg만).
|
||||
|
||||
## 3. 노면공(노면 포장)
|
||||
- 종류: 별표2 L200 종단 8% 초과 사질·점토질 또는 8% 이하로 약하고 습한 구간은 「쇄석·자갈을 부설하거나 콘크리트 등으로 포장」(작업임도 L687) · 별표3 L30 「경사가 급한 구간에는 콘크리트ㆍ아스콘 등으로 포장」.
|
||||
- 콘크리트: 교본 3장 2.기본설계 L241~245(PDF 80~87) 「종단기울기 8% 이상일 때에는 콘크리트 포장시공을 원칙」 「포장 끝 지점 2m 전에 개거」 「포장 폭의 3.0m, 두께 0.2m를 기준으로 곡선부에는 확폭을 적용」.
|
||||
- 층 구성 · 줄눈: `K임도기술교본\15. 부록\4-7. 제7장 노면공사.md`(PDF 472~479) 분리막 겹침 세로 100㎜ · 가로 300㎜ 이상(L50) · 보강 철망(L82~94) · 수축줄눈 4~6 m(L100) · 습윤양생 14일(L124).
|
||||
- 산림품셈 12-6 `K원가계산\산림_표준품셈\본문\제12장_철근콘크리트\12-06_콘크리트_포장(인력시공).md`(PDF 173~174) 포장두께 20 · 30 · 40㎝ 별 품 · 모래층 3 · 6㎝ 별도 · 종단 15% 이상 인력품 20% 할증.
|
||||
- 쇄석: 교본 3장 L245 「혼합석 부설 다짐 후 0.10m 내외」 · 10장 1(PDF 203~207) 포설 전 10㎝ 터파기(L64) · 「다짐 후 1층 두께가 20㎝를 넘지 않도록」(L82).
|
||||
- 아스팔트: 두께 · 층 구성 근거 없음(출처 미상 옛 자료 `K산림과임업기술(임도)\2. 임도\6. 시공.md` L173~ 일반 도로 설명만).
|
||||
- 횡단기울기(별표2 L181): 비포장 3~5% · 포장 1.5~2%.
|
||||
- 곡선부 확폭(별표2 L133~147): 곡선반경 10~13 m = 2.25 m … 40~45 m = 0.25 m · 확폭 구간 포장 처리(변이 · 접속부) 세부 기준 근거 없음.
|
||||
|
||||
## 4. 세월교 · 박스암거 유입 · 유출부
|
||||
- 세월교: 교본 3장 실시설계 L375~385(PDF 88~104) 「3차수 이상 계곡」 「종단기울기 3~5%」 「진입 및 진출부에 뚝을 설치」 · 날개벽 · 바닥 보호 수치 근거 없음.
|
||||
- 물넘이포장: L363 「물받이(L)의 길이는 H값의 2배 이상, 두께는 최소 30㎝ 이상」 · L349 「좌·우 포장을 충분히 설치」 · L355 「앞 뒤바퀴 축간거리 이상」(별표2 L98~99 대형 6.5 m · 소형 3.7 m).
|
||||
- BOX 암거: 교본 L389~393 「Ø1,500㎜ 이상」 「횡단경사 40% 이내」 「구체의 설치각도는 수평설치를 원칙」 · 날개벽은 현지여건.
|
||||
- 시방 부록 4-6: L211 날개벽은 구체와 동시 타설 · L215 「2.5m/sec〈V≤4.0m/sec 시 : 수로보호공 설치 4.0m/sec〈V 시 : 감쇄공 설치」 · L361 유입구 골막이 너비 「암거구체구경의 2배이상」 · 별표2 L304~311 암거 너비 = 임도 너비(곡선부 확폭 포함) · 복토 50㎝ 이상.
|
||||
- 도로 기준(참고) `K표준시방서\도로공사 표준시방서 (KCS 44 00 00)\첨부\[압축] 도로설계기준(KDS 44 00 00)\KDS 44 90 00 도로암거구조설계기준(21.09).md` L431 유입·출구부 차수벽 · L486 「날개벽의 비탈면경사는 1:1.5를 표준으로 하고, 근입깊이는 1 m」 · L487 흙막이부 높이 300㎜ 이상 · 폭 500㎜ 이상.
|
||||
- 흙막이: 교본 L313 「유입구 흙막이 및 옆도랑 흙막이」 · L331 「흙막이 시설 시 감쇄공」 · 사방 교차 참조 부록 4-5 L804 바닥막이 물받이 「낙차고의 2~3배」 「최소두께는 35㎝」 · 수직벽 깊이 1 m 이상 · 날개벽 길이 · 수평 연장 수치 근거 없음.
|
||||
|
||||
## 5. 복합경사 절토사면
|
||||
- 별표2 L254~260 토사 1:0.8~1.5 · 연암 1:0.5~1.2 · 경암 1:0.3~0.8 · 「토사지역은 절토면의 높이에 따라 소단」(높이 값 없음) · L274 「사면길이 2~3미터마다 폭 50센티미터 ~ 100센티미터로 … 소단」(산불진화임도 L572 · 작업임도 L690 같음).
|
||||
- 사방(참고) `K행정규칙\사방사업의 설계·시공 세부기준\첨부\사방사업의 설계·시공 세부기준 전문.md` L19~28 「절토고 3∼5m 간격으로 폭 0.5m 이상의 소단설치」.
|
||||
- 도로(참고) `…\KDS 44 30 00 도로토공(23.01).md` L348~361 높이별 경사(밀실한 사질토 5 m 이하 1:0.8~1.0 · 5~10 m 1:1.0~1.2 · 「소단을 포함하지 않는 단일비탈면」) · L368 「최하단 기준 매 20m마다 3m 소단」 · 발파암 · 리핑암 사이 소단 없음 · L375 「비탈면 높이 5.0m 마다 폭 1.0m」 · L378 소단 횡단기울기 4.0%.
|
||||
- 출처 미상 옛 자료 `…6. 시공.md` L11~14 「층마다 기울기를 다르게」 「소단의 폭은 보통1.5m」 5~10 m 간격.
|
||||
|
||||
## 6. 중력식 사방댐 도면 표준
|
||||
- 세부기준 현행 L316 중력식 = 토석차단용 · L348 상류면 기울기 1:0.1~0.2 · `K사방기술교본\3. 야계사방\2-다1. 사방댐설치사업 - 개요와 분류.md` L25 「아치댐 … 수평 아치형 … 계류의 폭이 좁은 곳」 · L49 협착부 암반은 아치식 · 그 외 중력식 · 2-다2 그림 3-2-25 · 26 · 47 은 부위별 명칭 개념도(치수 없음) · 표 3-2-8 마루폭 1.5~2.5 / 3.0~4.0 m.
|
||||
- 도면 표준(호 모양 평면 포함) 근거 없음 · 경쟁사 `K경쟁사 프로그램\오솔길\OSK_sym\야계사방\사방댐_표준도Title1.dwg` 는 표제란 양식뿐(`…\오솔길 분석\20_분석\02_도면양식\03_사방댐양식.md` L80).
|
||||
|
||||
이미 요약된 기술문서(draft): `resources\knowledge\technical_info\01_임도\02_상세설계\` 아래 개거_세월시설 · 횡단배수관_암거 · 노면_콘크리트포장 · 절토_비탈면 · 구조물\돌쌓기.
|
||||
Reference in New Issue
Block a user