refactor(M02): 재료산출 시트 지움 — 종류 material · 재료번 SM · 좌측 줄 · 집계표 「재료산출」 줄 · 카드 · 전체 편집 · 복사 길 · 프로젝트 복사본 「재료」 · 고르기 모달 · 시스템 층 · fixture · 시험

- 새 프로젝트 씨앗(KINDS)에서도 빠짐 · 새 열은 구조물 도면 · 면적산출만 만듦
- storage 층(회사 · 개인 · 프로젝트) material/ 파일은 지우지 않음(읽기만 끊음)
- 장부 재료번 칸은 다음 집계표 [저장] 때 빠짐

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPJGtfXo6GMbcpiboQC4uK
This commit is contained in:
2026-10-04 17:56:49 +09:00
co-authored by Claude Opus 5.5
parent 54ce67ceb8
commit 61d2ed5997
53 changed files with 198 additions and 1811 deletions
+3 -5
View File
@@ -15,7 +15,7 @@ export interface SummaryItem {
}
/** 항목 줄이 가리키는 키 칸 — 서버가 `names` 로 이름을 함께 주면 이름을 보임 */
export type NameField = "일위대가" | "도번" | "면적번" | "재료번";
export type NameField = "일위대가" | "도번" | "면적번";
/** 목록 한 줄(21-1) — 서버는 `?all=1` 을 `[{layer, owner, items}]` 로 주고, 줄마다 `layer` · `owner` 를 붙여 폄.
* `열` 은 집계표 열 id(rv …) — 보이는 이름은 종류 · 분류를 이은 `itemName`. */
@@ -30,7 +30,6 @@ export interface PickerRow {
일위대가?: string;
도번?: string;
면적번?: string;
재료번?: string;
/** 폴더 이름 배열(깊이 자유 · 26-1) — 없으면 종류 · 분류1~3 중 있는 것으로 이음 */
경로?: string[] | null;
/** 위 키 칸의 이름(21-9 서버가 더함) — 없으면 키를 작은 글로 보임 */
@@ -167,7 +166,7 @@ const ancestorIds = (layer: PickerLayer, path: string[]): string[] => [
export const pathIds = (row: PickerRow, _labels?: TreeLabels): string[] =>
ancestorIds(layerOf(row), pathOf(row).slice(0, -1));
export type FolderKind = "drawing" | "area" | "material" | "unitPrice";
export type FolderKind = "drawing" | "area" | "unitPrice";
export interface FolderLine {
kind: FolderKind;
@@ -180,11 +179,10 @@ export interface FolderLine {
const FOLDER_FIELDS: readonly [FolderKind, NameField][] = [
["drawing", "도번"],
["area", "면적번"],
["material", "재료번"],
["unitPrice", "일위대가"],
];
/** 오른쪽 폴더 모양 — 네 줄 모두 서버의 키 칸 + `names` 의 이름 */
/** 오른쪽 폴더 모양 — 세 줄 모두 서버의 키 칸 + `names` 의 이름 */
export function folderLines(row: PickerRow): FolderLine[] {
return FOLDER_FIELDS.map(([kind, field]) => ({
kind,