Merge remote-tracking branches 'origin/main_laptop_1' and 'origin/sub_laptop_1' into sub_laptop_7

This commit is contained in:
2026-11-01 16:20:02 +09:00
23 changed files with 861 additions and 87 deletions
+10 -5
View File
@@ -83,11 +83,12 @@ function hereItems(ctx: TabContext): Item[] {
return [...of("dg", ctx.sheets.daega), ...of("sg", ctx.sheets.sg_list)];
}
/** 내 것 · 회사 — 구조물 조합(그 층) + 사전조합(그 층 일위대가) */
/** 내 것 · 회사 — 구조물 조합(그 층) + 사전조합(그 층 일위대가) + 단가산출(SK · 719-2) */
async function layerItems(layer: "personal" | "company"): Promise<Item[]> {
const owner = ownOwner(layer, await fetchSessionUser().catch(() => null));
const combos = (await loadRows().catch(() => [])).filter((r) => r.layer === layer);
const pres = owner ? await fetchLibrary({ 층: layer, 주인: owner }, "precombo") : [];
const sks = owner ? await fetchLibrary({ 층: layer, 주인: owner }, "sangeun") : [];
return [
...combos.map((r) => {
const name = itemName(r);
@@ -102,15 +103,19 @@ async function layerItems(layer: "personal" | "company"): Promise<Item[]> {
void importLib({ apply, onPayload: onPayload(ctx) }, pick),
};
}),
...pres.map((r) => {
...[
...pres.map((r) => ["precombo", r] as const),
...sks.map((r) => ["sangeun", r] as const),
].map(([kind, r]) => {
const name = r.제목 || r.이름;
const pick = { kind: "precombo" as const, layer, owner, key: r.이름 };
const tag = kind === "precombo" ? "일위대가" : "단가산출";
const pick = { kind, layer, owner, key: r.이름 };
return {
tag: "일위대가",
tag,
name,
sub: [r.구분, r.상세구분].filter(Boolean).join(" "),
unit: String(r.단위 || ""),
hit: has(`일위대가 ${name} ${r.구분 ?? ""} ${r.상세구분 ?? ""}`),
hit: has(`${tag} ${name} ${r.구분 ?? ""} ${r.상세구분 ?? ""}`),
go: (ctx: TabContext, apply: ApplyRef) =>
void importLib({ apply, onPayload: onPayload(ctx) }, pick),
};