Files
Aislo/tools/line-stack-test/samples.js
T
eomsangdonandClaude Opus 5.5 3e64aa2a79 feat(804-1): 시험 페이지 「줄 쌓기 단가산출」 tools/line-stack-test + M01 왼쪽 패널 단추
- 왼쪽 줄 쌓기(항목 · 줄 일곱 종류 · 공식 틀 셋 · 식으로 풀기 · 틀로 저장 · 표에서 고르기 · 끌어 순서) · 오른쪽 경쟁사 꼴 산출근거(분수 기호식 = 값식 = 결과 · 소계 · 합계) · 아래 비목 상자 · 엑셀 글 붙여넣기 · 저장 = localStorage
- 견본 셋 금액 = 거창 파일 원 단위(5,323 · 52,796 · 94,215 비목 넷) · 확인 = node tools/line-stack-test/check.mjs
- 접근 = main.py 정적 마운트 /tools/line-stack-test · vite 프록시 한 줄(개발 포트에서 열림) · M01 왼쪽 패널 맨 아래 「시험: 줄 쌓기」 새 탭
- 라이브러리 0(분수 = CSS) · 지우기 = 폴더 + 표시 주석 셋 덩이

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 23:19:38 +09:00

222 lines
7.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 줄 쌓기 단가산출 시험 — 견본 자원 · 공식 틀 · 견본 표 · 견본 단가산출(거창 산불 출력 「단가산출」 시트 1 · 41 · 15 번)
export const LABOR = [
{ name: "보통인부", price: 172068 },
{ name: "형틀목공", price: 275790 },
{ name: "석공", price: 268908 },
];
export const MATERIAL = [
{ name: "합판(내수),대전 (12t×1220×2440mm)", price: 11455 },
{ name: "외송각재,대전 (30×30×3600mm)", price: 586824 },
{ name: "치즐(0.7㎥)", price: 223000 },
];
/** 기계 = 시간당 기계경비 노무 · 재료 · 경비 */
export const MACHINE = [
{ name: "굴삭기(무한궤도) (0.7㎥)", l: 59020, m: 19473, e: 24554 },
{ name: "굴삭기(무한궤도) (0.6㎥+부착용집게)", l: 59020, m: 16280, e: 29209 },
{ name: "덤프트럭 (15Ton)", l: 59020, m: 30192, e: 20659 },
];
/** 다른 단가산출 = 그 단산의 노무 · 재료 · 경비 */
export const SANGEUN = [
{ no: 13, name: "뒷채움돌 기초잡석 채집운반(Φ150m/m) [㎡]", l: 9889, m: 2262, e: 3858 },
{ no: 28, name: "기초다짐및뒷채움(소형장비사용) [㎥]", l: 11206, m: 1077, e: 1259 },
{ no: 1, name: "측구터파기(토사) [㎥]", l: 3442, m: 832, e: 1049 },
];
const row = (n, x, u = "", d) => (d === undefined ? { n, x, u } : { n, x, u, d });
/** 공식 틀 — 「이름 = 값」 · 「이름 = 식」 줄 묶음 */
export const TEMPLATES = [
{
id: "excavator",
name: "굴삭기 Q (품셈 8-2-3)",
rows: [
row("q", "0.7", "㎥"),
row("K", "0.55"),
row("f", "1 / 1.325"),
row("E", "0.45"),
row("Cm", "20", "sec ( 135 ˚ )"),
row("Q", "3600 × q × K × f × E / Cm", "㎥ / hr"),
],
},
{
id: "dump",
name: "덤프 Q (q · K 는 위 굴삭기 것)",
rows: [
row("L", "0.1", "km"),
row("V1", "7", "km / hr"),
row("V2", "8", "km / hr"),
row("T", "15", "ton"),
row("rt", "1.9", "ton / ㎥"),
row("E", "0.9"),
row("qt", "T ÷ rt", "㎥"),
row("f", "0.89"),
row("Cms", "22"),
row("Es", "0.35"),
row("n", "qt / (q × K)"),
row("t1", "Cms × n / (60 × Es)"),
row("t2", "(L / V1 + L / V2) × 60", "분 ( 왕복 )"),
row("t3", "1.1", "분 ( 적하 )"),
row("t4", "0.7", "분 ( 대기 )"),
row("Cm", "t1 + t2 + t3 + t4", "분"),
row("QH", "(Cm - t1) / Cm"),
row("Q", "60 × qt × f × E / Cm", "㎥ / hr"),
],
},
{ id: "directQ", name: "직접 Q", rows: [row("Q", "0.35")] },
];
/** 견본 표 하나 — [표에서 고르기] (표준품셈 8-2-3 굴착기 2. 작업효율 E) */
export const TABLE_E = {
title: "굴착기 작업효율 E (표준품셈 8-2-3)",
head: ["토질", "자연 양호", "자연 보통", "자연 불량", "흐트 양호", "흐트 보통", "흐트 불량"],
rows: [
["모래, 사질토", 0.85, 0.7, 0.55, 0.9, 0.75, 0.6],
["자갈섞인 흙, 점성토", 0.75, 0.6, 0.45, 0.8, 0.65, 0.5],
["파쇄암", null, null, null, null, 0.45, 0.35],
],
};
const op = (o, v, u = "") => ({ op: o, v, u });
const tplRows = (id) => structuredClone(TEMPLATES.find((t) => t.id === id).rows);
export const SAMPLES = [
{
key: "s1",
label: "① 측구터파기(토사)",
expect: { l: 3442, m: 832, e: 1049, sum: 5323 },
doc: {
name: "측구터파기(토사)",
unit: "㎥",
items: [
{
title: "기 계 ( 100 % ) : 굴삭기(무한궤도) (0.7㎥)",
lines: [
{ k: "formula", tpl: "excavator", rows: tplRows("excavator") },
{ k: "mach", res: { ...MACHINE[0] }, ops: [op("÷", "Q")] },
],
},
{
title: "보조인부 ( 1 일당 1 인 )",
lines: [{ k: "labor", res: { ...LABOR[0] }, ops: [op("÷", "8"), op("÷", "Q")] }],
},
],
},
},
{
key: "s41",
label: "② 합판거푸집(4회)",
expect: { l: 38290, m: 14506, e: 0, sum: 52796 },
doc: {
name: "합판거푸집(4회)",
unit: "㎡",
items: [
{
title: "",
lines: [
{ k: "text", text: "< 토목품셈 6-3-1 합판거푸집(2022개정) >" },
{ k: "text", text: "※ 사용횟수 4 회 : 보통" },
],
},
{
title: "재료비",
lines: [
{
k: "mat",
col: "m",
res: { ...MATERIAL[0] },
ops: [op("×", "1.03", "㎡"), op("×", "38", "%")],
},
{
k: "mat",
col: "m",
res: { ...MATERIAL[1] },
ops: [op("×", "0.038", "㎥"), op("×", "38", "%")],
},
{
k: "rate",
name: "소모자재 ( 박리재등 )",
of: "주자재비",
baseName: "주자재",
baseCol: "m",
scope: "item",
rate: "9",
col: "m",
},
],
},
{
title: "인건비 ( 24 년 품셈 개정 )",
lines: [
{ k: "labor", res: { ...LABOR[1] }, ops: [op("×", "5", "인"), op("/", "45", "㎡")] },
{ k: "labor", res: { ...LABOR[0] }, ops: [op("×", "2", "인"), op("/", "45", "㎡")] },
{
k: "rate",
name: "공구손료 및 경장비 기계경비",
of: "노무비",
baseName: "인부",
baseCol: "l",
scope: "item",
rate: "1",
col: "m",
},
],
},
],
},
},
{
key: "s15",
label: "③ 전석 메쌓기",
expect: { l: 74880, m: 7029, e: 12306, sum: 94215 },
doc: {
name: "전석 메쌓기",
unit: "㎡",
items: [
{ title: "전석 구입운반 : 별산", lines: [] },
{
title: "뒷채움돌 운반 및 채집 : 뒷채움돌기초잡석채집운반 (Φ150m/m) [㎡] * 단산 13 참조 *",
lines: [
{ k: "formula", tpl: "directQ", rows: [row("Q", "0.35")] },
{ k: "ref", res: { ...SANGEUN[0] }, ops: [op("×", "Q")] },
],
},
{
title: "뒤채움돌 다짐 기초다짐및뒷채움 (소형장비사용) [㎥] * 단산 28 참조 *",
lines: [
{ k: "formula", tpl: "directQ", rows: [row("Q", "0.35")] },
{ k: "ref", res: { ...SANGEUN[1] }, ops: [op("×", "Q")] },
],
},
{
title: "전석쌓기 기계: 굴삭기(무한궤도) (0.6㎥+부착용집게)",
lines: [
{ k: "formula", tpl: "directQ", rows: [row("Q", "0.36", "㎥ / hr")] },
{ k: "mach", res: { ...MACHINE[1] }, ops: [op("×", "Q")] },
],
},
{
title: "전석쌓기 인부",
lines: [
{ k: "labor", res: { ...LABOR[2] }, ops: [op("×", "0.14", "인")] },
{ k: "labor", res: { ...LABOR[0] }, ops: [op("×", "0.05", "인")] },
],
},
],
},
},
{
key: "new",
label: "④ 새 공식",
expect: null,
doc: {
name: "새 단가산출",
unit: "",
items: [{ title: "", lines: [{ k: "formula", tpl: null, rows: [row("", "")] }] }],
},
},
];