/* ============================================================================= * M02_CF_Eval.ts * 단가산출 다이어그램 계산 · 검사 — 함수 상자는 차례대로 시트를 우리 스프레드시트 엔진으로 셈 * (받는 칸에 앞 값을 넣음) · 출력 상자를 비용 종류별로 모아 원가 · DOM 없음 * ========================================================================== */ import type { CfLogic } from "./M02_CF_Model"; /** 알약 값 — 수 · 글 · 참거짓 · 빈 값 · 표(머리 줄 포함 칸 덩어리) */ export type CfValue = number | string | boolean | null | (number | string | null)[][]; /** 입력 값 묶음 — 상자 id → 알약 이름 → 값(입력 상자 요소 값 · 표 · 변수 값 · 함수 상자 변수 값) */ export type CfValues = Record>; export interface CfEvalResult { /** 상자 id → 내보내는 알약 이름 → 값 */ ports: Record>; /** 출력 상자 id → 값 */ outputs: Record; cost: { 노무비: number; 재료비: number; 경비: number; /** 비용 아닌 출력(값) — 출력 상자 이름 → 값 */ 값들: Record; 계: number; }; /** 쉬운 말 */ errors: string[]; } const notReady = (): never => { throw new Error("준비 중"); }; /** 화면 계산 */ export function evalLogic(_lg: CfLogic, _values: CfValues = {}): CfEvalResult { return notReady(); } /** 검사 — 빈 받는 자리 · 출력 하나 아님 · 순환 · 오류(쉬운 말 목록) */ export function checkLogic(_lg: CfLogic, _values: CfValues = {}): string[] { return notReady(); }