▲ AX 아이디어 경진대회 출품작 · Django 시스템 기획서
v3.0 — H2-Flex AX 통합 반영
H2-Flex AX
AI-DRIVEN HYDROGEN NETWORK

AI 기반 이동형-고정식 통합
수소 충전 네트워크 최적화 플랫폼

수소 충전 인프라의 '충전 사각지대' 해소와 운영 적자 최소화를 위해, AI가 실시간으로 "어떤 시점에, 어느 장소로 이동형 충전기를 보낼 것인가"를 결정하는 예측(Prediction) · 자원배분(Allocation) · 동적라우팅(Routing) 3-Layer AI 시스템입니다.

🔮
PREDICTION
AI 수요 예측 엔진
5년 판매 실적·교통량·실시간 대기·이벤트 데이터로 미래 수요 선제 예측
⚖️
ALLOCATION
AI 자원 배분 모델
DSR 34% 유지하며 533→445개소로 구축비 895억 절감, 이동형 파견 우선순위 결정
🗺️
ROUTING
AI 동적 라우팅
고장·점검 시 즉시 대체 경로 생성, 연료 최소화 최적 이동 경로, 이벤트 임시 배차
H2-Flex AX Platform
Django 4.2 · DRF · Celery · PostGIS · OR-Tools
XGBoost · Prophet · LSTM · SLSQP
백동현 외, JHNE 2025 (msHRS 경제성)
18개월 3단계
SECTION 01

제안 배경 및 필요성

H2-Flex AX가 해결해야 하는 4가지 구조적 문제와 핵심 철학

★ CORE PHILOSOPHY — H2-Flex AX의 존재 이유

수소차 보급과 충전 인프라는 닭-계란(Chicken-and-Egg) 딜레마입니다. 인프라 없이 차량 보급이 없고, 차량 없이 인프라 투자도 없습니다. H2-Flex AX는 정부가 선제적으로 충전소를 구축하되, AI가 적자를 최소화하는 최적 배치·운영 전략을 실시간으로 제안함으로써 한정된 재정으로 수소차 보급 확대를 유도하는 정책 실행 AI 도구입니다. 목표는 수익 극대화가 아닌 지속 가능한 적자 최소화 구조의 설계입니다.

고정식 충전소의 한계

고정식(sHRS) 기당 구축비 약 40억 원, 부지 확보·인허가 절차 복잡, 빠른 보급 불가. 2030년 기준 고정식 단독 운영 시 533개소 필요.

수요-공급 불균형

지역별·시기별 수요공급비(DSR) 편차 심각. 특정 지역은 충전 인프라가 전무한 '충전 사각지대' 존재. 현재 DSR 목표 34%±2% 유지가 핵심 과제.

운영 효율성 저하

높은 유지비·감가상각비로 대부분 충전소가 음(-)의 영업이익. 충전소당 연간 운영유지비 2억원, 감가상각 2억원(20년 분할). AI 운영 최적화 시급.

정책적 요구

기후환경에너지부의 탄소중립 및 수소 경제 활성화 목표. 2030년까지 대규모 수소차 보급 예정. 탄력적 인프라 운영 모델 필요.

40억
고정식 기당 구축비
533개
고정식 단독 시
2030년 필요 수
445개
통합모델 시
필요 수 (88개 절감)
895억
2026~2030
구축비 절감
34%
목표 DSR
(±2% 유지)
131.6kg
수소차 1대
연평균 소비량
SECTION 02

H2-Flex AX 시스템 아키텍처

예측-배분-라우팅 3-Layer AI를 중심으로 한 Django 전체 구조

