Commit Graph
1675 Commits
Author SHA1 Message Date
eomsangdon 3ea116845d Merge remote-tracking branch 'origin/sub_laptop_1' into main_desktop_1 2026-09-08 20:13:36 +09:00
eomsangdon 389526209d Merge remote-tracking branch 'origin/sub_desktop_1' into main_desktop_1 2026-09-08 20:13:35 +09:00
eomsangdon 6e895fa89f Merge remote-tracking branch 'origin/main_laptop_1' into main_desktop_1 2026-09-08 20:13:33 +09:00
eomsangdonandClaude Opus 5 f3f37494f2 fix(B06): [저장]이 「행은 있는데 설계가 빈 측점」도 채우게 함
재생성이 `cross_sections` 행을 지우고 다시 쓰면 `data.design` 에 면적 4키만 남는다.
`get_cross_section_designs` 는 `ground_type` 있는 줄만 담으므로 그 상태는 「설계 없음」이고,
B08 토적표가 통째로 0 이 됐다(창 셋에서 같은 증상).

원인은 결함이 아니라 분담이었다 — 체인은 재생성 뒤 [확정]을 불러 그 자리를 채웠고,
재생성만 따로 도는 길에는 그 단계가 없었다. 그래서 [확정] 없이도 정본이 서게 한다.

- [저장]이 확정과 **같은 조회**(`get_cross_sections_missing_design_chainages`)로
  빈 측점을 골라 기본 설계로 채운다.
- ⚠ **값이 있는 행은 안 건드린다** — 사용자 조작값·이월분이 거기 있다. 시험으로 잠금.
- 실측(route 184): 저장 뒤 DB 설계 62행·38키 복구, 층따기 13,696.8 ㎡,
  측구 토사 0.173 / 암 8.886 ㎡ — 파일 기반 값과 일치.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 20:12:22 +09:00
eomsangdon 1947812402 Merge remote-tracking branch 'origin/main_desktop_1' into sub_laptop_1 2026-09-08 20:11:41 +09:00
eomsangdonandClaude Opus 5 4280a6d821 chore(B07): 아무도 안 쓰는 빈-도각 목록 삭제 — 덫만 남아 있었음
`Router_Support_Io.BLANK_DRAWINGS` 일곱 줄(계획평면도 3종·라이다·표준 횡단면도·표준도·
용지도)이 **어느 모듈도 import 하지 않는 죽은 목록**이었음. 일곱 전부 실제 도면이 되면서
차례로 빠졌고 표준도가 마지막이었음(2026-09-09).

남겨 두면 「계획평면도가 빈 도각으로 열리나?」로 읽히는 덫임.

확인 — 실제 파일로 도면 목록을 만들어 봄(프로젝트 936be972)
  도면 36장 · kind 별 longitudinal 3 · cross 20 · plan 3 · plan_lidar 1 · landuse 1 ·
  cover 1 · cross_standard 1 · mass_haul 1 · watershed 1 · **standard 4**
  **blank 0** — 빈-도각 경로를 타는 도면이 하나도 없음.
  표준도 넉 장 제목에 판정된 기울기가 뜸(메 1:0.35 · 찰 1:0.3).

`build_blank_drawing` 자체는 남김 — 도각 표제란 시험이 쓰고, 다음에 또 「목록엔 있는데
아직 안 그리는」 도면이 생기면 그 함수가 쓰임.

자체검증 — 회귀 573 통과 · 0 실패.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 20:09:56 +09:00
eomsangdon 2540341eb4 auto: 2026-09-08 20:09 (EOMSANGDON-HOME) 2026-09-08 20:09:56 +09:00
eomsangdonandClaude Opus 5 9ea0572f69 fix(B08): 큰돌쌓기 메/찰 사유가 값을 고른 뒤에도 뜨던 것
`bond` 는 레지스트리에 이미 있는 칸인데 사유를 **조건 없이 붙이고** 있어, 메쌓기·찰쌓기를
고른 구조물에도 「메/찰 구분이 없어 못 고름」이 그대로 떴음.

⚠ 얻는 것은 **노무 품 갈래뿐**이고 재료 원단위는 13-6 [주]⑦ 때문에 여전히 안 섬 —
그래도 고치는 까닭은 **사유가 거짓이면 사유 칸 전체를 못 믿게 되기 때문**임.
재료 미확보 사유는 아직 참이라 그대로 둠.

시험 762 통과(새 1건 포함).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 20:09:44 +09:00
eomsangdonandClaude Opus 5 fa7b4e515c feat(B07): 표준도 기울기를 판정값으로 — 그림·장 제목이 B08 한 벌을 그대로 부름
데스크탑 메인이 넣은 품셈 표준경사 판정(13-4-4 [주]⑪)이 **근거 문구 안에만** 있었고
표준도는 못 읽고 있었음. 판정 함수 `face_slope_ratio()` 를 그대로 부르게 바꿈 —
판정을 두 벌로 짜면 그림과 수량이 갈림(CLAUDE.md 5장).

