측구 선택(`ditch_choice`)이 캐시·브라우저 재계산·저장 patch·서버 스키마 넷에 없어 카드에서 눌러도 값이 버려지던 자리를 이었음. 화면 실측으로 확인함 — 끄면 절토 계 3.33 → 1.78㎡, 다시 켜면 3.90㎡. 전체 시험 1198 통과·실패 0.
⚠ 되받기로 데스크탑·옆 창 커밋이 함께 실림(계 20커밋) — 제 것은 `5907de85`·`a3d73fcf`·`98a594d5`·`8171a22a` 넷임.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
상시계획서에 남아 있던 완료된 조사·근거 원문을 검증 폴더로 옮김.
계획서에는 결과만 남기고 경로 인용도 두지 않음 (2026-09-09 사용자 확정).
계획서 1,841줄 10.5만 자 → 1,166줄 6.5만 자 (-38%).
미체크 항목 53건 그대로 — 살아 있는 일감 손실 없음.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
사용자 판단으로 계획서에서 뺀 것 — 원문 그대로 보관.
- 공통기반 0-5·0-7 : 행동지침 5장(계산 자리·데이터 3층)과 겹침
- 8-33 : 창별 검증 프로젝트 표는 OWNERS.md 자원 점유로, 나머지는 여기
- 참고 절 셋 : 데이터 세트 정의는 지침과 중복, 구조물 구현 기준·계곡 통과
시설 선정은 옛 자료
계획서 1,167줄 6.4만 자 → 1,058줄 5.9만 자.
미체크 53 → 57 (0-8 고칠 순서 셋 · 투영 이월 하나를 체크박스로 세움).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`spoil_bank.side` · `extra_distance_m` 은 정본에 `default_basis` 로 까닭이 적혀 있어
목록 없이도 통과함(빼고 돌려 확인). **앞으로도 목록에 넣지 말 것**을 그 자리에 적음.
⚠ 같은 상태인 것이 **13 개 더 있음** — `revetment`·`soil_guard`·C군 `side` 계열.
빼도 통과하나 이번에는 안 건드림(주석 덩어리가 얽혀 있어 잔손질 범위를 넘음).
`resources/tester/` 1183 통과 / 22 건너뜀 / 실패 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
창끼리 같은 위키를 찾게 그래프 본체 여섯만 추적 (합쳐 120KB).
위키화 뒤 `git sync` 한 번이면 문서와 그래프가 함께 옴.
- `.gitignore` 40행 `graphify-out/` 에 `/` 가 없어 docs/wiki/graphify-out 까지
같이 막고 있었음 (`git check-ignore` 로 확인). 뿌리에만 걸도록 고침
- 날짜별 산출물 13MB · `.graphify_python`(PC 별 경로) · `.graphify_root` ·
`.graphify_incremental.json`(이 PC 절대경로가 박힘) 은 계속 제외
- `.gitattributes` — 줄끝 변환을 끔. 바꾸면 서명(.sig)이 깨지고 창마다 헛 diff 가 남음
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
날짜별 산출물까지 통째로 실어 창끼리 같은 위키를 보게 함. 374 파일 13MB.
PC 마다 값이 다른 둘만 제외 —
`.graphify_python` 이 PC 파이썬 실행 경로
`.graphify_incremental.json` 이 PC 저장소 절대경로가 박혀 있음
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PLAN 9-6 · 8-32 두 잔손질.
① 미공표 직종 신뢰도 플래그 (9-6)
지식DB 가 「단가 채택 시 플래그 유지 필요」(노임단가_적용 §2-3) ·
「해당 단가 사용 시 경고 표시」(원가_입력변수_사전)로 두었는데 노임 층에 없었음.
- load_labor_reliability() — 원문 기호 `*`(조사현장 5개 미만)·`**`(미조사) 그대로.
정상 공표 직종은 아예 안 담음(빈 값과 「정상」을 구별할 일이 없게).
- PriceTitle.reliability — 노임 제목 전부 + 조종원 줄에도 같이 붙임.
- build_summary 의 labor_reliability → 화면 힌트 줄로 경고.
⚠ 금액을 막지 않음 — 값은 그대로 서고 「조사현장이 적다」는 사실만 나름.
⚠ 내역에 실제로 실린 것만 경고 — 카탈로그 40직종을 다 띄우면 쓰지도 않는 직종이
화면을 채움. 실측 둘: 1037 벌목부 · 1050 일반기계운전사(지식DB 예시 그대로).
② 층따기 사전 밑수 (8-32)
원가_출력변수_사전 B2-9 가 「㎡·m」였음. 품셈 9-18 은 ㎥ 당이고, 우리도 확정 2차 ①
로 면적이 정본이되 길이를 곱해 ㎥ 로 내보내고 있음. 두 축을 한 칸에 적어 ㎡ 로
내도 되는 것처럼 읽히던 자리 — 밑수를 ㎥ 로 고치고 까닭을 비고에 적음.
코드는 이미 ㎥ 로 내보내 수치 변화 없음.
시험 여섯 신설 · 전체 1182 통과 · 실패 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
두 PC 가 각자 `graphify update` 를 돌려 같은 이름으로 다른 그래프를 냈음.
그래프는 만들어지는 물건이라 내용을 합칠 것이 아니고, 랩탑 것이 최신·전체라 그쪽을 취함
(CLAUDE.md 6장 「같은 자리를 서로 다르게 고쳐 부딪히면 랩탑 쪽」).
2026-09-09/graph.json 796KB → 906KB · graph.html 845KB → 985KB
+ .graphify_analysis.json · .graphify_labels.json · cache/stat-index.json
곁들여 되살린 것 —
B08_Quantity/0_old_260726_codex.zip 이 랩탑 `auto:` 커밋에 삭제로 실려 있었음.
랩탑이 지운 것이 아니고 이 PC 파일이 이력과 해시까지 같아, 시놀로지가 랩탑 쪽에
파일을 못 놓은 자국으로 보고 되살림. 지우기로 정하면 한 줄로 다시 뺄 수 있음.
⚠ 남은 것 — 두 PC 가 다 위키화를 돌리면 이 충돌이 되풀이됨. 만드는 곳을 한 곳으로
모을지 사용자 판단 대기.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
사용자 확정 5차 작은 것 1 「지금은 안 넣되 숫자 넣으면 되게 열어 둘 것」.
근거는 산림품셈 1-2-6 — 주재료비(할증수량 제외)의 2~5%까지, 산정 근거 명시.
- 기초자료 탭 「산출 조건」에 칸 하나 + [적용]. 비면 줄 자체가 안 섬(지금 상태 그대로).
- 밑수는 **자재 줄만** — 노무·경비, 하위 일위대가 재료비는 안 듦(층마다 거듭 세지 않음).
- 상한 5% 초과는 거절(400) — 조용히 깎아 넣지 않음.
- ⚠ 지금은 일위대가에 주재료비가 선 공종이 0개라 붙을 밑수가 없음 — 그 사실을 칸 밑에 띄움.
- 곁다리: 비율 줄(제잡비·공구손료)이 저장했다 읽으면 사라지던 것을 고침.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- 사용자가 누른 선택(`ditch_choice`)과 자동 판정 결과(`ditch_enabled`)를 다른 칸으로 나눔.
- 캐시(`CrossDesignChoice`)에 칸이 없어 토글이 화면에서 안 돌던 자리 이음 —
선택이 있으면 그것을 따르고, 없으면 저장분 결과를 자동값과 다를 때만 선택으로 살림.
- 서버 patch 스키마에도 같은 칸을 둠. 최상위 `None` 은 병합에서 걷히므로
「자동」으로 되돌리는 길은 아직 없음(카드 토글은 켬/끔 둘뿐이라 지금은 손해 없음).
화면 실측(카드에서 껐다 켜기)은 PLAN.md 3-16 에 미체크로 남아 있음.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
화면 실측에서 토글이 안 돌던 까닭이 「칸 하나 빠짐」이었음 — 통로 어느 한 곳만
빠져도 눌린 값이 조용히 사라지므로 네 파일을 함께 지킴. patch 병합이 「끔」(False)을
걷지 않는 것도 함께 봄.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
확정 2차 ② 후반 「사용자가 값을 바꿀 수 있게」. 식은 이미 있었고 없던 것은 덮어쓸 칸이었음.
- 등록부(돌쌓기 계열 다섯 종류)에 `thickness_top_m`·`thickness_bottom_m` 칸을 둠.
큰돌쌓기는 두께 식이 달라 뺐고 화면에서도 그 장에는 안 뜸.
- 빈 칸은 「안 정함」 — 자동값을 저장에 박지 않음. 상부만 넣으면 하부는 그 위에서 식을 이음.
- 근거 문구가 어디서 온 값인지 적음(「사용자 입력」 / 「뒷길이 45㎝ + 0.3」).
화면 실측(랩탑_보조, 표준도 3장 돌쌓기(찰)) — 0.60 넣고 저장하니 2개소 반영,
입적 24.375 → 20.625㎥ 로 움직였고 칸을 비워 되돌리니 24.375 로 복귀함.
시험 다섯 추가, 전체 1203 통과·실패 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
⚠ 잡은 자리(2026-09-09 실측) — 표준단면 「측구 상폭」을 0.69 → 0.9 로 고쳐 저장했더니
정본 한 줄에 **새 측구 기하(상폭 0.9 · 측구 0.18㎡)** 와 **옛 절토 면적(3.33㎡)** 이 섞여
남았음. 브라우저는 만진 측점만 다시 계산하는데 저장은 전 측점 면적을 실어 보내므로,
안 만진 측점이 옛 값 그대로 정본이 됨. 수량이 갈리는 자리임.
- [저장]·[확정]이 면적을 모으기 **전에** 전 측점을 다시 계산함(`reconcileDesigns`).
- 표준단면 패널에 「고친 값이 측점에 아직 안 실렸음」 알림 — 언제 따라오는지 함께 적음.
⭐ 거울(파이썬·TS) 문제가 아님을 먼저 가름 — 같은 입력을 주면 두 쪽이 같은 값을 냄
(측점 20.0m: 0.69 기준 절토 3.328 · 0.9 기준 3.899, 저장분은 3.328 + 측구 0.180 으로 섞여 있었음).
시험 둘 추가(저장·확정이 재계산을 먼저 부르는지), 전체 1205 통과·실패 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
계획서 0-5(세트 통짜 배선)는 아직 못 함 — 까닭 ①(관 지점을 B06 이 못 받음)은 풀렸으나
②(폼 → 조정창 되받기 · 형태별 높이 한계 되돌리기)가 그대로임. 억지로 갈지 않음.
대신 폼 칸 20개를 캐시 경로와 대조해 빠진 칸 셋을 찾음.
- `revet_foundation` — 그리기가 읽는 값(터파기 파선)인데 안 옮겨 적고 있었음. 이어 붙임.
⚠ 화면 실측은 못 함 — 상세 단계 칸이라 B06 배치 폼에 아직 안 뜸(정본도 전부 비어 있음).
- `inlet_basin_form`·`inlet_basin_material` — 수량 전용이라 캐시에 안 실어도 됨(사유를 시험에 적음).
시험 둘 추가 — 새 폼 칸이 캐시 경로에서 빠지면 잡음. 전체 1207 통과·실패 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
계획서 0-8 의 남은 하나. 서버는 분석이 도는 동안 새 자료를 이미 막고 있었고
(`is_analysis_running`), 없던 것은 **막힌 까닭을 사람에게 보이는 것**이었음.
여럿이 한 프로젝트를 보면 「왜 안 올라가지」가 됨.
- 분석을 띄우는 **경로 넷 모두** 시작한 사람을 `params.started_by` 로 담음.
- `analysis_lock_owner` 가 그 id 로 이름을 붙여 냄 — 옛 자료는 id 가 없어
**이름 없이 잠금만** 돎(막는 것이 먼저).
- `/upload-overview` 응답에 `analysis_lock` 을 실어 B03 화면이 띠로 보임.
화면 실측 — 「엄상돈 님이 올린 자료를 분석하는 중입니다」 띠가 경고색으로 뜸(응답을
잠깐 가로채 확인하고 곧바로 되돌림). 지금 도는 분석이 없어 실제 잠금 화면은 다음 업로드 때 볼 것.
시험 넷 추가(도는 중 아님·이름 붙음·옛 자료·경로 넷 대조), 전체 1211 통과·실패 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
계획서 4-13. 소광리 `07-구조도-소광리.xlsx` 다섯 탭의 **개소당 소계를 그대로** 옮김
(Ø800 A·C · Ø1000 A·C · Ø800 A+집수정). 비례로 늘리지 않음 — 그 규격에서만 맞는 값임.
- 원단위표에 다섯 줄 추가. 거푸집 종류가 탭마다 갈려 이름을 뭉개지 않음 —
Ø800 A·C 는 **유로폼**, Ø1000 과 A+집수정은 **합판거푸집(4회)**.
- ⚠ 철근·면목 줄은 원본 날개벽 탭에 **없음**(집수정구조도 탭에만 있음). 지어내지 않음.
- 등록부·배치 폼에 「관보호공 날개벽」 칸(A-TYPE·C-TYPE·A-TYPE+집수정). 비우면 안 셈.
- ⚠ 겹쳐 세는 자리 — 「A-TYPE+집수정」은 집수정을 품은 형식이라 집수정 형식도 차 있으면
**사유로 알림**(값은 안 고침). 원단위표 `double_count_rules` 와 짝.
ⓘ 집수정 Ø800 은 **이미 표에 있었음**(`pipe_inlet_basin` □형·콘크리트·800) — 다시 만들지 않음.
화면 실측 — 배수관 폼에 칸이 뜨고 선택지 셋 확인. 엔진 실행으로 날개벽 줄이 따로 서고
터파기 13.104 · 콘크리트 2.0595 · 유로폼 12.5376 이 나오는 것까지 봄.
시험 일곱 추가, 전체 1218 통과·실패 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
계획서 0-2 「재계산 중간 취소」 재판정. **취소는 만들지 않기로 닫음.**
· 잰 값 — 서버 계측 네 번 87.3 · 90.0 · 93.9 · 95.4초(평균 91.7). 293초에서 이미 3분의 1.
· 취소가 「반쯤 부순 상태」를 만드는 단추가 됨 — 관 지점은 체인 **전에** 이미 지워지고,
체인이 끊기면 노선만 새것·종횡단은 옛것으로 어긋남(2026-09-06 실측 사고와 같은 자리).
· 시간의 90 %가 배수·관·측점 재생성 한 곳이라, 급하면 취소보다 그 자리를 줄이는 것이 이득.
대신 대기 안내를 고침 — 「몇 분 걸립니다」 → 「1분 반쯤 걸립니다 (N초 지남)」로
**경과 시간이 1초마다 돎**. 멈춘 것인지 도는 것인지 사람이 알 수 있어야 함.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
계획서 V-8. 엔진이 일부러 화면 몫으로 남긴 자리(`_Handoff_Rows_Prep.py:182`
「표기는 만들지 않는다 — 측점 간격을 아는 화면 몫이다」)를 채움.
- 토적표가 쓰던 `stationLabel` 을 **내보내 같이 씀** — 두 벌로 만들면 같은 측점이
화면 두 곳에서 다르게 적힘.
- 구간은 `start_m`·`end_m` 을 그대로 씀. `length_m` 이 그 구간의 합이라 두 값이 갈릴 자리가 없음.
- 값이 없으면 표기를 안 붙임(지어내지 않음).
화면 실측 — 「돌쌓기(찰) H=2.5 · L=10.0m · NO.4 ~ NO.4+10」(정본 80~90m)로 뜸.
시험 둘 추가(표기 함수 한 벌 · 구간은 구조물 값에서), 전체 1220 통과·실패 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
계획서 4-12. **빈 자리를 그냥 두면 사용자가 「고장인가」로 읽음** — 장마다 왜 그림이
없는지와 **무엇을 받아야 서는지**를 표 위에 한 줄 적음.
- 돌쌓기(찰) — 「뒷길이를 고르면 그림이 섭니다」 · 옹벽 — 「단면이 달라 아직 안 그림」
⚠ **큰돌쌓기를 `FIGURE_TYPE_IDS` 에서 뺌** — 그림은 두께를 뒷길이에서 내는데 큰돌쌓기는
규격이 **직경**이라 목록에만 있고 결과는 늘 빈 그림이었음(품셈 13-6 직경 ↔ 13-4 뒷길이,
수량 쪽에서 이미 갈라 둔 자리). **식은 만들지 않음** — 「직경에서 두께를 내는 법」은
도메인 판단이라 사용자 몫이고, 지금은 사유만 띄움.
⚠ 곁가지 하나를 화면에서 잡아 함께 고침 — 그림 대상 목록을 **기울기 판정**에도 쓰고 있어
큰돌쌓기를 빼자 **장 제목의 「1:0.3」까지 사라졌음**. `SLOPE_TYPE_IDS` 로 갈라 되살림.
화면 실측 — 표준도 1장에 「그림 없음 — 큰돌쌓기는 규격이 직경이라 …」 한 줄이 표 위에 뜸.
시험 다섯 추가, 전체 1225 통과·실패 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
옛 문구가 영어 한 줄("unresolved source gap")이라 무엇이 없어 미뤄졌는지 안 보였음.
지금 사실대로 적고 받아야 할 자료(실무 구조물 일람표)와 지식DB 근거 자리를 함께 붙임.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
「동바리 대상 없음」은 옹벽·집수정을 세어 보고 하는 말인데, 셀 구조물이 하나도
없어도 뜨고 있었음. 화면 조건에 구조물 수를 함께 봄 — 서버 값·금액은 안 바뀜.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
품셈 8-1-7 5호 「유류가격은 해당지역의 가격으로 한다」. 칸은 있었으나 시도별 값이
없어 잠겨 있었음. 오피넷 avgSidoPrice.do 스냅샷을 받아 데이터셋으로 세우고 물림.
- 안 고르면 전국평균 그대로 — 현장 소재지를 임의로 찍지 않음.
- 판에 없는 지역은 조용히 전국평균으로 눕지 않고 사유를 남김.
- 「지역 공시가」를 고를 수 있는지는 코드가 아니라 판이 정함.
- ⚠ 원천의 시도 가름이 행정구역과 다름(20=전남광주 한 줄, 07·16 없음) — 원문 그대로 둠.
- 수집 스크립트에 시도별 호출을 더함(전국평균과 두 벌로 보존).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
요율 숫자만으로는 그 데이터를 보고 금액을 되짚을 수 없었음. 밑수를 무엇으로 잡고
어떻게 자르는지가 코드에만 있어, 데이터를 갈아 끼운 사람이 규칙이 바뀐 줄 모름.
- 빠져 있던 밑수 한 칸(건설기계대여대금 지급보증수수료)을 채움.
- 처리 규칙을 데이터에 실음 — 자르는 법(줄 버림·관급자재대 천원 올림) · 안전관리비
A·B 두 식과 1.2·1.1 · 조달수수료 차감 없음 · 이윤 밑수 · 규모 구간 판정.
- 거울 시험 6개 — 한쪽만 바뀌면 멈춤. 금액은 안 바뀜(1208 통과·실패 0).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
물량은 인계로 오는데 단가가 없어 성토 13,150.2㎥·성토면다짐 12,350.3㎡ 가 금액 없이
서 있었음. 원문에는 값이 다 있고 막힌 까닭만 서로 달랐음.
- 노체포설(9-16-1): 기종이 [주]에만 있어 못 골랐음 → 흙깎기와 같은 장비 칸을 둠
(무한궤도 굴착기 0.7㎥, [주]① 그대로. 화면에서 바꿀 수 있음).
- 비탈면 다짐(9-17-1): 표가 한 장도 없고 값이 절 제목에 있음(A = 77.7 ㎡/시간)
→ 제목·[주]에만 있는 작업량을 싣는 자리를 두고 원문 문구를 줄에 남김.
- 부착 콤팩터(0240-0007)는 카탈로그에 이름이 비어 있어 손료가 안 붙고 있었음 —
이름 대신 분류번호로도 가림(조합 사용 넷은 그대로, 목록을 넓히지 않음).
금액: 성토 59,477,858원 · 성토면다짐 17,827,251원 (합 77,305,109원)이 새로 섬.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
기계경비 = 기계손료 + 운전경비 + 수송비인데 수송비가 없었음. 수송비를 내는 공종
FP-10-04 중기운반은 표가 미판정이라 단가가 아예 안 섰음.
- 산림품셈 10-4 사이클 그대로 — 트레일러(20TON) t1=20·t3=20·t4=0.42 /
트럭(10.5TON) t1=10·t3=10·t4=5 · ㎝=t1+t2+t3+t4 · N=60×0.9/㎝, 단위는 회당.
- 거리·도로 구분은 설계 입력 — 비면 줄이 안 서고 사유만 남음(임의 거리 금지).
- 원문이 「-」로 둔 칸(트레일러·고속4차선)은 지어내지 않고 사유로 냄.
- ⚠ 우리가 정한 둘을 화면 근거에 적음 — 속도를 8-1-6의 2 나 이동속도표에서 가져온 것,
운반시간을 왕복으로 본 것.
- 곁다리: 운전경비 표가 페이지에서 잘려 앞자리를 못 이어받아 39 기종이 통째로
버려지고 있었음(그 안에 수송 차량 2702 가 있었음). 이어받되 카탈로그에 있는
코드일 때만 받게 함 — 운전경비 줄 92 → 158.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
산림품셈 1-4 가 26표로 품을 할인·할증하는데 한 계열도 안 붙고 있었음(자재 할증만 있었음).
- 붙는 자리 = 일위대가의 품(인력) 줄. 물량에 곱하면 자재·기계까지 부풀어 이중계상임
(원문 제목이 「품의 할인·할증」이고 1-6 라 표가 직접노무비를 품셈으로 냄).
- 기본은 「안 고름」 — 한 계열도 안 고르면 금액이 한 원도 안 움직임.
- 각 계열에 [주] 원문을 그대로 띄움 — 26계열의 [주] 가 대개 조림·숲가꾸기·방제를
지목하고 임도 토공에 붙이라는 지시가 원문에 없어, 켜는 것은 사용자 판단임.
- 여럿 고를 때 합산인지 곱인지 원문에 없음 — 합산으로 두되 한 곳(COMBINE_RULE)에서
갈아 끼울 수 있게 하고 그 사실을 화면 근거에 적음.
- 품이 늘면 제잡비 밑수도 함께 늘도록 줄 차례를 지킴(할증 줄이 제잡비보다 먼저).
- ⚠ 율 표는 24개임 — 1-4-24(장비품의 -20%)·1-4-26(적용시공량 규칙)은 성격이 달라 뺌.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Q = 1000 × V × W × E × D × f / N 로 서는 첫 공종. 계수 여섯은 표에 다 있고 기종만
[주]에 있어 마스터가 못 싣던 자리.
- 롤러만 듦 — [주]③ 의 「굴착기와 진동롤러 조합」은 포설(9-16-1)과 다짐을 함께 쓰라는
뜻으로 읽음. 이 줄에 굴착기를 또 넣으면 포설에서 센 굴착기를 두 번 셈.
- 계수가 하나라도 없으면 안 섬 — 채워 넣지 않음.
- 조건([주]⑤ 대규모 성토지 층다짐)과 기종 근거를 줄에 남김.
- ⚠ 인계에 그 줄이 없어 금액은 아직 안 섬 — 층다짐을 셀지는 설계 판단(사용자 확정 대기).
넣으면 13,150.2㎥ × 527.40 = 6,935,414원.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
내역에 실리는 25 줄 중 FP-11-01 가설창고만 밑수가 없어 대조를 건너뛰고 있었음.
품셈 11-1 은 절 머리에 「(단위: …)」가 없어 마스터가 못 채우는 자리라, 매핑에
원문 근거와 함께 「개소」를 적어 통로로 채움([주]① 설치·해체 각각 · [주]③ 1개설치당).
- 매핑에 `ancillary` 절을 만들고 그 절도 밑수 대조에 쓰이게 함.
- 이제 내역에 실리는 25 줄이 전부 대조됨 — 일부러 m 로 보내면 가드가 잡는 것을 시험으로 확인.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
별표2 (5)(가) 가 설계서 작성 순서를 열셋으로 못 박아 두었는데, 우리가 무엇을 내고
무엇을 못 내는지가 계획서에만 있었음. 원가계산에 「설계서 구성」 탭으로 세움.
- 법이 적은 차례 그대로. 줄마다 상태(있음·반쪽·없음)와 어디서 나오는지를 적음.
- ⚠ 「없음」과 「우리 몫 아님」을 가름 — 일반시방서·특별시방서·예정공정표는 현장을
아는 사람이 쓰는 문서라 프로그램이 지어낼 것이 아님. 법이 목차를 정했다고 열셋을
다 우리가 만드는 것은 아님.
- 못 내는 것에는 무엇을 받아야 내는지를 적음(공사설명서 = 서식·설계하중 표기).
- 사방사업은 목록이 다름(별표0 은 위치도·관계지적조서·설계도면을 더 둠)을 함께 적음.
⇒ 법이 정한 13 중 7 이 서 있고, 3 은 설계자·발주청 몫, 우리가 더 낼 것은 3
(공사설명서 · 각종 중기경비계산서 · 산출기초).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
별표2 (5)(가) 아홉째. 중기목록표가 「얼마」라면 이 장은 「왜 그 값인가」임.
원가계산 → 중기 탭의 목록표 아래에 붙음.
- 기종마다 취득가·내용시간·손료계수(상각·정비·관리) → 시간당 손료 · 주연료와 유가 ·
조종원 일당과 시간당 환산 · 시간당 사용료 3분할을 차례로 보임.
- 내역에 실제로 선 기종만 냄(카탈로그 613 을 다 뿌리지 않음).
- 부착 장비(브레이커·콤팩터·집게)는 손료만 드는 것이 정상이라 결함으로 안 셈
— 제 엔진이 없어 연료·조종원이 본체에 듦(건설품셈 제8장 [주]⑤).
- 수송비는 이 장에 안 붙임 — 「회당」으로 서는 별개 공종이라 자리만 가리킴.
- 계산서 합계가 일위대가가 실제로 쓰는 값과 같은지 시험으로 못 박음(두 벌 방지).
⇒ 「설계서 구성」의 중기경비계산서가 반쪽 → 있음으로 바뀜(법이 정한 13 중 8 이 섬).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
조합 사용이면 본체 잡재료가 16% 로 줄어 재료비가 달라져 층이 따로 섬(굴착기 0.7
재료비 26,130 → 24,845). 갈래를 안 적어 똑같은 장이 두 번 나온 것처럼 읽혔음.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
별표2 (5)(가) 열셋째. 근거는 줄마다 이미 있었고 묶는 자리만 없었음.
원가계산에 「산출기초」 탭으로 세움. 넷으로 접음 —
① 어느 판으로 계산했나(데이터 기준일·지문) ② 무엇을 골랐나(고른 값만)
③ 공종마다 무엇을 근거로 했나(줄 문구 그대로) ④ 못 채운 자리(0 으로 안 때운 자리).
- 판 목록은 장부(_manifest.json)를 그대로 읽음 — 목록을 따로 적으면 한쪽만 고쳐짐.
- ⚠ 여기서 값을 다시 계산하지 않음 — 금액 칸이 아예 없음(두 벌 방지, 시험으로 못 박음).
⇒ 「설계서 구성」의 산출기초가 반쪽 → 있음. 법이 정한 13 중 9 가 서고,
우리가 더 낼 것은 공사설명서 하나(서식·설계하중 표기는 사용자에게 받아야 함).
곁들여: 자재총괄의 「미분류」를 「미정(발주기관 결정)」으로 고침 — 발주기관이 정할
자리인데 우리가 못 만든 것처럼 읽히던 문구(V-14). 값·판정은 그대로.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
「사람이 한 번 봤다」로 두면 다음 사람이 또 봐야 함. 본 것을 시험으로 남김.
- V-11 인계 계약 검사가 양쪽으로 무는지(칸을 늘려도·빠뜨려도 걸리는지) — 가드의 가드.
- V-16 불도저 운반이 갈래(토사·파쇄암)마다 금액으로 서는지. 덤프 운반은 아직 안 서는
것도 사실대로 못 박음(운반거리 설계 입력 대기).
- V-17 공구손료와 제잡비는 밑수도 가는 자리도 달라 겹치지 않음(주재료비→재료비 /
노무비→경비). 지금은 주재료비가 0 이라 3% 를 넣어도 한 원도 안 움직이는 것을 못 박음.
- 곁들여: 석공사·철골공사는 특수공구라 건설품셈 1-2-6 이 「별도 계상」으로 두었음을
공구손료 칸 사유에 적음 — 일반 비율을 그대로 붙이면 안 되는 자리.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
끝난 항목의 조사·근거·검증 원문은 계획서에 안 남기는 것이 사용자 확정 규칙임.
계획서에는 결과 한두 줄만 두고 원문 22건을 이 파일로 통째로 옮김.
- 함께 옮긴 것: 항목이 이미 닫혀 자리를 잃은 고아 근거 두 덩어리.
- 살아 있는 정보는 계획서에 한 줄로 남김 — 마스터가 반쯤 빈 것, 야면석 규격 넷에 값이
없는 것, 공구손료가 붙을 밑수가 아직 0 인 것, 유가 지역 자동 연동을 안 한 것,
수송비에서 우리가 정한 둘, 품 할증이 임도 토공용이 아니라는 것.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 사용자 확정. `docs/wiki/graphify-out/cache/` 443파일(4.3MB)은 **PC 마다 다시
만들어지는 파생물**인데 git 이 나르고 있었음. 코드 창에서 graphify 가 돌 때마다 그 폴더가
바뀌어, 위키 브랜치를 받을 때 「덮으면 로컬이 날아간다」로 **병합이 막히는** 구조였음.
- `.gitignore` 에 캐시 폴더 추가 + 추적 해제(파일은 그대로 남음, 다시 만들어짐)
- AGENTS.md 에 그 사실과 「graph.html 은 코덱스가 주인」을 적음
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
DWG 56개(임도 표·심볼, 사방댐 표·상세도, 캐드 템플릿)를 LibreDWG로
DXF 변환해 10_원문/도면양식DXF/ 에 원본 폴더 구조 그대로 보관.
원본 DWG는 손대지 않음.
- 변환 성공 56 · 실패 0
- 폴더 README에 다시 만드는 명령, 들어 있는 것, 읽어 본 결과 기록
- 도면양식 개요 문서의 "저장소에 두지 않음" 문구를 실제와 맞게 수정
계산식은 없음 — 양식은 표 껍데기라 공식이 안 들어 있음.
건진 것은 열 구성과 항목 이름(볏집거적·새심기·오차적용경사·터파기조건).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YTbyFkYhKNUYvxRV7DYfxZ
- main_laptop_1-2/PLAN.md 하드링크 이미 끊어져 갈라짐(107,270 ↔ 111,121)
- PowerShell 은 하드링크를 LinkType=HardLink 로 봄 — 옛 구멍은 「건너뜀」이었음
- 고친 스크립트 모래상자 시험 넷 통과
- 오르카 setup 문구는 CLI 로 못 바꿈
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011N7TKFmaPogzq9HUi6jKo7
- orca terminal close 셋 + worktree rm 둘, 메인 파일·원격 브랜치 멀쩡함 확인
- 제거 전 정션 없음 확인 — 원본 삭제 위험 없었음
- 장부 못 찾으면 .claude 정션 대상을 메인으로 쓰는 길 추가
- 사용자 확정 셋(자동 커밋 유지·브랜치 이름 규칙·docs 문 유지)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011N7TKFmaPogzq9HUi6jKo7
- 측구 토사·암을 절토 면적비로 다시 안분하지 않고 B06 이 낸
ditch_soil_area_m2·ditch_rock_area_m2 를 그대로 씀. 근거 ditch_split_basis 도 줄에 실음.
- 설계값이 없는 저장분만 옛 안분으로 떨어지고 사유를 줄 주기에 남김.
- 표기 자리수 — 단면적 ㎡ 1자리 · 체적 계열 ㎥ 2자리 · 합계 정수 (계산은 전정밀 그대로).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GrXDD23Dvt2sR7q3X6oekp
- 상태줄에 계획노선 길이 실시간 표기 (계획서 0-9 ①)
- 시점·종점 이름표와 규칙측점 눈금 표기, B04 지도와 같은 `drawStationTicks` 재사용 (②)
- 곡선 조작 패널을 모달 지도 칸 안으로 가둠 — 상자 밖·하단 정보행 위로 안 나감 (⑨)
- 그리기를 `B05_Profile_UI_RouteEdit_Render.ts` 로 분리 — 본체 703줄 → 627줄
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jsXWphgRUHAG2mFupSKPX
- 확정 지표면이 있으면 LAS 등고선을 바탕으로 씀, 없으면 도엽 등고선 유지 (계획서 0-9 ⑥)
- 등고선 가닥마다 높이값 라벨, 겹치면 건너뜀 (③)
- 등고선을 누르면 그 가닥만 도드라지고 상태줄에 높이 표기 (⑦)
- 화면에 드는 가닥 수로 등고선 간격을 고름 — 1m 자료가 선으로 뭉개지던 것 해소
- `B04_PreProcess_UI_MapRender.ts` 700줄 초과로 사전 투영을 `_Prepare.ts` 로 분리
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jsXWphgRUHAG2mFupSKPX
- 임도 종류별 하한 표를 config 에 둠, 작업임도는 규정이 없어 0(제한 없음)
- 기본 반지름과 하한을 갈라 둠 — 한 값이면 하한 0 이 반지름 0 이 되어 곡선이 안 그려짐
- `/route/plan` 이 `limit_radius_m`·`limit_curve_length_m` 를 함께 내림
- 반지름 칸·곡선 길이 칸·손잡이 끌기가 하한에서 멈추고, 노드 이동은 그 걸음을 되돌림
- 이미 하한을 밑돌던 자리는 그대로 두고 지키던 자리가 넘어가는 것만 막음
- 시험 `resources/tester/test_plan_curve_limits.py` 추가
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jsXWphgRUHAG2mFupSKPX
- Shift+클릭으로 노선 위 두 점을 찍으면 구간 길이와 종단기울기 표기 (계획서 0-9 ⑤)
- 지반고 통로 `POST /route/elevations` 추가 — 종·횡단과 같은 sampler 를 읽기만 함
- 찍는 순간에만 서버를 부름, 끄는 동안에는 안 부름
- 700줄 규정에 맞춰 구간 재기와 [확인] 처리를 `_Measure.ts`·`_Apply.ts` 로 분리
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jsXWphgRUHAG2mFupSKPX
- 원지반 횡단선·기본 계획 횡단선·성토사면 길이 셋만 보임, 구조물은 안 그림 (계획서 0-9 ⑧)
- 서버 `POST /route/cross-preview` 가 `generate_sections`+`compute_cross_design` 정본을 재사용
- 계획고는 편집 중에 없어 그 측점 지반고를 그대로 놓음(지반 추종) — 창에 그렇게 적음
- 성토사면 길이는 B06 화면이 쓰는 `fillSlopeLengths` 를 그대로 부름
- 700줄 규정에 맞춰 곡선 패널 배선을 `_CurveBar.ts` 로 분리
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jsXWphgRUHAG2mFupSKPX
- 기본값 정의처는 config_system_design 한 곳 그대로. 고른 값은 프로젝트 설정
quantity.conversion_factors_override 에 얹고, earthwork_conversion_factors() 한 함수가
기본값 위에 얹어 풀어 냄.
- 그 함수를 거치는 자리 여섯 — 토적표·운반표·기초단가(B08), 유토곡선 컨텍스트·
배분 계산·[저장] 재계산(B06). 상수를 직접 드는 자리를 없앰.
- 산출 조건 패널에 갈래별 계수 칸 신설 — 기본값·품셈 범위를 함께 보이고,
「유토곡선·운반표·기초단가에도 같이 닿음」 안내 한 줄. 범위 밖은 막지 않고 사유를 받음.
- 품셈 체적변화율 범위를 서버 상수로 두고 화면에 내려보냄(프론트에 다시 적지 않음).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GrXDD23Dvt2sR7q3X6oekp
확폭을 측점마다 앞뒤 10m 세 점의 외접원 반경으로 다시 재던 것을 계획노선 곡선표
(시·종점·설계 반경)로 바꿈. 종전에는 같은 곡선 안에서도 측점마다 확폭이 갈리고,
곡선 밖 직선까지 확폭이 흘러나가며, 측점 간격보다 짧은 곡선은 통째로 빠졌음.
곡선 안은 설계 반경의 표값 한 값, 앞뒤 10m 는 0 으로 잇고, 그 밖은 확폭 없음.
곡선표가 없는 옛 프로젝트는 종전 방식으로 물러섬.
횡단도는 차도 끝에만 눈금이 있어 노면이 넓어져도 차도가 는 것인지 노견이 는 것인지
가릴 수 없었음. 노면 끝에도 옅은 눈금을 세우고 노폭 라벨에 노견 폭을 덧붙임.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
- 조건 상자 다섯을 `ui-collapsible ui-sidebar-section` 으로, 제목에 `ui-collapsible__title` 부여
- 자체 `b09-panel__actions` 를 공용 `ui-sidebar-actions` 로 바꿔 [계산]·[확정] 이 패널 바닥에 고정
- 패널 루트에 `attachCollapsible` 연결 — 제목 행 클릭으로 접힘·펼침
- 상자 꼴(패딩·모서리·배경)은 `.ui-sidebar-section` 이 붙은 것만 집어 기초자료 본문 표는 불변
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GrXDD23Dvt2sR7q3X6oekp
개발용 「확정 없이 다음으로」 줄이 공용 `ui-sidebar-actions` 를 쓰고 패널 맨 위에
있어, 공용 코드(`splitSidebarActions`)가 **첫 번째** 그 클래스를 패널 바닥 액션 줄로
집고 스크롤 영역을 그 줄 안에 가둠. 그 아래 조건 칸과 진짜 [저장]·[확정] 줄이
`overflow: hidden` 밖으로 밀려 잘리고 스크롤바도 안 생기던 것을 바로잡음.
- 개발용 줄 단추 묶음을 `b08-quantity__dev-actions` 로 바꿔 공용 클래스에서 뗌
- 조건 칸을 `ui-collapsible ui-sidebar-section` 상자로 묶는 `groupPanelSections` 신설
(새 파일 `B08_Quantity_UI_SidePanel_Sections.ts` — 본문이 이미 700줄을 넘김)
- 토량환산계수 구획도 제 제목으로 접히게 `ui-collapsible` 부여
- 표를 못 받은 경우(`table === null`) `concrete_placing` 접근에서 터져 페이지가
통째로 백지가 되던 것을 `?.` 로 막음
자체검증(ORCA 내장 브라우저 5173, 모듈 직접 로드) — 스크롤 래퍼가 패널 직계로 돌아옴
(`b08-quantity__panel ui-sidebar-fill`) · `ui-sidebar-actions` 1개만 남음 ·
[저장]·[확정] 줄 바닥 920px = 패널 바닥 920px = 창 높이 920px 로 잘림 없음 ·
상자 7개(제목 6 + 무제목 1) · 「구조물·사토」 제목 클릭에 511px → 42px → 511px 로
접힘·펼침 확인 · `tsc --noEmit` 통과 · `pytest -q` 1294 passed.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017RANEBHns1S4tkmsYwewtk
- 조작 설명을 지도 좌상단 2열 오버레이로, 상태·범례를 좌하단 오버레이로 (계획서 0-9 ⑩⑫)
- 단추를 제목행 오른쪽으로 옮기고 공용 `.ui-btn` 규격을 씀, 하단 정보행 삭제 (⑪⑬)
- LAS 등고선을 도엽과 같은 5m 단위로 그림 (⑭)
- 바탕이 LAS 면 세류선도 등고선 범위 안쪽만 그림 (⑮)
- 지도 오른쪽 위 반시계·시계 단추로 15°씩 그림 전체 회전, 집기도 따라감 (⑯)
- R·L 하한을 5m 로 채움. 다만 L 하한은 칸 입력만 막음 — 기하에 걸면 거의 곧은 자리에서
R 이 부풀어 아무것도 안 고쳤는데 노선이 바뀜 (⑰)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jsXWphgRUHAG2mFupSKPX
암 절토 칸은 속값이 이미 경사비인데 화면만 각도(°)로 바꿔 보여 줘, 도면·좌측 표준
설정·품셈이 모두 1:n 인 자리에서 이 칸만 머리로 환산해야 했음. 머리말 「1:」과 n 입력으로 바꿈.
기슭막이 상단에서 바닥으로 늘 긋던 대각 이음선은 사용자 지시로 뺌.
조정창이 좌측 상단 면적표를 덮어 수치가 안 보이던 것을 표 높이만큼 내려 세움.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
- 탭 열 개(살아 있는 아홉)의 화면 열마다 이름·원천(파일:줄)·식·등급 후보 정리
- 이미 있는 것 넷 가름 — formula_text · source_label · base_label · work_item_basis
- 등급 여섯에 안 맞는 일곱 갈래를 6장에 모음, 핵심은 ㉱ 「여기서 안 세는 줄」이
막힘과 뜻이 정반대라 일곱째 등급 「제외」가 필요해 보이는 것
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GrXDD23Dvt2sR7q3X6oekp
화면에 뜬 숫자가 어디서 와서 어떻게 나왔는지 가릴 길이 없어 개발·검산이 막히던 것을
엶(PLAN 8-36 ①②③④). 칸에 마우스를 올리면 등급·값·식·원천·자리가 카드로 뜨고,
토글을 켜면 등급색이 칸 왼쪽 띠로 붙음.
- `common_util/common_util_provenance.py` — 등급 상수 여덟과 `ColumnProvenance`.
사람이 고르는 여섯(입력·측량·기준·계산·최종·막힘)에 `excluded`(일부러 안 셈,
채우면 이중계상)와 `unclassified`(판단 미룸)를 더함. `excluded` 는 데스크탑 보조의
B09 조사에서 나온 것으로 `blocked` 와 뜻이 정반대라 갈라 둠. 값 안에 선택이 숨은
열을 위해 `rule`(채택 규칙) 칸도 둠.
- ⚠ 로직 보안 — `provenance_payload()` 가 개발환경이 아니면 `None` 을 돌려주고
라우터가 응답에서 칸을 통째로 뺌. 화면에서 숨기는 것이 아니라 안 보내는 것임.
문의 정본은 `is_dev_environment()` 하나로 통일.
- `ui_template/ui_template_provenance.ts` — 호버 카드·등급색·토글 한 벌. B09 도 같이 씀.
- `B08_Quantity/B08_Quantity_Provenance.py` — 토적표 20열 사전. 사전은 **열 단위**이고
줄마다 갈리는 사유만 줄 쪽에서 얹음(칸마다 지으면 한 장이 6천 칸이라 응답이 붐).
- 토적표에는 `final` 열이 하나도 없어 억지로 붙이지 않음 — 중간 장부이고 내역서로
나가는 값은 토공집계표에서 섬.
자체검증 — 시험 8개 추가(`test_b08_provenance.py`). 값어치는 첫 번째에 있음:
사전 열 이름이 전부 실제 `EarthworkRow` 에 있는가(엔진이 이름을 갈면 사전만 옛것으로
남는데 화면에서는 카드가 그냥 안 떠 눈에 안 띔). 배포환경 `None` 도 시험으로 박음.
브라우저(ORCA 5173, 실제 사전을 물려 토적표를 그림) — 표시된 칸 40개(2줄×20열) ·
등급 갈래 survey 12 / calc 28 · 카드에 「절토 토사 보정량 · 계산 · 값 45.00 ·
식 절토 토사 입적 × 토량환산계수(다짐) · 자리 EarthworkTable.py:210」 · 토글에 배경이
투명 → 초록 7 % 로 바뀌고 왼쪽 띠 inset 3px. 줄 사유가 그 줄 모든 칸에 뜨던 것을
사유가 닿는 열(`ditch_*`)에만 뜨게 고침 — 「절토 보정량」 카드에 「측구 가름값이…」 가
떠서 읽는 사람을 속이던 자리임.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017RANEBHns1S4tkmsYwewtk
- 메인 창을 왼쪽으로, 오른쪽 세로 칸에 「횡단」·「이전 횡단」 두 판 (계획서 0-9 ⑱)
- 노드를 놓으면 보던 측점을 다시 셈해 새것은 위, 옛것은 아래로 (⑲)
- 측점 표기를 구조물 목록과 같은 규칙으로, 긴 안내문 삭제 (⑳㉑)
- 좌하단에 예상노선·계획노선 길이 둘 (㉒)
- [거리 재기] 단추와 구분선, 잰 값은 작은 창에 내고 닫으면 지움 (㉓㉔)
- 잰 구간을 누가거리로 잘라 꼬임 해소 (㉕)
- 곡선 패널 닫기 단추와 빈 곳 누르기 해제, 하단 정보는 내각만 (㉖㉗)
- 고른 등고선에 높이 라벨, 회전 아이콘을 반원 화살표로 (㉘㉙)
- 돌려도 글자는 바로 세움 — `UPRIGHT_LABELS` 한 값으로 되돌릴 수 있음 (㉚)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012jsXWphgRUHAG2mFupSKPX
B05 와 B06 은 한 페이지인데 구조물을 넣고 빼는 자리가 B05 뿐이라 화면을 오가야 했음.
종단 그래프 렌더러·알약 레인·좌측 배치 폼은 이미 공용이었으므로, 빠져 있던 조작층만
B05 와 같은 부품(mountStructureMenu)으로 B06 에도 붙임.
관 추가·삭제는 이동과 같은 예약 경로를 씀 — 세션에 쌓고 [저장]·[확정]에서 정본
(pipe_points.json)으로 나가며, 세부 배수유역 재분할은 그때 서버가 처리함. 넣었다 바로
빼거나 뺐다 다시 넣으면 예약만 걷어 내 정본이 흔들리지 않음.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
① 버그 — BillRow.note 한 칸에 덮어쓰던 13곳·이어 붙이던 7곳을 조각 배열 notes 로
옮김. 한 줄에 사유가 둘이면 하나가 조용히 사라지던 것이 멈춤. 조각마다 닿는 열
키를 함께 실어 호버가 그 칸에만 띄우게 함. 화면 비고 칸은 종전과 같은 꼴 유지.
② 사전 — B09_Estimation_Provenance.py 신설(기존 B09 파일이 700줄 초과). 8장 57열.
이미 있던 formula_text·source_label·base_label 은 그대로 쓰고 없는 것만 새로 적음.
③ 배선 — 라우터 5개 응답에 _with_provenance(), 표 여섯에 markProvenanceCell +
attachProvenance. 개발환경이 아니면 응답에 칸 자체가 안 생김(로직 보안).
④ 등급색 토글을 탭 줄 끝에. 사전이 안 오면 단추도 안 세움.
⚠ 원가계산서 금액은 같은 열에서 중간줄과 마지막줄의 성격이 갈리는데 등급이 열에
하나뿐이라 calc 로 두고 rule 에 어느 줄이 final 인지 적음(PLAN 8-36 ① 에 남김).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GrXDD23Dvt2sR7q3X6oekp
B05 에서만 되던 끌어 옮기기를 B06 종단에도 붙임 — 측점선과 알약 어느 쪽을 끌어도 같은
길을 타고, 관은 예약 이동(저장·확정 때 정본과 배수유역 재분할), 구조물은 정본 이동임.
끌기 판별과 대상 찾기는 새 모듈(B06_Section_UI_Section_View_Menu)로 모아, 종단 화면
본체가 더 커지지 않게 둠.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
같은 열이라도 줄마다 성격이 갈리는 자리가 있음 — 원가계산서 「금액」은 중간줄
(간접노무비 따위)이 계산인데 마지막줄(총원가·도급금액·총계)은 최종임(데스크탑 보조
B09 배선에서 나옴). `markProvenanceCell` 은 이미 칸마다 등급을 받고 있었으나
카드 배지가 열 등급으로만 그려져 **띠는 최종인데 배지는 「계산」**으로 어긋났음.
- `fill()` 이 칸을 받아 배지를 `cell.dataset.provTier || column.tier` 로 그림
- 등급을 안 심은 칸은 `attachProvenance` 가 열 등급으로 채움 — 안 그러면 배지는
뜨는데 띠가 안 붙는 「색 없는 칸」이 생김. 부르는 쪽이 등급을 빼먹기 쉬운 자리라
여기서 맞춤. 줄마다 다른 칸에만 세 번째 인자를 주면 됨.
자체검증(ORCA 5173) — 같은 열 `amount_krw` 에서 등급 안 심은 칸은 배지 「계산」·띠
초록 rgb(31,138,76), `final` 심은 칸은 배지 「최종」·띠 금색 rgb(184,134,11) 3px inset.
배지와 띠가 같은 말을 함. `tsc --noEmit` 통과 · 병합 뒤 `pytest -q` 1313 passed.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017RANEBHns1S4tkmsYwewtk
세 자리가 어긋나 있었음.
- B06 저장이 델타를 먼저 내보내고 B05 스냅샷을 나중에 써서, 두 화면을 오가며 만지면
스냅샷이 B06 편집을 통째로 덮었음. B05 [임시저장]과 같은 순서(스냅샷 먼저, 델타 나중)로 바꿈.
- B05 저장이 구간값 키만 넘겨, B06 에서 예약한 관 이동·추가·삭제가 조용히 빠졌음. 키 셋을 다 넘김.
- B06 좌측 목록이 정본만 읽어 B05 에서 넣고 안 저장한 관이 안 보였음. 구조물과 같은 규칙으로
미저장분을 먼저 씀.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
- 자재단가대비표: 적용 칸을 calc+rule(기.가·유.물·견적), 값 없는 원천 칸은 blocked
- 환율및기초자료: 공표·공시값 standard 와 사용자가 고른 유가 범위 input 을 가름
- 단가산출근거·산출기초: 모으는 표라 식을 비우고 source·등급만 채움
- 설계서 구성표·산출 조건 패널은 일부러 뺌(프로젝트 값이 아니거나 근거 한 줄과 중복)
- 원가계산서 금액은 총원가·도급금액·총계 세 줄에만 칸 단위 final 을 심음
- 700줄을 넘어 Provenance / _Sources / _Common 셋으로 가름(공통 조각을 한쪽에 두면
불러들이기가 고리를 이룸)
사전 16장 92열, 등급 여덟이 모두 쓰임.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GrXDD23Dvt2sR7q3X6oekp
B05 는 관 목록 전체를 세션 스냅샷으로, B06 은 바뀐 것만 따로 담고 있어 담는 꼴이 둘이었음.
저장 순서를 맞춰 결과는 같게 했으나 자리가 둘인 한 같은 사고가 다시 남.
B06 의 추가·삭제·이동을 모두 B05 가 쓰는 스냅샷(pipes)에 쓰도록 바꾸고, B06 전용 예약
경로(culvertedit 세션·queueAdd·queueRemove·queueMove)를 걷어 냄. 옛 세션에 남아 있던
이동 예약만 저장 때 한 번 흘려보내게 읽기를 남김.
이제 관을 넣고 빼고 옮기는 길이 좌측 폼·목록·종단 우클릭·측점선 끌기 모두 한 함수이고,
담기는 자리도 한 곳임.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
토적표만 서 있던 근거 호버를 토공집계·운반·준비공·자재총괄·구조물 원단위까지 넓힘.
사전 여섯 장 48열이 됨(토적표 20 · 집계 5 · 운반 5 · 준비공 5 · 자재 7 · 원단위 6).
같은 열이라도 줄마다 성격이 갈리는 자리를 **칸 등급**으로 갈랐음
- 토공집계 「계」 — 무대(소운반 20m) 줄은 `final` 이 아니라 `excluded`. 집계에는
오르되 내역 줄이 아님(품셈 1-2-7). 채우면 이중계상이라 「못 세움」과 뜻이 정반대임
- 운반표 — 같은 줄의 토량·거리 둘 다 `excluded`. 값은 검산에만 씀
- 준비공 「수량」 — 값을 못 세운 줄은 `blocked`. 근거가 오면 채워질 자리라 제외와 갈림
**B08 에서 `final`(최종)이 처음 서는 자리는 토공집계표 「계」** 임. 토적표는 중간
장부라 최종 열이 하나도 없음 — 그 갈림을 시험으로 박았음(등급 여섯은 한 장이 아니라
여러 장을 합쳐야 다 쓰임).
자체검증 — 시험 4개 추가(모두 12개). 집계표·운반표 사전 열 이름이 실제 엔진 줄에
있는지 대조하고(운반표 `average_distance_m` 은 필드가 아니라 property 라 따로 봄),
등급·이름·식 검사를 여섯 장 전부로 넓힘. `pytest -q` **1317 passed** · `tsc` 통과.
브라우저(ORCA 5173, 실제 사전을 물려 다섯 표를 그림) — 집계 정상줄 `final` /
무대줄 `excluded` · 운반 정상 `calc` / 무대 `excluded` · 준비공 정상 `calc` /
값 없는 줄 `blocked` · 자재 총수량 `final` · 관급사급 `input` · 원단위 수량 `calc`.
카드에 식·원천·채택·자리가 다 뜸.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017RANEBHns1S4tkmsYwewtk
- 개발 중에는 앱이 내려갈 때 Vite 를 죽이지 않음. Vite 는 한 앱 프로세스가 아니라
개발 세션의 것이고, 다음 기동이 그대로 물려씀
- Vite 가 이미 그 포트에 살아 있으면 npm run build 를 건너뜀(첫 기동에서만 빌드)
까닭 — uvicorn 리로더가 *.py 마다 앱 프로세스를 갈아 끼우는데, 옛 프로세스가 종료하며
Vite 를 죽이면 새 프로세스가 「Vite 없음」으로 보고 npm run build(최대 300초 + B07 CAD)를
처음부터 다시 돌렸음. 그 사이 /api/health 가 stale: true 인 채 옛 코드를 계속 내주어
옛 화면을 보고 헛검증하게 됨. 2026-09-12 에 두 번 멈췄고 한 번은 두 시간 반 동안 안 끝남.
배포 환경은 그대로 — 빌드도 종료 정리도 종전과 같음.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GrXDD23Dvt2sR7q3X6oekp
`B06_Section_UI_Section_View.ts` 가 817줄로 한도를 넘겼음. 종단 그래프·구조물 알약 레인·
우클릭 메뉴·누가토량 배지·고정 Y축을 세우는 몫과 가로 스크롤 세로창 배선을
`B06_Section_UI_Section_View_Draw.ts` 로 옮겨 693줄로 줄임.
높이 재기·되먹임 보정·선택 상태는 본체가 그대로 쥐고, 옮긴 쪽은 넘겨받은 인자만 쓰므로
화면 상태가 두 곳에 남지 않음.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
무슨 일이 있었나
랩탑 줄의 병합 `20ba886c`(Merge origin/main_desktop_1·main_laptop_1·sub_desktop_1 into
sub_laptop_1)가 우리 파일 22개를 떨구고 35개 파일의 내용을 옛것으로 되돌림. 손으로 지운
커밋은 없고 **병합 자체가 떨군 것**임. 그것이 `origin/dev`·`main_laptop_1`·`sub_laptop_1`·
`CODEX` 까지 퍼졌고(데스크탑 둘만 무사), 이 창의 병합 `d92c1f2b` 로 들어옴.
잃었던 것
- 공용 — `common_util_provenance.py` · `ui_template_provenance.ts`
- B08 — 근거 사전 · 좌측 패널 상자 모듈 · 토량환산계수 칸
- B09 — 근거 사전 셋
- B05 — 계획노선 편집 모듈 아홉 · 지형 라우터 · B04 지도 모듈
- 시험 셋과, 35개 파일 안의 최근 작업(환산계수 고르기 · 근거 호버 배선 등)
어떻게 되살렸나
`611a2b40`(병합 직전, 전부 온전)에서 `git show <커밋>:<경로>` 로 내용만 꺼내 되돌림.
이력은 안 건드림. ⚠ HEAD 에만 있던 「추가 816줄」은 랩탑의 새 작업이 아니라 **되살아난
옛 코드**였음(B05 편집은 모듈로 쪼개기 전 덩어리 · B08 라우터는 환산계수 고르기 전 옛
상수판). 되돌릴 시점 이후의 **진짜 새 커밋은 둘뿐**이라 그 둘만 패치로 다시 얹음 —
`9f827bf6`(리로드 빌드 고리 끊기, 데스크탑 보조) · `b9bca6b3`(B06 조정창 1px, 랩탑).
위키 여덟은 코덱스 몫이라 손대지 않음.
자체검증 — 양쪽 작업이 다 살아 있음을 짚어 확인: `main.py` 의 「개발 서버는 살려 둔다」 ·
`B05_Profile_Engine_Grade.py` 의 `plan_curve_length_limit_m` · `B08_..._EarthworkGrid.ts` 의
`attachProvenance`. `tsc --noEmit` 통과 · `pytest -q` **1317 passed, 28 skipped**
(되살리기 전에는 시험 둘이 수집 단계에서 깨져 있었음).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017RANEBHns1S4tkmsYwewtk
- 백그라운드 태스크 셋을 cancel() 만 하고 지나가던 것을 gather 로 실제로 거둠
- 「백그라운드 작업 정리」·「DB 풀 종료」 두 걸음에 각 5초 시한. 못 끝내면 경고만
남기고 넘어감 — 종료는 기다리는 곳이 아니라 끝내는 곳이고, 남은 정리는 OS 몫
- 끝에 「앱 종료 끝」을 찍어 종료가 끝까지 갔는지 로그로 갈림
- 모듈 맨 위에 [boot] 워커 프로세스 시작 pid 를 찍음. 리로드 뒤 이 줄이 찍히면
새 워커는 뜬 것(포트를 못 잡은 자리), 안 찍히면 아예 시작도 못 한 것(리로더 자리).
고칠 자리가 전혀 다른데 종전 로그로는 못 가렸음
⚠ 이번 멈춤의 원인이라는 증거는 아직 없음 — 로그에 「앱 종료 중」이 안 찍혀 종료
코드까지 가지도 못했을 수 있음. 위 [boot] 표식이 다음 멈춤 한 번으로 그것을 가름.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GrXDD23Dvt2sR7q3X6oekp
B05·B06 종단을 같은 템플릿으로 맞추면서 **계획선 편집 버튼층만 빠져 있었음** — B06 에는
편집분을 얹어 계획선·전 측점 횡단을 다시 푸는 코드도, 편집 초안 세션도 이미 있었는데
누를 버튼이 없었음.
B05 와 같은 부품(createEditOverlay)을 종단 그래프에 얹고, 누른 값은 B05 와 같은 세션
초안에 쌓음. 누르는 즉시 계획선·횡단을 다시 풀어 카드에 반영함.
저장도 이었음 — 종전에는 B06 이 초안을 읽기만 해서, B06 에서 [저장]·[확정]하면 계획선
편집이 정본에 안 남고 다음 진입 때 사라졌음.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
uvicorn 0.24 BaseReload.restart() 는 윈도우에서만 옛 워커를
os.kill(worker_pid, CTRL_C_EVENT) 로 내리려 함. CTRL_C_EVENT 는 프로세스 그룹을
지정해 보낼 수 없어(MSDN: 그룹 id 가 0 이 아니면 호출은 성공하지만 신호는 전달되지
않음) 워커에 아무것도 안 감. 바로 다음 join() 이 영원히 안 풀려 옛 워커가 살아서 옛
코드로 계속 응답하고, 새 워커는 태어나지 않으며, 그 뒤 파일 변경은 감지조차 안 됨.
실측(그 자리를 흉내 낸 부모·자식 한 쌍):
CTRL_C_EVENT → 8초 안에 안 풀림 (DETACHED · CREATE_NO_WINDOW · +NEWGROUP 모두)
terminate() → 0.00초
CTRL_BREAK → 0.00초 (자식을 그룹 우두머리로 띄웠을 때)
고침은 uvicorn 자신의 리눅스 경로를 그대로 씀. DEBUG + win32 개발 기동에서만 갈아
끼우고, uvicorn 이 위쪽에서 고치면 _patch_windows_reload 를 지우면 됨.
⚠ 앞선 두 커밋(빌드 고리·종료 시한)은 이번 멈춤의 원인이 아니었음. 빌드 고리는 실제
문제였고, 종료 시한은 다른 경우를 막는 값이 있어 남김. [boot] 표식이 이 진단을
가능하게 했으므로 함께 남김.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GrXDD23Dvt2sR7q3X6oekp
만들자마자 탭 줄에 붙이는 바람에 **탭 단추들보다 먼저** 서서, 「토적표」 앞에 탭이 하나 더
있는 것처럼 보였음(2026-09-12 실측: 토글 x=8 · 토적표 x=84). 표를 고르는 단추가 아니라
보기 방식을 바꾸는 단추라 섞이면 안 됨.
만드는 자리는 그대로 두고 **붙이는 것만 탭 단추를 다 세운 뒤로** 미룸.
자체검증(ORCA 5173, 로그인한 실제 화면) — 탭 줄 차례가
토적표(8) · 토공집계(74) · 운반거리(152) · 준비공·사방공(230) · 구조물 원단위(336) ·
자재총괄(441) · **등급색 토글(519)** 로 맨 끝에 섬. 토글을 켜면 칸 왼쪽 3px 띠와 옅은
배경이 붙고(측량 372칸 · 계산 868칸), 다시 누르면 사라짐. `tsc --noEmit` 통과.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017RANEBHns1S4tkmsYwewtk
편집 버튼층은 `inset: 0` 으로 부모를 꽉 채우는데, B05 는 부모가 그래프뿐이지만 B06 은
구조물 알약 레인도 같은 칸 안에 있어 ▼ 가 레인 위로 내려앉았음(실측: 그래프 바닥 231px
인데 버튼이 270~287px). 버튼층 높이를 그래프 높이로 잘라 B05 와 같은 자리에 세움
(실측 후 ▲ 72~89px · ▼ 212~229px, 그래프 70~231px 안).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
B05 에는 있고 B06 에 없던 장치였음. ▲▼ 를 누를 때마다 세로 창이 새 계획선에 맞춰 다시
잡혀, 값은 바뀌는데 선은 제자리에 있는 것처럼 보였음. B05 와 같이 누르고 있는 동안
창을 고정하고 손을 뗀 뒤 한 번만 다시 맞춤.
실측(랩탑_보조 534.0m 측점): 계획고 837.24 → 839.84m 일 때 설계선이 3.2px 올라감.
종전에는 같은 조작에서 0.4px 만 움직였음.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
- 교각점 고정 단추: 켜면 그 꺾임점이 노드·손잡이 어느 쪽으로도 안 끌림(`apexLock`)
- 계획 횡단선을 절·성토 교차점에서 끊음 — 그 밖은 원지반이라 지반선과 겹쳐 그려지던 것.
교차점은 B06 이 쓰는 `toeOffsets` 를 열어 함께 씀
- 횡단 판을 캔버스에서 SVG 로 바꾸고 휠 줌·가운데 끌기 팬·더블클릭 원복을 붙임
- 줌·팬 본문을 `A00_Common/b_svg_zoom_pan.ts` 공용 조각으로 빼고 B06 은 감싸개만 남김
- 「이전 횡단」 판은 계획 평면선이 바뀔 때만 채움(같은 측점 두 번 누르기로는 안 채움)
- 「거리 재기」 단추의 눌린 꼴 추가 · 등고선 높이 라벨을 맨 위로 올리고 더 촘촘히
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DJffo4VwgTumVUM3kdbJzd
R 하한만 막고 L 하한은 칸 입력에서만 막던 것을 고침. L = R·Δ 라 한 자리의 하한을
반지름 하나로 모아 봄(`radiusFloorM` = max(R 하한, L 하한/Δ)) — 값 끌어올리기·
모자란 양 판정·칸 막기가 모두 이 값을 씀.
내각 155° 이상은 별표2 Ⅰ.2.다.(1) 상 곡선을 안 둬도 되는 자리라 L 하한을 안 걺 —
걸면 교각이 0 에 가까워 R 이 수십 배로 부풀어 안 고친 구간이 휨. 그 자리는 곡선
패널에 「155° 이상 — 곡선 생략 가능」으로 적어 냄.
`deflectionRad` 를 화면 파일(`_Label`)에서 셈 파일(`_Edits`)로 옮김 — 순수 함수가
DOM 파일에 얹혀 있어 시험이 화면째 들여와야 했음(부르던 자리는 재수출로 지킴).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DJffo4VwgTumVUM3kdbJzd
- 재계산 결과 반영을 `refreshCards` 로 묶음. 측점마다 `refreshCard` 를 부르면
그때마다 종단 그래프·유토곡선까지 다시 그려, 62 측점 기준 한 번 누를 때
종단도를 62 번 다시 그림.
- ▲▼ 는 계획선(`design_profiles`)만 먼저 갈아 끼우고 다시 그림 — 선이 즉시 움직임.
- 전 측점 횡단 재계산은 120ms 디바운스로 미룸(B05 프리뷰와 같은 규칙) — 길게
누르는 동안은 선만 따라오고, 손을 뗀 뒤 한 번만 돎.
실측(62 측점, 같은 노선·같은 조작)
- 한 번 누름: 화면 갱신 920~955ms → 17~23ms · 최장 멈춤 879~971ms → 180~229ms
- 1.5초 길게 누름: 멈춤 954ms×3회·누적 2,577ms → 최장 213ms·누적 473ms,
적용 단수 3 단 → 10 단(제 속도)
- 값 동일성: 누가토량 배지·카드 3장·계획고 라벨·세션 초안 전부 변경 전과 일치
- `npm run typecheck` 통과 · `pytest resources/tester/` 1,323 passed / 22 skipped
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
700줄 한도 대응. 순수 이동으로 동작 불변.
- B06_Section_UI_Page_Design_Sync.ts — 설계 선택 반영·낡음 재계산·소단 동기화·[전체 반영]
- B06_Section_UI_Page_Grade_Edit.ts — 종단 계획선 ▲▼ 제공자
- 남은 B06_Section_UI_Page.ts 644줄
소스 문자열 감시 시험 셋이 분리 모듈까지 읽게 함.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
확정 8-2·14 — 버림 콘크리트 「넣음/안 넣음」 칸을 등록부(돌쌓기 찰·메·큰돌쌓기·기슭막이)와
표준도 입력(EDITABLE_KEYS)·제원 폼에 세움. 기본은 넣음(KDS 44 90 00 100㎜).
셈은 이미 wants_blinding 으로 서 있었고 끄는 자리만 없던 것임.
확정 5차 작은 것 2 — 표준도 그림 물빼기 주석이 기본 상수를 적던 것을
구조물 제원(weep_hole_*)에서 읽게 바꿈. 수량표와 같은 함수(weep_hole_spec)를 씀.
확정 6 — 표준도 장에서만 뜨는 [여기서 고치기] 단추를 고정 액션 줄에 둠.
표는 CAD 안이라 단추를 못 달고, 제원 폼은 도면 목록 아래라 밀림.
값 복사본은 만들지 않음 — 폼 한 벌이 그대로 정본 창구임.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
구조물 폼 select 는 「기본값 없는 필수」만 빈 보기를 두어, `empty_means` 가 적힌 칸도
첫 보기가 골라진 채 저장됐다. `fill_concrete_mpa` 가 180 으로 박혀 엔진 기준값
210(확정 ⑩)과 갈렸다 — 채움콘크리트 규격·단가가 조용히 달라지는 자리.
빈 보기 판정을 「필수 + empty_means」 한 줄(`keepEmpty`)로 합치고 초기값도 같은 판정을 씀.
기본값이 있는 칸은 그대로 첫 보기를 쓴다(2026-08-17 지시 유지).
클라이언트 옵션 타입에 empty_means 를 더함 — 서버는 이미 실어 보내고 있었다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fe1QWPTfw11PaKh2LjwXdR
코덱스가 토큰 한도로 중지한 STmate 분석을 이어받아 마무리한 것.
scratch/orca_artifacts 에 있던 산출물을 지식DB 정식 자리로 옮김.
이번에 새로 확정한 것
- 내부 반올림이 은행가 반올림(최근접-짝수)임 — SimpleRoundTo·Ceil·SetRoundMode
전부 미임포트, 반올림 함수 본체에 부호 처리 없음. 출력 XLSX 의 Excel 사사오입과
20개 경계 중 10개가 원 단위에서 갈림
- 간접비 항목별 밑수를 RATE 화면 그리드 묶음 제목에서 확정.
환경보전비 밑수가 직접공사비가 아니라 재료비+직접노무비+산출경비임을 정정
- JB_R 35열 확장 시점이 2020-05-27 이고 기존 1~20열은 한 칸도 안 바뀜
- 원가계산 설정 선택축 83개 전수. 화면 순번과 내부값이 뒤집힌 축 둘 확인
- 문서 13(통제시험 T1~T11)·14(최종 완료 보고서) 신규
원본 C:\경영정보(주) 는 읽기만 함.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
손으로 정확히 쳐야만 되던 주소칸을 후보 검색·선택 방식으로 바꿈.
VWorld 주소검색을 서버가 중계하고, 고른 즉시 좌표를 알므로 지도를 다시
찾지 않고 그림. 못 찾는 주소는 「직접 입력」으로 옛 방식을 씀.
- 회사 목록 SQL 이 business_address·business_owner 를 안 가져와 수정 모달이
비어 열리고 저장 시 빈 값으로 덮어쓰던 것 수정
- 지도 기본 배율 15 → 17, +·- 단계 조절 추가
- 라벨·입력·버튼을 한 줄에 눕혀 줄 어긋남 해소
- 모달 안 휠이 뒤 대시보드로 새던 것 차단
- 회사 패널에 주소 한 줄 표시
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TJC56e4osweKJ4vafm9ReM
개발 중 로그인마다 인증 코드를 기다리던 것을 끄는 스위치.
AUTH_OTP_DISABLED 가 true 이고 ENVIRONMENT 가 development 일 때만 듣는다 —
운영에서는 켜져 있어도 무시된다.
- 로그인: 새 브라우저·주기 재인증 둘 다 코드 없이 통과, 생략마다 경고 로그
- 회원가입: 흐름은 그대로 두고 인증 코드를 서버 로그에 기록
- .env 에 AUTH_OTP_DISABLED=True (배포 전 False 로 되돌릴 것)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TJC56e4osweKJ4vafm9ReM
문서 주장을 믿지 않고 원본 파일과 직접 대조한 결과.
바로잡은 것
- COSTN.DBF 는 암호화돼 있지 않음. 맛보기 71행·봉화 248행을 그대로 읽음.
암호화된 것은 BDQTY 와 SYSINFO 둘뿐. 단가 네 성분이 평문이라 골든셋을
단가 수준까지 뽑을 수 있음
- TAMT=MAMT+LAMT+SAMT 에 예외가 있음. 59행 중 2행(관급 흄관)이 어긋남.
하드 오류로 막으면 실데이터를 거부하게 됨
- 프로젝트 RATE 표는 4종이 아니라 6종. RATE_A(25x10)·RATE_B(35x10) 추가 발견.
값이 0~1 계수로 성격이 다르며 수공형식 밑수 배분표로 보임
새로 확정한 것 — 통제시험 T1 의 절반을 정적으로 풀었음
- 출력 XLSX 비고 칸의 실제 요율을 프로젝트 RATE 표에서 역추적해 좌표 확정
산재 RATE_R[45,1] · 건강 [46,1] · 연금 [46,6] · 장기요양 [46,11]
고용보험 등급1~7 [45,11..17] · 산안비 [20,17] 율 [20,18] 기초액
간접노무비 [10,1]
- 5개 연도 시계열이 실제 법정요율 변천과 일치해 A등급
- RATE_R 행 45~49 가 부속표 영역, 행 0~44 가 규모·기간 행렬임을 가름
판정 — 기초단가 원천(자재 5.7만건·노임·중기·표준시장단가)이 전부 암호화라
STmate 복제는 불가. 계산 엔진은 구현 가능하고 Aislo 목적에는 충분함.
문서 15 신규, 검증 스크립트 5개 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
프로젝트 STC 의 BOQ11 만 입력으로 삼아 직접비부터 총공사비까지 다시 계산하고
STmate 가 뽑은 XLSX 공사원가계산서와 원 단위로 대조한 결과.
결과
- 실무 프로젝트 6건 전부, 모든 항목이 1원도 안 틀림
- 내역 행 금액 ROUNDDOWN(수량 x 단가) 대조 1,515건 중 불일치 0
- 봉화 2024 는 직접비부터 총공사비 1,414,283,000 까지 전 항목 일치
새로 밝힌 규칙 다섯 — 이것 없이는 맞지 않음
- 말단 행 판별: BDCODE1 접두 T*(제목)·E*(계)·C*(제외총계)·:(페이지) 가 구조 행
- C* 로 닫히는 구역은 제외금액 구역이라 직접비에서 뺌
- 산업안전보건관리비의 관급재 밑수 = 관급자재대 - 조달수수료
- 끝전조정 = 도급공사비 천원 차액을 ROUND(차액/1.1) 로 세전 환산해 이윤에서 차감
- 관급자재대 = ROUNDUP(원자재대, 천원)
이로써 09번 완료 정의의 원설계 재현 조건이 실증으로 충족됨.
끝전조정·간접비 순서·계층 집계·제외금액 취급이 B 에서 A 실증으로 올라감.
문서 16 신규, 회귀 스크립트 2개 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
골든셋 회귀에서 소광 한 건이 어긋난 원인을 파고든 결과.
- 한 STC 에 BOQ11·BOQ12 가 함께 있으면 출력은 BOQ12 를 씀.
BOQ11 을 현재안으로 잡으면 그 프로젝트만 통째로 틀림
- 변경 파일의 BOQ11 차수1 이 앞 파일의 BOQ12 와 원 단위로 같음.
차수 인계 메커니즘 실증
- PRJLST.TCOSTn = MCOSTn+LCOSTn+SCOSTn 이며 직접공사비 합계
- 소광 변경1차 직접공사비 173,311,386 -> 257,410,433, 증감 +84,099,047
회귀 스크립트가 현재안 표를 고르도록 고침. 이로써 실무 프로젝트 6건 전부
원 단위 일치, 내역 행 1,515건 불일치 0.
08번 문서의 차수 경고를 실제 규칙으로 승격. 문서 16 보강, 차수 추적
스크립트 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
15번이 「BDQTY 암호화로 단가 조립 불가」·「중기 손료 계수 어디에도 없음」이라
적은 것을 정정. 출력 XLSX 의 일위대가표·중기사용료 시트에 구성 자원·수량·
단가·성분별 금액이 전부 평문으로 있음. 입력 원장은 못 읽어도 조립 규칙은 읽힘.
밝힌 것
- 호표 성분 소계는 절사. 중기사용료 398건 100%, 일위대가 325/345.
집계표 행 금액(ROUND)과는 다른 자리이므로 섞으면 안 됨
- 중기 시간당 사용료 = 손료(취득가 x 손료율) + 운전원 + 주연료 + 잡품(연료비 x 율)
성분별로 절사한 뒤 합
- 잡품은 수량x단가가 아니라 연료비에 비율을 곱하는 가산 행
- 시간당 손료율 25개 장비 실측. 같은 장비도 암석 조건이면 손료율이 오르고
(0.2085 -> 0.2405), 부착 장비는 취득가가 부착물만의 값임
- 일위대가 호표가 다른 호표를 참조하므로 위상순서 계산이 실제로 필요함
⚠ 손료율 값은 STmate 가 담은 것임. Aislo 기본값은 현행 건설기계 경비 산정
기준에서 확정할 것이며 이 표는 대조용.
문서 17 신규, 검증 스크립트 2개 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
07번이 C등급으로 두고 「최저가·최신가·특정 슬롯 우선 중 어느 하나라고 단정할
근거가 없다」 한 항목을 실증으로 확정.
출력 XLSX 의 자재단가대비표에 후보 다섯 칸(조달가격·물가자료·물가정보·
거래가격·견적단가)과 적용 단가·출처가 나란히 있어 직접 검정함.
- 실무 6건 전수 186건 중 186건이 후보 최저가와 일치
- 후보 값이 2종 이상인 76건 전부 최저가
- 후보 값이 3종 이상인 36건 전부 최저가
- 최저가가 아닌 후보를 택한 건 0, 후보 밖 값을 쓴 건 0
곁들여
- COSTN 의 여섯 칸 중 여섯 번째가 적용 단가 칸으로 보임
- 후보 없이 적용만 있는 25건은 유가 자료, 적용 0 인 49건은 별도계상
- 남은 것은 사용자 수동 고정 시의 우선순위 (T10)
09번이 꼽은 여섯 호환성 차단점 중 자재 자동채택이 풀림.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
전제 정정
- STmate 라이선스가 없어 13번 T1~T11 을 띄울 수 없음. 「나중에 시험으로
확정」 계획이 성립하지 않으므로 13번 머리에 못박고, 대체 경로 셋과
그것으로 이미 푼 것을 적음. 목록 자체는 장부 겸 절차서로 남김
- 남은 것을 늘릴 유일한 수단은 표본 늘리기. 특히 수공(S)·실적(TA/SA)
형식 표본이 하나도 없어 그 세 형식은 전혀 검증되지 않음
통제시험 없이 새로 밝힌 것
- 요율 항목이 두 부류임. 고정 칸(보험·산안비·이윤)과 규모·기간에 따라
행이 움직이는 것(간접노무비·기타경비·일반관리비). 뒤쪽은 고정 좌표라는
모델 자체가 틀림
- 이윤 좌표 RATE_R[20,16] 확정 (3건 일치)
- 요율이 그 프로젝트 표에 아예 없는 경우가 실재함. 간선임도 간접노무비
14.5%, 소광 이윤 13.435% 가 자기 RATE_R 에 없음 = 사용자 수동 입력.
재구현은 rate_source 를 table(coord)/manual 로 갈라 저장해야 함
교차검증 스크립트 2개 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
출력 XLSX 21개 시트 중 검증한 것이 4개뿐이었음. 나머지를 전부 열어 본 결과
계산 사슬 앞쪽이 통째로 비어 있었음.
채운 것
- 노임 일단가 -> 시간당 환산식. 환율및기초자료 시트에 식이 있고 INITIAL 의
RXNM_ 에 문자열로 저장됨. 적용 직종은 COND_
- ⚠ 식은 좌에서 우로 차례로 평가해야 함. 계수를 먼저 곱하면 부동소수점
때문에 1원 틀어짐. 18건 중 좌우순차 18/18, 계수선계산 14/18
- 단가산출 D코드 공식. Q = 3600*q*K*f*E/Cm 로 시간당 작업량을 내고
성분단가 = 절사(중기 시간당 성분단가 / Q, 소수1). Q 는 소수2 로 먼저 확정.
73개 호표에서 발견. 품셈 근거·토질·조합기준이 문자열로 남아 있음
- 계산 설정 스냅샷이 출력 XLSX 의 INITIAL 시트에 통째로 있음.
12번이 「화면 없이는 재현 불가」라 한 것을 정정. JMKN6 = 적용 단가 확인
- 집계표 행 금액은 사사오입 100%. 호표 성분 소계(절사)와 다른 자리임을
수치로 가름
문서 18 신규, 검증 스크립트 2개 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
T9 확정 — 계류보전 2025(변경) 의 공사원가계산서가 당초·변경·증감을 나란히
내는 것을 찾아 가름. 직접노무비가 +8,802,162 늘었는데도 건강보험료·
노인장기요양보험료·연금보험료는 증감 0 임.
- 재계산 모드: 간접노무비·산재·고용. 요율은 당초와 같고 변경 밑수로 다시
계산하면 원 단위로 일치
- 당초액 유지 모드: 건강·장기요양·연금. 사후정산 대상이라 설계 단계에서
당초액을 그대로 가져감. 재계산했다면 85만 원이 더 붙었을 것
- 전부 재계산으로 구현하면 그만큼 틀림
곁들여 출력 시트가 21종이 아니라 30종이었음. 설계변경 시트 3종이 있어
「변경 출력이 표본에 없다」던 앞선 서술이 틀렸음.
문서 19(진행률 장부) 신설 — 원천별로 파일·표·시트를 실제로 세어 진행률과
남은 것을 적음. 계수 스크립트 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
남은 16종을 전부 열어 본 결과 새 계산 규칙은 나오지 않음. 대신 둘이 밝혀짐.
- 착공내역서 178건 절사 100% — 설계내역서와 같은 규칙
- 목록표 7종·표지 2종·총괄내역서 2종은 계산 쌍이 없는 색인·표지 성격
- 집계표 4종에는 단가 열이 없음. 금액 = 절사(수량 x 해당 호표의 시간당
성분단가). 굴삭기 0.2·0.7 은 전 성분 일치
- ⚠ 어긋나는 칸은 전부 -1 이며, 경비로 역산하면 표시 수량 940.69 가
실제로는 940.68998... 임. 집계표 수량은 표시용 반올림값이라 그대로
역산하면 1원씩 어긋남. 09번의 「입력 원값과 표시 반올림값을 분리」가
이 자리
진행률 장부의 출력 시트 칸을 48% -> 100% 로 갱신. 훑기 스크립트 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
일위대가 호표 참조 그래프 (④단계)
- 봉화 2024 의 45개 호표를 그래프로 세움
- 구성행이 다른 호표를 가리키고 단가가 일치하는 것 22건, 이름은 같은데
단가가 다른 것 0건
- 순환 참조 없음 -> 위상순서 계산 가능. 깊이 최대 2단
- 09번의 「의존 그래프·위상순서·순환은 오류」가 실데이터에서 성립함
설계변경 직접비
- 계류보전 2025(변경) 의 BOQ11 은 한 표에 차수1(당초)·차수2(변경) 를 나란히 담음
- 양쪽을 각각 다시 세워 직접재료비·직접노무비·산출경비 전부 원 단위 일치
- 행금액 절사 대조 294건 x 2 = 588건 불일치 0
- 제외금액 구역 판정은 차수와 무관하게 같음
- 19번 6장의 간접비 모드와 합쳐 변경설계가 직접비부터 간접비까지 전부 재현됨
진행률 장부 갱신 — 지금 자료로 할 수 있는 일은 사실상 소진. 남은 것은
새 표본이 있어야 열림.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
System 폴더만 보고 STmate 자료 폴더를 STC 와 같다고 넘겼던 것이 구멍이었음.
그 폴더에 STC 에 없는 Start8x.Ini·STini.MEM·QCODE.SMT 가 있었음.
Start8x.Ini 에서 나온 것
- 간접비 계산 순서가 KAN_ORD_1/KAN_ORD_2 코드 목록으로 저장돼 있음.
두 목록의 차이가 321(기타경비 묶음 1개) 대 331~338(세부 경비 8개) 이라
12번의 「일반형식 대 수공형식」 구분과 정확히 맞음. KAN_TYP 가 고름
- 코드 사전 301~370 을 봉화 출력 순서와 대조해 확정. 값이 0 인 항목은
출력에서 빠진다는 규칙으로 하나도 어긋나지 않음. 등급 A
- ⚠ 후보 슬롯 이름이 설치본마다 다름. 설치 기본은 다섯째가 「유통 물가」인데
실무 프로젝트는 「견적단가」임. 슬롯 번호에 기관명을 박으면 안 되는 근거
- COD_FMT_1~8 코드 종류 사전 (대가=일위대가 B, 산근=단가산출 D)
- [EQUIPMENT] 에 노임 환산식·환율·적용 직종의 설치 기본값
- [NAG_HAL] 할증률 설정 자리 발견 (표본은 전부 0)
- DISP_EX=제외금액 — C* 구역 이름의 출처
SET_REP.DBF 는 보고서 서식 75종 카탈로그. 표본 XLSX 에 나온 30종 말고
기성·견적·계약·준공·계획·실행예산 등 45종이 더 있음. 새 계산은 아니고
출력 변형. 수공양식·표준시장 서식이 카탈로그에 있어 그 형식이 실제로
지원됨을 확인
COSTN.SMT·QCODE.SMT·PRJLST.SMT 는 본문에 읽히는 문자열이 없어 암호화로
판정. 다만 같은 정보가 출력 XLSX 에 평문으로 있어 의존 그래프 복원에는
지장 없음
문서 20 신규, 스크립트 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
최종 확인에서 내 오류 하나와 큰 구멍 하나가 나옴.
정정
- *.SMT 를 암호화라 적은 것은 틀렸음. 앞 4KB 만 보고 필터를 세게 걸어
놓쳤고 본문은 0x200 부터임. COSTN.SMT 276개·PRJLST.SMT 153개 문자열이
평문으로 읽힘. 암호화는 BDQTY·SYSINFO 둘뿐이라는 판정은 그대로 유효
구멍 — 지식DB 에 STmate 트랙이 셋이고 서로 몰랐음
- technical_info/01_임도/05_원가정보 (계산 로직 10문서, 2026-08)
- original/원가계산/STmate (STC 포맷 8문서, 2026-08-15)
- original/경쟁사 프로그램/STmate 분석 (이번 것)
- 단수처리 규칙·INITIAL 시트·SMT 문법·BDQTY 난독화는 이미 있던 것을
다시 한 셈. 다만 실행모듈 정적분석·폼 복원·골든셋 회귀·변경설계 모드·
단가산출 Q식은 이번에만 나온 것
PRJLST.SMT — 가장 중요한 발견
- 프로젝트별 원가계산 설정이 INI 평문으로 들어 있음. 차수별 섹션
- 요율이 좌표가 아니라 값으로 저장됨 (R_KANNO=10.8, R_IYUN=15 등)
→ 프로젝트 읽기·검산에 요율 좌표(T1)가 필요 없음. 우선순위 격하
- 수공형식 세부경비 8개 항목 확정 (R_S_SUDO/BOKRI/SOMO/TONGSIN/SEGUM/
PEGI/DOSEO/JIGUP). KAN_ORD_2 의 331~338 과 일치
- 직접입력 금액 C_KUNBO·C_YUNBO·C_IYUN_M 이 변경설계 「당초액 유지」와
끝전조정 보정액의 저장 자리
암호화의 성격
- 암호화 41개는 전부 파일명에 출처 기관·반기가 박힌 유료 구독 데이터.
평문 43개는 법정 공개 자료인 제비율 요율표. 후보 슬롯 이름이 국내
물가지 이름 그대로임. 프로그램 로직이 아니라 사온 데이터를 지키는 것
- Aislo 는 노임·유가·환율·시설공통자재를 이미 직접 확보. 실질 격차는
물가지 자재단가 구독 하나
문서 21 신규, SMT 덤프 스크립트 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
폼 233개(고유 190개) 중 3개만 뽑아 쓰고 있었음. 전수로 훑어 폼 40개에서
선택축 272개를 뽑음. 계산설정 폼 하나에서 뽑았던 83축의 세 배가 넘음.
화면에서 새로 나온 계산 규칙
- wM_Edt_Hal: 적용단가 = 기준단가 x 율%, 소수 n 자리 미만 절사/반올림.
「적용단가 0원인 것과 보호표시된 것은 수정 안 됨」 = T10 일괄변경 수동값
우선순위가 화면 안내문에 있음
- wM_Rate: 단수처리가 전역이 아니라 비목(M·L·X·W)마다 절사/반올림 x 소수 0~4위
- wM_Sel_Prn: ACTTYP = 표준시장단가 적용 방식(노임외 비목 적용안함/재료비로/
경비로), ACTOPT = 끝전 보정 우선순위. 설치폴더의 STBSC 파일명과 정확히 대응.
봉화는 ACTYP=1 ACTOP=2 = 「노임외 재료비로 적용 + 소수 비교후 타금액 우선보정」
⚠ 변경 차수가 화면에서 8차까지임. COSTN 접미사 4벌과 어긋나므로 재확인 필요
- wM_Set_Sys: KCDNM·ACDNM·ZCDNM·JCDNM·ECDNM·BPNNM 이 전부 소수 자리수 설정.
20번에서 미확정으로 둔 것이 풀림. EXRNM 은 환율 적용 범위, RX1NM~RX4NM 은
작업조건별 노임 환산식 4벌(터널·장대터널·펌프/GRAB/버켓준설선)
- wM_KanJub_K: 기성 계산은 부가세 선택지가 설계용과 다름 (재료비+산출경비의 10% 추가)
- wM_Mrg_BSC: 반기 기준자료 갱신의 매칭 키 5단계와 덮어쓰기 정책
- wM_JabPum·wQtyList: 코드 종류 전체 목록에 「그림코드」가 따로 있음
문서 22 신규, UI 카탈로그 원자료와 스크립트 3개 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
세 폴더 머리에 서로를 가리키는 블록을 넣음 — 또 갈라지지 않게.
technical_info/01_임도/05_원가정보/원가계산_체계.md,
original/원가계산/STmate/_meta.md,
original/경쟁사 프로그램/STmate 분석/README.md 셋 다.
2026-09-13 에 ③이 ①②를 모르고 시작해 중복 분석한 사실도 함께 적음.
COSTN.SMT 전수 파싱 — ②트랙이 해독해 둔 문법을 그대로 씀
- 맛보기 1건 + 실무 STC 7건에서 자원참조 1,570·품 1,460·Q식 187·
중간라벨 162·할증률 92 검출
- 참조되는 자원은 중기(X) 1,504 로 압도적. 노무 58·재료 7·경비 1.
단가산출은 거의 전부 중기 시간당 사용료를 작업량으로 나누는 계산임
- 중기 한 대를 참조하면 노무·재료·경비 세 성분을 각각 따로 끌어옴
(L 548·S 524·M 498). 총액 하나로 저장하면 안 되는 이유
- ⚠ Q 식이 한 꼴이 아님. 최소 10가지. 3600 계열(초)과 60 계열(분),
포설은 60*L*D*H*E*f/(N*Cm). 하드코딩 금지, 텍스트 평가 경로 필요
- 운반 계산이 적재시간+왕복시간+적하시간 으로 사이클을 쌓음.
km/hr·km·m/min 인자가 함께 나옴. 임도 토공 운반에 직접 쓸모
- 할증률 92건이 품목마다 제각각 (2%·3%·5%·24%·52%·0.443%).
BDQTY 입력 원장은 여전히 막혔으나 적용값은 읽힘
문서 23 신규, 파싱 스크립트 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
11번은 핵심 CPM 12개만 다뤘고 32개 모듈이 손대지 않은 채였음.
플러그인 규약
- 46개 중 31개 모듈이 Calc_Kanjub 를 내보냄. 재계산 진입점이 한 곳이 아니라
모듈마다 있음. T8(UI 명령별 재계산 범위)이 어려운 까닭
DP_Common.CPM 73함수 = 계산 공용 라이브러리
- 식 평가 CALC_STR·CALC_STR_PART·CALC_STR_URC·GET_URC_TYP
- 중간변수 GET_VARI_VAL·SET_VARI_VAL (:=A01 라벨)
- 반올림 MROUNDUD·MROUNDUP·MTRUNC·MINT·MFRAC·GET_ROUND_CUT
- 조건 IIF·IFI·IFO·CHK_TRUE_CLSTR — 식에 조건 분기가 들어감
- AMTTOHAN 금액 한글 변환
- ⇒ 식 평가기는 사칙연산+ROUND 만으로 부족. 조건 함수와 중간변수 필요
ST_P_XLS.CPM 72함수 — 엑셀이 양방향 교환 경로
- CONV_XLS_2_ST(엑셀→STmate 역등록)·XLS_2_BDREC(엑셀→BDQTY)·Prn_FMLA_INFO
- 암호화된 BDQTY 를 엑셀에서 만들 수 있다는 뜻
SX32W.CPM 29함수 = Rainbow Sentinel SuperPro 동글 API
- 라이선스가 소프트키가 아니라 USB 동글. 통제시험이 영구 불가인 근거 확정
ST_Jabpum: Edt_Hal_Amt / Edt_Hal_Rate — 할증이 금액·율 두 갈래
변경 차수 8차 의문 해소
- PRJLST.SMT 섹션 최대 2, DBF 접미사 1~4, 바이너리에 1~3차변경만,
BOQ2* 없음. 한 파일은 4벌이 맞고 8차는 분리형 파일 선택임
문서 24 신규, export 원자료와 스크립트 2개 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
PRJLST.SMT 저장키 전수
- 241종. 접두어가 뜻을 가름 — C_(금액직접입력 62)·R_(요율 39)·I_(선택 41)·
B_(켬끔 12)·D_(밑수 26)·S_(산출액 30)·ADD_(추가금액 22)
- ⭐ D_ 와 S_ 가 같은 항목 이름으로 짝을 이룸. 항목마다 「어떤 밑수에 곱했고
얼마가 나왔는지」를 프로젝트에 남김. 09번의 indirect_result 계약과 맞음
- 추가금액 저장 구조 ADD_AMT_단계_행_칸 (11번이 화면 문자열로만 본 것)
- 고용개선지원비가 휴업수당·장려금·사회보험·지원금 네 갈래
- 수공 밑수 배분 계수 R_R_DM·DL·L·DMDL·DML 이 rGrd_RateB 열 이름과 일치
간접비 식 템플릿 26개 전수
- 밑수별 기본 꼴 여섯 (총액·노무·재료·노무+토큰·총액-재료·세 성분 합)
- ⚠ 식 안에 IF(...) 조건 분기가 있음. DP_Common 의 IIF·IFI·IFO 가 처리.
사칙연산과 ROUND 만으로는 재현 불가
- ROUNDDOWN([C_KUNBO]*[RAT_1]) — 장기요양은 건강보험료 「직접입력 금액」에
요율을 곱함. 19번의 「당초액 유지」와 이어짐
- 복합 보험식·변경설계 A/B·사급자재 /1.1 전부 포함
설정 사슬이 닫힘 — 화면 272축 → 저장키 241종 → 식 26개 → 함수 73개 →
D_/S_ 재저장 → 출력. 다섯 칸이 모두 이어짐.
문서 25 신규, 키 원자료와 스크립트 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
Cm(사이클 시간) 식 54꼴
- t1+t2+t3+t4 4단계가 최다. 5·6단계도 있음
- 운반은 L/V1+L/V2+0.25 — 거리/적차속도 + 거리/공차속도 + 상수.
임도 토공 운반에 그대로 쓸 수 있음
- 굴삭기는 선회각별 사이클 초 (90도 18초, 135도 20초)
품셈 인자 실측 — q(버킷용량)·K(버킷계수)·f(토량환산)·E(작업효율)·V1~V4(속도)·
t1~t6(단계시간)·P=qo*eo(출력)
- ⚠ f 가 1/1.3 같은 분수 문자열로 적힘. 미리 소수로 접으면 자릿수가 어긋남
wM_Edit_San 은 단순 입력이 아니라 식 편집기
- 손료계산(F6)·계산(F9)·중기공식 편집·함수 입력·연산기호·변수명
- 문법 강조·문법 오류 검사·문법설명 보기
- COSTN.SMT 전개 텍스트가 이 편집기의 산출물. 재구현하려면 식 언어와 검사기 필요
⚠ 낙찰율 NAGCD 발견 — 계산 사슬에 없던 것
- wBoq 단가 그리드 23열의 마지막이 NAGCD(낙찰율)
- wM_Edit_San 에 결과값에 낙찰율적용·계약단가·결과금액조정
- 우리가 판 8단계는 설계까지임. 계약·실행예산·기성·준공 단계가 더 있고
계산 규칙이 다를 수 있음 (기성 제잡비는 실제로 부가세 선택지가 다름)
그 밖
- 내역 계층 표기가 += ~ +===== 로 레벨을 나타냄
- Prn_* export 152개를 SET_REP 74종과 이어 64종 대응
문서 26 신규, 스크립트 3개·원자료 2개 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
26번에서 「우리가 판 8단계는 설계까지」임이 드러나 그 뒤를 팠음.
계약 (wM_Mk_Cont)
- 낙찰율이 하나가 아니라 노·재·경 세 갈래로 따로 들어감
- 적용율을 제외할 공정을 행 단위로 고름 (관급자재대 등).
16번의 C* 제외금액 구역과는 다른 개념
- 단가적용율 0% 이면 계약단가를 0 으로 만들어 공내역 생성
- 예상적용율 찾기 — 목표 계약금액에서 역산
기성 (wM_KanJub_K)
- ⭐ 간접비가 「금회직접공사비 x 계약제잡비율」 단일 요율로 바뀜.
설계처럼 항목별 밑수x요율이 아님
- 전회·금회·누계와 각각의 비율을 함께 들고 감. 사정·잔량·기성고(%) 포함
- ⚠ 부가세 선택지가 설계와 다름 (재료비+산출경비의 10% 추가)
- BOQ11 의 QTY1_B/N/O/H 가 기성 수량 칸으로 보임 (설계 표본에선 전부 0)
실행예산 (wM_Boq_ExecX)
- 설계단가를 그대로 쓰지 않고 실행단가를 따로 만듦
- ⭐ 차액 보정 순서 — 성분별 절사로 생긴 차액을 어느 비목에 몰아줄지 고름
준공은 계약금액·준공금액 두 열뿐. 별도 계산 없음.
계약제잡비율 계산은 ST_KanJub 한 곳에만 있음.
⚠ 설계는 원 단위까지 재현했으나 뒤 네 단계는 「구조는 알고 값은 못 맞춤」.
기성·계약 STC 표본이 0건이라 골든셋 검증 불가.
문서 27 신규, 스크립트 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
식 언어의 변수 선언이 드러남
- 「금액변수 대상:M, 저장:S, %」「소계변수 대상:M, 저장:L, %」
- 변수마다 어느 비목에서 가져와 어느 비목에 넣을지와 비율 여부를 함께 지정.
단가 식은 숫자 계산이 아니라 비목 사이의 값 이동임
- 금액변수/소계변수가 갈리고 「금액을 계산후 제외처리」가 따로 있음
- ⚠ 중기공식(Q식)을 사용자가 등록·수정·삭제함. 10꼴은 고정 목록이 아님
STmateQty8 — 수량산출서가 별도 파일이고 엑셀 셀에 별명을 붙여 변수로 씀
- 기본수량변수(내역에 붙음) ↔ 확장수량변수(셀별명, 중간값)
- 수량산출서 → 단가산출 전송 경로. Aislo B08 과 직접 겹침
- 표본 QCODE 가 전부 빈 표라 파일 형식은 못 봄
ST_U_Convert — 조달청·XML 양방향 변환이 프로그램 안에 있음
- Conv_Jodal_ST8 / Conv_ST8_Jodal / Conv_ST8_XML / Conv_XML_ST8
- MK_K_FLD·CHK_K_FLD 호환규정 필드 생성·검사
- XML 스키마는 실행 중 조립이라 정적으로 못 얻음
- ⭐ 같은 모듈에 노임 직종 사전 106종이 평문으로 있음. CONLD·COND_ 의
직종 코드가 가리키는 이름표
식 문법 오류 메시지에서 규칙 여섯 (줄 단위 검사·거듭제곱·강제금액·
그림코드 제약·집계제외·비목별 군별단가)
⚠ EQSYNC.DBF 도 암호화. 암호화 파일이 셋으로 늘었음
(BDQTY·SYSINFO·EQSYNC)
문서 28 신규, 문자열 훑기 스크립트 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
브레인(데스크탑 메인) 요청 둘 처리.
① 16번 골든셋 재현 의존성
- 골든셋·단가조립·자재채택 계열은 로컬 원본 C:\경영정보(주) 를 안 씀.
저장소 안 실무문서/ 자료만 봄 → 랩탑에서도 그대로 돎
- 다만 D:\aislo-wt\sub 절대경로가 박혀 있어 창마다 깨졌음.
스크립트 23개를 저장소 뿌리 자동탐색(_repo_root)으로 고침
- 고친 뒤 골든셋 재실행해 6건 전부 여전히 초록 확인
- 로컬 원본이 필요한 25개는 설치폴더 분석용이며 검산과 무관
② 자원 이름·코드 목록 (단가 없이도 축 매칭에 쓸 것)
- STC 의 COSTN.DBF 가 평문이라 코드·명칭·규격·단위가 그대로 읽힘
- 실무 7건 합쳐 서로 다른 코드 894개
M 재료 228 · D 단가산출 273 · B 일위대가 158 · X 중기 96 · S 경비 92
· L 노무 37 · W 일식견적 10
- 출력 XLSX 의 목록표 시트 6종에서도 317개가 평문으로 읽힘
- 30_원자료/stmate_code_name_list.csv 로 저장 (code·name·size·unit)
- 곁들여 ST_U_Convert 에 노임 직종 사전 106종이 평문 (28번 §3.1)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
- ① 이름 잇기 74자리 · ② 지반 갈래 어휘 8벌·별칭 사전 11곳 · ③ 코드 없는 공종 37
- 명세와 어긋나는 실측 다섯 — 자원 축 파일은 안 쓰는 옛것(지금 575줄·못 맞춤 508) ·
부모 코드에 수량(FP-09-04·10-12·09-15 금액 안 섬) · 별칭은 표 범위에서만 참 ·
#갈래 제목 202건이 한글 키 · 콘크리트 축 두 벌
- 코드 무변경. 곁 발견(자재총괄 누락·B07 확정 재계산 덮어쓰기)은 기록만
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
전제: 가격 값은 중요하지 않음. 반기마다 바뀌고 Aislo 는 자기 원천을 구독함.
중요한 것은 코드 체계·분류 깊이·명칭/규격/단위 자리·카탈로그 규모.
스키마는 암호화돼 있지 않음 — 막힌 것은 레코드 본문뿐
- JDCODE_*.BSC 12필드: 분류3단 + JDCODE(17자리) + NAME + SIZE(110자) +
UNIT + EQCODE + GNCODE + TYP_STN + PSCODE + ST_NAME(표준명칭 별도)
- GRPCOD_*.BSC 7필드: CUR_COD/ROT_COD/LEV 부모-자식 트리 + 형제순서
- CSTA 32필드: 재·노·경 세 성분 두 벌 + _R 계열 + 비목별 요율
암호는 오프셋별 고정 변환
- 같은 필드 안에서 같은 평문은 늘 같은 암호문 (EQCODE 57,580행 단일 암호문)
- ⚠ 필드가 다르면 키가 다름. ROT_COD 가 CUR_COD 와 일치하는 비율 0.0%
→ 필드 안 동일성만 셀 수 있고 필드 사이는 못 이음. 트리 연결 복원 불가
- ②트랙의 STC 난독화 판정과 같은 결론이고 기준자료에서도 성립함을 확인
값을 못 읽어도 잰 것
- 자재 57,580건 전부 고유 코드인데 명칭은 1,761종뿐. 같은 이름이 규격만
달리해 평균 33건씩 갈림 — 규격 매칭이 자원 축의 실제 난관임을 수치로 보임
- 단위 59종(자재)·130종(통합). 분류 4~5단 깊이, 상위 노드 596/5,792개
- 경비·중기는 EQCODE·PSCODE·ST_NAME 을 쓰고 자재는 안 씀
- 표준시장단가는 RATE_L(72종)만 채워지고 RATE_M·RATE_S 는 빈칸
= 노무비만 요율 조정. 설치폴더의 「노임외 재료비적용」 파일명과 일치
⇒ 가격을 못 읽는 것이 축을 세우는 데 걸림돌이 되지 않음. 이름·코드가
필요하면 평문인 COSTN.DBF 쪽에서 얻음(894개 이미 추출).
문서 29 신규, 스크립트 2개 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
- 장 나눔·제원 입력 엔진과 기울기 판정 대상을 B08 로 옮김
- 창구를 /quantity/structure-sheets 로 옮기고 기초잡석 두께·지반 갈래를 함께 넘김
(옛 B07 창구는 두께를 안 넘겨 원단위 탭과 값이 갈렸음)
- 구조물도 탭 조각 renderStructureSheets 신설 — 탭 등록은 브레인 몫이라 안 붙임
- B07 표준도 목록은 탭 배선 날까지 B08 엔진·창구를 불러 그대로 둠
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
최종 빈칸 점검에서 확장자 기준으로 한 번도 안 연 파일을 훑다가 나옴.
28번의 「XML 스키마는 실행 중 조립이라 못 얻음」은 틀렸음 — 정정함.
System/Valid_Xml.vsl = 조달청 공사원가호환규정 V1.0.5 XSD 전문 (1,429줄)
- 조달청 공사원가통합관리시스템(npccs.g2b.go.kr) 발표하는 공개 규격.
STmate 고유가 아니라 국가 표준이라 Aislo 가 그대로 따르면 됨
- complexType 32 · simpleType 21 · 열거형 40곳
- 같은 폴더에 「호환규정코드(2026_09_01)」 안내문도 있음
문서 뼈대가 우리가 판 STmate 구조와 한 겹씩 대응
- 일위대가/상세 · 중기단가산출 · 기계경비/상세 · 자재 · 노무 · 경비항목 ·
실적단가 · 제경비항목 · 내역서→공종→세부공종
⭐ 규격이 우리 계약을 뒷받침함
- 제경비항목에 적용산식·적용산식설명 칸이 있음 = 「식을 데이터로 저장하라」가
납품 규격의 요구사항이기도 함
- 직접공사비정보에 제요율적용제외공종_금액 이 박혀 있음 = C* 제외금액 구역과
낙찰율 적용제외가 국가 표준에도 있는 개념
⭐ 기계경비 산출 규격이 우리가 캔 것과 정확히 일치
- 시간당노임산출 H0-일반구간·H1-터널구간·H2-장대터널·H3-펌프준설선·
H4-그래브준설선·H5-버킷준설선·H_-사용자정의
= 22번의 wM_Set_Sys cmBx_Sel_RX 와 하나도 안 틀림.
Start8x.Ini 의 RXXNM·RX1NM~RX4NM 이 이 자리임
- 환율형식(USD/EUR/100엔)도 EXNM_·EXEUR·EXYEN 과 맞음
- ⚠ 시간당손료산출이 E0-주간·E1-야간·E2-2교대·E3-3교대 네 갈래.
17번에서 뽑은 손료율 25개는 E0 하나뿐임
열거형 — 주공사 9종(국가유산수리 포함)·공사현장지역코드 290·인도조건 40·
시설물유형 27·지역구분 3(산간도서 포함)·내진등급·에너지효율·녹색건축 등
XSD 사본과 구조 덤프를 30_원자료에 넣음. 최신판은 npccs.g2b.go.kr 에서
직접 받을 것.
문서 30 신규, 스크립트 2개 추가.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
- 자재 0 의 뿌리: 사급 자재 카탈로그 부재(관급 나라장터뿐) · 품셈 칸 규격 없음 ·
자재 칸에 섞인 경비·작업 단계 · 구조물 표는 값 없이 이름만
- 못 맞춘 508 중 임도 60코드 몫 138줄, 절반은 표 딱지를 이름으로 읽은 표 읽기 문제
- STmate 목록이 이름·규격을 대는 것 13종 · 판정 물음 넷
- 코드 무변경(메모리 실행 진단)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 도면 목록·단건 조회·화면 제원 칸·[여기서 고치기]·창구 함수 제거
- 도면 kind 에서 standard 를 뺌. 표·그림 조립(build_standard_drawing·그림)은
B08 상단 그림 일감이 다시 쓸 자리로 남김
- 옛 [여기서 고치기] 시험을 B08 구조물도 탭 폼 자리 확인으로 바꿈
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
목적: 값이 아니라 조합을 확보하는 것. 표준일위대가 배포본은 암호화라 못
읽지만 실무에서 실제 쓴 조합은 출력 엑셀에 평문으로 남음.
누락 감사 — 호표 526개를 하나씩 셈
- 일위대가표 170개 전부 추출, 누락 0
- 중기사용료 143개 전부 추출, 누락 0
- 단가산출근거 213개 중 187 정상 + 빈호표 5 + 못잡음 21
- 못 잡은 21개는 전부 정체 확인함. 운반 계산(거리·속도 인자만 있음)과
기계+인력 비율 조합이라 「자원 조합」이 아닌 것. 값을 못 읽은 게 아님
- 빈 호표 5개는 무대처리·흙쌓기 등 금액 0원 항목
⇒ 설명되지 않는 누락 0건
확보한 조합 350개 (중복 제거)
- 일위대가 132 · 단가산출 136 · 중기 82, 구성행 1,729 (조합당 평균 4.9)
- Q식을 가진 조합 107개
- 150/350 이 다른 호표를 참조 — 2단 이상으로 쌓임
- ⭐ 규격이 바뀌면 구성은 같고 수량만 비례 (기슭막이 H=2.0 vs 2.5).
한 조합 + 규격별 수량표로 접을 수 있음
- 건설표준품셈이 23개 조합에 근거로 적혀 있어 현행 갱신 시 대조점이 됨
⚠ 수량은 그 시점 품셈값이므로 조합은 그대로 쓰되 수량은 현행 품셈으로
다시 맞춰야 함.
30_원자료/일위대가_레시피.json (265.8 KB) 와 감사 기록 저장.
문서 31 신규.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
- 자재 0 해소 첫 걸음: 사급 자원 19건(AR-M 17·AR-X 2, 이름·규격·단위, 단가 칸 없음)
resources/data_resource_catalog/ 신설 — 임도 60 + 사방 11 코드 범위의 진짜 자원만
- 규격이 조인 키: AR 항목은 후보가 하나여도 규격이 같아야 고름 · 품셈 칸에 규격이
없으면 「규격 미정 — 후보 N」(성공으로 안 셈)
- 형식이 하나뿐인 계열만 규격으로 고름(공기압축기(이동식) 3.5·10.3) · 형식 둘이면 규격 미정
- 범위 별칭 한 벌: 화약공→화약취급공(1016) scope FP-09-05 · pum_edition 다르면 안 씀 ·
scope 없음·겹친 두 코드는 읽을 때 오류
- 일위대가: 맞췄으나 단가 층 없는 줄은 조용히 안 빠지고 드러냄 · 기계 몫이면 막음
- ResourceAxis.py 700줄 초과분(조사용 덤프)을 _Dump.py 로 뗌
- 돌망태 품셈 절 표기 13-8 → 13-11 바로잡음
- 결과: 자원 줄 575→592(자재 0→11) · 못 맞춤 508→491 · 내역 금액 변화 0(막힌 공종 그대로)
- 시험 test_b09_resource_axis_join.py 8건 · 전체 1377 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 정본 resources/data_aliases/aliases_2026-01-01.json · 로더 common_util/common_util_aliases.py
(칸 빠짐·모르는 축·겹친 범위의 두 대상은 읽을 때 오류 · 판이 다르면 안 씀 · 양방향 조회)
- 흩어진 세 벌을 옮김: 매핑표 ground_aliases(리핑암→파쇄암·암절취) 삭제 ·
B09 UnitPrice 전역 VARIANT_ALIASES 삭제 · B08 인계본 ground_class_aliases 는 별칭표에서 만든 보기
- 범위: 리핑암→파쇄암 @FP-10-11 · 리핑암→암절취 @FP-10-12 · 화약공→1016 @FP-09-05 (근거 문구 줄마다)
- 자원 축 별칭 검사도 같은 로더로 합침(자원 목록 폴더에서 별칭 파일을 옮김)
- 시험 test_common_aliases.py 6건 · 전체 1509 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 양식이 있는 종류(찰쌓기)는 장마다 양식으로 줄을 다시 세움(L=1 m당) — 식·설명·반올림·
갈 곳·출처·안 섬 까닭을 줄에 실음. 양식 없는 종류는 지금 전개 그대로(고정형 모양)
- 화면 표: 산출 근거 밑에 식 한 줄 · 갈 곳 칸 · 안 선 줄은 「안 섬」과 까닭
- 전개 결함 둘 고침(브레인 판정): 「실무 관행」 계수가 돌종류를 지우던 것 ·
기초잡석이 서는데 「두께가 없어 안 섬」 사유가 함께 뜨던 것
- 검증 프로젝트 찰쌓기 15줄 — 양식 m당×10 = 원단위 탭 합계 전부 일치
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 뭉친 줄 해석기: 「굴 삭 기 (무한궤도)」를 굴착기(무한궤도)로 맞춰 큰돌쌓기 메쌓기(13-6-1)·
13-7-2 장비 몫이 붙음(형식을 적은 이름만 · 형식 없는 굴삭기는 판정 Ⓒ대로 규격 미정)
- 비고·합계 줄을 자원으로 안 읽음(단목베기 4-2-2 가짜 막힘 제거) · 「-」 칸은 그 갈래에 품 없음
(산림복원용 흙막이 13-13-2 가 특별인부·굴삭기 빠진 채 조용히 서던 것을 사유와 함께 막음)
- 지장목제거(판정 Ⓑ): 잡관목제거 → FP-04-02-02 #5m미만 · 뿌리뽑기 → FP-09-21 + 임목축적 등급 갈래 ·
준비공 「제근·뿌리다듬기」는 같은 면적이라 참조로만(이중계상 막이) · 미결 목록에서 뺌
- 기계 이름 별칭(백호·굴삭기→굴착기)은 별칭표 대상이 아닌 카탈로그 이름 정규화로 주석 정리
- 일위대가 전후 대조(HEAD↔수정): 새로 선 공종 13-6-1·13-7-2 · 새로 막힌 공종 13-13-2(사유 있음) ·
내역 금액: 단목베기·제근은 밑수 미확보로 계속 막혀 변화 없음 · 전체 시험 1513 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- build_table 이 양식 있는 종류(찰쌓기) 성분을 양식 풀이 값으로 갈음. 양식 없는 종류는 전개 그대로
- 구조물에 library_item — 원단위 탭 「양식」·구조물도 머리 「양식 있음/없음」으로 가림
- 뒤 단계가 아직 이름으로 찾으므로 돌 줄은 종류 이름으로 넘김(1장 코드 잇기 뒤 걷을 자리) ·
자료 출처·근거 문구는 전개 것을 그대로 둠
- 검증 프로젝트 전·후 대조: 구조물 5 중 찰쌓기 2 갈음 · 움직인 값 없음 · 자재총괄 최대 차 7e-15 ·
채집석 공제 58.674·잔토 91.75 그대로. Node 가 안 돌면 전개 값 + 사유
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 양식 장의 식 칸을 화면에서 고치면 같은 풀이기(TS)로 왕복 없이 즉시 다시 풂
- [식 저장]은 식만 보내고 서버가 Node 로 다시 푼 값을 돌려줌 — 브라우저 값을 받아 적지 않음
- 고친 식은 프로젝트 장 단위(산출 조건 structure_formula_overrides) · 양식 식과 같거나 비면 지움
- 원단위·자재총괄·인계·유토 입력(build_table)도 같은 고친 식을 봄 · 고친 줄 출처 user(「사용자 식」)
- 틀린 식도 막지 않고 저장하되 줄마다 오류를 돌려줌 · 양식에 없는 줄 차례는 400
- 개인 라이브러리 저장 단추는 4장(라이브러리 저장소) 몫으로 남김
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 마스터 생성기: 밑수가 절 이름에만 있는 표를 이름 전체가 「수+단위+당」일 때만 읽음 —
4-2-1 「100본당」·4-2-2 「1,000㎡당」 두 표만 바뀜(재생성 diff 2표 · basis_missing 140→138)
- 뭉친 줄 조합 기종: 앞머리를 공백 지우고 견줌 — 「굴착기+부착용집게」가 카탈로그 「부착용 집게」에 붙어
단목베기 4-2-2 가 섬(X-0201-0020#조합 + 부착용 집게)
- 실무 대조: 단목베기 5m 미만 866원/㎡ ↔ 영월 설계내역 「잡관목제거 벌목(5m미만)」 882원/㎡(노임 연도 차 2%)
- 합판거푸집 12-4: 사용횟수별 비율 미구현이라 일부러 안 풂 — 막힌 사유를 그 까닭으로 갈아 끼움(판정)
- 일위대가 HEAD↔수정 대조: 바뀐 공종은 FP-04-02-02 하나 · 전체 시험 1522 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 저장 칸 structure_formula_overrides 의 키를 장 이름에서 양식 type_id 로 바꿈(브레인 판정, PLAN 10장)
- 구조물도·build_table 모두 type_id 로 찾음 · 같은 양식의 장이 모두 같은 고친 식을 받음
- 화면 안내에 「같은 양식의 장 모두에 걸림」 · 시험: 뒷길이를 고쳐 장 이름이 바뀌어도 사용자 식 남음
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 양식 갈음의 종류 이름 치환(_downstream_name) 삭제 · 돌쌓기·골막이·바닥막이(메) 전개도 「돌」+규격
- 자재총괄 줄에 spec·supply_key — 관급구분 열쇠는 이름+규격, 옛 열쇠(이름만·종류 이름)도 받음
- 화면 자재총괄 이름 칸·원단위 성분 칸에 규격 표시, 관급 선택은 supply_key 로 저장
- 원단위 합계 열쇠에 규격 포함 · 종류 이름 DESTINATION 항목 정리
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 라이브러리 항목을 목록으로(항목마다 AX-ST-<8hex>.json) · 기본 찰쌓기에 코드 부여
- 가져오기: 로그인한 사람의 개인·회사 단 + 프로그램 기본에서 골라 {프로젝트}/B08_Quantity/library 에 박음 · 그 종류의 고친 식은 비움
- 표·원단위·자재총괄·인계는 박힌 양식 → 없으면 프로그램 기본만 읽음(여는 사람마다 값이 안 갈림)
- [확정] 때 아직 안 박힌 기본 양식을 박음 · 장 머리에 「어느 단에서 가져왔나 · 고친 식 N줄」
- 시험 test_b08_structure_library.py 6개 · 전체 1524 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- [내 라이브러리에 저장]: 그 장의 양식 + 고친 식을 로그인한 사람 개인 단에 한 벌로 씀(같은 종류는 그 코드로 덮어씀) · 저장 안 한 식이 있으면 막음
- [내 것 지우기]: 개인 단의 그 종류만 지움 · 박힌 양식·고친 식은 안 바뀜
- 기본 찰쌓기 양식에 pum_edition 2026-01-01(명세 17장 ③)
- 결함: 식 저장 뒤 다시 그린 표에 「저장 안 한 식」 표시가 남아 헛물음이 뜨던 것 — 장을 그릴 때 비움
- 시험 2개 추가 · 전체 1531 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 식 칸 옆 반올림 고르개·자리수 · 고르개에 「버림 — 엑셀 ROUNDDOWN」처럼 엑셀 이름과 음수 보기
- 고친 반올림은 고친 식과 같은 자리(양식 + 프로젝트)에 저장 · 양식과 같으면 지움 · [양식대로]로 식·반올림 함께 되돌림
- build_table 도 양식을 m당(L=1)으로 풀고 연장을 곱함 — 실무 시트처럼 뒷줄이 반올림한 값을 보고 구조물도와 안 갈림
- 「대안 후보」(물구멍 2.5㎡ 등) 표 밑에 보임 · UI 700줄 넘어 식 칸 표를 _Formula.ts 로 뗌
- 시험 2개 추가 · 전체 1533 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 양식에 unit_price.rows(수량은 원단위 줄 from_row · 코드는 work_item_code+variant_from 또는 ref_code)
- 서버가 B09 단가표(PriceBook.resolve, 읽기만)로 줄마다 재료·노무·경비 · 금액란 0.1원 버림 · 계금 1원 버림
- 못 푼 줄은 막힘 + 까닭(0 아님), 원단위 줄이 안 선 장은 안 섬 · 단위 다름·하위 구조물(B-AX-ST)은 막힘
- 창구 /structure-sheets/unit-price 를 장 조회와 따로 둠(단가표 첫 조립 14초)
- 찰쌓기: 돌쌓기 B-FP-13-04-05#갈래 · 기초잡석 B-FP-12-25 · 모르터는 공종 코드 미정
- 시험 4개 추가 · 전체 1539 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 줄이 B-AX-ST-* 를 가리키면 그 양식을 sub_vars 제원으로 L=1 풀고 일위대가를 먼저 세워 안 자른 단위당 금액을 씀
- 깊이 5단(PLAN 10장 판정) · 돌면 막힘 · 하위가 미완이면 윗 줄도 막힘 · 제원이 비면 막힘(0 으로 안 풂)
- 하위 양식은 프로젝트에 박힌 것 + 프로그램 기본에서만 찾음(개인·회사 단은 안 읽음)
- 시험 3개 추가 · 전체 1548 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
단끊기는 공정 네 줄을 토질 갈래마다 더하고 [주]⑤ 작업반장 1인/보통인부 20인을 더함.
원문 합계 줄은 절취를 ㎥당으로 더한 값이라 안 씀(까닭을 적은 공종만 섬). 같은 모양 뭉기기 13-12-1 은 안 더함.
「단위:」 없이 분모만 적은 본문 밑수를 읽어 조림·시비·떼심기 22표가 밑수 없음에서 풀림.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
12-6 은 두께 칸이 작업조 칸과 엇갈려 병합된 표라 두께 줄을 시공량 갈래로 읽음(20·30·40㎝, ㎥당).
후진 진입·경운기 칸은 「50%까지 감」 범위라 안 세움. 공종 단위가 빈 작업조 표는 시공량 열 머리 단위를 씀.
13-4-1·13-4-4 는 hwpx 병합대로 앞 세 돌 골·켜 두 잎 + 호박돌 및 야면석 한 잎으로 갈래를 세움(각 40 갈래).
13-4-4 는 같은 절의 표준경사 표 오판정으로 아직 막힘 — 형태 판정 일감으로 넘김.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 정본 둘(structures.json·pipe_points.json)과 B06 관 연장을 읽어 종류별 표로 세움
- 한 줄 = 측점 + 실치수(제원 칸) + 개소·연장 · 표마다 개소·연장 합·평균치수
- 칸 출처 자동·사용자·라이브러리(양식 기본값)·빈칸 · 배수관과 세월교는 다른 표
- 이 표에서 고친 값을 B05 가 바꾸면 빨간 테두리와 알림(조용히 안 사라짐)
- 구조물도 탭 앞에 탭 등록
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 칸 조작은 캐시(sessionStorage)에, [저장] 때 structures.json·pipe_points.json 에 바로 씀
- 산출 조건에 손댄 칸 표(고치기 전 값) · ↺ 로 되돌리면 자동으로 돌아감
- 상세 칸만 고침 — 자리·길이·높이·관경은 시·종점과 한 벌이라 구조물 놓기(B05) 몫
- 틀린 값·놓기 칸·판번호 어긋남은 아무것도 안 씀 · 값 꼴은 구조물도 제원 저장과 같음
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
① 구조물 터파기·되메우기는 토공집계로만 — 토공·사토 공제·참고로 가는 성분을 구조물 줄·묶음 조각·타설·기초잡석이 또 집으면 오류.
② 시멘트·모래·자갈이 자재총괄에 뜨면 오류. ③ 원단위표가 할증을 붙였거나, 자재 합계가 순수량 × (1+율) 과 다르거나,
할증 포함 재료량을 준 공종에 자재가 일위대가 재료비로 붙으면 오류.
판정은 B08 인계(double_count_violations), 멈춤은 B09 build_bill 한 자리. 배정 프로젝트 실측 어긴 자리 0건.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 양식 일위대가로 셀 구조물도 장은 인계 줄 하나(코드 AX-ST · 갈래 = 제원 키 · 수량 연장 m)
- 양식이 품은 줄(기초잡석)은 따로 인계 안 함 — 이중계상 막음
- B09 내역이 자기 단가표로 B08 일위대가 엔진을 돌려 금액 · 못 받거나 막히면 사유
- 수동 단가도 씀 — 내역 요약에 미확정 N건
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
기초잡석 줄·콘크리트 타설 줄은 여러 구조물 성분을 이름으로 모아 한 줄로 세워 누구 것을 뺐는지 안 남김.
그래서 물량 보존으로 봄 — 모음 줄 + 양식 호표(B-AX-ST)가 품은 몫 + 묶음 조각이 원단위 합을 넘으면 오류.
빌더의 건너뛰기를 따라 짜지 않아, 다른 구조물에서 건너뛰기를 빠뜨리면 여기서 걸림. 배정 프로젝트 어긴 자리 0건.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
종전 variant_key 는 표 첫 열 값 24개라 머리행 갈래·두 단 머리를 놓치고 첫 열이 자원 이름인 표를 갈래로 적었음.
표 모양 가르기는 B09 표 읽기에 이미 있어 두 벌을 안 짜고, 그 읽기를 메모리의 마스터에 돌려 표마다 가른 갈래를 원문 표기로 실음.
못 가른 표는 빈칸. 공종마다 variant_keys(불도저 공식 갈래·합산형 단계 암질·[주]① 평균 · 부모는 단계 갈래).
짝 시험 — 단가표 #갈래 제목이 전부 마스터 키에 있어야 함.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
유토곡선 장비 경계의 도자 한계거리가 config 붙박이였고 설정 칸 haul_limits_m_override 는 아무도 안 읽었음.
dozer_haul_limit_m 칸으로 갈음해 B06 유토곡선 문맥·배분·B08 산출 조건이 같은 값을 읽음(common_util 한 곳).
화면에 기본값 60 m · 근거(품셈 8-1-1 · 산림과임업기술 5장 · 실무 EARTH.DAT 전수)를 보이고, 종무대 20 m 는 규정이라 값만 보임.
종무대 이하 값은 저장에서 막음 · 비우면 기본값.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 계수로 미리 접으면 267,360 → 55,699 로 1원 틀림 — 식 1/8*16/12*25/20 을 차례로 풀어 55,700
- 중기 호표 운전원 줄은 시간당 노임 제목(#시간) × 인수로 부름(STmate 운전원 1 × 55,700 모양)
- 골든셋 시험 test_b09_golden_stmate — 실무 6건 환율및기초자료 시간당 칸 전수 재현
(다섯 건 원 미만 절사 · 2025 울진 소광 0.1원 미만 절사 — 자리는 설정값)
- 28자리 끝 반올림 차례만 다른 합 비교 시험을 허용 오차로
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 표토제거: 답외구간 FP-09-15-02 · 밑수 ㎡ · 대상 노면·절토대상지(성토 사면 안 셈) · 노면 폭이 빈 측점이 있으면 안 섬
- 표토 운반·적치: 제거 ㎡ × 두께 · 거리 − 압토 20 m · 20 m 이내면 제거 품에 듦
- 층따기: 「제안값(확정 아님)」 경고 줄 · 칸에 자동으로 안 넣음
- 시험: 옛 ㎥ 기대값 넷 갱신 · 노면 면적 평균단면적 시험
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 산출 조건 subgrade_compaction_enabled · 기본 False(9-16-2 [주]⑤ 「대규모 성토지로서 층다짐이 필요한 경우」 조건부)
- 토공집계 「노체다짐」 줄 · 규격 진동롤러(자주식 10ton) · 매핑 FP-09-16-02 · 갈래 없음
- [주]③ 굴착기+진동롤러 조합 중 굴착기는 성토(포설) 줄이 셈 — 두 번 안 셈(#조합 철회)
- 칸 밑에 [주]⑤ 근거
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 시공능력 Q 로 선 기계 줄(굴착기·도자·직접 작업량·다짐·암 잎)은 D(단가산출)에 달고 B 는 D 를 수량 1 로 부름
- 종전 PriceBasis 의 껍데기 D(D → B) 걷음 — 「단산 N」은 D 를 품은 줄에만(갈래 줄도 실제 단가 코드로 찾음)
- 자원 집계가 B→B·B→D 참조를 끝까지 풀어 기계 사용료에 닿음(종전 조용히 버림) · 모르는 종류는 드러냄
- 조합 16% 바꿔 달기·공종 근거 문구가 D 줄도 봄
- 전후 대조: B·X 420 제목 금액 전부 같음 · 검증 프로젝트 내역 본체 122,924,846 그대로
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- fix2(사사오입 0.01) — 굴착기·도자·다짐 작업량, 암 평균 Q, 표 직접 작업량
- TRUNCATED_KINDS 에 PRICE_BASIS(D) 더함 — B 는 다음 차례
- 골든셋 ③ 단가산출근거 실무 6건 208 호표 전수 일치(제외 소계·% 줄·산근 참조·계약단가 읽기) · 회귀 3,545.5 → 3,545
- 검증 프로젝트 내역 본체 122,924,846 → 122,870,975 · 전체 시험 1606 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 틀 B09_Estimation_UI_Shell: 탭 줄과 등록만 · 탭마다 파일 하나(계약 _Shell_Types)
- 설계내역서: 실무 열(합계/노무/재료/경비 단가·금액) · 머리글 접기·레벨 고르개 · 줄 누르면 제 N 호표 · 단산 N 단추 · 미확정 빨간 테두리
- 일위대가·단가산출근거: 목록표(내역에 처음 쓰인 차례) + 본표 · 줄 누르면 하위 호표·산근·중기로 · 자취 눌러 되돌아감 · Q 식 글자 그대로
- 옛 탭 여섯(원가계산서·중기·관급사급·기초자료·설계서 구성·산출기초)은 옛 코드 그대로 이어 붙임 — 새 탭 파일이 서면 등록 한 줄씩 바꿈
- 본표 합계 줄 = 호표 성분 소계 원 미만 절사 값 · 비율 줄 금액도 0.1원 절사 표시
- 사전 ui_template_locale_b3 새 벌(b2 700줄 넘음)
- 검증: ORCA 검증 프로젝트 — 본체 122,848,989 · 지장목제거 865·15,460,837 · 제 9 호표 합계 1,708 = 산근 8호표 합계 1,708 · 옛 탭 여섯 다 뜸 · 접기 53→51·레벨1 11줄
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 서버: 내역 응답에 집계표 넷(resources)·목록표(lists) — 내역이 쓴 자원을 처음 쓰인 차례로 되모음
(묶음 줄·구조물도 호표 줄도 구성까지 풀어 셈) · 재료비 집계표에 자재대(사급·관급) 줄 이어 붙임
- 중기시간금액집계표: 단가 열 없이 합계·노무·재료·경비 — 성분마다 반올림한 뒤 합(골든셋 131/144, 합계 한 번 반올림 107/144)
- 재료·노무·경비 집계표: 반올림(수량 × 단가) 골든셋 279/279 — 시험 한 벌 더함
- 중기사용료 호표: 잡품 줄은 수량 칸 율(%) · 단가 칸 밑수(주연료비) · 금액 — 실무 표 그대로. 제잡비·공구손료 줄도 밑수를 단가 칸에
- 자재단가대비표: 슬롯 1~6 단가·페이지 · 채택 칸 굵게 · 최소단가 표시(서버 min_slot)
- 목록표 일곱(일위대가·단가산출근거·중기·재료비·노무비·경비·일식견적): 색인만 — 서버 번호·단가 그대로, 일위대가·산근·중기 줄은 누르면 들어감
- 옛 중기 탭 줄을 새 탭으로 바꿔 끼움(중기경비계산서는 옛 표를 아래에 이어 보임)
- 검증: ORCA — 중기 목록 9 · 굴착기 0.7 호표 합계 109,704 · 잡품 22 % × 21,418.1 = 4,711.9 · 노무 집계 벌목부 9,686,529 · 중기 집계 성분 합 · 시험 1638 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 저장하면 이 탭 자료와 설계내역서 한 벌(UI_Store forgetBill)을 함께 새로 받음 — 값이 다시 섬
- 화면 확인: 옮기기 전후 같음 — 표 6 · 줄 737 · 고르개 32 개 고른 값 전부 같음 · 숫자 칸 2 · 글 35,074 자
- 계산 입력 확인: 기계 작업효율 E 평균 0.50 → 상한 0.55 를 화면에서 고르면 「사용자가 고른 값」 · 제 2 호표 2,511 → 2,284 ·
되돌린 뒤(기본값) 2,511 그대로 — 검증 프로젝트 설정 원래대로 복구
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- estimation.rate_overrides 에 칸 주소(variable·table·match)·요율·사유·입력 시각을 한 줄씩 — 마스터 요율 파일은 안 건드림
- 엔진이 계산할 때 복사본에만 얹음 · 덮어쓰기 없으면 원본 그대로(골든셋 초록) · 원가계산서 비고에 「요율 덮어쓰기 N건 — 사유」
- 요율표: 칸마다 기본값·지금 값·주소 · [수 정]에서 입력 · 고친 칸 테두리 + (기본 X) · ↺ · 고친 요율 목록에 사유 칸(비면 저장 안 됨)
- PUT /estimation/rate-table: 사유 빈 줄·틀린 주소·같은 칸 두 번·음수면 아무것도 안 저장 · 값·사유 같으면 입력 시각 유지
- 판이 바뀌어 주소가 안 맞으면 조용히 버리지 않고 알림
- 시험: 마스터 불변 · 계산에 걸림 · 한 값짜리 · 거름 · 주소 틀리면 멈춤 · 화면 주소 왕복
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- B09_Estimation_Edits: 고친 값 한 벌 — 기본 조립(cached_build) 복사본에 얹음(캐시 키에 고친 값) · 기본 벌은 그대로(골든셋 무관)
· 얹지 못한 값은 edit_skipped 로 남김 · 값 없는 슬롯은 받지 않음(422 + 까닭)
- 새 라우터 B09_Estimation_Router_Edits(GET/PUT /estimation/edits) — Router.py 는 _build_for 가 고친 값을 얹게만 바꿈
- 화면: 줄마다 채택 슬롯 고르개 · 일괄(변동없음/1~5 단가/최소단가) · 고친 줄 「사용자」 + ↺(지우면 계산값으로)
- 곁: 사용자 식 셈(B09_Estimation_Expression — ROUND·ROUNDDOWN·INT·SQRT, eval 없음)과 본표 편집 칸(UI_DetailEdit)을 먼저 둠 — 서버 편집 문이 서기 전까지 잠자 있음
- 검증: 시험 1656 통과 · ORCA 채택 저장 → 「사용자」·↺ → ↺ 뒤 고친 값 {} 로 복구 · 값 없는 슬롯 422 「경유: 1번 원천에 값이 없어」
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- get_bill · _project_root_of · _build_for 는 Router.py 에 그대로(랩탑_메인 CostSheet import 그대로)
- 새 파일은 본 라우터의 _project_root_of·_build_for 를 부를 때마다 빌려 씀 — 시험이 본 라우터 것을 바꿔 끼움
- 검증: 시험 1666 통과 · 골든셋 초록 · 재시작 뒤 B09 문 열하나(factors·base-data·price-sources·basis-sheet·machine-expense·
design-doc-index·bill·unit-prices·edits·cost-sheet·PUT factors) 전부 200
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 산업안전보건관리비: 고시 별표1 「보건관리자 선임 대상 건설공사의 적용비율」 열을 대상액이 아니라
공사가 선임 대상인가(요율 데이터 manager_thresholds 800억 · 토목 1,000억)로 가름 — 두 줄이 겹쳐 멈추던 자리
- 하도급대금 지급보증수수료: 기본 꺼짐 — 실무 원가계산서 6건에 줄 없음 · 건설산업기본법 제34조 대상이면 켬
(칸 밑에 「대상 아님인지 안 적음인지 못 가름」 사유)
- 시험: 50억 이상 2.60 / 선임 대상 2.73 · 하도급 꺼짐·켬 · 골든셋 초록
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- STmate wM_Mk_Cont(27번 §2) 본뜸: 단가 적용율 【노】【재】【경】 · 적용 옵션 여섯(화면 표기 그대로) · 적용제외 공정
- 설계 내역(/estimation/bill) 줄을 복사해 성분마다 적용률 — 절사는 설계 내역 규칙(bill_line) 그대로 · 설계 불변
- W 코드: 동일코드 한 벌(기본) / 개별생성 켜면 줄마다 · 적용 제외 줄은 설계 단가·설계 코드
- 0%: 「공내역 생성」 켜면 0 원 공내역 줄 · 끄면 적용 안 함(판정 대기)
- 뜻 미확인 옵션(노무비율)·아직 안 선 옵션(기초단가 적용·일위대가 생성·비과세자재)은 칸만 받고 까닭을 화면에
- GET/PUT /estimation/contract · 탭 파일 B09_Estimation_UI_Tab_Contract.ts(등록은 서브) · 사전 b4
- ⚠ 계약 표본 0건 — 구조가 서는지까지만 시험
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- B07 표준도 그림 코드를 B08 로 옮겨 모양 목록(선·글자)으로 냄 · 화면이 SVG 로 그림(그림 6 : 표 4)
- 벽 두께를 수량표와 같은 함수로 — 상부·하부 두께를 넣어도 그림만 옛 두께이던 것 고침
- 터파기 점선을 수량식과 넓이가 같은 평행사변형으로(앞면 따라 기움)
- 큰돌쌓기(직경 축)·옹벽·뒷길이 미정 장은 그림 자리에 까닭 한 줄
- B07 CAD 표 조립은 같은 모양 목록을 CAD 엔티티로 옮겨 적음(CAD 편집 뒤 일감용)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 기초단가 적용: 자재·노임·중기 취득가 채택 단가에 적용률 — 복사본만, 설계 단가표 불변
- 조립값과 다른 줄(할증·수동 단가)·단가표 밖 코드는 성분 곱셈 + 비고에 까닭
- 계약 호표: 설계 본표와 같은 꼴(detail_of)로 W-B·W-D 따로 — 기초단가 적용과 함께만
- 0% 는 0 원(브레인 판정) · 공내역 생성은 그 줄 이름만 가름
- 시험 11건 · 전체 1699 통과(골든셋 포함)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 뒷길이를 안 고른 돌쌓기 장: 표가 쓴 그 뒷길이(양식 장은 양식이 푼 값, 전개 장은 기본 45㎝)로 그림
- 「⚠ 뒷길이를 안 골라 기본 N㎝ 로 섰습니다」 한 줄을 한 곳에 두고 표 사유·그림이 같이 씀(골막이 문구도 같은 함수)
- 돌쌓기 표 사유에 그 한 줄이 새로 붙음 — 전에는 기본값인 줄 표에 안 드러났음
- 그림 까닭은 정말 못 그리는 장(큰돌쌓기 직경 축·옹벽)만
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 단가표 복사본의 중기(X) 호표만 실행단가로 갈아 끼워 일위대가 다시 조립 — 설계·계약 불변
- 조립값과 다른 줄은 설계 단가 그대로 + 비고에 까닭
- 「기본보정」은 뜻 미확인 — 차액을 안 몰고 남김(확인 대기)
- 계약 모듈의 다시 조립·묶음 합 조각을 두 단계가 같이 씀
- 실행예산 탭 파일 · 사전 키(등록은 서브) · 시험 7건
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 계약내역·계약 원가계산서(같은 엔진에 계약 직접비)를 읽기만 해 파생 — 계약 불변
- 제잡비 줄마다 계약잡비율 = 도급액 ÷ 계약 직접공사비 (구조로 읽음, 확인 대기)
- 회차 목록 저장 · 기성(%) · 잔량 · 계약 수량 넘으면 알림
- 부가세: 직접입력 / 공급가액 / 재료비 / 재료비+산출경비 (설계 vat_base 같이 씀)
- 원가계산서 조립·계약본 받기 조각을 떼어 기성이 같은 길로 받음
- 기성 탭 파일 · 사전 키(등록은 서브) · 시험 6건 · 전체 1717 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
① 터파기·되메우기·잔토 — 소광리 「옹벽2.0」에 줄이 없어 브레인 판정대로 기초 폭 + 양쪽 여유 0.3(같은 파일 식생옹벽블럭 기초 터파기)로 수직 · 깊이 기초 0.4 + 버림 0.1 + 기초잡석 · 비탈분 제외(지반선이 제원에 없음) · earthwork 로만
m당 터파기 1.54 · 되메우기 0.36(터파기 − 기초·전단키·버림·잡석) · 잔토 1.18 · 인계 심도 구분은 판 깊이(0.7 m → 0~1m)
② 관측 값을 원문으로 — 콘크리트 1.35→1.345 · 버림 0.15→0.145 · 유로폼 3.2→3.205 ⇒ 기초잡석 0.30→0.29
③ 물구멍관 — 실무 관측 식(「옹벽2.0」 T31 벽 높이 ÷ 개소당 면적 × 관 0.4)에 제원 칸이 닿음 · 규격 Ø50 이 붙어 자재총괄에서 돌쌓기 물구멍관과 한 줄(33.924 + 3.2 → 37.124 m) · 관 길이는 관측값으로 표시
- 검증 프로젝트 내역 본체 122,848,989 → 124,202,681원(+1,353,692 = 구조물터파기 심도 0~1m 15.4㎥ 1,341,216 + 되메우기 21.0→24.6㎥ +12,476)
- 그림: 터파기 점선·「터파기 폭 2.20 × 깊이 0.70」 · 표 사유와 같은 말 · 옛 값을 박은 시험 8건을 원문 값으로(전 값은 주석)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 계약잡비율: 기본 역산값(도급액 ÷ 계약 직접공사비) · 계약서 값 직접입력이 이김(사유 필수)
- 줄별 절사 누적으로 단일율 곱과 벌어진 금회·누계 차이를 비고에 적음
- 공급가액 절사(총공사비에서 조정 + 10원~1억) · 총공사비 절사(이윤금액 직접입력 + 10원~1억)
— 떨어지는 몫은 설계 원가계산서와 같은 식으로 이윤에서
- 사정: 뜻 미확인이라 칸만 받고 계산에 안 씀
- 시험 4건 보탬 · 전체 1723 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
구조물도 남은 종류 그림을 시작하며 시험 제원으로 표를 세워 보다 드러남:
- 골막이(개소당)·바닥막이(㎡당)가 「m · 연장 0」으로 읽혀 구조물도 전 줄 「단위당 못 냄」 · 인계 「물량이 0 이라 내역에 안 세움」 → 내역 단위 개소 1 / ㎡ 면적으로
- 떼흙막이 개소당 값이 연장으로 나뉘어 떼 0.139/m 로 보였음 → 개소당 1.39
- 개거 「L형수로 H=0.2」 — 엔진 키가 「콘크리트 L형수로 H=0.2」라 등록부에서 골라도 영영 안 섰음 → 등록부 글자로
- 기슭막이 사유 「돌 종류·뒷길이 칸이 없어」 — 칸이 선 뒤로 거짓 · 돌쌓기 한 줄과 같은 말 두 번 → 걷음
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 준공 별도 계산 규칙 미확인(35번 §3) — 규칙을 짓지 않고 기성 누계를 옮김 · 기성 한 장 불변
- 기성 회차가 없으면 준공금액 비움(0 원으로 안 채움)
- 기성 계산 조각(progress_for)을 떼어 준공이 같은 길로 받음
- 기성 간접재료비 확인 대기 닫음 — 예정가격작성기준 제17조·제39조② 근거(브레인 판정)
- 준공 탭 파일 · 사전 키(등록은 서브) · 시험 2건 · 전체 1730 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 기슭막이(돌쌓기형) — 돌쌓기 그림 그대로 · 기울기 판정 대상에 넣고 찰/메는 형태에서(표와 한 벌)
- 골막이 — 정면 사다리꼴 · 방수로 관 · 바닥파기 띠 + 옆 단면 · 치수는 표와 같이 쓰는 erosion_check_section 한 벌로 뽑음(값 불변)
- 떼흙막이 — 정본 평균 붙박이 치수(dims)로 · 그 치수로 표 두 줄(떼 1.39 · 바닥파기 0.17)이 다시 나오는지 시험
- 바닥막이 — 돌 켜 · 버림 · 기초잡석(산출 조건) · 터파기 · 표 사유에 새 한 줄 「터파기는 돌 두께만 — 버림·기초잡석은 판 깊이에 안 들어감」을 그림도 같이 씀
- 표가 안 선 장은 표 사유를 그대로 까닭으로 · 개거 둘은 원문끼리 치수가 달라서/단면 그림이 없어서 까닭
- 화면 확인: 검증 프로젝트 936be972 에 넷을 잠깐 놓았다 되돌림(구조물 5개 원본과 같음 · 단계 상태 그대로 · 내역 124,424,547 그대로)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
요율을 원본 「공사원가계산서」 비고에서 뽑아 그 원본 전용 판을 지어 엔진에 넣음 —
「요율 데이터가 달라서 틀림」을 없애고 남는 차이를 밑수·절사·사슬로 몰아 둠.
· 제비율 줄마다 54자리 전수 일치(안전관리비 A·B 와 작은 쪽 채택 포함)
· 사슬은 비고가 다 보이는 셋(봉화·영월·울진 공통) 순공사원가~총공사비 33자리 일치
· 이윤 — 자동절사가 맞춘 원본 둘(봉화 339 · 영월 632) · 설계자 명시 조정 하나(울진 905,980)
· 영월 도급공사비 차 762,000 = 원본에만 있는 국가지점번호판검증수수료 줄
· 고칠 자리 하나(배정 대기) — 안전관리비 B 절사 자리가 영월에서 1원 갈림(미채택 줄)
· 짝 파일이 700줄에 닿아 새 파일로 가름(원본 읽기는 공유)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
- 쪽 끝 기종 이름에 다음 쪽 머리글·다음 분류 이름이 붙고, 다음 분류 첫 기종들은 이름이 비던 병
- 이름·규격은 건설공사 표준품셈 제8장 기종 목록 줄에서 읽음 · 취득가·손료계수는 원천 그대로
- 대형 브레이커 되살림 표 옆에 같은 약속으로 둠(원천이 실으면 지움)
- 자원 축 781/386 · 범위 81공종 상태 전후 같음 · 시험 4건
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 원문 비고 「별산」·「별도계산」·「설계수량」(〃·병합 칸 포함)·「필요시적용」은 안 넣는 줄로 까닭을 남김
- 규격 칸(1:2)과 관경 열(∅800mm)을 조인 키로 — 접합몰탈·고무링이 자재 줄로 섬(단가 층은 아직 없음)
- 크레인은 기종이 여럿이라 고르지 않음 — 「규격 미정 · 원문 규격 10ton/5ton」(브레인 판정 대기)
- 옆 칸 규격 「40.64㎝」 = 카탈로그 절단기 40.64(기계 운전 자료가 없어 층은 못 섬 — 사유로 드러남)
- 카탈로그 밖 자원 목록에 고무링 ∅800/1000/1200mm · 지수활제 보탬(원문 F0346 · 단가 없음)
- 범위 81공종 상태 전후 같음(못 붙은 줄의 까닭만 바뀜) · 시험 4건 · 전체 1749 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 2장 — FP- 는 산림사업 표준품셈 한 판, 건설품셈은 기계 층만. 고시 2025-82호 총칙 7 조문 근거
- 7장 — 금액의 단위표준 표 다섯 줄과 실측 대조. 넷은 맞고 「총액 1,000원 미만버림」만 미확인
- 7장 — 수량의 단위표준 [주] 셋. 「규정 없는 자리 소수 2자리」는 이 표에도 없는 자리에만
- 막히면 산림품셈을 먼저 볼 것 — 덤프 운반이 건설 8-2-8 만 보다 막혔던 자리
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154EMdwPYNPuKc9eZv8SLEX
- 전개가 structures.json 만 읽던 구멍 — pipe_points.json 도 읽음(관 자체는 관 줄이 셈)
- 관 부설(품셈 12-11 m당)에 기슭막이 몫 없음 → 기슭막이는 전개 한 곳에서만 · 사유에 적음
- 안 적힌 벽 칸은 등록부 기본값(횡단도 그림과 같은 값) + 「기본값으로 섰음」 사유
- 구조물 목록에 남은 관 지점 종류 옛 저장분은 안 셈(두 번 방지)
- 기슭막이 공종 = 형태로 돌쌓기 찰·메 코드 · 독립 기슭막이 한쪽 설치에 두 칸이 다르면 사유만
- 산출식 없는 세월교가 「터파기 줄 없음」 거짓 사유를 안 내게 · 구조물도 제원 저장이 관 지점 시설엔 안 먹힘을 알림
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- B08: 갈래로 안 나뉜 암 총량은 시공법만 골라서는 안 풀림 → 사유 「암 갈래 구성비(%)가 아직 없어…」 · 시공법 안내 목록에서 뺌
- B09 내역: 공종을 못 고른 줄에 B08 막힘 까닭이 있으면 그 문구 그대로(입력 필요 ↔ 매핑 구멍 가름)
- 배정 프로젝트 흙깎기 암 3,104.57㎥ · 측구터파기 암 160.48㎥ 가 이 자리 · 시험 1건
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 원문 본문 식(채워 넣는 서식)을 데이터로: Qt = T/γt×L · n = Qt/(0.7×K) · ㎝t = t1+t2+t3+t4+t5 · Q = 60×Qt×f×E/㎝t
- 브레인 판정: n 의 Qt 계산값(원문 표기 10 버림) · 발파암 E 0.9(원문 누락) · Es 운반 줄 값 · 거리별 갈래
- 거리는 B08 인계(유토곡선·사토장)에서 — 내역이 조립에 넘기고, 호표 한 장은 코드 #L…m 에서 되읽음
- 거리 없는 줄은 0 원 아니라 「운반거리 미입력」 · 갈래는 범위 별칭 리핑암 → 암절취
- 배정 프로젝트 164.23m: 토사 3,249원/㎥ · 암절취 8,882원/㎥ · 같은 인계 대조로 바뀐 줄은 이 둘뿐(+1,437,981원)
- 시험 5건 · 전체 1761 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 브레인 판정: 값 없음을 감추면 조용히 빠지거나 조용히 부풂 — 없으면 없다고 보이기
- 관 지점 벽 치수를 등록부 기본값으로 채운 줄 = 미확정: 원단위 합·자재·터파기·되메우기·기초잡석·타설·잔토·채집석에서 뺌
- 인계 막힘 갈래 넷째 값 unconfirmed(계약 칸은 안 늘림) · B09 는 내역 제자리에 빈 금액 + 빨간 테두리 · 머리 뱃지
- 구조물도 그림에 표와 같은 기본값 사유 줄 · 「횡단도와 같은 값」 문구는 틀려 고침(B06 관 벽 높이는 관경 기준)
- 936be972 내역 184,291,506 → 124,424,547 · 미확정 18건
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- v16 「덤프 운반은 아직 안 선다」가 지키던 것 = 운반거리(설계 입력) 없이 운반이 조용히 금액을 갖지 않기
→ 「거리가 와야 선다」로: 거리 없는 기본 조립엔 운반(#L…m) 없음 · 거리 무관 적재(#적재)만 섬
- 갈래 제목 ⊂ 마스터 갈래 키: 10-12 는 표가 아니라 본문 식이라 마스터 표에 갈래가 없음
(#L…m 는 프로젝트 거리마다 생겨 마스터에 둘 수도 없음) → 식이 내는 FP-10-12 갈래만 까닭 적고 제외
- 58afe8f2 를 일부 시험만 돌리고 올려 난 빨강 · 전체 1763 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- _haul_rows 한 곳: dump_truck 내역 줄 뒤에 haul_equipment dump_loading 짝 줄(갈래·수량 같음)
- 흙깎기 9-3-2(㎝ 20초·135°)에 싣기가 안 들어 있어 운반과 한 벌로 냄(브레인 판정)
- B09 운반토량 검산(운반 ≤ 절취)에서 적재 줄은 뺌 — 같은 흙을 두 번 세지 않게
- 시험 기대값: 운반표 줄 4 → 6(적재 둘) · 내역 줄 3 → 5 · 전체 1763 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 표가 읽는데 등록부에 없어 영영 안 서던 칸 — 옛 저장본은 안 깨지고 비면 사유(어디서 적는지)
- 개거(점 배치) length_m · 물넘이포장 thickness_cm·length_m(detail · 구조물 집계표에서도 고침)
- B05 시설 칸에 물넘이 두께·길이 입력 — 시설 저장이 칸을 통째로 갈아 끼워 집계표로 적은 값이 지워지던 길을 막음
- 700줄 한계로 유입구 형식 목록을 _Fields 로 옮김(부르는 쪽 그대로)
- 사유 문구: 「open_ditch 연장」 키 노출 · 「연장·면적이 0」 → 무엇을 적으면 서는지
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 저장이 옵션을 통째로 갈아 끼워 집계표·구조물도로 적은 칸(관 기슭막이 기초 등)이 조용히 지워졌음
- 같은 시설 종류면 폼이 적는 칸만 갈고 나머지는 이어 붙임 · 종류를 바꿀 때만 통째로
- 폼이 아는 칸을 폼이 비우면 지움(사용자가 폼에서 한 일)
- 폼 칸 목록 거울 시험 — 폼에 칸을 늘리고 목록에 안 넣으면 시험이 잡음
- ORCA 936be972: 집계표로 기초유 적고 B05 폼 고침 → 재계산 요청에 기초유 남음 확인 · 값·캐시 되돌림
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 제외 목록 대신 갈래마다 어디서 왔나를 한 칸: 덤프 운반·적재 10-12 제목 → 그 식(브레인 판정)
- 짝 시험: 표에서 온 갈래는 마스터 갈래 키에 있어야 함 · 식이 낸 갈래는 출처가 적혀 있고 마스터엔 없어야 함
- 마스터에는 「식 공종 갈래」 칸을 안 둠(표에서 뽑은 것만 담는 자리)
- 전체 1771 통과
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
- 한 벽을 두고 값이 셋(등록부·표 H2.5 · 구조물도 H2.5 · 횡단도 관경 기준)이던 결함 — 근거 있는 관경 기준으로 맞춤
- 관 벽 높이 안 적으면 관경 + 여유 0.5 를 0.1m 로 올리고 근입 0.5 더함(Ø800 1.8 · Ø1000 2.0 · Ø1500 2.5)
- 파이썬(B06 엔진)·TS(세트 스펙·횡단 상수) 거울 시험 · 등록부 기본 2.5 걷고 empty_means
- 최소값이라 미확정·금액 밖은 그대로
- B05 벽 칸(관 유입·유출 · 독립 기슭막이)은 비워 두고 회색 제안값 · [제안값 넣기] 누른 때만 값 — 저장 한 번에 미확정이 확정으로 바뀌던 길을 막음
- 전체 시험: 받은 덤프 적재 커밋 몫 2개만 빨강(보고함)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 뿌리: 사용자가 고른 적 없는 첫 선택지가 저장돼 확정으로 굳음(옛 2026-08-17 「빈 보기 두지 않음」 걷음)
- 구조물 목록 일반 폼: 기본값 없는 고르기 칸은 늘 빈 보기(필수 「— 선택 —」 · 아니면 「— 안 정함 —」)
- 시설 폼 optionalSelect: 맨 앞 빈 보기(날개벽 「안 놓음」 등) — 기본값이 있는 칸은 다음 차례(②③)
- ORCA 936be972 B05 관 폼: 날개벽 「안 놓음」 빈 값으로 섬 확인
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 칸에는 저장된 값만 · 기본값은 회색 글씨(숫자)·빈 보기 이름(고르기)으로 제안 · [제안값 넣기] 누른 때만 값
- 새 구조물 추가도 기본값을 안 실음(defaultOptions 로 채우던 자리) · 잠긴 칸(enabled:false)만 프로그램 값 유지
- C군(범위 계산 타입)은 길이처럼 높이도 비면 안 놓음 — 비면 횡단도 벽이 조용히 안 서던 길
- B08: 돌 조달을 안 정하면 「채집으로 셈」 사유를 보임(조용히 채집 되지 않게)
- ORCA 936be972: 돌쌓기(메) 고르면 높이·길이·전·설치측 빔 + 제안 · 단추로 채워짐 확인(저장 안 함)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 관종 파형강관·관경 1000 · 유입/유출 구조 기슭막이 · 집수정 길이 2 · 날개벽 있음·1·2·45 · BOX 2.0×2.0 ·
월류 폭 5/10 · 월류 높이 필요 수심 · 독립 기슭막이 양쪽 — 전부 「안 정함 (제안 …)」·회색 글씨로만
- [제안값 넣기] 누른 때만 빈 칸에 제안값 · 적은 월류 높이가 필요 수심보다 낮으면 여전히 되돌림
- BOX암거 새로 놓을 때 기본값 싣던 자리도 걷음 · 비운 칸은 횡단도가 등록부 기본값으로 그림(저장만 안 함)
- 700줄 한계로 물넘이·세월교 칸 묶음을 `_Drainage_Facility_Ford.ts` 로 뗌
- ORCA 936be972: 관종 「안 정함」 · 저장된 관경 1000 은 그대로 · 날개벽 고친 요청에 관경·날개벽만 실림 · 캐시 되돌림
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
- 페이지를 열기만 해도 관종·관경·구조·벽 길이·전/후·집수정 길이 기본값이 옵션에 박혀 임시 저장·[저장]에 확정으로 굳던 자리
- 벽 형태·높이는 조정창에서 조작했을 때만 싣음(앞 조각 c4eccee5 auto 커밋에 먼저 쓸려 올라감)
- 세월교·BOX: 저장돼 있던 칸이거나 조정창 조작으로 등록부 기본값과 달라진 칸만 스펙 값을 싣음
- ORCA 936be972 B06: 관 폼 관종 「안 정함」 · 저장된 관경 1000 만 · 벽 칸 빔+제안 · 임시 저장에 기본값 안 생김
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
근거 — 산림청고시 제2025-82호 「금액의 단위표준」 「설계서의 총액 · 원 · 1,000 · 미만버림」.
실무 6건 원가계산서가 여섯 다 000 으로 끝나는 것이 증거.
· 기본 켬 — cut_basis="grand_total" · cut_unit_krw=1000
· 조용히 안 깎음(2026-09-08 합의의 정신) — 이윤 조정액 줄과 결과 메모에 고시 번호를 달고
기준 입력판 11 에서 끌 수 있음을 함께 적음 · 칸 밑 안내도 고쳐 씀
· 끄는 값을 none 으로 바꿈 — 빈 값은 저장이 안 돼 기본으로 되돌아가 끌 수가 없었음
· 진동 고침 — 걸음마다 ÷1.1(종전엔 첫 걸음만). 이윤 1원이 총공사비 1.1원이라
잔차를 그대로 빼면 경계를 지나침(울진 신설 654→999→900→910→909…)
· 안 앉으면 「끝자리 N원이 남음」을 메모로 보임
· 실무 6건 전수 000 판정을 새 벌로 지킴
곁 — tmp/tests/test_b09_cost_fixtures.py 를 resources/tester/ 로 옮김(픽스처 포함).
tmp 쪽 사본은 안 지움 · 겹침은 파일 머리에 적음.
기본이 바뀌어 깨진 남의 시험 6건은 「안 자른 값」 자리에 cut_basis="none" 을 넣어 고침.
전체 시험 1782 통과 · 28 건너뜀.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
서버 Node 가 벽 몸 ∩ 성토 폐회로 넓이를 재 design.extra_walls[].fill_overlap_m2 로 남기고 B08 다단 줄 비고에 「벽 몸 N㎡ × 연장 ≈ ㎥ 두 번 셈」 · 258.12 1단 1.335㎡ × 10m ≈ 13.3㎥ · 금액 변화 0 · 미확정 단은 안 붙임
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
서버 Node 가 기준벽 역할별 넓이를 design.wall_fill_overlap 에 남기고 B08 이 다단 목록 통(base 표시 칸)으로 읽어 기준벽 줄 비고에 붙임 · 호출부(Router_Material) 안 늘림 · 936be972 빈 저장: 관 9 곳 유출 벽 258.12 1.417 · 720 1.403 · 804.18 1.166 · 982.64 0.807 · 620 0.136 · 440 0.046 · 533.98 0.004 · 85.05/900 0㎡ · 이 프로젝트 기준벽은 모두 미확정(금액 밖)이라 비고 안 뜸 · 벽 칸을 적으면 「1.42㎡ × 10m ≈ 14.2㎥」 · 금액 변화 0
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
머리 칸이 다르거나 수량이 수가 아니면 칸 주소를 짚은 사유로 그 호표를 통째로 뺌(추측 안 함) · 갈 곳은 구성 = unit_price · 별산자재 = material · % 가산 행 = reference + 항목 사유 · 계약단가·낙찰율 줄 안 뽑고 항목 사유 · 품셈 근거 줄은 formula_text 보존 · 원문 호표·자원 코드와 공사명은 출처로만(판정 Ⓑ~Ⓗ · ㉮㉯㉰)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
④ 1.2배의 대상을 「호별 산정이 끝난 금액」으로 바꿈 — evaluate 가
버림(밑수 × 율 + 기초액) 을 먼저 맺고 배수를 곱함(종전엔 곱한 뒤 한 번만 버림).
근거 둘이 같은 쪽 — 고시 제4조① 단서 문언 · 골든셋 실증(영월 2024 B 20,330,639 → 20,330,638).
A(배수 1)는 어느 차례로 해도 같은 값.
⚠ 두 실증본이 갈림 — 거창 2025 원본(STmate 출력 아님)은 옛 규칙이라 B 가 1원 위.
목표가 STmate 골든셋 재현이라 STmate 쪽으로 맞춤. 고정값 벌에 갈림을 적어 둠.
⑤ SA(실적수공) 안전관리비 「확인 대기」 → 별도내역. TA 와 같은 자리가 됨.
PENDING_SAFETY 상수를 걷고 파일 머리 문구도 고침. 금액엔 안 닿음.
⑥ 고시 대조를 상시 벌로 세움 — test_b09_safety_notice.py 여덟 자리.
별표1 표를 원문 md 에서 읽어 요율 데이터 16칸 전수 대조(값을 시험에 안 박음) ·
제4조①1·2호 구간 경계 넷 · 단서 A·B·1.2배 · 제2조2호 대상액 구성 · 1.2배 차례 회귀.
잴 시험 먼저 빨강 확인한 뒤 고침. 전체 시험 1911 통과 · 28 건너뜀 · 1 xfail.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
실측(936be972 단가표): 고정형 줄 이름 그대로 찾기 — 종전 8줄 전부 후보 0 → 깬잡석채집 50건(야면석 채집…) · 고임돌채집 14(막돌 채집…) · 레미콘타설(장비) 22(레디믹스트콘크리트 타설 먼저) · 기초다짐 및 뒤채움 16 · PVC파이프 0(자재라 자원 갈래) · 두 번째부터 40~80ms
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
3. 제3조(적용범위) 「총공사금액 2천만 원 이상」 — 요율 데이터의
minimum_total_construction_amount_krw 를 규모 기준액과 견주고 미달이면 줄 자체를 안 만듦
(A·B 곁줄도 안 섬 · 0 원으로 안 채움). 잴 시험 먼저 빨강 확인한 뒤 고침.
⚠ 견주는 값은 규모 기준액(추정가격 · 없으면 수렴한 총원가) — 고시의 「총공사금액」과 딱 같은
말은 아니나 계산 차례상 안전관리비 앞에 설 수 있는 값이 그것뿐. 보건관리자 문턱과 같은 축.
1. 1.2배 차례 = STmate 쪽 확정(브레인 판정) — 안 고른 갈래의 사유를 코드에 남김.
거창 2025 원본은 버림(밑수 × 율 × 1.2) 로 1원 위지만 STmate 출력이 아니라 채택하지 않음.
4. 관급 ÷1.1 = 실무 따름 — 근거를 정확히 적음. 고시 제4조① 단서는 「해당 재료비를 대상액에
포함」까지만이고 부가세를 말하지 않음 · ÷1.1 은 부가세 제외 환산으로 실무 6건 공통.
전체 시험 1952 통과 · 28 건너뜀 · 1 xfail.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
- 문구 못박음 셋: ① 옹벽 높이 칸 밑 「기본값 · 소광리 도면 H=2.0 · 바꿀 수 있음」(등록부 default_basis 를 모든 칸 밑 회색 한 줄로) · ② 일반관리비 「임도가 어느 쪽인지 규정이 없어 (주)공사 기본 · 칸에서 바꿀 수 있음」 · ③ 모르타르 배합 「산림품셈에 배합 절이 없어 건설품셈 [건축] 9-1-1 을 씀(교차 참조)」
- B08: 막자갈 비고 「칸을 새로 두는 것은 B05 등록부 몫」 · 일위대가 머리 5단 한도 · 야면석 계수 칸 밑 「돌 종류는 그대로」 · 식 저장 전 상태 줄 「제원을 바꿔도 따라감」 · 양식 장 머리 「반올림은 m당 값에 걸고 수량 = m당 × 연장」
- 산출 조건 제근 굴착기 크기 칸(임목축적 등급 밑 · 「안 정함」 · 회색 제안 0.7㎥ + 근거 + [제안값 넣기] 누른 때만) — 936be972 소림 + 0.7 → 뿌리뽑기 55원/㎡ × 17,873.80㎡ = 983,057원(되돌림)
- 라이브러리 이름표: [내 라이브러리에 저장]·[발행] 창이 장 이름(종류 + 제원 요약)을 채워 묻고 고친 이름으로 저장 · 취소면 안 씀 · 비우면 양식 이름
- B05 계곡 통과 시설 폼 머리 「[저장]은 이 폼에 있는 칸만 바꿈 — 폼에 없는 칸은 그대로 둠」 · B09 폐기물처리비 자리 칸 밑 「법정경비 밑수에는 안 넣음」 · 내역서 「금액을 못 세운 줄」 첫 줄 「사유는 아래 단계가 낸 것을 그대로 옮김」
- 남은 하나(표 형태 66표 까닭 form_basis 화면)는 자원 축 파일을 거쳐야 해 브레인 물음
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
측구 선택(
ditch_choice)이 캐시·브라우저 재계산·저장 patch·서버 스키마 넷에 없어 카드에서 눌러도 값이 버려지던 자리를 이었음. 화면 실측으로 확인함 — 끄면 절토 계 3.33 → 1.78㎡, 다시 켜면 3.90㎡. 전체 시험 1198 통과·실패 0.⚠ 되받기로 데스크탑·옆 창 커밋이 함께 실림(계 20커밋) — 제 것은
5907de85·a3d73fcf·98a594d5·8171a22a넷임.🤖 Generated with Claude Code
사용자 판단으로 계획서에서 뺀 것 — 원문 그대로 보관. - 공통기반 0-5·0-7 : 행동지침 5장(계산 자리·데이터 3층)과 겹침 - 8-33 : 창별 검증 프로젝트 표는 OWNERS.md 자원 점유로, 나머지는 여기 - 참고 절 셋 : 데이터 세트 정의는 지침과 중복, 구조물 구현 기준·계곡 통과 시설 선정은 옛 자료 계획서 1,167줄 6.4만 자 → 1,058줄 5.9만 자. 미체크 53 → 57 (0-8 고칠 순서 셋 · 투영 이월 하나를 체크박스로 세움). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>PLAN 9-6 · 8-32 두 잔손질. ① 미공표 직종 신뢰도 플래그 (9-6) 지식DB 가 「단가 채택 시 플래그 유지 필요」(노임단가_적용 §2-3) · 「해당 단가 사용 시 경고 표시」(원가_입력변수_사전)로 두었는데 노임 층에 없었음. - load_labor_reliability() — 원문 기호 `*`(조사현장 5개 미만)·`**`(미조사) 그대로. 정상 공표 직종은 아예 안 담음(빈 값과 「정상」을 구별할 일이 없게). - PriceTitle.reliability — 노임 제목 전부 + 조종원 줄에도 같이 붙임. - build_summary 의 labor_reliability → 화면 힌트 줄로 경고. ⚠ 금액을 막지 않음 — 값은 그대로 서고 「조사현장이 적다」는 사실만 나름. ⚠ 내역에 실제로 실린 것만 경고 — 카탈로그 40직종을 다 띄우면 쓰지도 않는 직종이 화면을 채움. 실측 둘: 1037 벌목부 · 1050 일반기계운전사(지식DB 예시 그대로). ② 층따기 사전 밑수 (8-32) 원가_출력변수_사전 B2-9 가 「㎡·m」였음. 품셈 9-18 은 ㎥ 당이고, 우리도 확정 2차 ① 로 면적이 정본이되 길이를 곱해 ㎥ 로 내보내고 있음. 두 축을 한 칸에 적어 ㎡ 로 내도 되는 것처럼 읽히던 자리 — 밑수를 ㎥ 로 고치고 까닭을 비고에 적음. 코드는 이미 ㎥ 로 내보내 수치 변화 없음. 시험 여섯 신설 · 전체 1182 통과 · 실패 0. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>ditch_choice추가 5907de85c6옛 문구가 영어 한 줄("unresolved source gap")이라 무엇이 없어 미뤄졌는지 안 보였음. 지금 사실대로 적고 받아야 할 자료(실무 구조물 일람표)와 지식DB 근거 자리를 함께 붙임. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>6aaac6ab대조 일치) 533187e8759ed418e8대조 일치) 6a4507e596ccd1ec2a가 지운 문서 4건 복구 (1,789줄) 29180653ea- 풀이기에 명세 13장 보강분: when(안 선 줄, 가리키면 오류) · destination 필수(기본값 없음) · spec 의 {제원} 채움 · 반올림 trunc(ROUNDDOWN)·ceil_away(ROUNDUP) - resources/library_structure/masonry_wet.json — 줄 15 · 뒷길이×돌종류 표 · 제원 vars · 물구멍 2.5㎡ 실무 관측은 대안 후보로 - 양식 제원 채우기 B08_Quantity_Engine_StructureTemplate.py(계산 없음) - 대조 시험 121건: 높이·뒷길이·돌종류·기초·사용자 칸·when 갈래에서 전개와 한 줄도 안 갈림. 알려진 차이 하나(실무 관행 계수가 돌종류를 지우는 전개 결함)는 시험에 드러냄 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq- 라이브러리 항목을 목록으로(항목마다 AX-ST-<8hex>.json) · 기본 찰쌓기에 코드 부여 - 가져오기: 로그인한 사람의 개인·회사 단 + 프로그램 기본에서 골라 {프로젝트}/B08_Quantity/library 에 박음 · 그 종류의 고친 식은 비움 - 표·원단위·자재총괄·인계는 박힌 양식 → 없으면 프로그램 기본만 읽음(여는 사람마다 값이 안 갈림) - [확정] 때 아직 안 박힌 기본 양식을 박음 · 장 머리에 「어느 단에서 가져왔나 · 고친 식 N줄」 - 시험 test_b08_structure_library.py 6개 · 전체 1524 통과 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qqcb33e81d), 옛 원가계산서 줄 바꿔 끼움 b7af20f76d- B09_Estimation_Edits: 고친 값 한 벌 — 기본 조립(cached_build) 복사본에 얹음(캐시 키에 고친 값) · 기본 벌은 그대로(골든셋 무관) · 얹지 못한 값은 edit_skipped 로 남김 · 값 없는 슬롯은 받지 않음(422 + 까닭) - 새 라우터 B09_Estimation_Router_Edits(GET/PUT /estimation/edits) — Router.py 는 _build_for 가 고친 값을 얹게만 바꿈 - 화면: 줄마다 채택 슬롯 고르개 · 일괄(변동없음/1~5 단가/최소단가) · 고친 줄 「사용자」 + ↺(지우면 계산값으로) - 곁: 사용자 식 셈(B09_Estimation_Expression — ROUND·ROUNDDOWN·INT·SQRT, eval 없음)과 본표 편집 칸(UI_DetailEdit)을 먼저 둠 — 서버 편집 문이 서기 전까지 잠자 있음 - 검증: 시험 1656 통과 · ORCA 채택 저장 → 「사용자」·↺ → ↺ 뒤 고친 값 {} 로 복구 · 값 없는 슬롯 422 「경유: 1번 원천에 값이 없어」 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq- 구성행(sheet_rows): 수량 고치기 · 줄 빼기(수량 0, 흐리게) · 줄 더하기(단가표 고르개) — 비율 줄·돌림 참조는 받지 않음 - Q 식(price_basis_q): 식은 명세 13장 식 언어 — B08 구조물도 풀이기(evaluate_sheets, Node 한 벌)를 그대로 부름 · 소수 2자리 사사오입 확정 → 새 수량 = 수량 × 옛 Q ÷ 새 Q · 비고에 「Q(사용자) = 식 = 값」 · PriceDetail.output(시공능력 Q)을 Q 로 선 장비 줄 넷 자리(굴착기·도자·직접 작업량·암 잎)에서 실음 · 저장 모양에도 실음 - 따로 짰던 파이썬 식 셈(B09_Estimation_Expression)은 걷어냄 — 식 풀이 두 벌 금지(브레인 판정) - 새 문: GET /estimation/edits/sheet/{code}(본표 + 줄마다 고친 값 표시) · GET /estimation/edits/search(줄 더하기 고르개) - 화면: 본표 [편집] — 수량 칸 · ✕ · Q 식 칸 · 줄 더하기 · 고친 줄 「사용자」 + ↺ - 검증: 시험 1664 통과 · 골든셋 초록 · ORCA — 제 3 호표 보통인부 0.023→0.046 이면 5,652→9,610 · 내역 본체 122,848,989→122,857,198, ↺ 뒤 5,652 · 산근 2호표 Q 58.21→116.42 이면 1,695→847, ↺ 뒤 1,695 · 틀린 식 422 「모르는 이름: abc」 · 고친 값 {} 로 복구 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq26097d69) 1b48a16a18f1f8482e) 87cab83c60a7a1b246) 1e9ff999a4근거 — 산림청고시 제2025-82호 「금액의 단위표준」 「설계서의 총액 · 원 · 1,000 · 미만버림」. 실무 6건 원가계산서가 여섯 다 000 으로 끝나는 것이 증거. · 기본 켬 — cut_basis="grand_total" · cut_unit_krw=1000 · 조용히 안 깎음(2026-09-08 합의의 정신) — 이윤 조정액 줄과 결과 메모에 고시 번호를 달고 기준 입력판 11 에서 끌 수 있음을 함께 적음 · 칸 밑 안내도 고쳐 씀 · 끄는 값을 none 으로 바꿈 — 빈 값은 저장이 안 돼 기본으로 되돌아가 끌 수가 없었음 · 진동 고침 — 걸음마다 ÷1.1(종전엔 첫 걸음만). 이윤 1원이 총공사비 1.1원이라 잔차를 그대로 빼면 경계를 지나침(울진 신설 654→999→900→910→909…) · 안 앉으면 「끝자리 N원이 남음」을 메모로 보임 · 실무 6건 전수 000 판정을 새 벌로 지킴 곁 — tmp/tests/test_b09_cost_fixtures.py 를 resources/tester/ 로 옮김(픽스처 포함). tmp 쪽 사본은 안 지움 · 겹침은 파일 머리에 적음. 기본이 바뀌어 깨진 남의 시험 6건은 「안 자른 값」 자리에 cut_basis="none" 을 넣어 고침. 전체 시험 1782 통과 · 28 건너뜀. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA273132f8) 57a949c62487083c33) afea225ae5afea225a뒤 typecheck 빨강 닫음 646081757cee9368ec짝 6c61f5d5ac976e5fd9짝 b95ad5e838④ 1.2배의 대상을 「호별 산정이 끝난 금액」으로 바꿈 — evaluate 가 버림(밑수 × 율 + 기초액) 을 먼저 맺고 배수를 곱함(종전엔 곱한 뒤 한 번만 버림). 근거 둘이 같은 쪽 — 고시 제4조① 단서 문언 · 골든셋 실증(영월 2024 B 20,330,639 → 20,330,638). A(배수 1)는 어느 차례로 해도 같은 값. ⚠ 두 실증본이 갈림 — 거창 2025 원본(STmate 출력 아님)은 옛 규칙이라 B 가 1원 위. 목표가 STmate 골든셋 재현이라 STmate 쪽으로 맞춤. 고정값 벌에 갈림을 적어 둠. ⑤ SA(실적수공) 안전관리비 「확인 대기」 → 별도내역. TA 와 같은 자리가 됨. PENDING_SAFETY 상수를 걷고 파일 머리 문구도 고침. 금액엔 안 닿음. ⑥ 고시 대조를 상시 벌로 세움 — test_b09_safety_notice.py 여덟 자리. 별표1 표를 원문 md 에서 읽어 요율 데이터 16칸 전수 대조(값을 시험에 안 박음) · 제4조①1·2호 구간 경계 넷 · 단서 A·B·1.2배 · 제2조2호 대상액 구성 · 1.2배 차례 회귀. 잴 시험 먼저 빨강 확인한 뒤 고침. 전체 시험 1911 통과 · 28 건너뜀 · 1 xfail. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA3. 제3조(적용범위) 「총공사금액 2천만 원 이상」 — 요율 데이터의 minimum_total_construction_amount_krw 를 규모 기준액과 견주고 미달이면 줄 자체를 안 만듦 (A·B 곁줄도 안 섬 · 0 원으로 안 채움). 잴 시험 먼저 빨강 확인한 뒤 고침. ⚠ 견주는 값은 규모 기준액(추정가격 · 없으면 수렴한 총원가) — 고시의 「총공사금액」과 딱 같은 말은 아니나 계산 차례상 안전관리비 앞에 설 수 있는 값이 그것뿐. 보건관리자 문턱과 같은 축. 1. 1.2배 차례 = STmate 쪽 확정(브레인 판정) — 안 고른 갈래의 사유를 코드에 남김. 거창 2025 원본은 버림(밑수 × 율 × 1.2) 로 1원 위지만 STmate 출력이 아니라 채택하지 않음. 4. 관급 ÷1.1 = 실무 따름 — 근거를 정확히 적음. 고시 제4조① 단서는 「해당 재료비를 대상액에 포함」까지만이고 부가세를 말하지 않음 · ÷1.1 은 부가세 제외 환산으로 실무 6건 공통. 전체 시험 1952 통과 · 28 건너뜀 · 1 xfail. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegAView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.