외부 데이터
공공데이터포털EV/수소차 등록·증가율
교통 VDS·TOPIS구간별 교통량+증가율
충전소 대기OCPP 실시간 큐
공사·행사 DB건설허가·문체부 이벤트
전력·수소 수급한전 AMI·가스공사
ETL 파이프라인
Celery Beat스케줄 수집
ETL Worker정제·정규화
Kafka Stream실시간 이벤트
PostGIS DB공간 데이터
Redis Queue비동기 메시지
① PREDICTION
Prophet+LSTM시계열 수요 예측
대기 큐 보정실시간 30초 반영
이벤트 오버레이공사·행사 급증 예측
성장률 예측교통·수익 증가율
131.6 kg/대논문 파라미터 기준
② ALLOCATION
XGBoost 입지AI108개 피처 스코어링
성장률 선제추천6~12개월 선행 입지
DSR 최적화SLSQP 구축비 최소화
전환 우선순위sHRS→msHRS 우대
시나리오 A50전환+30신설/년
③ ROUTING
OR-Tools VRP최적 배차 경로
고장·점검 대체즉시 대체 경로 NEW
이벤트 임시배차48시간 선제 배차
연료 최소화운영효율 0.625 반영
WebSocket실시간 위치 스트림
Django Apps
location_optimizer입지 추천+선제선정
demand_forecaster수요예측+대기보정
mobile_routerVRP+대체경로+이벤트
event_manager공사·행사 관리
dsr_optimizer구축계획 최적화
API / 클라이언트
DRF REST APIJWT 인증
정책관리자 WebDSR·895억 절감 대시보드
운영자 Web배차·대기·고장 모니터
WebSocket 채널실시간 스트림
환경부·국토부부처 API 연동

Django 앱 디렉터리 구조

h2flex_ax/
├── apps/
│   ├── location_optimizer/     # ① ALLOCATION — 입지 추천
│   │   └── services/
│   │       ├── ai_scorer_v2.py         # XGBoost 108피처 (성장률 28개 포함)
│   │       ├── growth_analyzer.py      # 교통량·수익 증가율 분석
│   │       └── proactive_selector.py   # 선제적 입지 선정
│   │
│   ├── demand_forecaster/      # ① PREDICTION — 수요 예측
│   │   └── services/
│   │       ├── ensemble_forecaster.py  # Prophet + LSTM 앙상블
│   │       ├── realtime_queue.py       # 실시간 대기 보정 레이어
│   │       └── event_demand_model.py   # 이벤트 수요 오버레이
│   │
│   ├── mobile_router/          # ③ ROUTING — 이동형 배차
│   │   └── services/
│   │       ├── vrp_solver.py           # OR-Tools CVRPTW
│   │       ├── fault_replacer.py       # ★ 고장·점검 즉시 대체 경로
│   │       └── event_dispatcher.py     # 이벤트 임시 배차
│   │
│   ├── event_manager/          # 공사·행사 이벤트 관리
│   └── dsr_optimizer/          # ② ALLOCATION — DSR·구축비 최적화
SECTION 03

H2-Flex AX 3-Layer AI 설계 상세

Prediction · Allocation · Routing — 3개 AI 레이어의 알고리즘 및 구현 명세

①

AI 수요 예측 엔진 (PREDICTION)

Prophet + LSTM 앙상블 · 실시간 대기 큐 보정 · 이벤트 오버레이 · 성장률 선행 예측
✓ 131.6 kg/대/년 파라미터 (논문) ★ 실시간 대기 차량 수 반영 ★ 건설공사·지역행사 수요 급증 예측 ★ 교통량·수익 증가율 추이 반영

기본 모델: Facebook Prophet + LSTM 앙상블
예측 범위: 1시간 ~ 7일 미래 충전 수요
정확도 목표: MAPE ≤ 15% (1일 예측)
업데이트: 매시간 자동 재예측

대기 보정: 30초 주기, 대기 3대↑ → 배차 트리거
이벤트 리드타임: 행사 48시간 전 선제 배차
공사 현장: 트럭 1대 = 15 kg/일 수요 산정
수소 소비 기준: 131.6 kg/대/년 (논문 파라미터)

# apps/demand_forecaster/services/ensemble_forecaster.py
class H2FlexPredictionEngine:
    """
    H2-Flex AX 수요 예측 엔진 — 3단계 파이프라인
      1단계: Prophet+LSTM 기본 시계열 예측
      2단계: 실시간 대기 큐 보정 (30초 갱신)
      3단계: 이벤트 오버레이 (공사·행사 수요 가산)
    파라미터: FCEV_KG_PER_UNIT = 131.6 (백동현 외 2025)
    """
    FCEV_KG_PER_UNIT = 131.6  # 수소차 1대 연평균 소비량 (논문 기준)

    def predict(self, region_code: str, horizon_hours: int = 24) -> dict:
        # 1단계: 기본 앙상블 예측
        base = self._ensemble_forecast(region_code, horizon_hours)

        # 2단계: 실시간 대기 보정
        queue_adj = self.queue_adjuster.get_adjusted_demand(
            station_id=region_code, base_forecast_kg=base['demand_kg']
        )

        # 3단계: 이벤트 오버레이 (공사·행사)
        event_overlay = self.event_model.get_overlay(region_code, horizon_hours)

        total_demand = (queue_adj['adjusted_demand_kg'] +
                        event_overlay['event_demand_kg'])
        return {
            'total_demand_kg':    total_demand,
            'base_forecast_kg':   base['demand_kg'],
            'queue_demand_kg':    queue_adj['queue_demand_kg'],
            'event_demand_kg':    event_overlay['event_demand_kg'],
            'dispatch_needed':    queue_adj['dispatch_needed'],
            'dispatch_urgency':   queue_adj['dispatch_urgency'],
            'event_dispatch_lead': event_overlay['dispatch_lead_time_h'],
        }