실측 (프로젝트 936be972 구조물 5기)
  돌쌓기(찰) H=2.5 1:0.3  뒷길이 45㎝ 깬돌       단면 (0,0)(0.75,2.5)(1.45,2.5)(1.45,0)
  돌쌓기(메) H=2.0 1:0.35 뒷길이 35㎝ 야면석     단면 (0,0)(0.70,2.0)(1.35,2.0)(1.25,0)
  큰돌쌓기  H=2.5 1:0.3
  옹벽                                          판정 대상 아님 — 안 적음
⇒ **메쌓기가 찰쌓기와 다른 값으로 갈림**(0.35 대 0.3). 장 제목에 그대로 뜸.

메/찰은 종류에서 옴. 큰돌쌓기는 `bond` 칸이 그것이고 안 고르면 찰쌓기로 봄 —
품셈 13-6 은 둘 다 「1:0.3 이상」이라 그림 기울기가 갈리지 않음.

기울기 근거 문구를 그림 아래 한 줄로 실음 — 「사용자 지정」인지 「품셈 표준경사」인지,
그리고 「성토/절토가 저장에 없어 성토 열로 잠정」인지가 도면에서 보여야 함.

⚠ 시험 제원에서 `face_slope_ratio` 를 뺐음 — 실제 구조물 제원에 그 칸이 없는데 시험만
갖고 있어 **판정 경로가 한 번도 안 돌았음**(늘 「사용자 지정」으로 빠짐). 빼고 나니
메/찰이 갈리는 것이 시험으로 잡힘. 사용자 지정이 이기는 것도 따로 검사함.

자체검증 — 회귀 573 통과 · 0 실패.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 20:06:11 +09:00
eomsangdon 53b4a949c4 Merge remote-tracking branch 'origin/sub_desktop_1' into sub_laptop_1 2026-09-08 19:58:27 +09:00
eomsangdon c4df7e2f75 Merge remote-tracking branch 'origin/main_desktop_1' into sub_laptop_1 2026-09-08 19:58:26 +09:00
eomsangdonandClaude Opus 5 8cd0b003e5 feat(B07): 표준도 2단계 — 돌쌓기 단면 그림 + 제원 조합마다 한 장
실무 탭이 「위 치수조서 + 아래 수량산출서」인데 1단계에서 아래 표가 섰고 이번이 위 그림.
그림이 붙으면서 한 면에 넉 장을 쌓을 수 없게 돼 **장 나눔(㉢)도 같이** 했음.

장 나눔 — 계획평면도가 쓰는 본 그대로
  `standard_sheet` / `standard_sheet_2` … 제원 조합 하나가 한 장.
  좌측 목록은 `idPrefix` 묶음(계획평면도와 같은 짜임)이고 kind 는 새로 `standard`.
  구조물이 없어도 한 장은 남김 — 단추가 사라지면 「없어진 것」처럼 보이고 사유를 읽을
  자리도 없어짐.

그림 — `B07_DesignDetail_Engine_Cad_StandardFigure.py`
  ⚠ **기울기를 값으로 받음. 0.3 을 그림에 박지 않았음.** `face_slope_ratio` 가 오면 그
  값으로 기울고, 비어 있으면 교본 7-3 기본 0.3 으로 그리되 **「자동 판정 전」이라고 그림에
  적음**. 자동 판정이 붙는 대로 그림이 따라감.
  ⚠ 치수는 수량이 쓰는 그 상수(`STONE_MASONRY`)를 직접 읽음 — 여기서 다시 적으면 그림과
  표가 갈림. 상부 0.45+0.10H · 하부 0.45+0.40H · 터파기 폭 평균두께+0.2 · 되메우기 0.2.
  ⓘ 그 상수는 **뒷면이 수직인 1:0.3 벽**을 뜻함(하부−상부 = 0.30H = 전면이 기우는 양).
    기울기가 0.3 이 아니면 그 차이만큼 뒷면이 기욺 — 상수에서 따라 나오는 결과라 그대로 그림.
  ⚠ 치수가 없는 것은 그리되 치수를 안 적음 — 막자갈은 「입적 − 몸통 − 고임돌」이라 폭·높이로
    정의된 도형이 아님. 자리만 보이고 값은 표를 가리킴.

죽은 길 걷어냄 — `BLANK_DRAWINGS` 가 「표준도」 하나뿐이었는데 그것이 내용 있는 장이 되어
빈 도각 경로가 통째로 안 쓰이게 됨. 상수·목록 루프·분기·import 를 지움(700줄 제한도 걸렸음).

