From 1c331f209a99f1cc322b18e149f51829c927ed5d Mon Sep 17 00:00:00 2001 From: gahusb Date: Tue, 28 Apr 2026 20:31:24 +0900 Subject: [PATCH] =?UTF-8?q?fix(subscription):=20CLAUDE.md=20districts=20sh?= =?UTF-8?q?ape=20+=20dragLeave=20=EC=A0=95=ED=99=95=EB=8F=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit preferred_districts 문서 형태를 백엔드 실제 구조(tier-keyed Dict[str, List[str]])로 수정. onDragLeave가 자식 요소로 커서 이동 시 flicker 발생하던 문제 수정(relatedTarget 체크). Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 2 +- src/pages/subscription/components/DistrictTierEditor.jsx | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 8390b60..c97fc34 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -114,7 +114,7 @@ proxy: { | 에이전트 | WS | `/api/agent-office/ws` | | 부동산 | GET | `/api/realestate/announcements`, `/api/realestate/matches` | | 부동산 | GET | `/api/realestate/profile` — 프로필 조회 | -| 부동산 | PUT | `/api/realestate/profile` — body: `{ preferred_districts: { [district]: tier(S/A/B/C/D) }, min_match_score: int, notify_enabled: bool, ... }` | +| 부동산 | PUT | `/api/realestate/profile` — body: `{ preferred_districts: { "S": [...], "A": [...], "B": [...], "C": [...], "D": [...] }, min_match_score: int, notify_enabled: bool, ... }` | | AI 큐레이터 | GET | `/api/lotto/briefing/latest`, `/api/lotto/curator/usage` | | 포트폴리오 | GET | `/api/profile/public` — personal 서비스 | | 포트폴리오 | POST | `/api/profile/auth` — personal 서비스 | diff --git a/src/pages/subscription/components/DistrictTierEditor.jsx b/src/pages/subscription/components/DistrictTierEditor.jsx index 21b5b1f..fcf8829 100644 --- a/src/pages/subscription/components/DistrictTierEditor.jsx +++ b/src/pages/subscription/components/DistrictTierEditor.jsx @@ -62,7 +62,10 @@ export default function DistrictTierEditor({ value, onChange }) { e.dataTransfer.dropEffect = "move"; if (dragOver !== key) setDragOver(key); }; - const onDragLeave = () => setDragOver(null); + const onDragLeave = (e) => { + if (e.currentTarget.contains(e.relatedTarget)) return; + setDragOver(null); + }; const onDrop = (e, targetTier /* null = 미할당 */) => { e.preventDefault(); const district = e.dataTransfer.getData("text/district");