/* ============================================================================= * 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; } export function logicHeads(rows: T[], label: (n: number) => string): T[] { const axes = new Map>(); 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) : "" }; }); }