From b5ba483d0167a08f59d6d65d3690e85063f33374 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 18 Oct 2026 14:11:23 +0900 Subject: [PATCH] =?UTF-8?q?feat(B05=20=ED=8F=89=EB=A9=B4):=20=EA=B5=90?= =?UTF-8?q?=EA=B0=81=EC=A0=90=20=EB=85=B9=EC=83=89=20=EA=B3=84=EC=97=B4=20?= =?UTF-8?q?=C2=B7=20=EB=B0=9D=EC=9D=8C=20=C2=B7=20=EC=96=B4=EB=91=90?= =?UTF-8?q?=EC=9B=80=20=ED=86=A0=ED=81=B0=20`--map-route-node`=20(423)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01XWh5wNNycMkbwMpACz1rte --- B05_Profile/B05_Profile_UI_RouteEdit_Render.ts | 2 +- resources/tester/test_349_routeedit_theme_redraw.py | 6 ++++++ ui_template/ui_template_theme.css | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/B05_Profile/B05_Profile_UI_RouteEdit_Render.ts b/B05_Profile/B05_Profile_UI_RouteEdit_Render.ts index 89e44c769..4e3ef7720 100644 --- a/B05_Profile/B05_Profile_UI_RouteEdit_Render.ts +++ b/B05_Profile/B05_Profile_UI_RouteEdit_Render.ts @@ -297,7 +297,7 @@ export function drawRouteEditScene(context: CanvasRenderingContext2D, scene: Rou ? style.getPropertyValue("--color-danger") || "#dc2626" : scene.locked[index] ? lockedColor - : style.getPropertyValue("--map-route") || "#f97316"; + : style.getPropertyValue("--map-route-node") || "#15803d"; // 곡선 없는 교각점(155° 생략 · 손 지움)은 같은 크기 삼각형 · 가운데 비움(391-2). const noCurve = scene.curveOn.length > 0 && diff --git a/resources/tester/test_349_routeedit_theme_redraw.py b/resources/tester/test_349_routeedit_theme_redraw.py index a7f52a79c..18369d666 100644 --- a/resources/tester/test_349_routeedit_theme_redraw.py +++ b/resources/tester/test_349_routeedit_theme_redraw.py @@ -43,3 +43,9 @@ def test_그릴_때마다_토큰을_다시_읽음() -> None: assert 'style.getPropertyValue("--map-route")' in scene # 노선 footprint = (B05 / "B05_Profile_UI_RouteEdit_Footprint.ts").read_text(encoding="utf-8") assert "context.strokeStyle = style.getPropertyValue(token).trim() || fallback;" in footprint + + +def test_교각점_녹색_토큰_밝음_어두움_따로() -> None: + css = (ROOT / "ui_template" / "ui_template_theme.css").read_text(encoding="utf-8") + assert css.count("--map-route-node:") == 3 # 밝음 1 + 어두움(단추 · 시스템) 2 + assert 'getPropertyValue("--map-route-node")' in RENDER diff --git a/ui_template/ui_template_theme.css b/ui_template/ui_template_theme.css index 51797934f..86d157de8 100644 --- a/ui_template/ui_template_theme.css +++ b/ui_template/ui_template_theme.css @@ -233,6 +233,7 @@ * ------------------------------------------------------------------------ */ --map-route: #f97316; /* 계획선 (B04 지도·B05 배수유역도 공통) */ --map-route-locked: #ca8a04; /* 계획노선 편집 — 고정한 선 · 호 · 점 황금 (평면의 주황 · 절토 붉음 · 성토 청록 · 하늘색과 구별) */ + --map-route-node: #15803d; /* 계획노선 편집 — 교각점 녹색 (밝음 · 어두움 따로) */ --map-cadastral: #f97316; --map-sigungu: #7c3aed; --map-eupmyeondong: #22c55e; @@ -334,6 +335,7 @@ --color-danger: #e8695a; --panel-handle-border: #e0b64a; --map-route-locked: #facc15; + --map-route-node: #4ade80; --shadow-sm: rgba(0, 0, 0, 0.4) 0px 2px 4px 0px, rgba(0, 0, 0, 0.2) 0px 0px 0px 1px; --shadow-lg: rgba(0, 0, 0, 0.5) 0px 32px 24px -12px, rgba(0, 0, 0, 0.3) 0px 3px 3px 0px; @@ -375,6 +377,7 @@ --color-danger: #e8695a; --panel-handle-border: #e0b64a; --map-route-locked: #facc15; + --map-route-node: #4ade80; } }