②

AI 자원 배분 모델 (ALLOCATION)

XGBoost 108피처 선제 입지 AI · DSR 34% 기준 구축비 최소화 · 전환 우선 전략 (시나리오 A)
✓ DSR 34%±2% 제약 최적화 (논문) ✓ 전환(7.5억) 신설(45억) 비용 구분 ★ 성장률 피처 28개 추가 (108개 총) ★ 선제적 착공 시점 추천
핵심 설계 원리: "지금 충전소가 필요한 곳"이 아니라 "6~12개월 후 필요해질 곳"을 먼저 추천합니다. 교통량 증가율·수익 증가율·EV 등록 증가율을 피처로 추가하여 선제적 입지를 결정합니다. 기존 sHRS에 이동형(mHRS)을 추가하는 '전환(7.5억)'을 신설(45억)보다 0.15 보너스 가중치로 우선 추천합니다 (논문 시나리오 A).
# apps/dsr_optimizer/services/capex_minimizer.py (논문 직접 반영)
class DSRCapexMinimizer:
    """
    논문 백동현 외(2025) 동적 확장판
    핵심 파라미터 (SystemConfig DB에서 관리 → 재훈련 불필요):
      FCEV_KG_PER_UNIT = 131.6  # 수소차 1대 연평균 소비량
      SHRS_ANNUAL_KG   = 40 × 300 × 0.625 = 7,500  kg/년
      MSHRS_ANNUAL_KG  = 50 × 300 × 0.625 = 9,375  kg/년
      DSR_TARGET       = 0.34 (± 0.02)
      SHRS_CAPEX       = 40억원 / 고정식 신설
      MSHRS_CAPEX      = 45억원 / 통합모델 신설
      MRS_ADD_CAPEX    =  7.5억원 / 기존 sHRS 전환 추가분
    목표: 시나리오 A 기준 895억 절감 → 동적 최적화로 추가 절감
    """
    DSR_TARGET    = 0.34
    DSR_TOL       = 0.02
    SCENARIO_A    = {'conversions': 50, 'new_builds': 30}  # 논문 기준선

    def optimize_annual(self, year: int, fcev_count: int,
                          existing_sHRS: int, existing_msHRS: int) -> dict:
        from scipy.optimize import minimize
        annual_demand_kg = fcev_count * 131.6

        result = minimize(
            lambda x: x[0] * 7.5 + x[1] * 45,  # 구축비 최소화
            x0=[30, 20],
            constraints={'type': 'ineq', 'fun': lambda x:
                ((existing_sHRS-x[0])*7500 + (existing_msHRS+x[0]+x[1])*9375)
                / annual_demand_kg - (self.DSR_TARGET - self.DSR_TOL)},
            method='SLSQP', bounds=[(0, existing_sHRS), (0, 200)]
        )
        opt_conv, opt_new = int(result.x[0]), int(result.x[1])
        scenario_a_cost = self.SCENARIO_A['conversions']*7.5 + self.SCENARIO_A['new_builds']*45

        return {
            'year':                 year,
            'optimal_conversions':  opt_conv,   # 기존 sHRS 전환 수
            'optimal_new_builds':   opt_new,    # msHRS 신설 수
            'total_capex_billion':  float(result.fun),
            'vs_scenario_a_saving': scenario_a_cost - float(result.fun),
            'vs_stationary_saving': self._calc_stationary_cost(fcev_count) - float(result.fun),
            'dsr_achieved_pct':     self._calc_dsr(opt_conv, opt_new,
                                                           existing_sHRS, existing_msHRS,
                                                           annual_demand_kg) * 100,
        }
③

AI 동적 라우팅 최적화 (ROUTING)

