fix(structure): B05 · B06 좌측 구조물 목록 · 하이라이트 점검 흠 고침(53-2)

- B05 목록 · 구조물 알약 누르기에 3D 강조가 안 따라옴 → 목록 고름 · 관 고름이 3D 도 그 측점으로
- 물넘이포장(측점선 없음) 목록 · 알약 · 카드 고름에 알약이 안 켜짐 → 관 알약 id 로 바로 켬
- B06 정규 측점 · 측점 사이 구조물을 고르면 카드가 켜지며 알약이 꺼짐 → 알약은 카드 뒤에 · 측점선 짝 판정이 규칙 측점 기준점도 봄
- B06 목록에서 다시 눌러 풀어도 알약이 남음 → 풂 = 알약도 끔
- B06 목록에서 푼 뒤 같은 카드 관 알약을 누르면 아무것도 안 골라짐 → 카드 다시 고름
- 알약 번호 · 툴팁 · 벌룬이 기타 손 이름 대신 「기타 N」 → 목록과 같은 이름
- 구조물집계표 기타 열 머리: 빈 이름이 「기타 구조물」 · 빈칸 글 → 「기타」(집계 건 이름과 같게)
- [저장] 뒤 고른 구조물 강조가 풀림(다시 열면 되살아나 어긋남) → 같은 id 면 그대로 고름
- 목록 줄 마우스 올림 테두리
- 시험: ui_checks/53-2_목록_강조.js · test_53_2_etc_table_name.py · test_design_page_single 판정 자리 옮김

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013rJwJMVL4EE31y77TB11AP
This commit is contained in:
2026-10-06 09:16:55 +09:00
co-authored by Claude Opus 5.5
parent 9c20c08327
commit 5b351e8c68
14 changed files with 447 additions and 28 deletions
@@ -172,12 +172,16 @@ export function createB06StructuresPanel(deps: B06StructuresPanelDeps): B06Struc
deps.onStructuresChanged?.();
},
onSelect: (structure) => {
if (!structure) return;
deps.markStructure?.(structure.structure_id ?? null);
if (!structure) {
deps.markStructure?.(null); // 풂 = 알약도 끔(53-2)
return;
}
// 카드 고름이 측점으로 다시 풀면 같은 측점 관이 먼저 열린다 — 누른 구조물을 넘긴다.
preferredId = structure.structure_id ?? null;
deps.focusChainage(structureAnchorM(structure));
preferredId = null;
// 알약은 카드 뒤에 — 카드 측점이 알약을 갈아 끼우거나 끄지 않게(53-2)
deps.markStructure?.(structure.structure_id ?? null);
},
getInterval: deps.stationInterval,
// 관 추가 — 정본은 [저장]·[확정]에서 나간다. 화면 목록·알약은 바로 세운다.
@@ -254,7 +258,6 @@ export function createB06StructuresPanel(deps: B06StructuresPanelDeps): B06Struc
},
onPipeRemove: (chainageM) => removePipeAt(chainageM),
onPipeSelect: (chainageM) => {
deps.markStructure?.(null); // 알약 강조는 관 측점선 짝으로(같은 측점 구조물 강조를 푼다).
// 목록에서 고른 것도 세션에 남긴다 — B05로 돌아가면 그 시설이 그대로 열린다.
selectDesign(
deps.projectId,
@@ -262,6 +265,8 @@ export function createB06StructuresPanel(deps: B06StructuresPanelDeps): B06Struc
{ from: "b06" },
);
if (chainageM !== null) deps.focusChainage(chainageM);
// 알약 = 그 관 알약(같은 측점 구조물 말고 · 측점선 없는 물넘이포장도) — 카드 뒤에(53-2)
deps.markStructure?.(chainageM === null ? null : `pipe-${chainageM.toFixed(2)}`);
},
},
});
@@ -491,6 +496,7 @@ export function createB06StructuresPanel(deps: B06StructuresPanelDeps): B06Struc
if (hit.pipeChainageM !== null) {
currentChainageM = hit.pipeChainageM;
refreshSpecDefaults(hit.pipeChainageM);
deps.markStructure?.(`pipe-${hit.pipeChainageM.toFixed(2)}`); // 측점선 없는 물넘이포장도(53-2)
}
section.selectAt(selection);
return { chainageM, structureId: hit.structureId };