Commit Graph
74 Commits
Author SHA1 Message Date
eomsangdonandClaude Sonnet 5 83752f8698 feat(M01): 옛 일위대가 로직 컨테이너는 호표 표 그대로 · 아래에 「로직 쉽게 보기·만들기」 컨테이너를 더해 방식 C + 새로 만들기 모달을 담음
- 일위대가 로직 컨테이너 = 로직을 누르면 옛 호표 표 + 시험 계산 칸이 바로 열림 · 보기 전환 단추와 보기 캐시 값 없앰 · 「새로 만들기」 는 옛 초안 방식
- 새 컨테이너 = 같은 목록·API 를 쓰되 거름 기억과 저장 안 한 것 캐시를 따로 둠 · 로직을 고르면 흐름 그림 · 새로 만들기 모달 · 본떠 만들기 · 상자 고치기

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-21 12:12:16 +09:00
eomsangdonandClaude Sonnet 5 5bef49df88 fix(M01): 일위대가 로직 컨테이너를 열 때 목록이 오기 전 「0 줄」 빈 표가 보이던 것을 「불러오는 중」 으로
- 첫 목록이 오기 전에는 표를 숨기고 「불러오는 중」 만 보임 · 목록이 오면 전체가 바로 뜸
- 새 탭에서 로그인 → 마스터 데이터 → 일위대가 로직 → 로직 열기 → 방식 C 기본 보기 · 새로 만들기 · 본떠 만들기 · 고급 단추가 보이는지 확인

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-21 11:28:24 +09:00
eomsangdonandClaude Sonnet 5 f458da7f20 feat(M01): 로직 화면에 「새로 만들기」 단추 · 저장 뒤 방식 C 로 열기 · 테스트 컨테이너와 방식 A·B 화면 걷음
- 로직 화면 바의 새로 만들기 단추가 모달을 엶 · 저장·본떠 저장 뒤 새 자체 로직을 흐름 그림으로 바로 엶
- UI_Test* 다섯 파일 삭제 · 왼쪽 「테스트」 줄 제거 · 모달의 까닭 글은 UI_Logic_Text 것을 씀
- 견본 10개 키 목록은 시험(test_m01_test_container)으로 옮김 · 흐름 그림 시험의 옛 파일 이름을 바로잡음

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-21 09:57:17 +09:00
eomsangdon e2d3eb5737 Merge remote-tracking branch 'origin/sub_laptop_4' into sub_laptop_3 2026-09-21 09:46:54 +09:00
eomsangdonandClaude Sonnet 5 beea3fac46 feat(M01): 새로 만들기 모달에 새 길 잇기 — 절 목록으로 원문 절 고르기 · 절로 표 거르기 · 표 조건 값 목록 · 초안 시험 계산 · 자체 로직 저장(GX) · 본떠 만들기
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-21 09:43:19 +09:00
eomsangdonandClaude Opus 5 f2052b12d3 feat(M01): 흐름 그림에서 「본떠 만들기」 로 자체 로직 만들어 고치기
정본 로직 상자 위 [본떠 만들기] 가 `POST /logic/copy`(계약 5장)를 불러
자체 로직(`GX…`)을 만들고 그 줄을 바로 엶 — 거기서 [고치기] 가 열림.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PAdA5ThqmtVSsbzjusk1cJ
2026-09-21 09:40:33 +09:00
eomsangdon 63832239d4 Merge remote-tracking branch 'origin/dev' into sub_laptop_3
# Conflicts:
#	resources/master_data/_화면_계약.md
2026-09-21 09:36:36 +09:00
eomsangdon 2e178c4044 Merge remote-tracking branch 'origin/sub_laptop_1' into sub_laptop_4 2026-09-21 09:35:49 +09:00
eomsangdonandClaude Opus 5 98e40f4496 feat(M01): 일위대가 로직 기본 보기를 흐름 그림으로 · 상자에서 보고 고치기
방식 C 를 테스트 컨테이너에서 꺼내 로직 화면 기본 보기로 올림(옛 호표 표는 「고급」).
상자를 누르면 값·출처에 더해 쉬운 말 풀이와 원문 표 미리보기(걸린 줄 강조)가 펼쳐짐.
자체 로직은 [고치기] 로 상자 안에서 고치고 줄을 더하거나 지움 — 정본은 「본떠 만들기」 뒤.

