feat(stmate-test): 보고서·제잡비·식언어·수량산출·화면 묶음 합침 · 재계산 후 저장 무변경
- 보고서: 원본 STMATE 엑셀과 셀 대조(목록표·자재단가대비·중기·일위대가·산근 목록·설계내역서·원가계산서) · 조달청 XML 공식 XSD 검증 · PM_Prt 화면 - 제잡비: 원본 계산 순서 4형식(T/S/TA/SA) · 실무 7건 저장 결과키 전수 1원 · 요율표 조회 · 선택지 계산 · 제잡비·제비율 화면 - 식언어·수량: 함수·조건식·금액변수·문법 검사·수량변수·QCODE · 산근·구성·중기공식 편집 화면 · 순환 알림 - 화면: 원본 메뉴 체계·단축키 · 설계내역서 편집(행 넣기·지우기·이동·레벨·보관함) · 초기값 · 단가목록표 - 저장: 초기값(Start8x.Ini) 바뀐 키 저장 · 노임 환산 직종 = 초기값 CONLD · 산근·구성 결과에 적용단가 칸 채우지 않음(원본 0) - DBF 글 칸 앞 빈칸 보존 · 시험 도우미 표준입력 utf8(한글 조각 깨짐 원인) - 실무 5건 재계산 후 저장 = 바뀐 칸 0 · 시험 332건 통과 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -389,6 +389,8 @@ class SaveDbfReq(BaseModel):
|
||||
smt_updates: dict = {}
|
||||
costn_memo_updates: dict[str, str] = {}
|
||||
boq_table: str = ""
|
||||
start_ini: dict = {}
|
||||
prjlst_rows: list = []
|
||||
|
||||
|
||||
@app.get("/api/sources")
|
||||
@@ -434,6 +436,13 @@ def api_load(req: LoadReq):
|
||||
sim_state = convert_dbf_to_sim_state(
|
||||
costn_rows, boq_rows, smt_kv, prj_rows[0] if prj_rows else {}, costn_memos
|
||||
)
|
||||
# 노임 환산 직종·환산식 = Start8x.Ini CONLD · RXXNM
|
||||
ini = parse_ini_bytes(files.get("START8X.INI") or files.get("STINI.MEM") or b"")
|
||||
conld = ini.get("CONLD", "")
|
||||
sim_state["sysConfig"]["condCodes"] = ", ".join(
|
||||
c for c in (conld[i : i + 6].strip() for i in range(0, len(conld), 6)) if c
|
||||
)
|
||||
sim_state["sysConfig"]["rxFormula"] = ini.get("RXXNM") or sim_state["sysConfig"]["rxFormula"]
|
||||
return {
|
||||
"source_path": req.source_path,
|
||||
"boq_table_name": boq_name,
|
||||
@@ -450,7 +459,7 @@ def api_load(req: LoadReq):
|
||||
"rate_tables": rate_tables,
|
||||
"set_rep_rows": set_rep_rows,
|
||||
"bdqty_rows": decode_bdqty(files.get("BDQTY.DBF", b"")),
|
||||
"start_ini": parse_ini_bytes(files.get("START8X.INI") or files.get("STINI.MEM") or b""),
|
||||
"start_ini": ini,
|
||||
"sim_state": sim_state,
|
||||
**extra_tables(files),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user