Files
Aislo/M02_MasterTemplete/logic/M02_Find_Heads.ts
T
eomsangdonandClaude Opus 5.5 76ac1c499e feat(727-1): 고르기 창 기초 = 로직마다 한 줄 · [기본 로직 선택] 단추 걷음 · 첫 기초 = 바탕
- 기준 목록 옵션 줄(바꿈) 뺀 바탕 줄만 · 규격 칸 = 「옵션 N」(새 순수 함수 logic/M02_Find_Heads.ts) — 찾아 넣기 창 · 옛 창(Labor_Pick) 같이 · 옵션 줄 골라도 옵션 버리던 흠 걷음 · 서버 목록 그대로
- 단가산출 상세 [항목 추가] 기초 = 바탕 비었으면 바탕(옛 단추 동작 · 단위 비거나 식이면 기초 결과단위) · logicOnly 걷음 · locale M02_SangeunPickBase 지움
- 낡은 시험 test_721_find_pick 721-1 · 721-2 = 단추 걷음 · logicOnly 없음으로 고침 · 새 시험 test_727_sk_base_add
- 기초 줄 1,461(옛 10,053) · GF000099 한 줄 「옵션 1」

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 10:14:07 +09:00

28 lines
1.2 KiB
TypeScript

/* =============================================================================
* M02_MasterTemplete/logic/M02_Find_Heads.ts
* 727-1 기준 목록(`/logic-lib/standard` · 로직 하나를 옵션 축마다 펼친 줄) → 기초마다 한 줄 —
* 바탕 줄(`바꿈` 빈 줄)만 · 규격 칸 = 옵션 축 수(`label(n)` · 없으면 빈칸) · 옵션은 넣은 뒤 고름.
* 쓰는 곳 = 찾아 넣기 창(`Find_Pick`) · 옛 창(`Labor_Pick`). 화면 · fetch 없음(`CLAUDE.md` 4장).
* ========================================================================== */
export interface HeadRow {
키: string;
규격: string;
바꿈: Record<string, string | number>;
}
export function logicHeads<T extends HeadRow>(rows: T[], label: (n: number) => string): T[] {
const axes = new Map<string, Set<string>>();
for (const r of rows)
for (const k of Object.keys(r.바꿈 ?? {})) {
if (!axes.has(r.키)) axes.set(r.키, new Set());
axes.get(r.키)!.add(k);
}
return rows
.filter((r) => !Object.keys(r.바꿈 ?? {}).length)
.map((r) => {
const n = axes.get(r.키)?.size ?? 0;
return { ...r, 규격: n ? label(n) : "" };
});
}