- UI_Test_C·_Model·_Style → UI_Logic_Flow·_Model·_Style
- UI_Test_Pick 의 재료·기계 바꿔 고르기를 UI_Logic_Pick 에 합침
- 방식 B 의 설명 카드 로직을 UI_Logic_Note 로 옮겨 흐름 그림과 같이 씀

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PAdA5ThqmtVSsbzjusk1cJ
2026-09-21 09:35:33 +09:00
eomsangdonandClaude Opus 5 aa86e02b8f feat(M01): 끝수 계산 붙임 · 절 목록·절 거르기·표 조건 값·소유 거름·자체 로직 API
- 엔진 — 로직 줄의 묶음 `끝수`{대상, 자리, 방법}를 계산 끝에 붙임(비목 합마다 끊고 계 = 그 합 · 돈 아닌 로직은 결과) · 글자 끝수는 설명 그대로 · 검사가 묶음 모양을 봄
- 서버 — `GET /sections`(원문 본문 절 목록 + 그 절의 표·로직 수) · `/tables` 의 `section`(13-4 가 13-40 에 안 걸림) · `GET /table/options`(조건 값만) · `/logics` 의 `owner`
- 자체 로직 — `POST /logic/new|copy|edit|delete` · 파일 `로직_자체.json` · 키 GX 서버 발급(원문번호 같아도 줄마다 다른 키) · 정본은 403 · 저장 안 한 초안은 `/calc` 에 `key` "" 로
- 저장소가 700줄을 넘어 쓰기 모양(`keep_shape`·`dump`)을 `M01_MasterData_Store_Shape.py` 로 가름
- 시험 `resources/tester/test_m01_make.py` 8건 통과 · 기존 M01 시험 25건 통과 · 일괄 시험 계산 1,291 그대로

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-21 09:31:45 +09:00
eomsangdonandClaude Sonnet 5 71fe9996de fix(M01): 새로 만들기 모달 — 표 조건 고르기 목록의 빈 값 거름 · 계약에 모달이 쓰는 길 적음 · 메쌓기 새로 만들기가 GF000219 와 같은 금액 확인
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-21 09:29:24 +09:00
eomsangdonandClaude Sonnet 5 946425af13 feat(M01): 새로 만들기 모달 — 걸음 틀 · 원문 절 · 호표 줄 고르기 · 중간 값 · 설계 입력 · 시험 계산 · 저장 자리
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-21 09:24:50 +09:00
eomsangdon 527e2bbfd2 Merge remote-tracking branches 'origin/sub_laptop_2' and 'origin/sub_laptop_3' into main_laptop_1 2026-09-21 06:01:23 +09:00
eomsangdonandClaude Sonnet 5 e356f77186 feat(M01): 테스트 컨테이너 10개 로직 × 세 방식 검증 기록 · 옛 재료 줄 후보 찾기 보강 · 입력 이름 설명 대기 목록
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-20 23:37:27 +09:00
eomsangdon 5cdfbefa54 fix(M01): 자재품목 구분→상세구분 거름 살림 · 로직 키 열기 코드 재확인
머리에 구분 묶음이 등록 안 된 파일(재료_자재품목)은 subs() 가 줄에서 바로
구분·상세구분을 모으게 고침 · 화면은 자재품목도 인력·기계와 같은 2단
거름을 씀. 로직 키 직접 열기(openKeyOn)는 이미 전체 로직 목록에서 찾아
여는 구조라 쪽 나눔의 영향을 안 받음 — 0331bb4d 코드 재확인.
2026-09-20 23:29:21 +09:00
eomsangdon 709ccbd73d Merge remote-tracking branch 'origin/sub_laptop_3' into sub_desktop_1 2026-09-20 23:22:13 +09:00
eomsangdonandClaude Sonnet 5 1cdc584315 feat(M01): 테스트 컨테이너 세 방식 첫 화면 안내 · B 하위 로직 줄·합계 표시 · 규격·단가 멈춤 글 쉬운 말
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-20 23:21:23 +09:00
eomsangdon 0331bb4db2 feat(M01): 소요량/계수 「쓰는 로직」 키를 누르면 로직 탭에서 그 로직 바로 엶
Logic_Page 에 openKey 초기 인자 + LogicHandle.openKey 추가(이미 연 뒤에도 재호출 가능)
Page.ts 는 복사 안내 대신 로직 탭 전환과 동시에 그 로직을 엶
2026-09-20 23:14:02 +09:00
eomsangdon 20bd74306a Merge remote-tracking branch 'origin/sub_laptop_1' into sub_desktop_1 2026-09-20 23:09:58 +09:00
eomsangdonandClaude Opus 5 e2ea63e844 feat(master_data): 재료 고르기 후보를 줄 단위와 같은 자재품목으로만 거름
- 엔진 — candidates·pick·element 에 unit · 호표 줄 단위를 그대로 넘김(우드칩 ㎥ 에 원목후로링 ㎡ 가 섞이던 자리)
- 후보 API — /materials 에 unit · 단가 미리보기도 줄 단위로 거름
- check_master 「단위」 검사 새로 — 조건 안 줄이 모두 다른 단위거나 대표 줄 단위가 다른 자리 37건(로직 검사와 따로 — 조건을 좁히라는 알림)
- 품셈재료 고르기 칸이 채워진 호표 줄 24개를 고르기 조건 묶음으로 바꿈
- 일괄 시험 계산 통과 1,270 → 1,272 · 시험 둘 더함

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 23:08:00 +09:00
eomsangdon 26ceeaf9b0 feat(M01): 요소 찾기에 기계 구분·상세구분 싣기 · 소요량/계수 로직키 눌러 로직 탭 연결
_brief 응답에 구분·상세구분 추가(테스트 컨테이너 기계 후보 거름용)
표 상세화면 용도의 로직키를 누르면 로직 탭으로 전환 + 키 클립보드 복사(찾기용)
로직 목록을 직접 열지는 못함(로직 부분은 sub1 담당) — _화면_계약.md 한 줄 추가
2026-09-20 23:07:45 +09:00
eomsangdon 74a9af44d1 Merge remote-tracking branch 'origin/dev' into sub_desktop_1
# Conflicts:
#	M01_MasterData/M01_MasterData_Store.py
#	resources/tester/test_m01_api.py
2026-09-20 22:47:35 +09:00
eomsangdon 46bcc866c0 Merge remote-tracking branch 'origin/sub_laptop_3' into main_laptop_1 2026-09-20 22:42:20 +09:00
eomsangdon 4ca903ea05 wip feat(M01): 기계 구분·상세구분 2단 거름 · 소요량/계수 용도 표시·대상 거름
기계.json 머리 구분 딕셔너리 추가(세부분류 유지) · UI_Side 기계 2단 필터
Store/Router/Api_Fetch usage 쿼리 추가 · UI_Tables 용도 표시 + 대상 드롭다운
locale 문구 추가 · 관련 시험 수정·추가
2026-09-20 22:41:35 +09:00
eomsangdonandClaude Sonnet 5 dfad8bffeb wip(M01): 테스트 컨테이너 후보 값 다섯 표시 · 옛 줄 검색을 품셈재료 이름으로 · 멈춤 사유 쉬운 말 · 빈 입력 안내
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-20 22:39:17 +09:00
eomsangdon 6420dacb1b Merge remote-tracking branch 'origin/sub_laptop_1' into sub_laptop_4 2026-09-20 22:31:49 +09:00
eomsangdonandClaude Opus 5 a6f12fb07f feat(master_data): 기계 갈래 칸 이름 원문으로 · 틀 문서를 지금 데이터 모양에 맞춤
- `기계.json` — 갈래 칸 「세부분류」 → 「원문」(머리 묶음·줄 654) · 줄의 원문 글 칸은 「값원문」 으로(34 줄) · 줄의 `구분`·`상세구분` 과 이름이 겹치지 않게 함
- `check_master` MERGED 는 `master_keys.MERGED` 에서 받음 — 칸 이름을 한 곳에서만 적음 · 머리 「원문」 이 묶음인 파일도 틀 검사가 돎
- `master_keys.MERGED` · `build_기계_건설품셈.py` · `compare_estx.py` — 새 칸 이름
- `M01 서버` — 갈래 칸을 MERGED 에서 찾음(박은 이름 없앰) · 머리 원문이 묶음이면 `book` 은 빈 값
- `_틀.md` — 기계 원문·구분·값원문 · 자재품목 구분 채움과 묶음 문서 · 소요량·계수 「용도」 칸 · 인력 줄 갈래 칸 바로잡음
- `ref/_묶음_기계.md` 새로 — 구분 11 · 상세구분 174 (654 줄)
- `_갱신절차.md` 기계 절 칸 이름
- 검사 — `check_master` 틀 0 · 로직 0 · 시험 83 통과(test_m01_api 25 · test_masterdata_check 58)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 22:24:13 +09:00
eomsangdon 31654138da Merge remote-tracking branches 'origin/main_desktop_1', 'origin/sub_laptop_2' and 'origin/sub_laptop_3' into CODEX 2026-09-20 22:17:43 +09:00
eomsangdonandClaude Sonnet 5 03e6b6511e feat(M01): 테스트 컨테이너 고르기 부품 공용화 — 구분 → 상세구분 → 후보 거름 · B·C 에도 재료 바꿔 보기
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-20 22:14:22 +09:00
eomsangdon de6a46ee7d Merge remote-tracking branches 'origin/sub_desktop_1', 'origin/sub_laptop_1' and 'origin/sub_laptop_2' into CODEX 2026-09-20 22:10:14 +09:00
eomsangdonandClaude Opus 5 1bcc957e9a feat(master_data): 품셈재료 고르기 칸 · 로직 재료 줄 일괄 변환 · 후보 값 열 다섯
- `재료_품셈재료.json` 363 줄에 「고르기」 칸 — 자재품목 구분·상세구분[·규격] · 212 줄 채움(규격 조건 19) · 짝 없는 줄은 null + 비고에 까닭
- `scripts/build_품셈재료_고르기.py` — 자재품목을 가른 바로 그 품명 글자 규칙 재사용 · 손으로 바로잡은 25 줄은 OVERRIDE · 연결이 이미 있는 줄은 옛 방식 그대로
- `scripts/build_로직_재료_고르기.py` — 호표 요소 `MP…` 를 고르기 조건으로 바꿈(로직 32 파일 287 줄) · 고르기 빈 줄과 `{이름}` 낀 원문번호 줄은 그대로
- 일괄 시험 계산 전후 — 통과 1119 → 1203 · 새로 멈춤 0 · 앞뒤 다 통과한 1119 줄 금액 변동 0
- `check_master` — 품셈재료 「고르기」 칸 검사(조건 모양 · 없는 구분·상세구분 · 조건 밖 대표 · 후보 0)
- `GET /api/m01/materials` — 후보마다 값 열 다섯(`값들`) · `값` 은 시험 계산이 쓸 낮은 값 · 값 있는 줄을 맨 앞에
- `GET /api/m01/logic` 의 `prices` — 고르기 조건 줄도 실음 · 열쇠는 조건 글 `mf.cond_text` · 후보 수 포함
- `_틀.md` 5장에 고르기 칸 · 일괄 변환 스크립트

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 22:02:28 +09:00
eomsangdonandClaude Sonnet 5 be4bed801c feat(M01): 테스트 컨테이너에 방식 B·C 잇기 + 재료 고르기 후보 API 연결
- 탭 A·B·C 모두 연결
- 방식 A 재료 고르기 단계 = GET /materials 조건 후보(조건형 요소일 때)
- 화면 계약에 /materials 한 줄

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-20 21:54:12 +09:00
eomsangdon 826495f199 Merge remote-tracking branches 'origin/main_desktop_1', 'origin/sub_desktop_1', 'origin/sub_laptop_1', 'origin/sub_laptop_2', 'origin/sub_laptop_3' and 'origin/sub_laptop_4' into main_laptop_1 2026-09-20 21:44:59 +09:00
eomsangdonandClaude Sonnet 5 2436899cd1 feat(M01테스트B): 로직 사용성 테스트 방식 B(호표+옆 카드) 새로 만듦
M01_MasterData_UI_Test_B.ts 새 파일 — export function render(host, logicKey)
하나로 접속. fetchLogic·runCalc·elements·table 기존 Store·API 그대로 재사용
(새 엔진·새 계산 없음).

