# STMATE w 8.0 재현 웹앱 계획서 · 진행률 장부 (`tools/stmate-test/`) - 목표 — 경쟁사 STMATE w 8.0 을 기능 그대로 재현한 독립 웹앱 · 인증·동글·라이선스·업데이트는 범위 밖 - 구동 — `./venv/Scripts/python.exe -m uvicorn server:app --host 127.0.0.1 --port 8003 --app-dir tools/stmate-test` (안티그래비티 칸 8003) - 원본 근거 — `resources/knowledge/original/경쟁사 프로그램/STmate/`(old/20_분석 번호 문서 · old/30_원자료 · REA 분석) - 판정 — 구현 = 불러온 실제 프로젝트에서 원본 규칙대로 동작 · 부분 = 일부 갈래만·저장값 의존·고정값 · 없음 = 코드 없음 또는 껍데기 - 박힌 정답값·자기 대조·저장값 복사는 구현으로 치지 않음 - 이전 기록의 「95% 이상 · 100% 일치」는 봉화 한 건에 맞춘 값 · 저장소에 없는 검증 스크립트 기준 — 폐기 ## 진행 방식 1. 기능 하나 = 장부 한 줄 · 고칠 때 원본 근거 문서부터 2. 정답은 원본 저장값(STC · 원본 출력 엑셀)에서 읽음 · 코드에 박지 않음 3. 구현 → 지킴 시험(`resources/tester/test_stmate_*.py`) → ORCA 내장 브라우저 확인 → 커밋·push(안티그래비티) ## 지킴 시험 - `test_stmate_report_*.py` — 보고서 시트 원본 STMATE 엑셀 셀 대조 · 조달청 XML 공식 XSD 검증 - `test_stmate_kanjub_opts.py` · `test_stmate_kanjub_rate.py` — 제잡비 선택지 손셈 대조 · 요율표 조회로 저장 요율 재현 - `test_stmate_smt_lang.py` · `test_stmate_qty_sheet.py` — 식 함수·변수·문법 검사 · 수량산출서·QCODE - `test_stmate_ui.py` — 메뉴·내역서 편집·도구 창 순수 계산 - `test_stmate_conv_*.py` · `test_stmate_file_pct.py` · `test_stmate_ui_code.py` — 엑셀·XML 가져오기 왕복 · 분리형 변경 STC · % 줄 저장 재계산 · 코드 관리 왕복 - `test_stmate_ui_protect.py` · `test_stmate_ui_round3.py` · `test_stmate_stage_slots.py` · `test_stmate_stage_register.py` · `test_stmate_report_link.py` — 보호표시 · 공종번호·직종·제비율표 · 차수 칸 저장 · 계약 변환등록 = 실제 울진 계약 STC · 목차·인쇄 옵션 - `test_stmate_file_*.py` — 실무 STC 7건 무손실 왕복(손대지 않은 저장 = 원본 바이트) · 고친 칸만 바뀜 · 새 공사·복사등록·해당분 압축 - `test_stmate_stage_*.py` — 설계변경(영덕·소광 변경 BOQ·엑셀 대조) · 계약 변환(울진 BOQ12 계약내역·총공사비 1원) · 기성·실행(앞뒤 맞춤만) - `test_stmate_ilwi_eval.py` — 일위대가·중기 구성 재계산(원설계 5건 + 영덕 변경) 1원 · 연쇄 재계산(기초단가 → 원가계산서) 원설계 5건 전 단가·총공사비 그대로 - `test_stmate_smt_eval.py` — 단가산출근거(D코드) 재계산: 원설계 5건(위 4건 + 소광 원설계) 282개 1원 · 낙찰률 단가 7건 127개 - `test_stmate_kanjub_stc.py` — 실무 STC 7건 차수별(변경 2건은 당초·변경) 원가계산서 18항목(직접비 4 · 간접비 11 · 이윤감액 · 관급 · 총공사비) 1원 대조 · 직접비는 내역 저장 단가 기준 ## 진행률 - 합계: 전체 246 · 구현 227 · 부분 18 · 없음 1 → 진행률 95.9%((227 + 18×0.5) / 246) · 구현만 세면 92.3% ### G1 화면·메뉴 (구현 51 · 부분 2 · 없음 1) — 96.3% - [x] F1-01 메인 메뉴·툴바·하단 금액 집계줄 — STmate.Cpm 메인 · 현재: 구현(원본 메뉴 구조·툴바 차례·단축키 12·체크 항목·최근 폴더(test_stmate_ui)) - [x] F1-02 공사목록표 목록·선택·불러오기 — wPrjList · 현재: 구현(공사목록표 · 다른 내역서 열기(저장 직접비 1원 일치)) - [x] F1-03 프로젝트 신규 등록·삭제 — wM_Add_Prj · ST_U_DelPrj · 현재: 구현(내역서 삭제 = 고른 공사 행·내역 표만 · 마지막 공사 거부(test_delete_project_drops_row_and_table_only)) - [x] F1-04 프로젝트 등록정보 수정 — wPrjList · 현재: 구현(등록정보 수정) - [x] F1-05 복사등록(차수·단계 변환) — wPrjList · ST_PList · 현재: 구현(REA K_ORD 전이표 7갈래 · 당초/변경 칸 옮김(test_stage_register_k_ord_matrix)) - [x] F1-06 프로젝트 DATA 검색(노무~내역서 8종) — wSrch_PL · 현재: 구현(등록 프로젝트 전수 검색·찾아가기·가져오기) - [x] F1-07 공종목록표 계층 내역 그리드(T/E/C 짝 집계) — wBoq · 현재: 구현(view_prj_boq 37~145) - [x] F1-08 내역 칸 편집 — wBoq · 현재: 구현(내역서 칸 편집·행 넣기·지우기·이동·복사·붙여넣기 · 직공비 증감 정확(test_stmate_ui)) - [x] F1-09 내역 행 추가·끼워넣기 — wBoq · 현재: 구현(내역서 칸 편집·행 넣기·지우기·이동·복사·붙여넣기 · 직공비 증감 정확(test_stmate_ui)) - [x] F1-10 내역 행 삭제·이동·복사·붙여넣기 — wBoq · 현재: 구현(내역서 칸 편집·행 넣기·지우기·이동·복사·붙여넣기 · 직공비 증감 정확(test_stmate_ui)) - [x] F1-11 레벨 필터(= 이상 ~ ====== 이상) — wBoq cBox01 · 현재: 구현(레벨 거르기·계표시·레벨 올리기/내리기·주공종 집계) - [x] F1-12 계표시 레벨 상향·하향, 주석 → 계시작 변환 — wBoq · 현재: 구현(레벨 거르기·계표시·레벨 올리기/내리기·주공종 집계) - [x] F1-13 내역 찾기 — wM_FindBoq · 현재: 구현(app.js 344) - [x] F1-14 호표 코드 → 대가표·단가표 이동 — wBoq · 현재: 구현(코드 → 단가목록표·대가표 이동) - [x] F1-15 공종 목록(코드·명칭·분류 정렬, 대공종 필터) — wKongJong · 현재: 구현(공종목록 코드 넣기 · 대공종 옵션) - [x] F1-16 주공종 집계표(레벨별 계표시 확인) — wMBoq · 현재: 구현(레벨 거르기·계표시·레벨 올리기/내리기·주공종 집계) - [x] F1-17 공종번호 자동입력(머리·끝 글자·번호형식·자리수) — wITNum · 현재: 구현(하위 전체공종 반영 · 실무 7건 규칙 번호 255/304 일치 · 나머지는 손 입력(test_itnum_tree_reproduces_every_rule_number)) - [x] F1-18 내역 할증율 적용(전체/비목별) — wBoqRate · 현재: 구현(REA 34 §7·§17.4 — 보호 행 건너뜀 · B·D·L·M·S·W·X 밖 율 0 · 계수 4바이트 실수(ST_Boq 0x4e9b20 fstp dword) → 70%·115% 1원 적음(test_stmate_jdl_rea · test_hal_rate_rows) · 실물 표본 0) - [x] F1-19 비목별 일괄 보정(절사/반올림 × 소수 0~4 · 범위) — wM_Rate · 현재: 구현(비목별 단가 끝전 · 줄 고정 단가(server fixedUnit)로 다시 불러도 유지) - [x] F1-20 일위대가표 풀기 — wExpnd · 현재: 구현(일위대가 풀기 = 구성표 × 내역 수량) - [x] F1-21 풀어넣기 비목별 끝전·가산비목 지정 — wM_Expnd · wM_Expnd10 · 현재: 구현(풀어넣기 비목별 끝전·할증·손료 비율 줄 · 손료 줄 금액 7건 대조) - [x] F1-22 내역 동일코드 처리 — wSameCode · 현재: 구현(동일코드 행 모아보기 · 행 이동) - [x] F1-23 내역보관함 (1)(2)(3) — wBoq · 현재: 구현(보관함 (1)(2)(3)) - [x] F1-24 단가목록표 코드종류 필터(10종) — wM_JabPum cBoxCode · 현재: 구현(코드 종류 10종 · 그림코드 = I 코드(원본 화면 탭)) - [x] F1-25 단가 찾기(명칭·규격 / 산근내용) — wM_JabPum cBox_IFORM · 현재: 구현(단가 찾기·사용처 찾기) - [x] F1-26 기초단가 직접 수정(재·노·경) — wM_JabPum · 현재: 구현(보호(UC=T · M·L·S·W 행) 제외 · 보호 열(test_stmate_ui_protect) · 실물 표본 0) - [x] F1-27 코드 신규 등록·삭제 — wM_JabPum · ST_U_DelCode · 현재: 구현(ui_code 신규등록(복사)·삭제 · 저장·다시 불러 참조 개수·직공비 그대로 7건(test_stmate_ui_code)) - [x] F1-28 코드 변경·치환(일괄·선택) — ST_U_ChgCode · 현재: 구현(코드변경 선택·일괄·+α · 항목교체 · 7건 왕복) - [x] F1-29 기준단가 비율 일괄수정(보호표시·0원 제외) — wM_Edt_Hal · 현재: 구현(비율 일괄수정 보호·0원 제외 · 보호해제 자동할증(test_stmate_ui_protect)) - [x] F1-30 할증 금액·율 두 갈래 편집 — ST_Jabpum Edt_Hal_Amt/Rate · 현재: 구현(할증 율·금액(기준단가 기준 · 두 번 해도 같은 값)) - [x] F1-31 가격지 후보 비교(1~5단가·최소단가) — wM_Boxa RG_MComp · 현재: 구현(가격지 후보 비교·채택 보호 행 제외(test_stmate_ui_protect)) - [x] F1-32 자재·공종 분류 필터, 불러간 목록 — wM_Boxa rg_FLT · wM_Box_H · 현재: 구현(속성·명칭·불러간 목록 필터) - [x] F1-33 대가표 목록·선택(B/D/X) — wM_iLWi_San · 현재: 구현(scr_edit_san 대가표 목록·B/D/X 거르기) - [x] F1-34 일위대가 구성행 표 편집·노임계수·저장비목 선택 — wM_Edit_iLWi · 현재: 구현(구성행 편집 · 저장 = BDQTY 바뀐 호표만 암호로 다시 씀(stc_save_extra)) - [x] F1-35 단가산출근거 편집 + 계산(F9) — wM_Edit_San · 현재: 구현(산근 편집 + F9 · 함수·문법 검사(test_stmate_smt_lang)) - [x] F1-36 손료 계산(F6)·시간당 손료계수 수정 — wM_Edit_San · wM_Edit_XRate · 현재: 구현(REA 36 — 손료 계수 반올림 = MROUNDUD 선택 1(첫 버림 자리 ≥5 올림 · DP_Common 0x4544f0) · calc_xrate 원형 사용(test_stmate_xrate_round)) - [x] F1-37 사용자 단가산출식 편집 — wM_Edit_USER · 현재: 구현(사용자문자 편집 목록) - [ ] F1-38 실적단가 → 일식단가 변환등록 — wM_Conv_A2W · 현재: 부분(calc_a2w 실적→일식 · 7건 실적단가 자료 없음) - [ ] F1-39 호환규정코드 찾기·입력 — wM_JDCode · 현재: 부분(조달청 코드 목록 암호 파일 · 다른 프로젝트 값 후보) - [x] F1-40 사용처 찾기 — ST_FindUse wM_FindUse · 현재: 구현(단가 찾기·사용처 찾기) - [x] F1-41 코드 병합(4택)·데이터 병합(비목별 복사처/복사원/신규) — wM_Stmate_Merge_Code · uM_Merge · 현재: 구현(ui_merge 코드병합 4택 · 데이타병합(복사처/복사원/신규 · 동일항목 3택 · W코드) · 저장·다시 불러 대조) - [ ] F1-42 자료파일 업데이트(매칭 5단계·명칭/단가/조달코드) — wM_Mrg_BSC · 현재: 없음(기준자료(BSC) 암호 ZIP·난독 DBF 로 못 읽음) - [x] F1-43 단가 일괄변경·물가변동 — ST_U_ChgAmt · 현재: 구현(ui_code_amt 일괄변경·물가변동 · 당초⇔변경 단가 옮기기) - [x] F1-44 초기값 입력 및 수정 — wM_Set_Sys · 현재: 구현(초기값 화면 전체 항목 · 저장 = Start8x.Ini 바뀐 키) - [x] F1-45 프로젝트 계산 초기값 — wM_Set_Init · 현재: 구현(프로젝트 계산 초기값 5칸 × 8종) - [x] F1-46 직종·노임 설정 — wM_Set_JLab · 현재: 구현(직종·노임 적용코드 창 · 저장 시 Start8x.Ini 해당 키만(test_jlab_codes_hourly_and_save)) - [x] F1-47 제잡비 계산 화면(4형식 탭) — wM_KanJub · 현재: 구현(REA 34 — 건물종류·낙찰방식·이행보증 방식·낙찰률·적용기준 축은 계산 본체(Main 0x469dec~0x473a9c)가 읽지 않음 · 저장·요율 조회만) - [x] F1-48 제비율표 수정·취소·저장·출력 — wM_KAN_RATE · 현재: 구현(제비율표 수정·취소·저장·출력(test_rate_table_edit_saves_only_changed_cell)) - [x] F1-49 요율표 불러오기·선택 — wM_KAN_RATE · 현재: 구현(요율표 선택·기준 요율표 열기·콤보 바꾸면 자동 재조회) - [x] F1-50 잡비 금액 불러오기(타 프로젝트 금액을 밑수로) — wM_GetAMT · 현재: 구현(잡비 금액 불러오기 → 제잡비 직접입력(C_ 칸)) - [x] F1-51 인쇄 메뉴 옵션(글꼴·코드필드·수량위치·양식·방향) — PM_Prt · 현재: 구현(인쇄 옵션 바꾸면 결과물 바뀜(test_stmate_report_link)) - [x] F1-52 보고서 인쇄순서·인쇄 공종 집계수준 선택 — PM_Prn_Ord · PM_Sel_St · 현재: 구현(인쇄순서로 원본 3건 시트 차례 재현) - [x] F1-53 인쇄영역 선택(당초/변경/분할·레벨·변경 1~8차) — wM_Sel_Prn · 현재: 구현(인쇄영역 당초/변경/분할·레벨·차수 반영) - [x] F1-54 특수문자·그림코드·메모 입력 — mMinMsg_ · wInDlgImg · wInDlgMemo · 현재: 구현(REA 37 — 그림 = COSTN I 코드 IFORM · SIZE = 그림 클래스 이름 대문자 · NAME 빈칸 = 파일 이름 · 넣기·보기·받기·비트맵→JPEG) ### G2 계산 엔진 (구현 59 · 부분 2 · 없음 0) — 98.4% - [x] F2-01 노임 일→시간 환산식 좌→우 순차 — 18번 §2.1 · Start8x RXXNM · 현재: 구현(calc.js 84) - [x] F2-02 노임 환산 갈래 H0~H5(터널·준설선) — wM_Set_Sys cmBx_Sel_RX · 30번 §4 · 현재: 구현(REA 34 Main 0x43894c — COSTN.RXX 1·10~14 = 식 하나로 모든 L 행 · 0·2~9 = 목록 첫 일치 · 화면 순번↔값 0x4fcae8(test_labor_branch_by_rxx) · H 글자 짝 미확인) - [x] F2-03 환산 적용 직종(COND_) — 20번 §2.5 · 현재: 구현(중기 구성 운전원 = Start8x.Ini CONLD 직종 · RXXNM 좌→우 환산) - [ ] F2-04 환율 적용(USD 구간·EUR·YEN·적용 범위) — wM_Set_Sys cmBX_EXR · 현재: 부분(REA 36 — EXRNM 참 = S 줄 MROUNDUD(단가×율/1000, ECD)·천원(0x437aa2) 반영 · 거짓 = 상위 B·천원 줄 수량 칸 = 율(0x435600) → 두 경로 ECD 버림만큼 다름 · 거짓 경로 비교 문자열·0x438130 금액식 미확인) - [x] F2-05 소수 자리수 설정(KCD·ACD·ZCD·JCD·ECD·BPN) — 22번 §3.4 · 현재: 구현(KCD·BPN·ACD·JCD·ECD 각 계산 연결 · REA 34 JCD 빈칸 기본 = KCD 2 이면 2(Main 0x42ab08) · JCD = 중기 노임 환산 수량 버림 자리) - [x] F2-06 자재 후보 최저가 자동채택 — 17번 §5.5 · 현재: 구현(최저가 채택 · 실무 7건 변동 0(test_material_candidate_minimum_matches_stored)) - [x] F2-07 수동 고정·보호표시 우선 — 22번 §3.1 · 13번 T10 · 현재: 구현(보호표시(UC=T) 우선) - [x] F2-08 중기 시간당 사용료 조립(손료·운전원·연료·잡품 성분 절사) — 17번 §3 · 현재: 구현(BDQTY 구성 · 성분 절사 · 7건 대조) - [x] F2-09 손료 주간·야간·2교대·3교대(E0~E3) — 30번 §4 · 현재: 구현(REA 34 §17.7 — 원본 계산에 E1~E3 계수 곱 없음(조달청 XML 열거값뿐) · 계수 칸 걷음 · 구분값만 행에 남김) - [x] F2-10 단가산출 D코드 전개 계산 — 18번 §2.2 · 23번 · 현재: 구현(smt_eval.js · 원설계 5건 282개 1원 · 참조 단가는 저장값) - [x] F2-11 운반비 경비 귀속 — 23번 §4 · 26번 §1 · 현재: 구현(COSTN SBMOK=S · (-=)+「운반비 계」 T% · 저장 금액 판정 걷음) - [x] F2-12 일위대가 B코드 구성 조립·성분 절사 — 17번 §2·§5 · 현재: 구현(BDQTY 구성 · 행 소수1 버림 · CHBNM 총액우선 = 행 합계액 기준 · 7건 대조) - [x] F2-13 호표 참조 그래프·위상순서·순환 오류 — 19번 §6.5 · 09번 §3 · 현재: 구현(X·D·B 참조 순서 · 순환 경로 알림(실무 7건 순환 0)) - [x] F2-14 공구손료·잡재료 % 가산 — 07번 §4 · 현재: 구현(PR 줄 = PRPT 표시 행 밑수 PRIN → PROUT · % 단위 자원 = 누계 · C* 뒤 % = 전체 비율) - [x] F2-15 수량 할증과 금액 가산 분리 — 07번 §4 · 현재: 구현(금액 가산(% 줄)은 별도 행 계산 · X_QTY·X_HAL = 손료계수 칸(REA 정정) · 실무 7건 1원) - [x] F2-16 TAMT=M+L+S·코드종류별 성분 검사 — 10번 §3 · 현재: 구현(성분 검사 · 실무 7건 어긋남 0 · 일부러 어긋낸 칸만 잡힘(test_component_check_clean_on_real_and_catches_broken)) - [x] F2-17 내역 행 ROUNDDOWN(수량×단가) — 16번 · 06번 §3 · 현재: 구현(calc.js 249) - [x] F2-18 비목우선/총액우선 차액 보정(OPTNM) — REA 15단계 · 현재: 구현(CHNNM 비목우선 = 실무 7건 차수별 내역 줄 금액 1원 · 총액우선 = OPTIMIZ 끝전 배분(손셈 대조) · 비율 줄(test_stmate_kanjub_boq)) - [x] F2-19 계층 합산(SUM_TOT·T/E 짝) — 16번 §4.1 · 현재: 구현(같은 코드 여러 줄이면 짝 오류 위험 view_prj_boq 66) - [x] F2-20 제외금액 C* 구역 — 16번 §4.2 · 현재: 구현 - [x] F2-21 관급자재·조달수수료 분리, 관급 천원 올림 — 16번 §4.3·§4.7 · 현재: 구현(관급·조달수수료 · 코드 붙은 % 줄 = 같은 상위 공종 앞 줄 합 × 율 계산·저장 재계산(test_stmate_file_pct · kanjub_stc)) - [x] F2-22 요율표 규모·기간 구간 조회 — 12번 §8~10 · 06번 §2 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-23 요율 기본값 처리 — calc.js · 현재: 구현(num 기본값 · 4건 시험) - [ ] F2-24 공사종류·적용기준(행자부 RateM 포함)·공사기간 축 — 12번 §10.1 · 현재: 부분(REA 36 — 적용기준 국가 2·지방 0·행자부 1(DFM Values) · 행자부 RATE_M 조회(0x47a1bc) 화면 연결 · 적용기준 바꾸면 다시 조회(test_stmate_std_market) · RATE_R 일반관리비·이윤 줄(원본 21줄 고정 판독)과 앱 규모 묶음 머리 줄 차이 미정리) - [x] F2-25 간접노무비(직노×율) — 12번 §3 · 현재: 구현(calc.js 385, 요율은 저장값) - [x] F2-26 산재·건강·연금보험료 — 12번 §3 · 현재: 구현(calc.js 387~391) - [x] F2-27 고용보험료(등급 7) — 12번 §8 rGrd_Rate_Kobo · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-28 노인장기요양보험료(건강 확정액 밑수) — 25번 §2.3 · 현재: 구현(calc.js 390) - [x] F2-29 퇴직공제부금비(토목·준설·건축·기타) — 12번 §10.1 · 현재: 구현(REA 34 0x47ae79 — 퇴직공제 0~2 만 RATE_16~18 조회 · 3(기타) 그대로(test_rate_eqip_tbugum_short_period) · 실무 4건 0 은 원인 미확인) - [x] F2-30 산업안전보건관리비(규모식·1.2배·상한 3모드) — 11번 §7 · 16번 §4.3 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-31 안전·품질관리비 별도내역 — 12번 §3 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-32 기타경비(일반형식 묶음) — 12번 §3 · 현재: 구현(calc.js 431) - [x] F2-33 수공 세부경비 8종·RateB 밑수 5택 — 12번 §4 · 25번 §1.4 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-34 공사이행보증·하도급대금지급보증수수료 — 06번 §3 · 12번 §3 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-35 환경보전비(공종 13택) — 06번 §3 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-36 건설기계대여금 지급보증(7택) — 12번 §10.1 · 현재: 구현(REA 34 0x47fa24 — 구분 1~5 = RATE_06~10 · 0 = 공사종류별 RATE_01~04 · 국가유산 0(test_rate_eqip_tbugum_short_period)) - [x] F2-37 석면피해구제분담금·임금채권부담금 — 12번 §3 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-38 고용개선지원비 4갈래(복합 절사식) — 25번 §1.2·§2.4 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-39 일반관리비 — 06번 §3 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-40 이윤(형식별 밑수) — 06번 §3 · 35번 · 현재: 구현(calc.js 456) - [x] F2-41 이윤/수수료 택일·이윤 직접입력 — 12번 §10.1-2 pn02 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-42 끝전조정(차액 세전환산 이윤 차감)·1원 보정 — 16번 §4.4 · REA 17 §5 · 현재: 구현(총공사비 기준 절사 · 절사 없음 = 저장 이윤감액 · 4건 1원) - [x] F2-43 공급가액 절사 9택 — 12번 §10.2 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-44 부가세 설계 5택(산림조합 형식·면세품 포함) — 12번 §10.1 · REA 20 · 현재: 구현(I_BUGA 0~4 · 올림 +1 · 영덕 면세품 대조 · 안전품질 F 항 미포함) - [x] F2-45 공사손해보험·작업설 감액·비과세자재·매입세 — 12번 §3.1 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-46 관급/사급 내용·사급자재/1.1·사급비 위치 4택 — 12번 §10.1 · 25번 §2.6 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-47 도급공사비/도급예정액·관급 2종 절사·절상·반올림 — 12번 §10.2 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-48 총공사비 절사 자리 — 12번 §10.2 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-49 간접비 일괄 절사 7택 — wM_KanJub cBx_K_JeolSa · 현재: 구현 - [x] F2-50 추가금액 1~9단계 삽입 — 11번 §9 · 25번 §1.3 · 현재: 구현(추가금액 4묶음 × 차수 칸 계산·화면 입력(scr_kanjub)) - [x] F2-51 간접비 순서 코드표(KAN_ORD_1/2) — 20번 §2.1 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-52 원가 일반형식 T — 12번 §3 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-53 원가 수공형식 S — 12번 §4 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-54 원가 실적일반 TA(노무·재료 산정방식·조정계수) — 12번 §5·§10.3 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-55 원가 실적수공 SA — 12번 §6 · 현재: 구현(kanjub_calc·kanjub_parts 원본 계산 순서 · 실무 7건 저장 결과키 전수 1원(test_kanjub_every_stored_key) · 표본 밖 선택지 손셈 대조(test_stmate_kanjub_opts)) - [x] F2-56 형식별 설정 스냅샷 4벌(_T/_S/_TA/_SA) — 12번 §10.1-2 · 현재: 구현(형식 탭 = 형식별 설정 한 벌 갈아 끼움) - [x] F2-57 간접비 식 템플릿 26 평가(IF·선택토큰) — 25번 §2 · 현재: 구현(식 템플릿 재계산 = 항목 금액) - [x] F2-58 항목별 밑수(D_)·결과(S_)·직접입력(C_) 키 왕복 — 25번 §1.1 · 현재: 구현(저장 설정 → 계산 설정 → 다시 저장 원본 그대로(test_kanjub_smt_round_trip)) - [x] F2-59 요율 순환(무한루프) 경고·수동 확정 — 06번 §2 · 현재: 구현(요율 순환 시 멈춤·구간 단추·수동 확정·확정 풀기(06번 §2 · test_stmate_kanjub_rate)) - [x] F2-60 연쇄 재계산(L/M/S→X→D→B→내역→원가) — 08번 §1 · 현재: 구현(기초단가부터 원설계 5건 전 단가·총공사비 1원 · 변경설계 일부 미대조) - [x] F2-61 표준시장단가 적용(ACTTYP·ACTOPT 노무비 끝전 보정) — 22번 §3.3 · 현재: 구현(REA 36 — A 코드 = COSTA · S_JDA 참 = 저장 단가 · 거짓 = AAMTn 노무비율 나눔(0x430c60→0x45a468) · ACTTYP·ACTOPT = PRJLST(0x45c938) · calcBoq·costnLookup·api_load 연결(test_stmate_std_market) · 원가계산서 밑수 자리·구성 A 칸·계열 5 미확인 · 실물 A 코드 0건) ### G3 수량산출·식언어 (구현 28 · 부분 1 · 없음 0) — 98.3% - [x] F3-01 COSTN.SMT 메모 블록 읽기(IFORM 위치) — 21번 §1 · 23번 · 현재: 구현(smt_parser 150) - [x] F3-02 헤더 변수 정의(;; 줄)·변수 대입 — 23번 · 현재: 구현(smt_engine 112) - [x] F3-03 자원 참조 토큰 &코드[LMS]& 성분 지정 — 07번 §2 · 현재: 구현(참조값은 저장 단가) - [x] F3-04 라벨 :=A01·&PA01:M&·&PA010203:S&·&PS_M&·&RC_S&·&RS_L& 소계 참조 — 23번 · 현재: 구현(smt_eval.js) - [x] F3-05 구간 합산 (=)(==)(===)·소계 제외 (-=)(-==) — 23번 · 현재: 구현((-=) 지금 구간 · (-==) 이전 전부 합계 제외 · % 밑수엔 남음) - [x] F3-06 사칙·괄호 평가와 좌→우 순차 — 18번 §2.1 · 현재: 구현(smt_eval 우선순위·함수·IIF/IF(test_functions_and_left_to_right)) - [x] F3-07 % 표기('%') 처리 — 23번 §5 · 현재: 구현(n'%' 1 이상 ÷100 · 1 미만 그대로 · [변수]'%' ÷100 · % 단위 자원 = 누계 밑수) - [x] F3-08 분수 인자(f=1/1.3) 자리수 보존 — 26번 §2 · 현재: 구현(끝 '=' 변수 소수 2자리 반올림 · 282개 대조) - [x] F3-09 함수 INT·ROUND·ROUNDDOWN·ROUNDUP·SQRT·√·SIN·COS·TAN·∏ — wM_Edit_San · 현재: 구현(smt_eval 우선순위·함수·IIF/IF(test_functions_and_left_to_right)) - [x] F3-10 조건 함수 IF·IIF·IFI·IFO — 24번 §2.3 · 25번 §2.2 · 현재: 구현(smt_eval 우선순위·함수·IIF/IF(test_functions_and_left_to_right)) - [x] F3-11 금액변수·소계변수(대상·저장·%) 선언 — 28번 §1 · 현재: 구현(금액·누계 변수 · 계산후 제외(test_sonryo_amount_and_total_variables)) - [x] F3-12 계산후 제외처리·항목집계 제외 코드 — 28번 §1·§4 · 현재: 구현(금액·누계 변수 · 계산후 제외(test_sonryo_amount_and_total_variables)) - [x] F3-13 강제금액(직접 지정 금액) — 28번 §4 · 현재: 구현(REA 34 §17.8 — STmate 산출근거에 강제금액 문법 없음 · JDL 가져오기의 숫자 금액 참조 → W 견적코드 변환 전용 · 사용자 기능은 강제수량뿐) - [x] F3-14 수량기호 Q·A·T·N — wM_Edit_San · 현재: 구현(Q·A·T·N 줄 · 결과적용 비목 4택·0원 비목(test_code_insert_lines_zero_skip_and_result_strip)) - [x] F3-15 식 문법 검사(줄 단위 오류 메시지) — 28번 §4 · 현재: 구현(줄 단위 문법 오류 · 실무 산근 오류 0(test_section_markers_exclusion_and_grammar_errors)) - [x] F3-16 문법 강조·문법설명·함수/연산 입력 단추 — 26번 §3 · 현재: 구현(함수 단추·강조 낱말 = 원본 화면 정의(test_editor_function_list_and_highlight_follow_dfm)) - [x] F3-17 결과적용 비목 4택·0원 비목 입력안함 — 26번 §3 · 현재: 구현(Q·A·T·N 줄 · 결과적용 비목 4택·0원 비목(test_code_insert_lines_zero_skip_and_result_strip)) - [x] F3-18 결과값 낙찰율 적용·결과금액조정·계약단가 — 26번 §3 · 현재: 구현(산근 편집기 낙찰율·결과값 적용·계약단가 · 울진 34개 코드 1·2칸 일치(test_editor_bid_rate_input_matches_contract_codes)) - [x] F3-19 Q식(3600qKfE/Cm 등 10꼴) 평가 — 23번 §3 · 현재: 구현(식 그대로 평가 · 변수 대소문자 무시 · 282개 대조) - [x] F3-20 Cm 사이클식(t1+…·L/V1+L/V2+0.25·선회각 초) — 26번 §1 · 현재: 구현(사칙 대입 · 따옴표 주석 걷음 · 282개 대조) - [x] F3-21 표준중기공식 등록·수정·삭제 — wM_Edit_EQ · 28번 §1.1 · 현재: 구현(표준중기공식 등록·수정·삭제(test_qcode_read_write_round_trip)) - [ ] F3-22 수량산출서 화면 — wQtyList · 현재: 부분(REA 35 — 화면·저장·내역 가져가기 · 저장 = 원본 파일 바이트 · VTS(Formula One) 내부 구조 미해독) - [x] F3-23 수량산출서 파일 저장·불러오기 — STmateQty8 · 현재: 구현(REA 35 — IFORM = 수량산출서 파일 바이트(VTS·XLS) · 확장자 .XLS·.VTS · 16MB 거절 · 모두 내보내기 수량산출서·<코드>.VTS(STmateQty8 0x41bcc8·0x4211c4·0x420ee0)(qty_sheetfile.py · test_stmate_qty_file) · 셀 견본 없음 · 규칙 근거) - [x] F3-24 코드 종류별 수량 조회(9종 필터) — wQtyList cBoxCode · 현재: 구현(코드 종류별 수량 · 내역↔BDQTY 자원 집계(test_qty_by_code_and_rollup_on_real_boq)) - [x] F3-25 기본수량변수·확장수량변수(셀별명) — 28번 §2 · 현재: 구현(셀별명·수량변수 → 산근 전송(test_sheet_aliases_assign_and_smt_transfer)) - [x] F3-26 수량산출서 → 내역 수량·공종 가져오기 — wBoq · 현재: 구현(REA 35 — ReadDefName(0x41b200) 셀별명 → XCODE 「이름=값」 · QTYn 이름 → QTYn 칸 · 인쇄 영역·내역 전송 7이름 제외(test_stmate_qty_sheet) · 셀 견본 없음 · 규칙 근거) - [x] F3-27 수량변수 → 단가산출 전송 — 28번 §2 · 현재: 구현(셀별명·수량변수 → 산근 전송(test_sheet_aliases_assign_and_smt_transfer)) - [x] F3-28 내역↔BDQTY 수량 연결(CON_QTY) — ST_U_ConBD · 현재: 구현(코드 종류별 수량 · 내역↔BDQTY 자원 집계(test_qty_by_code_and_rollup_on_real_boq)) - [x] F3-29 수량코드(QCODE) 등록·검사 — 28번 §4 · 현재: 구현(수량코드 검사(test_qcode_check_and_next_code_and_file_signature)) ### G4 파일 입출력 (구현 29 · 부분 1 · 없음 0) — 98.3% - [x] F4-01 STC(ZIP) 열기 — ST_U_Archive · 09번 §5 · 현재: 구현(server.py 92) - [x] F4-02 STC 저장(압축) — ST_U_Archive ComP_Data · 현재: 구현(stc_archive · 같은 파일은 원본 바이트 · 덮기 전 백업 · 7건 왕복 바이트 동일) - [x] F4-03 STC 버전 검사 — Chk_STC_Ver · 현재: 구현(stc_read 헤더 첫 바이트·코드 카운터·설정 미러 검사 · 원본 검사 함수 내부 미확인) - [x] F4-04 DBF 읽기(03/E5/06 변형) — 09번 §5 · 현재: 구현(smt_parser 27) - [x] F4-05 DBF 다시 쓰기 무손실 — 09번 §5 · 현재: 구현(dbf_rw 고친 칸만 다시 씀 · 한글·공백·삭제 레코드·머리 유지 · 7건 왕복) - [x] F4-06 PRJLST.DBF 읽기 — 02번 · 현재: 구현 - [x] F4-07 PRJLST.SMT 저장키 241종 읽기 — 25번 §1 · 현재: 구현(PRJ_MEMO 블록 · 저장키 전부 보존 · 계산은 요율·절사·관급·추가금액·차수) - [x] F4-08 PRJLST.SMT 쓰기 — 25번 · 현재: 구현(dbf_memo SIxMemo 블록 제자리·넘치면 뒤에 붙이고 포인터 갱신) - [x] F4-09 COSTN.DBF 읽기(후보 6·차수 4벌) — 07번 §5 · 현재: 구현 - [x] F4-10 COSTN.DBF 쓰기 — 07번 · 현재: 구현(고친 칸만 · 차수 칸 보존 · 단가 → 내역 행 → 소계 → 직공비) - [x] F4-11 COSTN.SMT 쓰기 — 21번 · 현재: 구현(dbf_memo 블록 구조 유지 · IFORM 갱신) - [x] F4-12 COSTA.DBF 읽기 — 02번 · 현재: 구현(읽기(실무 표본 0건)) - [x] F4-13 BOQ1n 읽기·쓰기 — 02번 · 16번 · 현재: 구현(고친 칸만 · 2·3칸 보존 · 소계·TCOST 다시 셈 · 행 끼우기·지우기) - [x] F4-14 RATE*.DBF 읽기 — 06번 §1 · 현재: 구현(server.py 474) - [x] F4-15 JB_* 기준요율표 43종 읽기(구형·2020 확장) — 10번 · 12번 §9 · 현재: 구현(제비율표 불러오기 = /api/load-jbr 로 JB_* 읽기 · 판 모양 검사·프로젝트 대조 보기는 원본에 없어 걷음) - [x] F4-16 KONGJONG.DBF 공종 분류 — 02번 · 현재: 구현(읽기(실무 표본 공종 1건 내외)) - [x] F4-17 SET_REP.DBF 서식 카탈로그 읽기 — 20번 §3 · 현재: 구현(표시) - [x] F4-18 QCODE.DBF·QCODE.SMT 읽기 — 02번 · 28번 · 현재: 구현(읽기(실무 표본 0건)) - [x] F4-19 Start8x.Ini 설치 설정 읽기 — 20번 §2 · 현재: 구현(server start_ini · 산근·구성 계산 설정에 사용) - [x] F4-20 조달청 호환규정 XML 내보내기 — 30번 · uM_XML_Info · 현재: 구현(report_pps · 공식 XSD V1.0.5 검증 5건 · 총공사비·직접비 저장값 1원(test_stmate_report_pps)) - [x] F4-21 조달청 XML·조달 형식 가져오기(Conv_XML_ST8·Conv_Jodal_ST8) — 28번 §3 · 현재: 구현(conv_xml · 5건 내보내기 → 가져오기 왕복 말단 행·차수 직접비·총공사비 일치(test_stmate_conv_xml) · 옛 조달 형식 근거 없음) - [x] F4-22 XML 변환 설정(공사유형 8·지역·건축 사업내용) — uM_XML_Info · uM_ConstType · 현재: 구현(conv_xml_cfg 공사유형·지역·건축 사업내용 XSD 에서 읽음 · XSD 검증) - [ ] F4-23 JDL 내보내기·검사 — frm_JDLAnno · JDLCHK.*.dll · 현재: 부분(REA 37 — JDL 줄 = 탭 구분 + x05·x07 덧붙임(검사기 0x504d20 · 34 §17.9 고정폭 판독 바로잡음) · 단가 목록 7종·Main·GongJong 머리·Global.Ini 상수 키 생성·검사·zip 받기 · MainPart·UnitPart·JPart·CostAccount 본문·.JDL 압축 미확인) - [x] F4-24 엑셀 → 내역 불러오기 — wM_From_XLS · 현재: 구현(conv_xls_boq · 원본 엑셀 5권 → STC 내역 행 전 칸 일치(test_stmate_conv_xls)) - [x] F4-25 엑셀 역등록(CONV_XLS_2_ST·INITIAL)·엑셀 → BDQTY — 24번 §3 · 현재: 구현(REA 37 — ST_P_XLS 0x5f1078 PRPT「속성」·PRIN「대상」·PROUT「저장」 = PR/RR 줄만 · 원본 BDQTY 대조 4건 일치) - [x] F4-30 BDQTY.DBF 구성표 복호 읽기 — STC_난독화_상태 · 현재: 구현(bdqty.py 자리별 회전·더하기 표 283자리 · 사용자 승인 · 글자 칸 제외) - [x] F4-26 자재 기준자료 XLS 입출력 — wM_JajeXLS · 현재: 구현(REA 37 — 원본 = 재료비 수량집계표 엑셀 내보내기만(TWM_JAJEXLS) · 주요건설자재현황 시트(conv_jaje·scr_jaje) · 원본에 없는 「자재 기준자료 엑셀 내보내기·불러오기」 걷음 · 파일 이름 기본값 미확인) - [x] F4-27 기준 BOQ·코드 변경 엑셀 왕복 — 24번 §3 · ST_U_ChgCode · 현재: 구현(stc_codechg 내역 8표 엑셀 왕복 · 코드 변경 되돌리면 7건 원래 바이트) - [x] F4-28 구버전 → Win8 자료 변환 — ST_U_Convert ST_ConvToWin8 · 현재: 구현(REA 37 — 판 가리기(Chk_Data 0x459280) · 7.x/DOS COSTN·BDQTY·PRJLST·KONGJONG·BOQ·Start8x.Ini 대응 · B→X 조건 = 단위 X · 합성 자료 시험 · 간접비 이관·RATE·SYSINFO·IFORM 미확인(틀 유지)) - [x] F4-29 자동백업·자료 복원 — wM_D_Restore · wM_ST_Restore · 현재: 구현(api_file 자동 백업·복원) ### G5 보고서·내보내기 (구현 26 · 부분 10 · 없음 0) — 86.1% - [x] F5-01 재료비·노무비·경비 목록표(0101~0103) — Prn_SanMok · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets)) - [x] F5-02 일식·견적(W코드) 목록표(0104) — Prn_SanMok · 현재: 구현(일식견적 목록 0104 · 울진 변경1차 당초 차수 셀 일치) - [x] F5-03 자재단가대비표(0105) — Prn_Col_Dan · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets)) - [ ] F5-04 표준시장·실적단가 목록표(0106·0206) — Prn_SanMok · 현재: 부분(REA 38 — 0206 엑셀판 = Prn_AList_EXL 0x4c5f7c · A 코드 대상 조건 미확인) - [x] F5-05 환율및기초자료(0201) — 18번 §2.3 · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets)) - [x] F5-06 중기목록표·시간당중기사용료(0202·0203) — Prn_Joong · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets)) - [x] F5-07 일위대가목록표(0301) — Prn_SanMok · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets)) - [x] F5-08 일위대가표(0302) — Prn_iLWi · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets)) - [ ] F5-09 일위대가표 수공양식(0303) — Prn_iLWi_S · 현재: 부분(REA 38 — 수공양식 호표 끝 「합 계」 줄(0x5b1270) · 비목 칸 자리 설정·수량 열 미확인) - [x] F5-10 단가산출근거목록표(0401) — Prn_SanMok · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets)) - [x] F5-11 단가산출근거(0402) — Calq_San · Edit_SanKun · 현재: 구현(report_san 단가산출근거 펼침 0402 · 3건 · 봉화 3,889행 글·금액·쪽 일치) - [x] F5-12 재료·노무·경비 수량금액집계표(0501~0503) — Prn_Col_Dan · 현재: 구현(report_coll 0501~0503 · 봉화·영월·대흥 원본 엑셀 셀 일치(test_stmate_report_coll)) - [x] F5-13 일식·표준시장 수량금액집계표(0504·0508) — Prn_Col_Dan · 현재: 구현(일식견적 집계 0504 · 울진 변경1차 당초 차수 셀 일치) - [x] F5-14 중기시간금액집계표(0505) — Prn_Col_Dan · 현재: 구현(중기시간금액집계표 0505 · 3건 셀 일치) - [x] F5-15 일위대가수량금액집계표(0506) — Prn_Col_Dan · 현재: 구현(일위대가수량금액집계표 0506 · 울진 변경1차 셀 일치) - [x] F5-16 단가산출근거수량금액집계표(0507) — Calq_San · 현재: 구현(단가산출근거수량금액집계표 0507 · 울진 변경1차 셀 일치) - [x] F5-17 총괄내역서(0601·종양식 0602) — Prn_Nae · 현재: 구현(공종 줄 단계 = Start8x.Ini FLT_JAB+1 이상 · 원본 5건 · 영덕 변경 양식 셀 전부 일치(S_JDA 해석 추정)) - [x] F5-18 설계내역서(0603·종양식 0604·0693·0694) — Prn_Nae · 현재: 구현(report_* · 원본 STMATE 엑셀 셀 대조 3건(test_stmate_report_sheets)) - [x] F5-19 분할내역서(0605) — Prn_Nae · 현재: 구현(REA 38 — 금회 = 내역 2칸 QTY2·T_AMT2(Prn_Nae_B_EXL 0x528e00) · 분할 비율 입력 걷음 · 견본 없음) - [ ] F5-20 사·관급내역서(0607) — Prn_Nae · 현재: 부분(REA 38 — 엑셀판 = 인쇄 때 만드는 BQM.DBF(0x53f230) · 준비 함수 미확인) - [x] F5-21 공사원가계산서(0608) — Prn_Won_A · 현재: 구현(원가계산서 · 원본 엑셀 5건 대조(영덕 당초·변경·증감 양식 포함)) - [x] F5-22 총괄집계표(0609) — Prn_Col_Dan · 현재: 구현(REA 35 — 0609 = Prn_Won_A · 공사원가계산서와 같은 줄 · 구성비 = 금액÷총액×100(0x48c6ab) · 금액 0 빈칸(test_stmate_report_forms) · 셀 견본 없음) - [ ] F5-23 견적내역서(0613·0614)·견적단가대비표(0615) — PM_Nae_Est · 현재: 부분(REA 38 — 0615 = 줄마다 두 행 · 견적 1칸 · 기준 2칸 · 견적÷기준 %(0x5611dc) · 모든 줄 · 비고 갈래 설정 미확인) - [ ] F5-24 도공·굴착·시도·구도·비교 양식 내역서(0606·0651~0656·0672) — ST_P_Excav · Prn_Nae · 현재: 부분(REA 38 — 0651 시기금·구기금 = 고른 1·2 차수 금액(0x59e818) · 영덕 공종 줄 일치 · 비율 입력 걷음 · 0655 칸 배치 미확인) - [ ] F5-25 재료비·노무비·중장비 집계표(0675~0677) — Prn_Col_Dan · 현재: 부분(REA 38 — 0675~0677 = 0x558c64 · DES1·DES2 채움 미확인) - [ ] F5-26 장비·인력·자재 투입계획(0671·0678·0679)·간이명세서(0695) — Rep_Print · 현재: 부분(REA 38 — 0695 회사분 0 · 도급분 원가 줄 참조 · 소계·합계 수식 · 칸 A~K 정정(0x55f168) · 작성자 글·투입계획 설정 미확인) - [x] F5-27 목차 시트(〓 목 차 〓) — 19번 §3 · 현재: 구현(report_link 목차 3건 셀·바로가기 수식 일치(울진 판 표기만 다름)) - [x] F5-28 안내 시트(※※안내※※) — 19번 §3 · 현재: 구현(REA 38 — 설계내역서 쪽 채움 LNP_CNT(0x520e34) · 원본 3건 행 수·빈 줄·숨은 총합계 줄 일치 · 안내 줄 번호 일치(test_stmate_report_link)) - [x] F5-29 〓 INITIAL 〓 설정 스냅샷 시트 — 18번 §2.3 · 현재: 구현(report_init INITIAL 시트 · 3건 일치(파일 자리·작성자·날짜 제외)) - [ ] F5-30 제잡비 요율표 인쇄 — PM_KAN_RATE · 현재: 부분(REA 38 — 엑셀판·인쇄 분기 없음(ST_KanJub 전용) · 견본 없음) - [x] F5-31 엑셀 다중 시트 내보내기·수식 보존 — ST_P_XLS Prn_FMLA_INFO · 현재: 구현(REA 38b — 총괄 원가 줄 D·E 수식·H 숨은 메타·I~P 보정·요율 칸·이윤 끝전 사슬 + 공사원가계산서 참조·소계·구성비·비고·바로가기(변경 양식 포함) — 원본 5건 1392칸 수식 글·값 일치(test_stmate_report_cost_fmla) · 24·25판 괄호 구분 · 표본 없는 갈래(안전 B상한·퇴직공제·부가세 1~3 등) 값만) - [ ] F5-32 보고서 인쇄·미리보기 — PM_* · 현재: 부분(REA 38 — 인쇄 영역 $A:$열 · 탭 색 · 안내·INITIAL 세로 · 숨은 열 — 원본 3건 일치 · 배율·여백·바닥글 미확인) - [ ] F5-33 가로형·토개공·수자원·산근양식 변형 — PM_*_L · PM_Prt · 현재: 부분(REA 38 — 토개공·수자원 글 설치본 전체에 없음 · 가로형 방향만) - [x] F5-34 출력별 반올림(내역 절사·집계 사사오입) — 06번 §3 · 18번 §2.4 · 현재: 구현(출력별 반올림 · 집계표 사사오입 원본 일치) - [x] F5-35 금액 한글 표기(AMTTOHAN) — 24번 §2.4 · 현재: 구현(금액 한글 표기 · 원본 한글 금액 11건 전부 일치) - [x] F5-36 SET_REP 데이터 기반 열·폭·제목 — 20번 §3 · 현재: 구현(SET_REP 서식 제목·시트 이름 적용 · 보고서 시험 포함) ### G6 설계변경·계약·실행·기성 (구현 34 · 부분 2 · 없음 0) — 97.2% - [x] F6-01 차수 4벌(원설계+3차변경) 칸 관리 — 08번 §2 · 24번 §7 · 현재: 구현(2·3·4차수 칸 고침이 저장 후 유지(test_slot_2_3_4_edits_persist)) - [ ] F6-02 통합형 BOQ11+BOQ12에서 BOQ12 현재안 — 16번 §4.5 · 현재: 부분(공사 고르기(load-boq) 있음 · 파일 열 때 원본이 처음 고르는 공사 미확인(서버 기본 BOQ11)) - [x] F6-03 분리형 변경 STC 생성·차수 인계 — 16번 §4.6 · 현재: 구현(stc_change 소광 원설계 → 실제 변경1차 차수1 말단 47행·직접비·요율 41키 일치(test_stmate_conv_change)) - [x] F6-04 변경 수량 입력 — 설계변경 · 현재: 구현(change_calc · 영덕·소광 변경 BOQ11 1·2차수 수량·단가·금액 일치) - [x] F6-05 변경 단가·신규 공종·삭제 항목(0 유지) — 08번 §2 · 현재: 구현(change_calc 신규·삭제(0 유지) · 변경 2건 대조) - [x] F6-06 변경 직접비 당초·변경·증감 — 19번 §6.5 · 현재: 구현(calc.js 661~670) - [x] F6-07 간접비 변경 모드: 재계산 — 08번 §2 · 현재: 구현(calc.js 357) - [x] F6-08 간접비 변경 모드: 당초액 유지(건강·장기요양·연금·퇴직공제) — 19번 §6 · 35번 §4 · 현재: 구현(D_ 표시 항목 = 저장 금액 고정 · 변경 2건 대조) - [x] F6-09 간접비 변경 방법 A(비율)·방법 B(증감×율) — 08번 §2 · 현재: 구현(scr_stage 재계산·당초 유지·방법A·방법B 선택 · 안전관리비 방법A 실물 대조) - [x] F6-10 보험료 변경 계산 3모드 — wM_KanJub cBx_CH_BO · 현재: 구현(REA 34 문 PCLASS 7·계열>1 · 1·2 식 · 장기요양·퇴직공제 갈래 · 기본값 0x47b633 · 차수 화면 선택(test_series_chain_uses_previous_series · test_gate_closed_outside_pclass7)) - [x] F6-11 2차·3차 변경 계산 — wM_KanJub cBx_Chasu · 현재: 구현(REA 34 차수 콤보 PCLASS 갈래 · 직전 계열 되셈 사슬 · 당초액 유지 = 직전 계열 · 상한 4차 = 계열 5(MCOST5·QTY5 · K_ORD>4 거부 · Ghidra 확인)(test_stmate_stage_change_rea · test_stmate_kanjub_rea) · 3~5 실물 표본 없음) - [x] F6-12 원가계산서 당초/변경 대비·변경분만 인쇄 — PM_Won_A_C · Cmbx_PORD1_H · 현재: 구현(당초/변경 대비 · 변경분만 인쇄 · 영덕 엑셀 공사원가계산서 일치) - [x] F6-13 설계변경내역서(0643·0644) — CHANGE_STR · 현재: 구현(설계변경내역서 · 영덕 엑셀 당초·변경 줄 전부 일치) - [x] F6-14 변경내역서(변경율)(0645) — CHANGE_AMT · 현재: 구현(REA 39 — Prn_Nae_C1 0x46abf5 변경 줄 증감액 · 당초 줄 증감율 (변경−당초)÷당초×100 '0.## %' · 0 또는 같으면 빈칸(test_stmate_stage_forms_rea)) - [x] F6-15 설계변경증감대비표(0648)·금액대비표 — CHANGE_AMT · 현재: 구현(증감대비표·금액대비표 · 영덕 엑셀 행 차례·금액 일치 · 인쇄·엑셀) - [ ] F6-16 변경총괄·굴착·시도 변경내역서(0661~0666) — CHANGE_* · 현재: 부분(REA 39 — 0661 시비[1,3]·구비[2,4] · 0662 [1,3] · 0663 [2,4] 구현 · 0664~0667 Ex2 갈래(굴착0·시도1·구도2) 확인 · 시도·구도 줄 칸 차례·Ex2_T 미확인) - [x] F6-17 계약 변환 비목별 단가적용율(노·재·경) — wM_Mk_Cont · 현재: 구현(contract_calc 노·재·경 적용율 버림 · 울진 BOQ12 계약내역 1원) - [x] F6-18 계약 변환 옵션(기초단가·일위/산근 생성·동일코드·노무비율·비과세) — 27번 §2.2 · 현재: 구현(REA 32 TwM_Mk_Cont · 생성 켬=율 하나 노·재·경 · 끔=비목별·새 코드 W·대표율 0 공내역 · 비과세 = C_NBUGAM·C_BUGA_M × 재료비율(test_stmate_stage_contract_rea)) - [x] F6-19 적용율 0% → W코드 공내역 — 27번 §2.2 · 현재: 구현(0% 공내역 W코드 · 울진 대조) - [x] F6-20 적용제외 공정 선택(레벨 9단계) — 27번 §2.3 · 현재: 구현(REA 32 적용제외 = 계표시 머리 T1~T9 · 기본 체크 ITM_TYP 11·21·31·41·51·71·72) - [x] F6-21 예상적용율 찾기(목표금액 역산)·미리계산 — 27번 §2.3 · 현재: 구현(목표금액 → 적용율 87.745% 역산 · 미리계산) - [x] F6-22 설계 → 계약자료 변환등록(당초/변경·레벨) — wM_Conv_Mode · 현재: 구현(소광 원설계 → 변환등록·저장 = 실제 울진 계약 STC 일치(test_stmate_stage_register)) - [x] F6-23 낙찰율 열(NAGCD)·계약단가 저장 — 26번 §4 · 현재: 구현(새 코드 낙찰율·단가·산근 글·구성표 저장 = 울진 계약 STC 일치(test_stmate_stage_register)) - [x] F6-24 계약 원가계산(계약 제잡비) — 27번 · 현재: 구현(계약 원가계산 · 울진 총공사비 333,315,000원 일치 · 저장 계약 공사 대조 단추는 원본에 없어 걷음) - [x] F6-25 계약·실행내역서(0623·0624) — PM_Nae_Cont · 현재: 구현(REA MCP 32 §8 계약·실행내역서 0623·0624 = 설계 내역서 인쇄 모듈을 지금 공사에 그대로 · 기본 내역서 열(0623 두 모듈 고르는 기준 미확인)) - [x] F6-26 실행예산 작업(실행단가·실행수량) — wBoq 실행예산작업 · 현재: 구현(REA 32 할증 0x511fa8 + 행 금액 0x456504 = 설계와 같은 공용 행 계산 엔진(test_stmate_stage_exec_rea)) - [x] F6-27 중기 실행단가 계산(절사 6택·차액 보정 순서) — wM_Boq_ExecX · 현재: 구현(REA 32 0x4da7a8 합계 = 사용료÷시간 1원 절사 · 최초단가 비례 · 끝전 OPTIMIZ · 차액 = OPTNM 첫 성분(test_stmate_stage_exec_rea)) - [x] F6-28 실행예산서 Ⅰ·Ⅱ(0673·0674) — SET_REP · 현재: 구현(REA MCP 32 §8 실행예산서 Ⅰ = 모든 줄(실행수량 0 제외 설정) · Ⅱ = 계표시·RS=1 줄 · 열 구성(test_stmate_stage_exec_rea)) - [x] F6-29 기성 회차 전회·금회·누계·비율 — wM_KanJub_K rGrd_Jab · 현재: 구현(REA 33 칸 1 계약·2 누계·3 전회·4 금회 · 회차 이월(전회←누계·금회 0) · 누계 금액 따로 셈(test_stmate_stage_progress_rea)) - [x] F6-30 공종별 기성수량·잔량 입력 — 27번 §3.2 · 현재: 구현(REA 33 0x4f4bbd 전회+금회 > 계약이면 금회 = 계약−전회 · 누계 = 전회+금회) - [x] F6-31 기성 제잡비(금회직접×계약제잡비율) — 27번 §3.1 · 현재: 구현(REA 33 0x4cdec0 금회 = 버림(계약잡비율 × 금회 직접비) · 마지막 회차 = 도급 − 전회) - [x] F6-32 기성 부가세 4택·절사·이윤 직접입력 — 27번 §3.3 · 현재: 구현(REA 33 0x4ce2c8 부가세 4택 · 공급가액/총공사비 절사 택일 · 차액 이윤 차감 · 1~10원 남으면 이윤 1원씩) - [x] F6-33 기성 집계수준 필터(소계~총합계) — wM_KanJub_K rd_Filter · 현재: 구현(REA 33 집계수준 = 고른 순번+1 이상 머리 행) - [x] F6-34 기성부분총괄·기성내역서·사정·기성율(0632~0635) — Prn_Jab · 현재: 구현(REA 39 — 0633·0634 = Prn_Nae_K2 칸 '1342' · 0634 비고 머리 「사 정」(갈래 4 · 사정 금액 추측 걷음) · 0635 = K3 비율 QTYn÷QTY1×100) - [x] F6-35 기성검사조서(을·병)·기성부분수량조서(0636~0638) — Prn_Jab · 현재: 구현(REA 39 — 0638 기성% QTY2÷QTY1 · 잔량 QTY1−QTY2 · 0636·0637 = C3 기성고 T_AMT3·4·2÷T_AMT1 · 기성금액 T_AMT2 · 을 = 머리 줄만 · 도급자·대표 원천 없음) - [x] F6-36 준공조서(을·병)(0646·0647) — SET_REP · 현재: 구현(REA 39 — 준공 계약·준공금액 = T_AMT+인쇄 칸 배열 첫 값(기성 4·계약 1 · 0x479395) · 누계 이관 가정 걷음 · PCLASS 2·3·7 칸 기본값 미확인) --- - 범위 밖(합계 제외): 하드웨어 동글(SX32W Sentinel) · 시리얼 인증(ST_BdSN) · 라이선스 서버 접속(wM_Host) · 유지보수 연장·A/S 신청(wM_Req_ON·wM_Req_AS) · 온라인 업데이트·패치·다운로드 센터(ST_U_ADL·STmexe·wM_Stmate_APatch·wM_Down_Center) - 재현 불가(합계 제외): 원본 암호화 자료 — BDQTY.DBF 글자 칸(명칭·규격)·차수 2~4 수량 일부 · SYSINFO.DBF · EQSYNC.DBF · 기준단가 BSC/CSTA(자재 5.7만·노임·중기·표준시장) - 기능 밖 결함(합계 제외): app.js 718줄 · 서버 0.0.0.0·CORS 전부 허용·임의 경로 읽기(/api/load·/work_dbf 정적 노출)