자체검증 — 회귀 573 통과 · 0 실패, `tsc --noEmit` 0.
⚠ 병합 뒤 깨진 시험 둘을 고침(내 폴더 `tmp/tests`, 랩탑 메인 `11394d40` 의 여파)
  · `stone_supply='채집'` 기본값을 확정 ② 근거와 함께 허용 목록에 등록
  · 바닥막이 「모든 옵션이 b05」 단정 → 조달이 detail 로 들어와 B05 셋만 보게 좁힘

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:58:15 +09:00
eomsangdon 06f3b8a423 Merge remote-tracking branch 'origin/sub_laptop_1' into sub_desktop_1 2026-09-08 19:57:19 +09:00
eomsangdon f92a83c709 Merge remote-tracking branch 'origin/main_desktop_1' into sub_desktop_1 2026-09-08 19:57:17 +09:00
eomsangdonandClaude Opus 5 a6c9ca0185 feat(B09): 자재단가대비표·환율및기초자료를 기초자료 탭에 붙임
표를 냈는데 화면에 없으면 낸 것이 아니라 붙임. 목록표 넷 아래에 A9·A10 두 장 추가.

- 자재단가대비표: 원천마다 「단가·페이지」 두 칸으로 머리글 두 줄, 채택 원천 굵게
- 슬롯 6 이 곧 「적용 단가」라 「적 용」 칸을 따로 세우지 않음 (같은 값 두 번 서는 것 방지)
- 환율및기초자료: 환율·인건비(운전사 3)·단가 및 재료비 세 구획
- 유가 적용 범위 고르는 칸 — 지역 공시가는 자료가 없어 고를 수 없게 두고 까닭 표시 (확정 ⑮)
- 두 표는 목록표와 따로 받아 옴 — 못 받아도 목록표 넷은 그대로 남음
- 시간당 노임이 소수로 남는 까닭을 화면에 밝힘 (여기서 자르면 기계 사용료가 어긋남)

검증: tsc 통과 · pytest 267 통과 · 공용 브라우저 5174 에서 표 6장·줄 737 확인,
body.scrollWidth 1696 < innerWidth 1704 (가로 넘침 없음)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:57:00 +09:00
eomsangdon 117aef8e49 Merge remote-tracking branch 'origin/sub_laptop_1' into main_desktop_1 2026-09-08 19:56:58 +09:00
eomsangdon 42d7fd0c37 Merge remote-tracking branch 'origin/sub_desktop_1' into main_desktop_1 2026-09-08 19:56:57 +09:00
eomsangdonandClaude Opus 5 0d577cf463 feat(B08): 돌쌓기 기울기를 품셈 표준경사표로 자동 판정 (사용자 확정 ⑨)
⚠ 확정 ⑨ 가 통째로 미구현이었음 — 레지스트리에 `face_slope_ratio` 칸이 없어 **늘 1:0.3**
으로 돌았고, 찰 H=2.5 와 메 H=2.0 이 같은 기울기로 나왔음. 우리 0.3 은 실은
**「메쌓기·성토·직고 1.5m 이하」 한 칸**이었음.

품셈 13-4-4 [주]⑪ <표준경사>를 데이터로 두고 **직고 · 메/찰 · 성토/절토** 셋으로 고름.
  메 성토 0.30 0.35 0.40 0.45 0.50 · 메 절토 0.25 0.30 0.35 0.40 0.45
  찰 성토 0.25 0.30 0.35 0.40 0.45 · 찰 절토 0.20 0.25 0.30 0.35 0.40

⚠ 경계값은 **앞 칸** — 원문 표기가 `∼1.5 · ∼3` 이라 이하로 읽음(직고 3.0m → `~3` 칸).
   7.0m 은 `~7`, 그보다 커야 마지막 칸. 해석을 데이터·주석·시험에 함께 박음.
⚠ **성토/절토가 저장에 아직 없음** — 레지스트리에 없는 키를 읽지 않고 **성토 열로 잠정**
   적용하며 **근거 문구에 그 사실을 적음**. 값이 생기면 한 줄만 바꾸면 됨.
⚠ 저장 제원에 값이 있으면 **그 값이 이김**(확정 ⑨). 자동으로 고른 값은 **저장에 안 박음** —
   「정한 적 없음」과 「0.3 으로 정함」이 구별돼야 함.
⚠ 큰돌쌓기는 이 표 대상이 아님 — 교본이 「1:0.3 **이상**」으로만 둠. 그대로 둠.

검증 프로젝트 실측 — 돌쌓기(메) H=2.0 면적 **20.881 → 21.190㎡(+1.5%)**, 찰 H=2.5 는
1:0.3 그대로. 옛 시험 셋이 「늘 1:0.3」을 계약으로 못 박고 있어 기울기를 명시하도록 정정.

시험 761 통과(새 7건 포함).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:51:33 +09:00
eomsangdon 0d7922bf9f Merge remote-tracking branch 'origin/sub_desktop_1' into sub_laptop_1 2026-09-08 19:47:19 +09:00
eomsangdon 9819a65fab Merge remote-tracking branch 'origin/main_desktop_1' into sub_laptop_1 2026-09-08 19:47:18 +09:00
eomsangdonandClaude Opus 5 9bf739fa92 feat(B09): 자재단가대비표·환율및기초자료 신설 — 표 16개 중 남은 둘
사용자 확정 12번의 마지막 둘. ③(자재값 출처 둘 다)·⑮(유가 전국/지역)와 한 벌.