OR-Tools VRP · 고장·점검 즉시 대체 경로 · 이벤트 임시 배차 · 연료 최소화 (운영효율 0.625)
★ 고장·점검 시 즉시 대체 경로 NEW ★ 이벤트 임시 배차 (48시간 선제) ✓ 운영효율 0.625 반영 (논문) OR-Tools CVRPTW 솔버
v3 핵심 신규 기능 — 고장·점검 즉시 대체 경로: 고정식 충전소가 정기점검이나 고장으로 일시 가동 중단될 경우, 시스템이 즉시 감지하여 인근 이동형 충전소의 대체 투입 경로를 자동 생성합니다. 서비스 공백 최소화가 목표이며, 대체 도착 목표 시간은 감지 후 2시간 이내입니다.
# apps/mobile_router/services/fault_replacer.py — ★NEW (v3 핵심)
from apps.mobile_router.models import MobileUnit, DispatchPlan
from apps.mobile_router.services.vrp_solver import MobileChargingVRPSolver
from django.utils import timezone
from datetime import timedelta

class FaultReplacementRouter:
    """
    고정식 충전소 고장·점검 감지 → 이동형 즉시 대체 경로 생성
    
    트리거:
      - OCPP WebSocket: 충전소 상태 'Faulted' / 'Unavailable' 수신
      - 정기점검 스케줄: 24시간 전 사전 배차 계획 생성
    
    SLA 목표:
      - 고장 감지 → 대체 배차 계획 생성: 5분 이내
      - 이동형 충전소 현장 도착: 2시간 이내
      - 서비스 공백 최소화
    """
    FAULT_RESPONSE_TARGET_MIN  = 5    # 배차 계획 생성 SLA (분)
    ARRIVAL_TARGET_HOURS       = 2    # 현장 도착 목표 (시간)
    MIN_HYDROGEN_LEVEL         = 50   # 투입 가능 최소 수소 잔량 %

    def handle_fault_event(self, station_id: int, fault_type: str) -> dict:
        """
        OCPP Faulted 이벤트 수신 시 즉시 호출
        fault_type: 'FAULT' | 'SCHEDULED_MAINTENANCE' | 'EMERGENCY'
        """
        faulted_station = self._get_station(station_id)
        affected_demand = self._estimate_lost_demand(faulted_station)

        # 최근접 가용 이동형 충전소 탐색 (수소 잔량 50% 이상)
        candidate_units = MobileUnit.objects.filter(
            status__in=['IDLE', 'DISPATCHED'],
            hydrogen_level__gte=self.MIN_HYDROGEN_LEVEL,
        ).annotate(
            dist=    # PostGIS ST_Distance 기준 정렬
        ).order_by('dist')[:3]

        if not candidate_units.exists():
            self._escalate_alert(station_id, 'NO_MOBILE_UNIT_AVAILABLE')
            return {'status': 'ESCALATED', 'reason': 'no_available_unit'}

        best_unit = candidate_units.first()
        eta = timezone.now() + timedelta(hours=self.ARRIVAL_TARGET_HOURS)

        # OR-Tools로 대체 경로 즉시 생성 (30초 이내)
        route = MobileChargingVRPSolver().solve_single_unit(
            unit=best_unit,
            target=faulted_station.location,
            demand_kg=affected_demand,
            time_limit_sec=30
        )

        plan = DispatchPlan.objects.create(
            mobile_unit    = best_unit,
            target_sites   = [station_id],
            route_geom     = route['geometry'],
            estimated_eta  = eta,
            demand_served  = affected_demand,
            dispatch_type  = 'FAULT_REPLACEMENT',  # ★ 대체 배차 구분
            fault_ref_id   = station_id,
            is_active      = True
        )
        best_unit.status = 'DISPATCHED'
        best_unit.save()

        return {
            'status':          'DISPATCHED',
            'unit_id':         best_unit.unit_id,
            'estimated_eta':   eta.isoformat(),
            'demand_covered_kg': affected_demand,
            'route_distance_km': route['total_distance_km'],
            'plan_id':         plan.id,
        }

    def handle_scheduled_maintenance(self, station_id: int,
                                        maintenance_start: str) -> dict:
        """정기점검 24시간 전 사전 배차 계획 생성"""
        pass  # 동일 로직, ETA만 정기점검 시작 시각으로 설정
