Merge remote-tracking branch 'origin/dev' into sub_laptop_7

This commit is contained in:
2026-10-10 16:40:43 +09:00
24 changed files with 1178 additions and 93 deletions
@@ -243,6 +243,13 @@ export interface StructureNumbers {
export const fetchStructureNumbers = (): Promise<Record<string, StructureNumbers>> =>
scoped("/structures/numbers");
/** 같은 번호 목록을 **고른 층**(+ 주인)에서 — 지금 층 길을 안 바꾸고 읽음(고르기 모달 상단 표 · 224-1) */
export const fetchStructureNumbersAt = (
layer: Layer,
owner: string | null,
): Promise<Record<string, StructureNumbers>> =>
call(owned(layer, `/layers/${layer}/structures/numbers`, owner));
/** 구조물집계표조합 한 줄 — 구조물 열 하나(키 `SS` + 6자리 · 한 번 준 키는 안 바뀜) */
export interface StructureCombo extends StructureNumbers {
키: string;
@@ -86,6 +86,17 @@ export function laborSumState(
return numbers?.합계상태 ? { state: numbers.합계상태, why: numbers.합계까닭 ?? "" } : undefined;
}
/** 구조물 조합 표 번호 · 합계 줄 글(86-3 · 101-1) — 관리 화면과 고르기 모달 상단 표(224-1)가 같은 한 벌 */
export function numberLabels(numbers: () => ColumnNumbers) {
return {
laborLabel: (colId: string) => numbers()[colId]?.일위대가번 ?? "",
drawingLabel: (colId: string) => numbers()[colId]?.도번 ?? "",
areaLabel: (colId: string) => numbers()[colId]?.면적번 ?? "",
laborSumLabel: (colId: string) => laborSumText(numbers()[colId]),
laborSumState: (colId: string) => laborSumState(numbers()[colId]),
};
}
/** 집계표 열 — 머리 글(제목행 종류 · 분류1 · 분류2 · 분류3) · 꼴만 씀 */
export interface StructureColumn {
id: string;
@@ -22,8 +22,7 @@ import {
comboMerge,
comboView,
createStructurePanel,
laborSumState,
laborSumText,
numberLabels,
pillsFor,
STRUCTURE_TABLE,
type StructureColumn,
@@ -381,11 +380,7 @@ export function createMain(
onChange: () => (dirty = !readOnly),
...(struct
? {
laborLabel: (colId: string) => struct.numbers()[colId]?.일위대가번 ?? "",
drawingLabel: (colId: string) => struct.numbers()[colId]?.도번 ?? "",
areaLabel: (colId: string) => struct.numbers()[colId]?.면적번 ?? "",
laborSumLabel: (colId: string) => laborSumText(struct.numbers()[colId]), // 86-3
laborSumState: (colId: string) => laborSumState(struct.numbers()[colId]), // 101-1
...numberLabels(struct.numbers), // 번호 · 일위대가 합계 줄(86-3 · 101-1) — 고르기 모달 상단 표와 한 벌
combo: {
...(readOnly || !extras.onHeadRename
? {}