7.0 KiB
7.0 KiB
STMATE w 8.0 테스트 앱 계획서 및 검증 아카이브
이 문서는 tools/stmate-test/ 폴더 내 독립 웹앱의 개발 계획 및 검증 이력을 자체 보관·관리하는 문서입니다.
1. 개요 및 요구사항
- 목적: 경쟁사 데스크톱 프로그램 STMATE(w 8.0, 경영정보(주))의 95% 이상 복제 수준 달성 및 독립 웹앱 구축
- 작업 경로:
tools/stmate-test/ - 구동 서버:
http://127.0.0.1:8095(FastAPI + DBF/SMT/STC/JB_R 직결 엔진) - 외부 연동: 로그인 및 공용 DB 의존 없음, 실무 프로젝트 DBF/SMT/STC 100% 무손실 연동
2. 세부 개발 및 검증 항목
-
화면 및 메뉴 체계 복제 (TWM_STMATE_START_8X)
- 상단 5대 메뉴(
Act_PrjList,Act_Init,Act_BoqEdit,Act_KanJub,Act_KanRate,Act_StageEdit,Act_Print) - 8버튼 메인 툴바 및 하단 순공사비·간접비·도급액·총공사비 집계바
- 9개 메인 작업 화면:
wPrjList: 공사목록표 및 하단BOQ11.DBF미리보기wBoq: 계층 내역서(T1..T6/E1..E6/C*), 공종번호 자동입력(wITNum), 내역할증(wBoqRate), 단수보정(wM_Rate), 일위풀기(wExpnd), 수량산출 연결(wQtyList), 내역보관함 (1)(2)(3)wM_Set_Sys: 환경설정 (환율, ECD 소수위, 계산식, 환산식1/8*16/12*25/20)wM_JabPum: 단가목록표 (5대 가격지 비교wM_Boxa, 기준단가 비율조정wM_Edt_Hal, 표준 카탈로그 브라우저)wM_Edit_iLWi: 일위대가·단가산출 수식 편집기 (COSTN.SMT64B 블록 전개식, 표준 카탈로그 894코드·350레시피·21특수산식)wM_KanJub: 제잡비 계산서 (4탭T/S/TA/SA, 16대 콤보박스 및 이윤 끝전조정)wM_KAN_RATE: 원가계산기준 제비율표 (RATE_R/RA/M/B.DBF50×35 및ST_BSC/*.JB_R파일 직결)wStage: 설계 후속 단계 (wM_Mk_Cont계약내역,wM_Boq_ExecX실행내역,wM_KanJub_K기성내역,REVISION설계변경 증감대비표)PM_Prt: 30종 보고서 인쇄 미리보기 및 6시트 엑셀(.xls), 조달청<T3_C3B>XML, JDL 내보내기
- 상단 5대 메뉴(
-
100% 범용
COSTN.SMT수식 인터프리터 (smt_engine.js)- 봉화군 2024
COSTN.SMT전수 65/65건(100%) 1원 오차 없이 일치 검증:;;헤더 변수 분리 파싱[A],[D]'%',N'%'(N \ge 1 \Rightarrow N \times 0.01,N < 1 \Rightarrow N)&PA01:M&,&RA01:M&,&PS_M&,&RC_S:S&라벨·구간·누적 소계 처리&L00020&기구손료 인건비 누적소계 자동참조(-=)소계제외 블록,(=)/(==)/(===)구간합산- 운반비(
운반) 경비(S) 일괄 귀속 규칙
- 봉화군 2024
-
5단 연쇄 재계산 엔진 (
cascadeRecalculateAll/[계산완료])- 기초단가(
L*/M*/S*) 변경 시 실시간 연쇄 전파:- 중기사용료(
X*25/25건 100% 일치, 운전사 노임 좌→우1/8*16/12*25/20시간당 환산) - 단가산출(
D*65/65건 100% 일치) - 일위대가(
B*45/45건 100% 일치, 공구손료·잡품재료비의 %/노무비의 %구분) - 내역서(
BOQ11.DBF141행) - 원가계산서(
PRJLST.DBF/.SMT)
- 중기사용료(
- 기초단가(
-
다중 슬롯 DBF 양방향 저장 (
/api/save)- 당초설계(
*1), 설계변경(*2), 계약내역(*3) 멀티 슬롯 컬럼을COSTN.DBF,BOQ11.DBF,PRJLST.DBF,PRJLST.SMT,COSTN.SMT및.STC아카이브에 무손실 저장
- 당초설계(
-
보고서 엑셀 내보내기 원본 STMATE 1:1 복제 (
excel_builder.py+/api/export-xlsx)- 원본 STMATE 엑셀 산출물 분석 기반 11개 시트 구성 및 네이티브 하이퍼링크/수식 구현:
〓 목 차 〓: 전 시트 바로가기=HYPERLINK("#'시트명'!A1", "시트명 →")수식 적용- 전 시트 상단 우측: 목차 복귀
=HYPERLINK("#'〓 목 차 〓'!B2", "목차 →")수식 적용 설계내역서↔단가산출근거목록표/일위대가목록표간 셀 참조 수식 및=ROUNDDOWN(수량*단가, 0)수식화- 원가계산서 비목별 연동 수식 및 11개 시트 스타일링 (헤더 폰트, 테두리, 열 너비 자동 조정)
- 백엔드 생성기(
excel_builder.py, 452줄) + 서버 엔드포인트(server.py, 630줄) + UI 연동(app.js, 689줄) - 전 파일 700줄 제한 엄격 준수 및 ruff/prettier 포맷팅 적용
- 원본 STMATE 엑셀 산출물 분석 기반 11개 시트 구성 및 네이티브 하이퍼링크/수식 구현:
3. 검증 결과 기록
자체 검증 (2026-11-05)
- 700줄 제한 및 포맷터: 소스코드 10개 파일 전체 700줄 이하 준수 및 ruff/prettier 포맷 완료.
- 브라우저 결함 수정 5건:
wBoq상단 헤더 관급자재 합계(govMatTotal: govRawTotal) 누락 수정 (143,554,309원표시)wM_KanJub및PM_Prt산정기초 금액 열(base: baseAmt) 표시wStage설계변경 증감대비표 런타임 에러 수정wM_Edit_iLWiD00016굴삭기Q산식 중간 변수 반올림(f=0.85 \rightarrow Q=22.85) 적용으로 DB 단가(3,825원) 일치wExpnd모달 내역서 전개 삽입 연동
자체 검증 (2026-11-07 · 95%+ 완전 복제 고도화)
- Playwright 브라우저 엔진 전수 검증 통과 (
verify_95_fidelity.py):COSTN.SMT65/65건 100% 일치- 중기사용료
X*25/25건 100% 일치 - 단가산출
D*65/65건 100% 일치 - 일위대가
B*45/45건 100% 일치 - 봉화군 2024 산림유역관리사업 기준:
- 직접공사비(
TCOST1):781,283,415원 - 도급액(
FINAL_SUPPLY):1,270,728,000원 - 관급자재대:
143,555,000원 - 총공사비(
COSTW1):1,414,283,000원(1원 오차 없이 100% 일치)
- 직접공사비(
- 동적 연쇄 전파 확인: 경유
M00018+100원 인상 시X0000665,015→65,627원,D000163,825→3,878원, 총공사비1,414,283,000→1,423,700,000원 정상 반영 - 6시트 엑셀 워크북(
237,840바이트) 및 조달청 XML(52,252바이트) 정상 생성 - 9개 화면 전 과정 콘솔/페이지 런타임 에러
0건
자체 검증 (2026-11-07 · 엑셀 원본 STMATE 1:1 하이퍼링크/수식 고도화)
- 11개 시트 엑셀 내보내기 검증 완료:
〓 목 차 〓,공사원가계산서,단가산출근거목록표,일위대가목록표,설계내역서,중기사용료,단가산출근거,일위대가표,재료비목록표,노무비목록표,경비목록표총 11개 시트 정상 생성.- 목차의 각 항목별 바로가기
=HYPERLINK("#'시트명'!A1", "시트명 →")및 세부 시트의 목차 복귀=HYPERLINK("#'〓 목 차 〓'!B2", "목차 →")네이티브 엑셀 하이퍼링크 수식 동작 확인. - 내역서 단가 참조 수식(
=단가산출근거목록표!F{row},=일위대가목록표!F{row}) 및 산출금액 내림 함수(=ROUNDDOWN(...)) 정상 반영. - 서버 상시 구동 상태에서
POST /api/export-xlsx엔드포인트 200 OK 응답 확인. - 전체 소스코드 파일 700줄 이하 준수 (excel_builder.py: 452줄, server.py: 630줄, app.js: 689줄 등) 및 포맷터 완료.