호표 줄을 누르면 옆 카드에 이 수량이 어디서 왔나 표시: 식 속 찾기(표,조건).칸
호출을 뽑아 그 소요량·계수 표를 /elements+/table 로 다시 읽어 걸린 줄 강조 ·
중간 식 이름에 「할증」 들어간 것은 적용된 할증으로 따로 보임 · 쉬운 말
풀이(찾기·만약 호출을 문장으로, 나머지는 원문 식) · 계산 답의 middle 값으로
할증률 등 중간 계산값 표시. 입력 바꾸면 자동 재계산(디바운스 300ms)해 호표·
카드 같이 갱신.

검증: npm run typecheck 통과(0). ORCA 로 임시 붙여 확인하려 했으나 로그인
화면에 막혀(시험 계정 없음) 실제 화면 확인은 못 함 — 임의 판정: typecheck만으로
마감(임시 연결은 확인 뒤 되돌려 커밋 안 함).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WaS48Nvs26o3aFUpcfJxVv
2026-09-20 21:39:58 +09:00
eomsangdonandClaude Opus 5 17838d0098 feat(m01): 로직 테스트 방식 C — 흐름 그림
설계 값 → 표 찾기 → 수량 → × 단가 → 할증·덧줄 → 비목 합계 → 계 일곱 칸.
상자를 누르면 값·출처 · 로직이 부르는 로직은 상자 안에서 펼침 · 설계 값을 바꾸면
바로 다시 셈(로직 화면과 같은 `fetchLogic`·`runCalc` — 읽기·시험 계산만).
뼈대는 순수 모듈로 떼어 Node 헬퍼 + pytest 로 검증.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PAdA5ThqmtVSsbzjusk1cJ
2026-09-20 21:38:50 +09:00
eomsangdonandClaude Sonnet 5 292568e688 feat(M01): 일위대가 로직 테스트 컨테이너 틀 + 방식 A 질문·답 마법사
- 왼쪽 패널에 「일위대가 로직 테스트」 컨테이너 추가 — 공종 10 개 고르기 + 방식 탭 A·B·C (B·C 는 준비 중)
- 방식 A: 공종 → 조건 질문(한 번에 하나) → 재료·기계 고르기 → 결과 호표 · 식 안 보임 · 저장 없음
- 대상 10 개는 복잡도로 재어 고름(scripts/로직_복잡도_재기.py) · 시험 test_m01_test_container.py

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-20 21:34:39 +09:00
eomsangdonandClaude Opus 5 999f3363db feat(master_data): 로직 재료 줄 고르기 조건 — 구분·상세구분·규격 후보 · 대표 줄 · 후보 목록 API
- `_틀.md` 7장에 재료 고르기 문법 — 호표 `요소` 를 조건 묶음으로 · 규격 낱말 조건 · 대표 줄 지정
- 엔진 `candidates`·`pick`·`check_pick` — 조건 안 후보 목록(화면·테스트 컨테이너 공용) · 시험 계산은 대표 줄, 없으면 값 있는 첫 줄(자재지역 우선)
- 로직 검사에 고르기 조건 검사 — 칸 이름 · 자재품목에 없는 구분·상세구분 · 조건 밖 대표 · 후보 0
- M01 서버 `GET /api/m01/materials` — 구분·상세구분·규격·자재지역으로 좁힌 후보와 기본 줄
- 옛 방식 재료 줄(`MP…`·`MT…` 키)은 그대로 돎

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 21:33:34 +09:00
eomsangdonandClaude Sonnet 5 1b7e6a322b feat(M01): 거름 컨테이너 펼치면 전체 · 닫아도 거름·찾기·쪽 유지
- 인력·기계·소요량·계수·로직 펼치면 전체(또는 닫기 전 거름)가 바로 열림
- 닫을 때는 화면 그대로 · 컨테이너마다 찾기 글·쪽을 sessionStorage 에 따로 기억

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-20 20:12:34 +09:00
eomsangdonandClaude Sonnet 5 4b1eeec524 feat(M01): 준용 고르면 값 따라옴 · 인력 상태 거름 · 유가전력 구분·상세구분 거름
- 인력 준용 고르기 — 값 칸이 고른 직종 값으로 바뀌어 노랑 · 비우면 원래 값
- 저장 때 서버가 준용 직종 값을 다시 읽어 값 칸에 채움(화면 값 불신)
- 인력 왼쪽 패널 「상태」 드롭다운(목록은 서버) · 재료 유가전력 2단 거름
- 시험 2개 더함

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-20 20:03:59 +09:00
eomsangdonandClaude Opus 5 a367f2afe1 knowledge(마스터): 엔산법 등급 적용 · 상태 「추정」 들임 — 미확보 28 → 9
- 기술사·특급~초급기술자·고급~초급숙련기술자·기계기사·기계산업기사 열 줄을 엔지니어링 현행 줄 옛이름으로 옮김(부문은 일반값 · 기계기사류는 기계·설비) · 로직 참조 326 곳 갈아 끼우고 호표에 「옛이름: ○○」
- 상태 「추정」 신설 — 구분은 대응 직종 것 · 값은 비움 · 준용에 대응 직종 키 · 호표 출처 「준용: ○○(추정)」 · M01 고르기에서 거름
- 추정 아홉 — 제관공·마킹공·현도공·산소절단공 → 플랜트제관공 · 제도공 → CAD설계사(기계) · 공작기계공 → 선반기조작원 · 옵셋인쇄공 → 종이및합성수지인쇄기계조작원 · 정보처리기사 → 초급기술자(정보통신) · 시험사1급 → 비파괴시험공
- 원문이 대응을 정하지 않은 아홉(절단공 · 사진제판공 · 사진식자공 · 측량조수 · 시공측량조수 · 시공측량기사 · 측량기사 · 측량사 · 특수운전공)은 미확보 그대로

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 19:29:47 +09:00
eomsangdonandClaude Opus 5 4db7236f55 merge(마스터): main_desktop_1 재료_유가전력 합침 — 키 대장 「다음」·「폐기」 합치기
- 「다음」 MO 73 채택(저쪽 새 키) · 나머지는 같음
- 「폐기」 는 양쪽 합집합 — 유류 5줄·되풀이 기호·MN 유지

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 18:53:40 +09:00
eomsangdonandClaude Sonnet 5 cabc7e68d2 knowledge(유가전력): 실내등유 오피넷 수집 + 한전 전기요금표 별표1 확보 · 재료_유가전력.json 신설
전력: 한전 사이버지점 전기공급약관 별표1(월간 전기요금표, 2025-01-01 시행 (C)판)을
resources/knowledge/original/원가계산/전기요금_한국전력/20250101/ 에 원문·완전 md화로
보관. 건설품셈 1-5-2호·산림품셈 1-7-2호·계약예규 예정가격작성기준 §19·§34를 대조 —
전력비를 어느 계약종별로 계상하라는 조문은 없음(전부 「실비 계상」만 규정) — 지어내지
않고 마스터 비고에 그대로 기록.

