fix(827-1): 기계 창 [확인] 직후 금액 즉시 — 확인 길이 그 식 셈 기록을 줌
- 서버 확인 길(my-machines/draft) = 화면이 정한 표지로 그 식 한 줄 셈 기록(요소 · 표 · 식 문서) 돌려줌 - 화면은 기록을 계산기 캐시에 합침 → 서버 왕복 전 0 원 깜빡임 없음(미리 셈 값과 같음) - 기계 창 목록 열 이름 「구분」 · 폭 조정 - 시험 test_827_1 ⑦ 셈 기록 확인 더함 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
* ========================================================================== */
|
||||
|
||||
import type { MachinePick, MachineValues } from "@ui/ui_template_machine_form";
|
||||
import type { DocRecord } from "../common_util/common_util_formula_doc_cache";
|
||||
import { call } from "./M02_MasterTemplete_Api_Fetch";
|
||||
import type { M01Element } from "./M02_MasterTemplete_Find_Pick";
|
||||
|
||||
@@ -155,20 +156,26 @@ export const mineElement = (
|
||||
원문번호: row.원문번호,
|
||||
});
|
||||
|
||||
/** 기계 창 [확인](827-1) — 초안 몸 검사 · 셈 꼴 값 · 시간당(식 키) · 쓰기 없음 */
|
||||
/** 기계 창 [확인](827-1) — 초안 몸 검사 · 셈 꼴 값 · 시간당(식 키) · 그 식 셈 기록(계산기 캐시) · 쓰기 없음 */
|
||||
export interface DraftCheck {
|
||||
줄: MyMachine;
|
||||
셈값: Record<string, unknown>;
|
||||
시간당: MyHourly;
|
||||
연결: DocRecord;
|
||||
}
|
||||
export const checkDraft = (
|
||||
owner: string | null,
|
||||
body: MyMachineBody,
|
||||
target: { 키?: string; 본뜬?: string },
|
||||
target: { 표지: string; 키?: string; 본뜬?: string },
|
||||
): Promise<DraftCheck> =>
|
||||
call(at(owner, "/draft"), {
|
||||
method: "POST",
|
||||
body: JSON.stringify({ 줄: body, 키: target.키 ?? null, 본뜬: target.본뜬 ?? null }),
|
||||
body: JSON.stringify({
|
||||
줄: body,
|
||||
표지: target.표지,
|
||||
키: target.키 ?? null,
|
||||
본뜬: target.본뜬 ?? null,
|
||||
}),
|
||||
});
|
||||
|
||||
/** M01 기계 줄 값 + 시간당(기계 창 목록 · 양식 · 60 까지) */
|
||||
|
||||
@@ -64,16 +64,40 @@ def _row(item: dict, have: dict[str, dict]) -> dict:
|
||||
|
||||
|
||||
def check(item: Any) -> dict[str, Any]:
|
||||
"""기계 창 [확인] — {줄, 셈값(셈 꼴 값 칸), 시간당(식 키)} · 쓰기 없음 · 틀리면 400."""
|
||||
"""기계 창 [확인] — {줄, 셈값(셈 꼴 값 칸), 시간당(식 키), 연결(그 식 한 줄 셈 기록 = 화면 계산기 캐시)} ·
|
||||
쓰기 없음 · 틀리면 400 · `표지` = 화면이 정한 초안 표지(기록 요소 열쇠가 줄과 같게)."""
|
||||
item = item if isinstance(item, dict) else {}
|
||||
row = _row({**item, "표지": item.get("표지") or "EQP초안-0"}, _have())
|
||||
eng = mym.engine(row)
|
||||
token = mym.DRAFT.set((eng,))
|
||||
try:
|
||||
hour = mym.hourly(eng, mym.whole())
|
||||
whole = mym.whole()
|
||||
hour = mym.hourly(eng, whole)
|
||||
rec = _record(whole, hour.get("로직"), row["원문번호"]) if hour.get("ok") else {}
|
||||
finally:
|
||||
mym.DRAFT.reset(token)
|
||||
return {"줄": row, "셈값": prices.to_json(eng["값"]), "시간당": hour}
|
||||
out = {"줄": row, "셈값": prices.to_json(eng["값"]), "시간당": hour, "연결": rec}
|
||||
return json.loads(json.dumps(out, ensure_ascii=False, default=str))
|
||||
|
||||
|
||||
def _record(whole: Any, logic: Any, no: str) -> dict:
|
||||
"""그 식을 기계 하나로 부르는 한 줄 문서의 셈 기록(요소 · 표 · 문서) — 화면이 [확인] 직후 바로 셈."""
|
||||
import master_doc_record as mr
|
||||
|
||||
from M02_MasterTemplete import M02_Doc_Copy as dc
|
||||
|
||||
var = {"기호": "P", "아래": "기계", "위": "", "이름": "기계", "단위": "",
|
||||
"연결": {"갈래": "단가산출", "키": logic, "입력": {"기계": f"'{no}'"}}} # fmt: skip
|
||||
line = {"이름": "기계", "단위": "hr", "비목": "묶음", "수량": "1", "단가": "P_기계"}
|
||||
one = {"꼴": "수식문서", "판": 1, "키": "_기계창", "이름": "기계", "결과단위": "원",
|
||||
"변수": [var], "식": [], "금액": [line]} # fmt: skip
|
||||
rec = mr.Rec(dc.ml.Links(whole, dc.closure(whole, [str(logic)])))
|
||||
try:
|
||||
rec.prefetch(one)
|
||||
dc.mc.calc(one, rec)
|
||||
except dc._ERR:
|
||||
pass
|
||||
return dc.ml._norm(rec.out())
|
||||
|
||||
|
||||
@contextmanager
|
||||
|
||||
@@ -28,6 +28,7 @@ class MachineBody(BaseModel):
|
||||
줄: dict[str, Any] | None = None
|
||||
본뜬: str | None = None
|
||||
키: str | None = None # 초안 확인(827-1) — 고칠 내 기계
|
||||
표지: str | None = None # 초안 확인(827-1) — 화면이 정한 표지(셈 기록 열쇠)
|
||||
|
||||
|
||||
def _folder(session: Session, layer: str, owner: str | None, write: bool = False):
|
||||
|
||||
@@ -53,6 +53,7 @@ const TEXT = {
|
||||
View_Note: "보기 · 쓰는 곳 · 지우기만 — 만들기 · 고치기는 단가산출의 기계 줄에서",
|
||||
// 단가산출 기계 창(827-1)
|
||||
Win_Title: "기계",
|
||||
Win_Kind: "구분",
|
||||
Win_Now: "지금 이 줄",
|
||||
Win_Draft: "초안 — 단가산출 [저장] 때 내 기계로",
|
||||
Win_M01: "M01 기계",
|
||||
|
||||
Reference in New Issue
Block a user