- 서식은 실무 시트(영월 기번6) 그대로 — 원천 5칸(단가+쪽수) + 적용(단가+출처) + 비고.
  원천 이름은 코드에 안 박고 PriceBook.slot_names 를 씀(사무소마다 다름, 9-4 미결).
- ⚠ 확정 ③ — 슬롯마다 출처를 남길 자리를 둠(쪽수·업체명·날짜). 값이 없는 원천은
  0 이 아니라 빈칸. 0 이면 「0원짜리 견적」으로 읽힘.
  견적이 국계법 시행령 §9 의 4순위라는 사실을 표가 스스로 밝힘.
- ⚠ 확정 ⑮ — 유가 전국/지역 고르는 칸을 냄. 다만 지역값이 아직 자료에 없어
  「고를 수 없음 + 까닭」으로 드러냄. 없는 값을 지어내지 않음.
- ⚠ 환율및기초자료 인건비 칸은 운전사 셋만. 직종 118개를 다 실으면 노무비목록표와
  같은 표가 두 벌이 됨 — 실무 시트도 셋뿐임.
- 조종원 시간당이 실무·교본과 다른 사실(× 16/12 × 25/20)을 표 비고에 그대로 냄.

라우터 조회 추가(GET .../estimation/price-sources). 시험 5건 추가, 267건 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:44:53 +09:00
eomsangdonandClaude Opus 5 16c61add02 feat(B07): 표준도 도면에 하단표를 실제로 그림 — 빈 도각에서 표 넉 장으로
「표준도」를 누르면 도각만 실린 빈 장이 뜨던 것을, 제원 조합마다 표 한 벌을
CAD 표 객체로 그려 낸다. 도각은 두르지 않음(2026-09-08 사용자 지시).

값은 여기서 셈하지 않음 — `build_standard_sheets` 가 낸 것을 글자로 옮길 뿐임.
셈이 두 벌이 되면 도면과 수량서가 갈림(CLAUDE.md 5장).

실화면 확인 (프로젝트 936be972, 구조물 5기를 심고 확인)
  장 4개 · 개소 5 — ①③ 이 같은 제원이라 한 장에 2개소로 모임(장 나눔 실물 증명)
  돌쌓기(찰) H=2.5 뒷길이 45㎝ 깬돌   12줄  2개소·합 20.00m
  돌쌓기(메) H=2.0 뒷길이 35㎝ 야면석 10줄  1개소
  옹벽 H=2.0                          7줄  1개소 (관측 원단위 사유 1줄)
  큰돌쌓기 H=2.5                       5줄  1개소 (막힌 사유 4줄이 표에 그대로 뜸)

⚠ 만들다 잡은 것 — 표 폭을 176㎜ 로 냈더니 단서가 붙은 근거 문구(물구멍관·버림
콘크리트)가 칸을 넘어 수량 칸을 덮었음. 표는 글자를 안 접음. A1 작도 영역
739 × 499㎜ 에 맞춰 735㎜ 로 넓히고 줄 높이 9㎜ 로 잡음 —
**네 장까지** 한 면에 듦(47줄 × 9 + 간격 = 465㎜). 더 늘면 장 나눔(㉢)이 필요함.

⚠ 못 낸 값은 0 이 아니라 「-」 로 적음. 도면에 0 이 찍히면 「없다」로 읽힘.
⚠ 구조물이 없으면 빈 격자 대신 사유 한 줄이 뜸 — 빈 표는 「만들다 만 것」으로 보임.

자체검증 — 회귀 573 통과 · 0 실패. 공용 브라우저에서 표준도를 눌러 실제로 열고
확대해 글자·수치를 읽어 확인함(스크린샷 `tmp/browser/shots/standard_fit.png`).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:44:17 +09:00
eomsangdonandClaude Opus 5 1eff0931ae fix(B08): 버림 타설의 갈래를 「무근구조물」로 되돌림 — 이름만 가름
⚠ 앞 커밋(`bfd10b57`)이 `variant_value` 까지 「무근,버림」으로 바꿔 **금액이 통째로
빠졌음**(B09 실측 275,584원 · 본체 합계 9,587,677 → 9,312,093). 품셈 12-1-1 의 갈래는
**무근구조물·소형구조물·철근구조물 셋뿐**이라 「무근,버림」은 **없는 갈래**였음.

⇒ 갈래(`variant_value`·`structure_kind`)는 **무근구조물**로 되돌리고, 실무 줄 이름은
**표시 문구(`spec`·`spec_detail`)에만** 둠. 근거 — 봉화 제50호표가 줄 이름은
「레미콘타설(장비) 무근,버림」인데 **단가는 「무근」과 같음**. 실무도 줄만 가르고 품은
무근 것을 씀.