실내등유: 오피넷 OpenAPI 제품코드 C004를 collect_cost_sources.py 시도별 수집 루프에
추가(전국평균은 avgAllPrice 응답에 이미 포함되어 있어 코드 변경 불요). 오늘 자로 실제
수집해 유가_전국평균_2026-09-20.json · 유가_시도별_2026-09-20.json 저장.

마스터: 재료_오피넷유가.json → 재료_유가전력.json(테이블ID MO 그대로, 키 이어받기·
_키대장 다음 번호 37부터 신규 36줄). 기존 휘발유·경유 36줄은 로직 계산 결과가 갈리지
않도록 옛 판(2026-08-14/09-09) 값을 그대로 지니고, 구분 칸만 전국평균/시도별→유류로
바꿈. 실내등유 18줄(전국평균+17개 시도)과 전력 18줄(주택용·일반용(갑)Ⅰ·산업용(갑)Ⅰ
저압·임시전력(갑) 저압 위주 주요 계약종별)을 새로 추가. 파일 머리에 「구분」 등록부
(유류/전력 각각 원문·기관·판·지식DB 경로)를 둬 M01 /subs 가 두 갈래를 갈래대로 보게 함.
재료_유가전력.json을 만드는 build_재료_유가전력.py 신설(다음부터 이 스크립트로 갱신).

