feat(m02-cf): InputPanel 완성 — 서버 Api 최종 꼴(ref · Model 사용자 요소)에 맞춤 · 환율 유가전력 알약 이름

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ACSGaHdLgnkEkoA4LDtMU
This commit is contained in:
2026-10-01 16:13:08 +09:00
co-authored by Claude Sonnet 5.5
parent 2cecd38f35
commit e2dfbe687b
3 changed files with 99 additions and 46 deletions
@@ -80,7 +80,9 @@ export function elementOf(group: CfGroup, row: M01Row, field = "가격"): CfElem
spec,
unit: text(row["단위"]) || "-",
};
const named = [text(row["이름"]), spec].filter(Boolean).join(" "); // 알약 이름 = 이름 + 규격(규격만 다른 요소가 부딪히지 않게)
// 환율 · 유가전력의 규격은 날짜라 알약 이름에 안 넣음(날짜가 바뀌어도 이름이 같게) — 유가전력은 상세구분(지역)으로 가름
const tail = group === "환율" ? "" : group === "유가전력" ? text(row["상세구분"]) : spec;
const named = [text(row["이름"]), tail].filter(Boolean).join(" "); // 알약 이름 = 이름 + 규격(규격만 다른 요소가 부딪히지 않게)
if (group === "기계")
return {
ref: `${key}${MACHINE_SEP}${field}`,
@@ -108,12 +110,11 @@ export function pillNames(box: CfBox): string[] {
/** 입력 값 물음 — Api `cfValues` 한 줄(id 는 부르는 쪽이 정함) */
export function queryOf(group: CfGroup, ref: string): Record<string, unknown> {
if (ref.startsWith(USER_PREFIX)) return { group: "사용자", key: ref };
if (group === "기계") {
if (group === "기계" && !ref.startsWith(USER_PREFIX)) {
const [key, field] = ref.split(MACHINE_SEP);
return { group, key, field: field || "가격" };
return { group, ref: key, field: field || "가격" };
}
return { group, key: ref };
return { group, ref };
}
/** 상자 단위 — 모두 같으면 그 단위 · 여럿이거나 없으면 「-」 */