라우팅 3가지 배차 모드: (1) 정기 VRP 배차 — 수요 예측 기반 일상적 순회 경로 최적화. (2) 고장·점검 대체 배차 — OCPP Fault 이벤트 즉시 감지 → 5분 내 계획 생성 → 2시간 내 도착. (3) 이벤트 임시 배차 — 건설공사·지역행사 48시간 전 선제 파견. 수익성이 정규 루트보다 높아 적자 폭 감소에 직접 기여.
SECTION 04

데이터 수집·연계 설계

데이터소스주기AI 레이어 활용
EV/수소차 등록공공데이터포털 (국토부)월 1회① PREDICTION — 연도별 수요 기준값 (131.6 kg/대)
교통량·증가율도로공사 VDS, TOPIS5분① PREDICTION + ② ALLOCATION 성장률 피처
충전 대기 ★환경부 OCPP 2.030초 실시간① PREDICTION 대기 보정 레이어
고장·점검 상태 ★OCPP WebSocket (Faulted/Unavailable)실시간③ ROUTING 즉시 대체 경로 트리거
건설 공사 ★국토부 건설허가 공공데이터주 1회① PREDICTION 이벤트 오버레이 + ③ ROUTING 임시 배차
지역 행사 ★문체부 행사 DB, 지자체 API일 1회① PREDICTION 이벤트 오버레이 + ③ ROUTING 임시 배차
충전소 수익환경부 OCPP / ME-hub실시간② ALLOCATION 수익 증가율 피처
수소 수급가스공사 파이프라인일 1회② ALLOCATION DSR 공급 파라미터
전력 수급한전 AMI API15분② ALLOCATION 전기차 충전소 입지 적합성

핵심 데이터 모델 (v3 추가 포함)

# apps/mobile_router/models.py — v3 고장 대체 배차 추가
class DispatchPlan(models.Model):
    class DispatchType(models.TextChoices):
        REGULAR      = 'REGULAR',      '정기 VRP 배차'
        FAULT_REPLACE= 'FAULT_REPLACE','고장·점검 대체'   # ★NEW
        EVENT_TEMP   = 'EVENT_TEMP',   '이벤트 임시 배차'

    mobile_unit     = models.ForeignKey('MobileUnit', on_delete=models.CASCADE)
    # ★ 이동형은 반드시 고정식 거점과 연계 (논문: mHRS 단독 운영 배제)
    parent_station  = models.ForeignKey('ChargingStation', on_delete=models.SET_NULL,
                                         null=True, related_name='mobile_plans')
    target_sites    = JSONField(default=list)
    route_geom      = models.LineStringField(srid=4326, null=True)
    estimated_eta   = models.DateTimeField()
    demand_served   = models.FloatField(default=0)
    dispatch_type   = models.CharField(max_length=20, choices=DispatchType.choices,
                                        default=DispatchType.REGULAR)
    fault_ref_id    = models.IntegerField(null=True)   # 고장 대체 시 원 충전소 ID
    event_ref_id    = models.IntegerField(null=True)   # 이벤트 배차 시 이벤트 ID
    is_active       = models.BooleanField(default=True)
    created_at      = models.DateTimeField(auto_now_add=True)

class StationFaultLog(models.Model):
    """충전소 고장·점검 이력 — 대체 배차 성능 측정에 활용"""
    station         = models.ForeignKey('ChargingStation', on_delete=models.CASCADE)
    fault_type      = models.CharField(max_length=30)   # FAULT | MAINTENANCE | EMERGENCY
    detected_at     = models.DateTimeField()
    dispatch_plan   = models.OneToOneField(DispatchPlan, on_delete=models.SET_NULL,
                                            null=True, related_name='fault_response')
    plan_created_at = models.DateTimeField(null=True)   # 배차 계획 생성 시각
    unit_arrived_at = models.DateTimeField(null=True)   # 실제 현장 도착 시각

    @property
    def response_time_min(self) -> float:
        """감지 → 배차 계획 생성 소요 시간 (분) — SLA 5분 목표"""
        if self.plan_created_at:
            return (self.plan_created_at - self.detected_at).seconds / 60
        return None

    @property
    def arrival_time_hours(self) -> float:
        """배차 계획 → 현장 도착 소요 시간 (시간) — SLA 2시간 목표"""
        if self.unit_arrived_at and self.plan_created_at:
            return (self.unit_arrived_at - self.plan_created_at).seconds / 3600
        return None
SECTION 05

논문 연구 반영 백동현 외, JHNE 2025

