fix(B06): 알약 레인이 종단 패널 높이를 부풀리던 것

④(2026-09-07)로 붙인 레인이 `chartWrap` 안에 서는데, 그래프 높이를 정할 때 잰 값에서
레인 몫을 빼지 않아 되먹임이 생겼음 — 잰 값이 커지면 그래프를 키우고, 그러면 다음 회차에
더 커짐. 실측 패널이 **16,664px** 까지 부풀어 카드·알약을 누를 수 없었음.

레인 높이(`STRUCTURE_LANE_HEIGHT_PX`)를 빼서 한 번에 수렴하게 함.
자체검증 — 패널 242px · 그래프 228px · 레인 42px · 알약 10개. tsc 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-07 09:07:09 +09:00
co-authored by Claude Opus 5
parent a0bd9c8775
commit 136965c472
+9 -2
View File
@@ -45,7 +45,10 @@ import {
} from "./B06_Section_UI_Cross_View_Metrics"; } from "./B06_Section_UI_Cross_View_Metrics";
import { CROSS_HEIGHT } from "./B06_Section_UI_Section_Common"; import { CROSS_HEIGHT } from "./B06_Section_UI_Section_Common";
import { LONG_PAD } from "./B06_Section_UI_Section_Common"; import { LONG_PAD } from "./B06_Section_UI_Section_Common";
import { buildStructureLane } from "../B05_Profile/B05_Profile_UI_Structures_Marks"; import {
buildStructureLane,
STRUCTURE_LANE_HEIGHT_PX,
} from "../B05_Profile/B05_Profile_UI_Structures_Marks";
import { import {
structureAnchorM, structureAnchorM,
type StructureInstance, type StructureInstance,
@@ -491,7 +494,11 @@ export function createSectionView(
const measured = chartWrap.clientHeight; const measured = chartWrap.clientHeight;
lastChartAvailable = lastChartAvailable =
measured > 0 ? measured : Math.max(panelHeight() - PANEL_CHROME_PX, MIN_LONG_HEIGHT); measured > 0 ? measured : Math.max(panelHeight() - PANEL_CHROME_PX, MIN_LONG_HEIGHT);
const heights = chartHeights(lastChartAvailable); // 알약 레인도 `chartWrap` 안에 서므로 잰 높이에 **이미 들어 있다**. 그 몫을 빼지 않으면
// 다음 회차에 잰 값이 그만큼 더 커지고, 그 값으로 그래프를 키우면 또 커지는 되먹임이
// 생겨 패널이 16,000px 까지 부푼다(2026-09-07 실측). 빼 두면 한 번에 수렴한다.
const laneHeight = markStructures.length && markTypes.length ? STRUCTURE_LANE_HEIGHT_PX : 0;
const heights = chartHeights(Math.max(lastChartAvailable - laneHeight, MIN_LONG_HEIGHT));
const minWidth = longitudinalMinimumWidth(detail.longitudinal, cachedStationInterval); const minWidth = longitudinalMinimumWidth(detail.longitudinal, cachedStationInterval);
const chartWidth = Math.max(renderWidth, minWidth); const chartWidth = Math.max(renderWidth, minWidth);
const chart = buildLongitudinalChart({ const chart = buildLongitudinalChart({