파일 이름·원문 규칙에 맞춰 master_keys.py·check_master.py의 "오피넷유가" 키를
"유가전력"으로, M01_MasterData_UI_Side.ts의 재료 탭 이름도 같이 고침 — 로직의
MO:{연료}:{지역} 참조는 원문번호로만 찾아 영향 없음(로직 파일은 손대지 않음).

검증: check_master 틀 0건(전체) · 로직 0건(전체) · test_masterdata_check·test_m01_api·
test_b09_fuel_region 73건 전부 통과(계산 결과 전후 동일 확인).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WaS48Nvs26o3aFUpcfJxVv
2026-09-20 18:44:21 +09:00
eomsangdonandClaude Opus 5 991b671c32 knowledge(마스터): 되풀이 기호 바로잡기 · 미공표 산정 버림 · 자재품목 유류·원문번호 정리
되풀이 기호(〃 · ″ · " · 上同)
- 값·칸이름이 통째로 되풀이 기호인 자리 167 곳을 윗줄 값으로 — 단위 · 장비구분 · 장비명 · 항목 · 비고 · 재질
- 소요량 13-6-3 · 13-6-5 · 13-6-9 의 직종 칸 「〃」·「"」 는 윗줄 직종(플랜트제관공)으로 합치고 로직 식 8 곳도 함께
- 인력 LB000399(이름 「〃」)는 직종이 아니라 되풀이 기호 — 줄을 떼고 대장에 폐기
- 인치 기호(1/2〃 · ø12〃)와 설명 글 속 기호는 그대로

건설노임 미공표 산정
- 회차마다 증가율을 곱할 때 원 미만 버림 — 다산소프트와 같은 방식 · 값은 원 단위 정수
- 비고 「4-라 산정: 2025.9 210,772원 × 증가율(원 미만 버림)」
- 미공표직종_추적.md 5절 「단계마다 버림(채택)」 열을 채택으로 바꾸고 산정값(처리 없음)은 견주기용으로 남김

자재품목
- 유류 5줄(휘발유 · 경유 · 선박용경유 · 중유 · 등유) 뗌 — 값이 비고 글뿐 · 대장에 폐기 · 빌더도 뺌
- 품셈재료 중유(MP000359)는 미연결 — 중유는 받지 않기로 함 · 전력 2줄은 그대로 둠
- 원문번호(다산소프트 품번 M000…) 열 삭제 — 대조는 _키대장.json 에만
- 로직·품셈재료의 품번 참조 330 곳을 키로 · master_formula 는 「ID:키」 도 받음
- check_master · master_keys.stamp · M01 저장은 NO_NUMBER 테이블을 알아봄 · _틀.md · _화면_계약.md 도 맞춤

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 18:36:08 +09:00
eomsangdonandClaude Opus 5 4ab369c841 knowledge(마스터): 원문번호에서 번호 뒤 제목 뺌 — 절 번호만
- 소요량 · 계수 · 로직 · 기계 4,418 줄의 원문번호를 절 번호만으로(부문·제목 뗌) — 건설품셈 부문은 구분 칸에 있음
- 한 절에 표가 여럿이어도 번호는 같게 둠 — 식별은 키
- 대장 _키대장.json 의 원문번호는 옛 열쇠 그대로(빌더가 키를 다시 찾는 열쇠) · master_keys.stamp 가 줄에만 절 번호를 씀
- check_master — 부문 앞붙임 검사를 「절 번호만」 검사로 · 원문번호 겹침은 인력·재료만 · 대장 대조는 옛 열쇠·절 번호 둘 다 받음
- master_formula — 겹친 원문번호를 「ID:원문번호」 로 부르면 멈춤
- compare_estx · 시험의 「ID:원문번호」 참조를 키로 갈아 끼움 · M01 새 로직 초안 번호에서 부문 뺌
- test_자재품목_열_한_벌 의 낡은 기대값을 지금 데이터에 맞춤(관급 열이 조달청 값으로 바뀜)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 18:03:54 +09:00
eomsangdonandClaude Sonnet 5 e41855d76a feat(M01): 소요량·계수·로직·기계 컨테이너를 인력과 같은 모양으로 — 전체 + 드롭다운 거름 · 가운데 표 목록 · 트리 걷음
- 왼쪽: 「전체」 한 줄 + 구분 → 상세구분 공용 드롭다운(기계는 세부분류 한 단) · 목록은 서버 /subs
- 가운데: 표 목록(키·원문번호·구분·상세구분·이름·기준·출처·비고) · 로직은 파일을 가로질러 한 목록 · 쪽 나눔 · 누르면 상세
- 표 목록 응답에 비고 칸 추가 · 관급 시험을 조달청 값 이은 줄 기준으로

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-20 17:00:56 +09:00
eomsangdonandClaude Opus 5 b2a762d8e1 knowledge(마스터): 나라장터 빼기 — 로직 호표를 자재품목으로 갈아 끼우고 MN 폐기
- 로직이 가리키던 나라장터 자리 121(정적 키 18 · 고르기 13벌)을 자재품목(MT) 줄로 갈아 끼움 — 이름·규격·단위가 맞는 줄 · 지역이 갈리는 품목은 서울 줄.
- 자재품목에 맞는 줄이 없는 넷은 품셈재료 미연결로 돌림 — 시너(MP000266) · 동 및 동합금용 용접봉 BCUP3 · 폴리에틸렌필름 0.04㎜ · 아스팔트싱글(새 줄 셋).
- 엔진이 자재품목 키를 바로 받으면 값 열 다섯 가운데 낮은 값(시험 계산용) · 출처는 「키.열」.
- 재료_나라장터자재.json 과 그 빌더를 old 로 옮기고 키 대장에 MN 폐기 · check_master · 키 대장 · M01 서버·화면 · _틀.md · compare_estx 의 나라장터 자리 정리.
- 끝 검사: check_master 틀 0 · 로직 0 · 일괄 시험 계산 통과 988 · 멈춤 363(앞 989 · 362 — 아스팔트싱글 한 줄) · pytest 67 통과 · typecheck 깨끗.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 16:49:47 +09:00
eomsangdon 9fe36b871d Merge remote-tracking branches 'origin/sub_desktop_1', 'origin/sub_laptop_1' and 'origin/sub_laptop_3' into sub_laptop_4 2026-09-20 16:33:11 +09:00
eomsangdonandClaude Opus 5 10418ccbd4 knowledge(마스터): 소요량·계수·로직에 구분·상세구분 — 표·줄마다 칸 · 갈래 목록은 서버가 줌
- 장 파일 137 개의 표 3,028 · 로직 1,351 줄에 구분(원문 + 부문 · 「건설품셈 공통」) · 상세구분(「03장 토공사」) 칸을 직접 둠 · 파일 머리의 부문·차례는 목록 차례로 남김
- 열 차례 — 표는 키 · 원문번호 · 구분 · 상세구분 · 이름 · 기준 · 출처 · 비고 · 조건 · 범위규칙 · 값칸 · 줄 · 주 · 그룹(맨 뒤) · 로직은 소유 다음에 비고
- 서버 — GET /subs?group= 이 구분·상세구분 목록(장 차례대로) · GET /tables 가 파일을 가로질러 구분·상세구분·찾기로 거르고 쪽 나눔 · GET /logics 도 구분·상세구분으로 거름 · 새 줄은 서버가 갈래를 채움 · 죽은 book 칸 걷어냄
- check_master 가 구분·상세구분이 파일 머리·이름과 맞는지 봄 · adopt 가 빌더 줄에 갈래를 찍어 되돌리기 시험 글자까지 같음 · _틀.md · 화면 계약 · 화면 트리 · 시험 같이 고침

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 16:30:48 +09:00
eomsangdonandClaude Sonnet 5 21f04c64bb feat(M01): 화면 부품 공용화 — 드롭다운·찾기 칸·단추·확인창을 공용 템플릿으로 · 재료 컨테이너 차례
- createSelectField 에 선택 인자 더함(compact · ariaLabel · setOptions) — 기본 동작 그대로
- 인력 2단 거름 · 로직 편집 고르기 · 계산 입력 · 요소 찾기 창 그룹 select 를 공용으로 · m01-side__select 걷음
- 찾기 칸은 createInputField · 표 칸·모달 단추는 createButton · 버리기 확인은 showConfirmDialog
- 재료 컨테이너 = 자재품목 · 유가 · 품셈재료 차례 · 안 쓰는 조달 문구 걷음

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
2026-09-20 16:27:06 +09:00
eomsangdonandClaude Opus 5 9de61eb251 knowledge(마스터): 재료 열 한 벌 정리 — 시중물가 → 자재품목 · 값 다섯 열 · 유가·환율도 같은 열
- 재료_시중물가.json → 재료_자재품목.json(테이블ID MT · 키 그대로) · 모든 줄이 같은 열 한 벌(키 · 원문번호 · 구분 · 상세구분 · 이름 · 규격 · 단위 · 물가자료 · 유통물가 · 물가정보 · 거래가격 · 관급 · 출처 · 비고 · 면수)
- 값 묶음(시중·조달)을 풀어 다섯 값을 열로 · 관급 = 조달 값(4,552 줄 · 기간은 비고 「조달 26.7」) · 원문 가격정보만 남은 72 줄은 값 열에 안 넣고 비고 「가격정보 ○○」 · 구분·상세구분은 원문에 분류가 없어 비움
- 재료_오피넷유가 · 환율_한국은행환율도 열 한 벌(기준일 → 규격 · 유가 구분 = 전국평균/시도별 · 상세구분 = 지역) · 상품코드·지역코드 삭제
- 엔진 단가(연결된 줄의 낮은 값 · 출처 = 「<키>.<열>」) · check_master 열 검사 · M01 고르기(procure 걷어냄) · 빌더 · _틀.md · 화면 계약 · 시험 같이 고침

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
2026-09-20 15:55:40 +09:00