⚠ 받는 쪽이 문자열을 눅여 읽는 방식은 쓰지 않기로 함 — 그러면 다음 갈래가 조용히
잘못 붙음. **보내는 쪽에서 바로잡는 것**이 맞음.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:36:27 +09:00
eomsangdon c8a7e5bf9d Merge remote-tracking branch 'origin/sub_laptop_1' into main_desktop_1 2026-09-08 19:33:56 +09:00
eomsangdon b596ceaea0 Merge remote-tracking branch 'origin/sub_desktop_1' into main_desktop_1 2026-09-08 19:33:54 +09:00
eomsangdon 30300c89a2 Merge remote-tracking branch 'origin/main_laptop_1' into main_desktop_1 2026-09-08 19:33:52 +09:00
eomsangdonandClaude Opus 5 594f2d5922 fix(B08): 부대시설 개소를 [저장]으로도 넣을 수 있게 (사용자 확정 ⑬ 마무리)
⚠ 어제 넣은 `ancillary_counts` 를 **엔진은 읽는데 저장 요청 모양에는 없었음** — 화면에서
넣을 길이 없어 스크립트로만 넣히던 자리였음(`stone_supply` 가 레지스트리에 없어 저장이
거부되던 것과 같은 계열 — **읽는 자리와 넣는 자리가 안 맞는 것**).

`QuantitySettingsBody` 에 칸을 두고, 「통째로 갈아 끼우는 칸」 목록에 넣음 — 병합이면
개소를 **지울 수가 없음**(0 으로 되돌리려면 통째 교체라야 함).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:32:46 +09:00
eomsangdonandClaude Opus 5 11394d4011 feat(B05): 돌 구조물에 「조달(채집/구입)」 칸 신설 — 기본 채집
엔진(`B08_Quantity_Engine_UnitQuantity.STONE_SUPPLY_KEYS`)은 이미 `stone_supply` 를
읽는데 저장 칸이 없어 저장이 거부됐다(`정의되지 않은 옵션입니다: stone_supply`).
`back_len_cm` 때와 같은 계열 — 읽는 키와 저장 칸이 어긋난 자리.

- 붙인 곳: 돌쌓기(찰·메) · 큰돌쌓기 · 골막이 · 바닥막이 · 기슭막이 여섯.
- 기본 「채집」 — 사용자 확정 ②(2026-09-09) 「기본은 캔다, 구조물마다 바꿀 수 있게」.
  별표2 「석축 등에 필요한 야면석 등은 가급적 현장에서 채취·사용」이 근거.
- 저장 왕복을 실제로 해 봄: PUT 200 → 되읽기에서 `stone_supply="구입"` 그대로 나옴.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:32:38 +09:00
eomsangdonandClaude Opus 5 83e63c70a6 feat(B07): 횡단도 수량표에 측구 토사·암석 두 칸 — 14 → 16칸
랩탑 메인이 측구를 갈라 냈으므로(`6a7c339f`) 그 값을 그대로 옮김.
여기서 다시 가르지 않음 — 근거가 없는 측점은 B06 이 나누지 않고 사유를 함께 냄.

`split_basis()` 를 함께 둠 — `ditch_split_basis` 를 사람이 읽는 말로 바꿔 준다.
⚠ 표 칸은 숫자만 담으므로 이 말은 표 밖(주기·화면)에 실어야 함.
「전량 암」이 경계선을 못 찾아서인지 정말 암 지반이어서인지 숫자만으로는 구별 안 됨.

⚠ 층따기 밑수가 바뀐 것이 이 표에도 그대로 왔음 — 랩탑 메인이 「성토 사면길이」에서
「B06 이 낸 원지반 깎는 길이(`bench_cut_length_m`)」로 고쳤고, 이 모듈이 B08 `_length_of`
를 빌려 쓰므로 **같이 움직였음**. 값이 없는 옛 저장분에서는 0 으로 섬 —
성토 사면길이로 대신 채우지 않는 것이 맞음(다른 면을 세게 됨).

실측(936be972, 옛 저장분) — 여전히 **14칸**. `ditch_split_basis`·`bench_cut_length_m`
둘 다 저장된 설계에 없음(B06 확정 전 자료). 새 키가 있는 자료에서 16칸이 되는 것은
시험으로 확인함.

자체검증 — 시험 11건(측구 두 칸 · 못 가른 측점 사유 · 층따기 밑수 따라가기 추가),
회귀 573 통과 · 0 실패.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:32:10 +09:00
eomsangdon 1333fdbdd1 Merge remote-tracking branch 'origin/sub_laptop_1' into sub_desktop_1 2026-09-08 19:30:17 +09:00
eomsangdon fcb16fb42d Merge remote-tracking branch 'origin/main_laptop_1' into sub_desktop_1 2026-09-08 19:30:16 +09:00
eomsangdon 60c3948074 Merge remote-tracking branch 'origin/main_desktop_1' into sub_desktop_1 2026-09-08 19:30:15 +09:00
eomsangdonandClaude Opus 5 043222bed2 feat(B09): 기초자료·중기 탭 켬 — 목록표 넷이 화면에 뜸
「표가 났는데 안 보이면 낸 것이 아님」. 꺼져 있던 탭 둘을 켜고 표를 붙임.

