diff --git a/docs/raw/요구_1104/_분석_655-B_수식탭_제비율엑셀.md b/docs/raw/요구_1104/_분석_655-B_수식탭_제비율엑셀.md new file mode 100644 index 000000000..030339c7c --- /dev/null +++ b/docs/raw/요구_1104/_분석_655-B_수식탭_제비율엑셀.md @@ -0,0 +1,88 @@ +# 분석 655-B — 수식 탭(PPT 수식 꼴) · 여러 단계 · 옵션 가로 · 제비율 내장 엑셀 (요구 655 · 읽기만) + +임시 파일 = `tmp/brain_655/B/` · 고친 파일 없음. + +## 0. 요약 + +수식 탭에 새로 들 것은 셋 — 식을 그림용 나무(JSON)로 내보내는 서버 갈래 하나 · 분수를 그리는 화면 부품 하나 · 오른쪽 변수 풀이 칸. 엔진 · 글 식 · 이름 꼴 번역 · 검사 길 · SK 덮개는 그대로. 제비율 엑셀은 원본 xlsx 와 내장 엑셀 부품이 있어 「xlsx → 책」 변환기만 빔. + +## 1. 걷을 화면 · 살릴 바탕 + +| 자리 | 지금 | 수식 탭 뒤 | +| --- | --- | --- | +| M01 보기 고르기 `M01_MasterData_UI_LogicLab_View.ts:25-36` | 시트 · 단가산출 상세 · 인력·재료·경비 · 시험 계산 · 텍스트 수식 | 단가산출 상세 · 수식 + 기본정보(접힘) | +| 시트(794-1) `_LogicLab_Sheet.ts`(322) + `logic/M01_Logic_Sheet_Model.ts`(163) | 이름 · 식 · 값 · 비목 줄 | 걷음 | +| 텍스트 수식 `_LogicLab_Formula.ts`(237) · `_FormulaTokens.ts`(71) | 이름 식 / 값 식 두 칸 | 걷음(눌러 모달 · 옵션 칩 발상만 옮김) | +| 인력·재료·경비 `_LogicLab_Est.ts`(46) | 공용 계산서 | 걷음 | +| 시험 계산 `_Logic_Calc.ts`(349) | 입력 + [계산] | 화면만 걷음 · 셈 구동은 남김 | +| M02 SK 시트 `_Sangeun_Sheet.ts`(486) · `_SheetEdit.ts`(296) · `_SheetFormula.ts`(234) · css(142) | 790-1 줄 식 시트 | 걷음 | + +살릴 바탕 — 엔진 식 나무(`master_formula.py:194-237` · 수식 그림 원천) · 두 칸 글(`master_text.py:41` 값 꼴 · `:62` 이름 꼴 · 괄호 · `/100` → `%` · 만약은 걸린 쪽 · 표 행 이름 · 비목 몫) · 키보드 입력 번역 · 검사(`M02_Sangeun_Formula.py:222` · `:251` · `:64` 상한 · `:507` 이름표 · M01 `M01_MasterData_Sheet.py:31` · `:50` · M02 `formula-check`) · 식 칸 `A00_Common/sheet_formula_cell.ts` · SK 문서 꼴(790-2 · 792-1) · 별칭 `master_copy.py:255` · 위 · 아래 첨자 `ui_template_calc_row.ts:24`(분수만 없음) · 단가산출 상세(Ho) 탭은 지울 목록에 없음. + +## 2. 수식 그림 · 고침 + +- 수학 라이브러리 없음(의존 = three · maplibre · delaunator · constrainautor) · 우리 식 말 = 사칙 · 괄호 · 함수 여섯 · 찾기 · 로직뿐 → 직접 짜는 쪽이 작음. +- 서버 — `master_text` 옆 나무 내보내기 하나(같은 식 나무를 이름 꼴 · 값 꼴로 두 번 걸어 JSON: 줄 · 분수(위·아래) · 연산 · 변수(이름·기호·값·단위·갈래) · 수 · 괄호 · % · 조건) · 셈은 지금 엔진 한 벌(792-2 실측 30~60 ms · 브라우저 짝 불필요). +- 화면 — 새 부품 `ui_template/ui_template_equation.ts/.css` · 가로 줄 안 세로 쌓기 분수선 · 네 칸(결과 이름 = 이름 식 = 값 식 = 결과 값) + 오른쪽 풀이. +- 고침 — PPT 수식도 속은 한 줄 글(`a/b` → 분수) · 줄을 고르면 그 줄만 식 칸 · 키보드 `× ÷ / ( )` · 아이콘 줄(분수 · 괄호 · 첨자 · %)은 고른 줄에만 · 변수 누르면 이름 · 기호 · 값 고침 창(SK 덮개). +- 분수 규칙 — 맨 위 `/` = 분수 · `a×b×…/c` 는 파서가 `(a×b…)/c` · `/100` = %(1,282 식) · `a/b/c` → `a/(b×c)`(값 같고 모양만). +- 자동 생성 — 입력 = 풀이 칸 · 중간 = 수식 한 줄 · 찾기 = 풀이 칸(표 + 고른 행) · 호표 = 「단가 × 수량식」 · 덧줄 = 율 줄 · 결과 = 끝 줄 · 로직 1,519 · 식 9,320 · 찾기 5,656(61 %) · 만약 1,211(13 %) · 나눗셈 3,315 · 함수 204. + +예시(실제 엔진 값): + +``` +① GC001147 → GC001148 굴착기 + 3,600 × q × K × f × E 3,600 × 1 × 0.9 × 0.7 × 0.75 + Q = ───────────────────── = ──────────────────────────── = 81.000 ㎥/hr + c_m 21 + 풀이 q : 버킷용량 = 1 ㎥ (입력) · K : 버킷계수 = 0.9 (표 8-2-3 1) · f : 체적환산계수 = 0.7 (입력) + E : 작업효율 = 0.75 (표 8-2-3 2) · c_m : 1회 싸이클시간 = 21 초 (표 8-2-3 3 · 135°) + [블록 ①] 굴착기(무한궤도) 시간당 기계경비 GC000267 노 35,405.1 · 재 7,144.2 · 경 9,396 원/hr ▸ 펼침 + 노무비 = 35,405.1 / 81 = 437.1 · 재료비 = 7,144.2 / 81 = 88.2 · 경비 = 9,396 / 81 = 116.0 · 계 = 641 원/㎥ +② GC001140 인력운반(지게) · 575 ㎏ · 6 m · 35° · 석재류 · 불량 + L' = α × L = 8 × 6 = 48 m + V × T 2,000 × 450 + N = ───────────── = ───────────────────── = 92.2131 회/일 + 120×L' + V×t 120 × 48 + 2,000 × 2 + W 575 + M = ───── = ─────────────── = 0.2494 인 + q×N 25 × 92.2131 + 노무비 = 172,068 × 0.2494 = 42,917.5 → 소계 42,917 원 +③ GC000211 시공량 = 45 × (1 − (0+0)%) = 45 · 형틀목공 = 5 / 45 = 0.1111 인 · 공구손료 = (…) × 1 % = 382.9 +``` + +함정 — 기호(입력 · 중간 이름 1,425 중 영문 꼴 140 · 나머지 한글 → 「기호」 칸 더함 · 후보 = 원문 「여기서 q : 버킷용량(㎥)」 목록 42 쪽 약 250 줄 · 확정은 관리자) · 단위(중간 단위 143/3,335 뿐) · 반올림 표시(값 칸 넷째 자리 · 셈은 전체 자리 → 172,068 × 0.2494 = 42,913.8 ≠ 42,917.5 · 고를 갈래 = 분수 그대로 · 「≒」 · 중간 `표시` 칸으로 잘라 셈) · 만약 · 찾기(PPT 그림에 없는 꼴 → 만약 = 걸린 쪽 + 조건 칩 · 찾기 = 풀이 칸) · 크기(서버 나무 S ~250 · 그림 부품 M ~350 + CSS · 고침 S · 기호 칸 코드 S + 데이터 M). + +## 3. 여러 단계 · 단가산출별 소계 + +- 지금은 하위 단가산출 줄의 노 · 재 · 경 몫이 부모 비목 상자에 흩어짐(`master_text.py:389`) — 하위 로직 줄 있는 로직 513/1,519 · 줄 1,084 · 둘 이상 229. + +| 단 | 보이는 것 | 자료 | +| --- | --- | --- | +| 중간 | 한 줄 수식들 | 중간 + 엔진 값 | +| 하위 블록 ①② | 블록마다 자기 수식(접힘) + 노 · 재 · 경 소계 × 수량식 | 단가산출 상세 펼침 자료 | +| 자기 자원 | 인력 · 재료 · 덧줄 「단가 × 수량」 + 소계 | 호표 · 덧줄 | +| 합계 | 블록 소계 합 | 엔진 계 | + +- 함정 = 끝수(줄 0.1 원 · 비목 소계 1 원 버림 · 블록마다 버린 뒤 합하면 몇 원 어긋남) → 먼저 「보이기만 블록(금액 그대로)」 · 셈까지 바꾸면 791 `단계`로 하고 1,519 지문 다시 봄(L). + +## 4. 옵션 가로 배치 + +`ui_template_toolbar.ts:29` 줄 안에 기존 값 칸(`M02_Labor_Values.ts:42`) 늘어놓고 줄바꿈 허용 · 새 부품 불필요 · 로직당 입력 중앙 2 · 90 % 5 · 최대 31 · 고르기 글 중앙 3 자 · 90 % 9 자 · 최대 85 자 → 칸 폭 상한 + 말줄임 + 마우스 올림 전체 글 · 고르기 수 최대 129 → 찾기형 고르기 · 700 줄(`_LogicLab_Ho.ts` 684 · `_LogicLab_Modal.ts` 575 · `_LogicLab.ts` 522 · `Sangeun_Detail.ts` 575) → 수식 탭 새 파일 넷쯤. + +## 5. 제비율 내장 엑셀 + +- 원본 = `resources/knowledge/original/행정규칙/토목공사원가계산 제비율 적용기준/첨부/2026.04.13_조달청_토목공사_제비율.xlsx`(본 시트 127 행 × 189 열 · 병합 433 · 채움 4 색 · 테두리 칸 1,340 · `=AC15` 수식 · 잔 격자 · 「법령 링크」 시트 18 × 4). +- M01 정본 = `resources/master_data/요율_조달청제비율.json`(원천 경로 · 해시 · 처리규칙 · RT000001~019 · 율 · 기준 · 구간 표) · 읽는 곳 `B09_Estimation_Rates.py:18` · 셀 대응표 `build_요율.py:90-113`(RT000001 = BZ51 … · `--check`). +- 내장 엑셀 = `A00_Common/spreadsheet/spreadsheet.ts` 읽기 전용(병합 · 서식 · 보이는 칸 · 쓰임 예 `M02_MasterTemplete_Hopyo_Sheet.ts:298-318`) · 빈 곳 = 서식 있는 xlsx 읽기(`M02_Hopyo_Grid.py:156-179` 는 xls 만 병합 · 서식 · 반대 방향 `common_util_workbook_xlsx.py:55` 있음). +- 제안 = 판마다 한 번 돌리는 빌더(xlsx → 책 JSON) · M01 요율 화면 = 내장 엑셀(읽기만) + 아래 RT 표 · RT 줄 누르면 그 셀로 · 내부 로직 그대로 · 크기 S~M · 함정 = 판 바뀌면 셀 자리 바뀜(`--check` 가 먼저 깨짐) · 잔 열 189 → 확대 · 축소. + +## 6. 권고 · 위험 + +차례 — ① 보기만(M01 · M02 · 가져온 식 공통) ② 기호 · 단위 칸 + 원문 후보 ③ 고침(식 칸 · 숨은 아이콘 · 변수 고침 — 655-A 로직 사본 결정 뒤 · 두 번 일 피함) ④ 옛 탭 넷 걷기 + 셈 구동 떼기 ⑤ 블록 소계 셈 의미(결정 뒤) · 제비율 엑셀은 따로 병행. + +790~794 에서 걷히는 것 — 화면만(M02 시트 세 파일 + css 약 1,160 줄 · M01 시트 322 + 모델 163 · 텍스트 수식 308 · 인력·재료·경비 46 · 시험 계산 화면) · 서버는 모두 살아남음(790-2 · 792-1 · 794-1 · 792-2 · 791 · 793) · 화면 기대 시험 정리(`test_790_1` · `test_794_1` · `test_748_2` · `test_737` · `test_714_2/3`). + +위험 — 셈 구동 엮임(숨은 시험 계산 칸 단추를 눌러 셈 · `_LogicLab_Detail.ts:190` · `:239` → 탭 걷기 전 구동 함수로 떼기) · 표시 반올림 어긋남 · 만약 · 찾기 꼴 · 사슬 나눗셈 펴기 · 블록 끝수 · 기호 데이터 양 · 단위 빈칸. + +사용자가 고를 것 — (a) 값 칸 자릿수 · ≒ · 분수 그대로 (b) 블록 소계를 금액 셈에도 (c) 단가산출 상세 탭 남기나 (d) 기호 기본 = 원문 꼴 vs 그림 꼴(q_s · E_s · C_m).