/* ============================================================================= * M01_EasyCalc_Api.ts * 쉬운 단가산출 Api — 서버 길 감싸기(목록 · 열기 + 자동값 · 시험 계산 뒤에서 · 새로 · 본뜨기 · * 고치기 · 지우기 · 쓰는 곳) · 403 · 409 · 422 를 쉬운 말로 · 기계 기종 → 부를 기계경비 로직 · 넘길 값 * 모양은 `docs/raw/M01_쉬운단가/설계.md` 3절 그대로 · 쓰기는 `/logic/*` 만(`/save` 안 씀) * ========================================================================== */ import type { CalcAnswer, LogicInput, LogicRow } from "../M01_MasterData_UI_Logic_Api"; /** 목록 한 줄 */ export interface EasyListItem { key: string; name: string; /** 품셈 기본(읽기만) · false = 내가 만든 것 */ isBase: boolean; /** 화면 글 「품셈 기본」 · 「내가 만든 것」 */ owner: string; /** 결과단위 「원/㎡」 */ resultUnit: string; /** 쉬운 길로 열 수 있나 — 돈 아닌 로직(작업량 등)은 false */ canOpen: boolean; /** 못 여는 까닭 쉬운 말 · 열 수 있으면 null */ whyNot: string | null; /** 어디 것인지 — 「산림품셈 13장 구조물」 · 내가 만든 것은 장만 */ where: string; } /** 열기 답 — `trial` = 설계 때 정하는 값의 견본(자동값) */ export interface EasyOpened { row: LogicRow; version: string; isBase: boolean; trial: Record; } /** 새로 · 본뜨기 · 고치기 답 */ export interface EasySaved { key: string; version: string; row: LogicRow; } /** 쓰는 곳 한 줄 — 일위대가 조합 · 이 로직을 부르는 다른 로직 */ export interface EasyUse { kind: "combo" | "logic"; key: string; name: string; } /** 기계 고르기 목록 한 줄 */ export interface EasyMachine { 분류번호: string; 이름: string; 규격: string; /** 줄 단위(「시간」) */ 단위: string; } /** 기종 → 호표 「요소」(기계경비 로직 부름 글) · 그 로직이 받는 설계 때 정하는 값 */ export interface EasyMachineElement { element: string; needInputs: LogicInput[]; } const notReady = (): never => { throw new Error("준비 중"); }; export async function listEasy(_q: string): Promise { return notReady(); } export async function openEasy(_key: string): Promise { return notReady(); } /** 0.3초 뒤 서버 시험 계산 · 최신 응답만 `onDone` · 멈춤 · 실패는 `plain` 쉬운 말 */ export function calcLater( _row: LogicRow, _trial: Record, _onDone: (ans: CalcAnswer | null, plain: string | null) => void, ): void { notReady(); } export async function newEasy(_row: LogicRow): Promise { return notReady(); } export async function copyEasy(_key: string): Promise { return notReady(); } export async function editEasy(_key: string, _version: string, _row: LogicRow): Promise { return notReady(); } export async function deleteEasy(_key: string, _version: string): Promise<{ version: string }> { return notReady(); } export async function usesOf(_key: string): Promise { return notReady(); } export async function listMachines(_q: string): Promise { return notReady(); } export async function machineElement(_기종: string): Promise { return notReady(); } export function plainError(_e: unknown): string { return notReady(); }