- 새 파일 B09_Estimation_UI_BaseData.ts — 화면 조립부가 이미 1,200줄을 넘어 분리.
  상태를 안 들고 그리기만 함.
- 기초자료 탭: 노무비(118)·재료비(1)·경비(613) 목록표. 중기 탭: 중기목록표(5).
- ⚠ 빈 표를 그냥 두지 않음 — 재료비목록표가 한 줄뿐인 사유를 표에 띄움.
  「다 채운 것」으로 읽히면 안 됨.
- ⚠ 계산 과정을 감추지 않음(8-13) — 조종원 환산이 실무·교본과 다르다는 사실과
  그 영향(기계 든 공종 +19~24%)을 중기 탭에 적음. 잡재료가 연료에 접혀 있다는 것도.
- 경비목록표는 취득가(천원), 시간당 사용료는 중기 탭이라는 안내를 달았음.

실측(공용 브라우저): 기초자료 표 3장 732줄 · 중기 5줄, 사유 문구 넷 다 뜸.
⚠ 백엔드 재시작이 있어야 새 조회가 붙음(재시작 전 404 → 후 200).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:25:48 +09:00
eomsangdon 1c37675afd Merge remote-tracking branch 'origin/main_laptop_1' into sub_laptop_1 2026-09-08 19:25:03 +09:00
eomsangdon 0b15e70b95 Merge remote-tracking branch 'origin/main_desktop_1' into sub_laptop_1 2026-09-08 19:25:01 +09:00
eomsangdon f37adc12d5 Merge remote-tracking branch 'origin/sub_laptop_1' into main_laptop_1 2026-09-08 19:23:55 +09:00
eomsangdon c8b76bf529 Merge remote-tracking branch 'origin/main_desktop_1' into main_laptop_1 2026-09-08 19:23:54 +09:00
eomsangdonandClaude Opus 5 c39212d7b5 feat(B07): 횡단도 수량표 4칸 → 14칸 — 저장된 설계에서 채우는 통로
별표2 Ⅰ.1.나.(5) 가 요구하는 여덟(지반고·계획고·절토고·성토고·단면적·지장목 제거·
측구터파기 단면적·사면보호공) 중 뒤 넷이 빈칸으로 나가던 자리.

빈칸의 까닭은 「값이 없어서」가 아니라 **통로가 없어서**였음 — 표가 `source["quantities"]`
를 보는데 그 키가 원본 파일에 아예 없음(실측: 횡단 원본 15키에 `samples`·`center_z`·
`chainage_m` 은 있고 `quantities` 는 없음). 반면 저장된 설계에는 단면적이 그대로 있고
사면길이도 설계선에서 유도됨.

⚠ 계산을 새로 짜지 않음 — 단면적은 B06 저장값을 그대로 읽고, 사면 계열은 B08 이 쓰는
`station_slope` 를 그대로 부름. 계열 이름·어느 면을 쓰나도 `SlopeArea` 정의를 빌림
(거기서 밑수가 바뀌면 이 표도 같이 움직여야 함).

채운 열 칸
  단면적 3   깍기 토사 · 깍기 암석 · 쌓기
  사면   7   층따기 · 면고르기(성·절) · 지장목제거(성·절) · 성토파종 · 절토살포

⚠ 사면 칸의 단위 — B08 은 측점 사이를 적분해 ㎡ 를 내나 그것은 두 측점이 있어야 나옴.
한 장짜리 횡단도에 들어가는 것은 그 측점의 **사면길이(m)** 이고 1m 폭 조각의 ㎡/m 와
수치가 같음. 표기를 m 로 볼지 ㎡/m 로 볼지는 표기 문제이고 값은 하나임.

안 채운 칸 — 근거가 없어 임의로 안 넣음
  측구 토사/암석(저장값이 `ditch_area_m2` 한 값뿐) · 표토제거(두께 칸 없음) ·
  편책(별도 일위대가 제작 뒤 연결로 확정) · 제근(입목 본수 안 듦) · 노면다짐

자체검증 — 새 시험 8건(사면길이는 손으로 잰 √5 · √(2.4²+2²) 와 대조, `is not None`
만 보면 0 이어도 통과하므로 실수치로 맞춤), 회귀 570 통과 · 0 실패.
실프로젝트 936be972 세 측점에서 **21칸 중 14칸**에 값이 찍힘(앞서 4칸).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:23:36 +09:00
eomsangdonandClaude Opus 5 6a7c339f8a feat(B06): 측구터파기 단면적을 토사/암으로 가름 — 새 입력 없이 암반 경계선으로
별표2 Ⅰ.1.나.(5) 「측구터파기 단면적」이 횡단도 표의 법정 칸인데 한 값뿐이라
「측구 토사 / 측구 암석」 두 칸이 반만 채워졌다.

