Scope
충전소 디테일 패널 안에서 배터리 카운트를 직접 변경할 수 있게 한다. 운영자가 마커 클릭 → 패널 → 폼 입력 → 즉시 반영 한 흐름으로 충전소 카운트를 갱신.
Included:
- 새 Next.js route handler `POST /api/dashboard/battery-station/{stationId}/battery-counts` — 내부에서 `updateBatteryStationCounts` 호출 → JSON 응답.
- StationDetailPanel 안에 inline 폼 (현재/최대 + 가용 카운트 + 사유). submit 시 fetch → 응답으로 패널 state 즉시 갱신.
- 폴링이 다음 사이클에 새 카운트를 가져오기 전에도 패널은 즉시 새 값을 표시.
- 백엔드 검증 실패(가용 > 현재 > 최대 같은 위반) 시 한글 안내 노출.
Excluded:
- 카운트 변경 이력 표시 (`station_battery_count_logs` — 별도 슬라이스).
- 패널 안에서 충전소 메타 (이름/주소/상태) 변경 (기존 `/stations/{id}/edit` 로 충분).
- 일괄 카운트 변경 (다중 선택).
Acceptance criteria
- 패널 안의 폼이 현재 카운트를 미리 채운다.
- submit 시 패널이 닫히지 않고 새 카운트가 즉시 표시된다.
- 검증 실패는 폼 위에 안내 메시지로 노출.
- 백엔드 미구성 / 세션 없음 시 폼이 disabled 또는 mock 안내.
- `npm run lint` / `npx tsc --noEmit` / `npm run test:service-ops` / `npm run build` 통과.
Trace
Concurrent work gate
Decision: allowed-with-non-overlap
Evidence:
- Open target issues: none.
- Open target PRs: none.
- Active branches: dev, main.
Reason: front-admin-web 만 변경.
Scope
충전소 디테일 패널 안에서 배터리 카운트를 직접 변경할 수 있게 한다. 운영자가 마커 클릭 → 패널 → 폼 입력 → 즉시 반영 한 흐름으로 충전소 카운트를 갱신.
Included:
Excluded:
Acceptance criteria
Trace
Concurrent work gate
Decision: allowed-with-non-overlap
Evidence:
Reason: front-admin-web 만 변경.