Files
Aislo/tools/est-test
..
2026-11-04 22:23:40 +09:00
2026-11-04 22:23:40 +09:00
2026-11-04 21:58:59 +09:00

EST 독립 웹앱

start.cmd를 실행한 뒤 http://127.0.0.1:5175 로 접속합니다. Node.js가 필요하며 별도 패키지 설치는 없습니다. Aislo 서버·로그인·DB와 연결하지 않습니다.

내역·일위대가·수식 단가산출·기계경비·기초 단가·원가계산서를 원본 테이블 구조로 편집합니다. 수량 연결, 설계변경 당초 보존, 낙찰률, 기성 회차와 사정 누계, 품목조정, 연차 배분, 소요 자원 전개 화면을 제공합니다. 실행 취소·다시 실행, 검색, 행 편집, JSON 저장·열기, CSV와 브라우저 인쇄를 사용할 수 있습니다.

저장은 이 폴더의 data/에 작업을 보관하고 .estweb.json 파일도 내려받습니다. 브라우저 임시 저장은 같은 탭에서 복원하는 용도입니다. ESTX는 읽기 전용으로 가져오며 원본 압축 파일과 바이너리를 보존합니다. 편집 결과를 원본 ESTX로 다시 쓰는 기능은 없습니다.

초기 자료는 기술정보 DB의 실제 REA 저장 샘플입니다. REA 샘플 대조에서 원본 저장값과 275개 계산 결과를 비교합니다. 테스트용 임의 요율을 원본 기본값으로 넣지 않습니다. 새 원가 서식의 요율은 사용자가 입력합니다.

검증과 남은 범위

기계 성분·합계 48건, 일위 41건, 내역 37건, 산출 결과 118건과 호표 8건, 원가 수식 23건을 대조합니다. 원가 도급액 고정 반복 차이 324 → -32 → 3 → 0을 재현합니다. 단가 갱신 후 전체 재계산과 반복 계산의 안정성도 시험합니다.

설치된 대용량 main.estx에서도 일위 52,530개, 기계 17,675개, 내역 205개, 산출식 결과 23,889개, 호표 목록 19,381개를 대조해 113,680개 모두 일치했습니다. 원본 파일은 읽기만 합니다. 같은 파일이 있는 환경에서는 이 대조를 자동 시험하며, 다른 환경에서는 저장소의 원본 발췌 행을 시험합니다. 원천 단가 전체 갱신 후 오류 0 및 반복 계산 값의 안정성도 확인했습니다.

원본 수량산출서 75개의 WPTools 글·결과 표지·위첨자를 읽어 편집하고 내역 수량에 연결합니다. 저장 수량 449개 중 446개가 재계산 결과와 일치합니다. 나머지 3개는 원본 글의 산식과 저장 수량이 서로 다릅니다(예: 0.35×1.3×220의 저장값 286, 계산값 100.1). 화면에 원본 저장 수량과 재계산 수량을 함께 표시합니다. 원본 수치를 맞추려고 산식을 변경하지 않았습니다.

실무 산불 내역 3건은 DBISAM의 재사용 BLOB 할당 공간을 논리 길이까지만 읽도록 수정한 뒤 저장 금액 8,312개 모두 일치했습니다. 다만 세 파일에 공통으로 닫히지 않은 괄호가 있는 원본 수식 한 건이 남아 해석 오류로 표시됩니다. 저장 금액 일치와 수식 오류 0을 구분합니다. 직접재료비 구획·관급 조달수수료·산업안전보건관리비 제외 옵션, 낙찰 단가를 유지한 동원 집계도 시험합니다. 자동계산을 끄면 열기·편집·저장 시 기존 금액을 보존합니다.

전체 원본 동등성은 아직 확보하지 못했습니다. 기성·물가변동·연차 등은 분석 분기와 합성 시나리오를 시험했으며 원본 업무 샘플 대조는 없습니다. 원본 화면 실행 비교는 못했습니다. 원본 페이지·도면 배치, CAD/VEC0650 편집, 원본 인쇄 서식, Excel/XML/JDL 변환, ESTX 수정 저장은 미구현입니다. 원본 대체품의 완료 판정으로 보지 않습니다.

검사:

./venv/Scripts/python.exe -m pytest resources/tester/test_est_rea_parity.py resources/tester/test_est_standalone.py -q

native-*.js가 현재 화면·계산 엔진이며 브라우저와 로컬 서버가 같은 계산 코드를 사용합니다. build_sample.py는 REA 자료에서 입력·기대값을 재생성합니다. 기존 app.js, calc.js, formula.js, workflows.js는 이전 데모의 회귀 시험용이며 현재 진입 화면에서 사용하지 않습니다.