- 가르는 근거는 **절토 분리와 같은 것**(지반 유형 + 암반 경계선). 새 입력을 만들지 않았다.
- 측구 상단에서 암반 경계선까지의 깊이로 공칭 도형(사다리꼴·L형)을 가로로 가른다.
- ⚠ 근거가 없으면 **나누지 않는다.** 사유를 `ditch_split_basis` 로 함께 냄:
  rock_boundary / soil_ground / rock_ground_no_boundary / no_ditch.
- 기존 `ditch_area_m2` 는 **합계로 그대로** 두고 갈래를 덧붙였다 — B08 이 순서대로 옮겨 갈 수 있게.
- 파이썬·TS 짝을 함께 고침. 거울 테스트 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:22:58 +09:00
eomsangdonandClaude Opus 5 bfd10b57f8 fix(B08): 버림 타설 줄을 실무 이름으로 갈라 냄 (「무근,버림」)
실무 내역이 「레미콘타설(장비) **무근,버림**」으로 갈라 적음(봉화 제50호표,
2026-09-09 데스크탑 보조 확인). 같은 공종·같은 단가라 **금액은 안 움직이고 이름만 맞춤** —
받는 쪽이 그 갈래로 일위대가를 그대로 세울 수 있게.

⚠ 버림은 늘 무근이라 구조물 종류(무근/철근)를 따라가지 않음. 그래서 버림 몫만 따로
모아 갈래 이름을 「무근,버림」으로 냄. 나머지 콘크리트는 종전대로 구조물 종류로 갈림.

검증 프로젝트 실측 — 돌쌓기 셋·큰돌쌓기 하나의 버림이 한 줄로 모여 4.700㎥.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:22:02 +09:00
eomsangdon ef62abb885 Merge remote-tracking branch 'origin/sub_desktop_1' into main_desktop_1 2026-09-08 19:19:12 +09:00
eomsangdon 5cf722021f Merge remote-tracking branch 'origin/main_laptop_1' into main_desktop_1 2026-09-08 19:19:11 +09:00
eomsangdon a09f7ba32e Merge remote-tracking branch 'origin/sub_laptop_1' into sub_desktop_1 2026-09-08 19:16:40 +09:00
eomsangdon fdae40dc62 Merge remote-tracking branch 'origin/main_laptop_1' into sub_desktop_1 2026-09-08 19:16:39 +09:00
eomsangdon 997f46e36e Merge remote-tracking branch 'origin/main_desktop_1' into sub_desktop_1 2026-09-08 19:16:38 +09:00
eomsangdonandClaude Opus 5 f60fb9c355 feat(B06): 채집석 공제를 사토에서 빼는 통로 신설
네 창 합의 문구 그대로 못 박음:

    채집석 공제는 사토에서 한 번만 뺀다.
    B08 은 소요량(collected_stone_deduction_m3, ㎥ 양수)을 내기만 하고 공제하지 않으며,
    빼는 자리는 유토곡선의 사토뿐이다 —
    실어 내는 몫(spoil_m3 − natural_spoil_m3)에서 먼저 빼고 모자라면 자연방토에서 뺀다.

- `computeHaulPlan` 이 공제를 받아 **잔량 하나하나**를 줄인다 — 총량만 줄이면 사토
  balloon·운반거리가 안 따라간다. 지반유형 안분도 같은 비율로 줄인다.
- ⚠ `null`(아직 안 옴)과 `0`(공제 없음)을 가른다. 결과에 받은 값과 실제로 뺀 값을 함께 싣는다.
- 서버 진입점·파이썬 context 를 통로로 이어 둠. B08 이 값을 내면 실어 주기만 하면 됨.

시험 3건(공제 반영·잔량 동반 감소·사토 초과 시 사토까지만·자연방토는 나중) 을
TS 를 실제로 돌려 확인.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:15:27 +09:00
eomsangdonandClaude Opus 5 9d2c70dc8f feat(B08): 채집석 공제 소요량을 냄 — 빼지는 않음 (사용자 확정 ②)
돌은 기본 「캔다」(별표2 「야면석 등은 **가급적 현장에서 채취·사용**하도록 운반거리를
조사한다」 · 실무 견적 다섯 권에 야면석 구입 단가 0건). 구조물마다 「구입」으로 바꿀 수 있음.

⚠⚠ **채집석 공제는 사토에서 한 번만 뺀다.**
B08 은 소요량(`collected_stone_deduction_m3`, ㎥ **양수**)을 내기만 하고 공제하지 않으며,
빼는 자리는 유토곡선의 사토뿐임 — 실어 내는 몫(spoil_m3 − natural_spoil_m3)에서 먼저 빼고
모자라면 자연방토에서 뺌. (랩탑 메인의 통로에도 같은 문장을 박아 둠 — 두 곳이 같은 말이라야
나중에 누가 봐도 안 갈림.)

