Files
Aislo/A00_Common/design/logic/design_structure_road.ts
T
eomsangdonandClaude Opus 5.5 281c71b55b refactor(logic): 348-1 순수 계산 TS 49 파일 <페이지>/logic/ 로 옮김 — 이름 앞머리 그대로 · 동작 고침 없음
- 옮김: B04 2 · B05 23 · B06 11 · A00_Common/design 13 (9,299 줄) · 이미 logic/ 에 있던 16 파일 그대로
- 안 옮김: 묶음 입구(package.json build:*) · 파이썬 · 순수지만 계산 아닌 8 (보기 결선 · 콜백 · API 타입 · 갈아끼움 알림판)
- import 266 줄(142 파일) · 시험 · 주석 · 짝 표시 문자열 경로 고침 · B05 · B06 CLAUDE.md 짝 줄 logic/
- 시험 도우미 새 경로: 가짜 require 열쇠 · B05()/B06() 부름 · 형제 import 자리 · tsc 묶어 돌리는 시험 · 정규식 · rglob
- design_view_cross 줄 한도 시험 685 → 688 (긴 import 경로 줄바꿈 3줄)
- 확인: typecheck 0 · 서버 묶음 넷(corridor · server-calc · b07-extent · b07-note) 다시 지어 코드 같음(//#region 경로 주석만 다름) · 관련 시험 270 파일 — 남은 실패 19 는 옮기기 전과 같음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014utrjfoW831Vc5wJUd13kL
2026-10-16 13:44:50 +09:00

71 lines
2.5 KiB
TypeScript

/* =============================================================================
* design_structure_road.ts
* 노면공 › 콘크리트 포장 명세 — 사용자 구조물 표 08(`docs/raw/구조물정의_표/08_사토장_토취장_노면공_기타.md`).
*
* 시작 · 종료 측점(패널 위치 줄 · 기준 측점 · 전 · 후 · 길이 입력 없음) + 필수 컨테이너 「상세 내용」 한 벌 =
* 포장사양 고르기 → 길이(m · 시작~종료 출력) → 높이(m · 두께 손 입력). 표에 없는 옛 상세 칸은 화면에서 빼고 값은 남김.
* 저장 = structures.json `options` — 새 키 `pave_spec` · `height_m` · `widening_off`(확폭 끈 구간 · 87-3) ·
* 옛 `length_m` · `before_m` · `after_m` 은 저장 때 뺌(`dropped`).
* 기타(52-14) = 기준 측점 + 상세 종류 이름(정의 옵션 칸 `name`) + 선택 컨테이너 「상세 내용」(비고 글) ·
* 저장 키 `etc_detail_{n}_note` · 잇기 `getcdetail{n}`.
* import 없음 — 시험이 이 파일만 옮겨 돌림.
* ========================================================================== */
import type { SpecChoice, StructureSpec } from "./design_structure_spec";
/** 포장사양 선택지 — 근거 별표2 · 별표3 · 임도기술교본 3장. */
export const PAVE_SPEC_CHOICES: SpecChoice[] = ["콘크리트", "아스콘", "쇄석"].map((v) => ({
value: v,
label: v,
}));
export const PAVEMENT_SPEC: StructureSpec = {
typeId: "pavement_concrete",
containers: [
{
id: "detail",
title: "상세 내용",
required: true,
link: "gpavedetail",
items: [
{
id: "spec",
label: "포장사양",
kind: "select",
key: "pave_spec",
choices: PAVE_SPEC_CHOICES,
},
{ id: "length", label: "길이 (m)", kind: "auto" },
{ id: "height", label: "높이 (m)", kind: "number", key: "height_m", step: 0.05 },
],
},
],
// 표 08 에 없는 옛 상세 칸 — 화면에서 빼고 값은 남김(지난 정의 값)
retired: [
"thickness_cm",
"width_m",
"widening_area_m2",
"joint_spacing_m",
"separation_sheet",
"wire_mesh",
],
dropped: ["length_m", "before_m", "after_m"],
byRange: true,
};
export const ETC_SPEC: StructureSpec = {
typeId: "etc",
containers: [
{
id: "detail",
title: "상세 내용",
required: false,
prefix: "etc_detail",
link: "getcdetail",
max: 1,
items: [{ id: "note", label: "비고", kind: "text" }],
},
],
retired: [],
};