백동현·박창협·전호병·김기세(2025), "이동식 수소충전소 통합 운영모델의 타당성 분석", 한국수소및신에너지학회논문집 36(6), pp.607-614

논문과 H2-Flex AX의 관계: 논문은 정적 시나리오 분석으로 통합모델의 경제적 타당성을 검증했습니다. H2-Flex AX는 논문이 스스로 지적한 한계인 "동적 모델 필요성"을 AI 기반 실시간 최적화로 해소합니다. 논문의 수치가 H2-Flex AX의 KPI 기준값이 됩니다.
논문 핵심 수치H2-Flex AX 반영AI 레이어
DSR 목표 34%±2%
5년 평균 35.8%, 최근 3년 34%
ALLOCATION 엔진의 핵심 제약 조건. 모든 입지·배차 의사결정의 기준 지표② ALLOCATION
시나리오 A: 895억 절감
50전환+30신설/년, 533→445개소
동적 최적화의 기준선(Baseline). H2-Flex AX는 이를 초과하는 추가 절감 추구② ALLOCATION
mHRS 단독 운영 배제DispatchPlan.parent_station FK 필수화. VRP 솔버 귀환 거점 = 연계 sHRS 고정③ ROUTING
수소차 131.6 kg/대/년SystemConfig DB 관리. 재훈련 없이 정책 변경 시 즉시 수정 가능① PREDICTION
운영효율 62.5% (300시간)sHRS 7,500 kg/년, msHRS 9,375 kg/년 공급능력 산출. ROUTING 연료 최소화 반영③ ROUTING
동적 모델 필요성
논문 토의 섹션의 자체 한계 지적
Celery Beat 월별 자동 재훈련 파이프라인. 실시간 데이터로 매월 최적 구축 계획 재산출MLflow + Celery
SECTION 06

기대 효과

💰 경제적 가치 (예산 절감)

895억원

고정식 단독 대비 통합모델 운영 시 2026~2030년 구축 비용(CAPEX) 절감.
533개소 → 445개소로 88개소 감소. 절감된 예산으로 추가 미구축 지역 충전 인프라 투자 여력 확보.

⚡ 운영 효율성 증대

9,375kg/년

msHRS 기준 연간 공급능력 최적화. 불필요한 인프라 과잉 투자 방지. 고장·점검 시 서비스 공백 2시간 내 복구. 이동형 운영 낭비율 -40%.

🚗 이용자 편의성 향상

충전 사각지대
해소

이동형 충전소의 유연한 배치로 미구축 지역·오지 수요 대응. 실시간 대기 정보 제공으로 충전 대기시간 -30% 단축. 수소차 보급 확대 가속화.

🏛️ 정책 목표 기여

탄소중립

기후환경에너지부의 탄소중립 및 수소 경제 활성화 성과 관리 목표 직접 기여. DSR 34% 유지로 정부 수소차 보급 정책 실행력 강화. 정책 효과 데이터 기반 측정·보고 체계 구축.

SECTION 07

REST API 명세

인증: JWT Bearer Token (SimpleJWT). 부처·기관 연동은 API Key 병행. 모든 API HTTPS 필수.
메서드엔드포인트설명레이어
GET/api/v1/locations/recommend/선제적 입지 추천 (proactive_months 파라미터)② ALLOCATION
GET/api/v1/locations/{id}/growth/교통량·수익 증가율 추이 조회② ALLOCATION
GET/api/v1/demand/predict/3-단계 수요 예측 (기본+대기+이벤트)① PREDICTION
GET/api/v1/demand/queue/realtime/충전소별 실시간 대기 현황① PREDICTION
POST/api/v1/mobile/dispatch/regular/정기 VRP 배차 계획 생성③ ROUTING
POST/api/v1/mobile/dispatch/fault/고장·점검 즉시 대체 경로 생성 ★③ ROUTING
POST/api/v1/mobile/dispatch/event/이벤트 임시 배차 계획 생성③ ROUTING
GET/api/v1/dsr/current/현재 수요공급비 실시간 계산② ALLOCATION
GET/api/v1/dsr/optimize/DSR 목표 달성 최적 구축 계획② ALLOCATION
GET/api/v1/events/upcoming/48시간 내 예정 이벤트·공사 목록① PREDICTION
WSws://host/ws/stations/faults/충전소 고장 실시간 알림 스트림 ★③ ROUTING
WSws://host/ws/mobile/location/이동형 차량 실시간 위치 스트림③ ROUTING
SECTION 08