⚠ **부호를 넘기지 않음.** 실무 시트가 `−274.66` 이라 그대로 넘기면 두 번 뒤집힘.

밑수 — 면석 몸통(면적×뒷길이×몫) + 고임돌 + 막자갈. **이미 우리 식 안에 있는 값들**이라
새 수치를 지어내지 않음. 목적지는 `haul_deduction` 이라 자재총괄(`material` 만 모음)에
안 섞임. 인계 맨 위에 구조물 합산 한 값으로 실림.

시험 754 통과(새 6건 포함).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:15:09 +09:00
eomsangdonandClaude Opus 5 06f47ab2d0 fix(B08): 층따기를 다시 세움 — 단위 ㎡ 가 정본 (사용자 확정 ⑦)
2026-09-08 에는 「품셈 공식이 ㎥ 인데 우리는 ㎡」라 막아 두었음(410만원 자리).
사용자가 **㎡(실무 관행)**로 확정했으므로 매핑 밑수를 ㎡ 로 바꾸고 막힘을 풂.

⚠ 어긋남 자체는 사라지지 않았으므로 매핑에 **그 사실과 까닭을 적어 둠** —
품셈 9-18 [주]는 `Q1 = … = ㎥/시간` 이라 공식은 체적 기준이고, 단의 높이·폭이
설계도서 값이라 체적을 지어낼 수 없어 면적으로 감. ⇒ **받는 쪽이 ㎡ 단가를 세워야 함**
(㎥ 단가를 그대로 곱하면 금액이 틀림).

옛 시험 둘이 「층따기는 막힌다」를 계약으로 못 박고 있어 정정.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:13:27 +09:00
eomsangdonandClaude Opus 5 1df41c40f4 fix(B08): 층따기 밑수를 원지반 표면 길이로 갈아 끼움 (사용자 확정 ⑦)
⚠ **면이 달랐음.** 층따기는 성토부 **아래 원지반**을 계단으로 깎는 일인데(교본 6장 4절)
우리는 **성토 비탈면 길이**를 밑수로 쓰고 있었음. 값이 나오므로 아무 시험도 안 잡던 자리.

B06 설계가 측점마다 내는 `design.bench_cut_length_m`(원지반 표면의 경사길이, 원지반
횡단기울기 1:4 보다 급한 조각만)를 그대로 밑수로 씀. 면적은 종전대로 **평균단면적법**.
⚠ 값이 없는 측점은 **0** — 성토 사면길이로 대신 채우지 않음(다른 면을 세게 됨).

⚠ 단위는 **㎡ 그대로**(사용자 확정 ⑦). ㎥ 로 바꾸지 않음 — 단의 높이·폭은 설계도서 값이라
지어낼 수 없음. 앞서 「품셈 밑수가 ㎥ 라 못 곱함」으로 막아 둔 자리는 이 확정으로 풀림.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:11:53 +09:00
eomsangdonandClaude Opus 5 fe5e0c3930 feat(B07): 표준도 하단표 1단계 — 제원 조합으로 장 나눔 + 단위당 표 조판
사용자 확정 5번(2026-09-09 「진행해줘」)의 1단계. 실무 원본 `07-구조도-소광리.xlsx`
53탭을 펴서 표 짜임을 확정한 뒤, B08 원단위 전개를 그 모양으로 접는 통로를 냄.

⚠ 계산은 새로 만들지 않음 — `build_unit_table` 결과를 제원 조합으로 묶고 단위당으로
나눌 뿐임(계산 자리는 한 곳, CLAUDE.md 5장).

장 나눔 축 = 제원 조합(`type_id` + 높이 + 제원 전부). 확정 ⑨ 대로 기울기가 바뀌면 장이
갈림 — 기울기가 제원의 한 칸이라 저절로 지켜짐. 측점·방향처럼 개소마다 다를 뿐인 칸은
장을 안 가름(`PER_PLACE_OPTION_KEYS`).

선행 확인 두 건도 끝냄
  · 8-3 틈메우기돌 — 53탭 전수에서 `틈메우기`·`틈막이`·`사춤` 0건 ⇒ 넣지 않음
  · 8-2 버림 콘크리트 — 실무에 있음(「바닥 10㎝ 이상 콘크리트(버림)」 · 옹벽 버림CON'C),
    KDS 44 90 00 의 100㎜ 와 같음

⚠ 만들다 잡음 — `billing_unit` 이 비어 있으면 「단위 미정」이 아니라 「m·연장」이라는
계약이 있었음(`StructureQuantity`). 미정으로 읽어 돌쌓기가 전부 단위 없는 장이 됐음.

⚠ 실무 시트와 어긋나는 줄 일곱은 PLAN 4-12 에 표로 남기고 확정 대기로 둠 —
임의로 맞추지 않음(터파기 0.35 대 2.30 이 가장 큼).

자체검증 — 새 시험 11건 통과, 회귀 562 통과 · 0 실패.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 19:09:55 +09:00