From f93ce9f6762e45f2e034dfb021cd9c9a9c9238fa Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 1 Oct 2026 11:59:33 +0900 Subject: [PATCH] =?UTF-8?q?fix(M01):=20=EA=B8=B0=EB=8C=80=EA=B0=92=20?= =?UTF-8?q?=EC=8B=9C=ED=97=98=ED=91=9C=EA=B0=80=20LB=20=EB=B0=94=EB=A1=9C?= =?UTF-8?q?=20=EA=B3=84=EC=82=B0(lbCalcNow)=EC=9D=84=20=EC=94=80=20?= =?UTF-8?q?=E2=80=94=20=ED=99=94=EB=A9=B4=20=EC=98=88=EC=8B=9C=EA=B0=92=20?= =?UTF-8?q?=EA=B3=84=EC=82=B0=EA=B3=BC=20=EC=95=88=20=EB=B6=80=EB=94=AA?= =?UTF-8?q?=ED=9E=98(PLAN=2035-2a)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 멈춤 까닭은 Api 쉬운 말로 - 시험 test_m01_lb_check.py 9 통과 · LogicBuilder 전부 검사 초록 - ORCA GF000219 시험표 세 줄: 계 79,279.668 통과 · 틀린 기대값 실패 · 해당 없음 조합 계 0 실패 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Ly2oHAaTDYRjcniAmHR81z --- M01_MasterData/LogicBuilder/M01_LB_Check.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/M01_MasterData/LogicBuilder/M01_LB_Check.ts b/M01_MasterData/LogicBuilder/M01_LB_Check.ts index 075c8a9f4..95d28fc75 100644 --- a/M01_MasterData/LogicBuilder/M01_LB_Check.ts +++ b/M01_MasterData/LogicBuilder/M01_LB_Check.ts @@ -12,7 +12,7 @@ * ========================================================================== */ import type { CalcAnswer, LogicRow } from "../M01_MasterData_UI_Logic_Api"; -import { lbCalcLater, type LbTables } from "./M01_LB_Api"; +import { lbCalcNow, type LbTables } from "./M01_LB_Api"; import { writeLogic, type LbLogic, type LbLookup } from "./M01_LB_Blocks"; type Cell = string | number | boolean | null | [number | null, number | null]; @@ -212,20 +212,20 @@ type CalcFn = ( tables: LbTables, ) => Promise; -/** LB Api 계산을 한 번 기다림 — 차례로 부르므로 「최신만」 에 안 걸림 */ -const calcOnce: CalcFn = (row, inputs, tables) => - new Promise((resolve, reject) => - lbCalcLater(row, inputs, tables, (ans, plain) => - ans ? resolve(ans) : reject(new Error(plain ?? "")), - ), - ); +/** LB Api 바로 계산 — 화면 예시값 계산(0.3초 · 최신만)과 안 부딪힘 · 멈춤 까닭은 쉬운 말로 */ +const calcNow: CalcFn = async (row, inputs, tables) => { + let plain = ""; + const ans = await lbCalcNow(row, inputs, tables, (p) => (plain = p)); + if (!ans) throw new Error(plain); + return ans.ok ? ans : { ok: false, reason: plain || ans.reason }; +}; /** 줄마다 시험 계산(차례로 · 하나씩) — 로직은 블록을 글로 되돌린 줄 · `calc` 는 시험에서 바꿔 끼움 */ export async function runExpect( lb: LbLogic, tables: LbTables, rows: ExpectRow[], - calc: CalcFn = calcOnce, + calc: CalcFn = calcNow, ): Promise { const row = writeLogic(lb); const out: ExpectResult[] = [];