개발 로드맵 (18개월 3단계)

1

1단계: 데이터 기반 구축 (M1~M6)

Foundation
  • Django 프로젝트, PostgreSQL + PostGIS, Kafka·Redis 환경 구성
  • 공공데이터 API 연동 (EV 등록, VDS 교통량, 한전 AMI, 가스공사)
  • OCPP 실시간 대기·고장 상태 수신 커넥터 구축 (환경부 ME-hub 협의)
  • 건설허가 공공데이터, 문체부 행사 DB 연동 (event_manager 앱)
  • 교통량·수익률 3년 시계열 적재 및 증가율 산출 파이프라인
  • 마일스톤: 전체 파이프라인 안정화 + OCPP Fault 이벤트 수신 확인
2

2단계: AI 모델 개발 및 통합 (M7~M12)

AI Development
  • ① PREDICTION: Prophet+LSTM 앙상블 + 실시간 대기 보정 + 이벤트 오버레이 통합
  • ② ALLOCATION: XGBoost v3 훈련 (108개 피처) + 선제적 입지 선정 로직
  • ② ALLOCATION: DSR 최적화 엔진 (SLSQP, 시나리오 A 검증)
  • ③ ROUTING: OR-Tools VRP + FaultReplacementRouter 구현 및 SLA 검증
  • ③ ROUTING: EventBasedDispatcher 이벤트 임시 배차 개발
  • MLflow 모델 레지스트리, 월별 자동 재훈련 파이프라인 구축
  • 마일스톤: 고장 대체 배차 SLA(5분/2시간) 달성 검증 + AI 정확도 기준 충족
3

3단계: 운영 배포 및 고도화 (M13~M18)

Production
  • 실시간 대기·고장·이동형 위치 모니터링 대시보드 (Django Channels WebSocket)
  • DSR·895억 절감 추적 정책결정자 대시보드 (기후환경에너지부 연계)
  • AWS EKS Kubernetes 프로덕션 배포 (고가용성 99.5%)
  • 환경부·국토부 시스템 연동 + 파일럿 지역 실증 (2~3개 지역)
  • 부하 테스트 (동시 1,000 RPS), 개인정보보호 컴플라이언스 최종 검토
  • 마일스톤: 파일럿 지역 DSR 34%±2% 유지 확인 + 부처 운영 인수인계
SECTION 09

성과 지표 (KPI) 및 리스크 관리

기술 KPI

  • 수요 예측 MAPE (1일): ≤ 15%
  • 입지 추천 AI (AUC-ROC): ≥ 0.85
  • 선제 입지 적중률 (12개월): ≥ 70%
  • 고장 대체 배차 계획: ≤ 5분 (SLA) ★
  • 이동형 현장 도착: ≤ 2시간 (SLA) ★
  • VRP 배차 계획 생성: ≤ 30초
  • 실시간 대기 반영 지연: ≤ 60초
  • API 응답 p95: ≤ 500ms
  • 시스템 가용성: ≥ 99.5%

정책 KPI 논문 연계

  • DSR 34%±2% 유지율: ≥ 80%
  • 2026~2030 구축비 절감: ≥ 895억원
  • 필요 충전소 수: 533 → 445개소
  • 이동형 낭비율: -40%
  • 충전 대기시간: -30%
  • 충전 사각지대 해소: 미구축 지역 +30%
  • 이벤트 배차 수익 기여: 연간 측정·보고
  • 기후환경에너지부 목표 기여: 정량 보고 체계 구축

주요 리스크 및 완화 전략

리스크유형완화 전략
OCPP 고장 이벤트 미수신운영충전소 운영사 직접 WebSocket 연동, 30분 무응답 시 장애 추정 자동 알림
고장 시 이동형 가용 차량 없음운영최소 가용 차량 수 임계치 설정, 미달 시 관리자 긴급 알림 + 인근 충전소 안내
이벤트 DB 데이터 불완전데이터문체부·지자체·SNS 크롤링 다중 소스 교차 검증
성장률 예측 오차 누적AI6개월+ 예측은 신뢰구간(CI) 함께 제공, 신뢰도 등급 표시
DSR 목표 미충족운영월별 자동 재계산, 조기경보 → 긴급 추가 배차 또는 신설 계획 조기 실행
개인위치정보 처리 위반법규대기·위치 데이터 충전소 단위 집계만 수집, 개별 차량 추적 금지, PIIA 검토