Skip to content

자동 사고 통보 (ACN) API 개발자 가이드

서비스 개요

자동 사고 통보(ACN)는 차량 충돌 사고 발생 시 사고 상황을 자동으로 감지하고 사고 정보를 콜센터나 긴급 구조 기관에 전송하여 구조를 요청하는 텔레매틱스 서비스입니다.

서비스 특징

  • 사고 자동 감지 및 즉각적인 구조 요청
  • 긴급 구조 요청을 위한 수동 SOS 버튼 제공
  • 사고 위치 정보 및 상세 데이터 전송
  • 자동 음성 통화 연결
  • 구조 시간 단축을 통한 생존율 향상

법적 요구사항

  • EU: 2018년부터 신차 내 eCall 설치 의무화
  • 국가별 서비스 방식 차이 반영 (EU - PSAP 직접 연결, 미국 - OEM 경유 등)
  • 개인정보 보호법 준수
  • 긴급 상황 데이터의 최우선 처리

주요 시나리오

시나리오 1: 사고 자동 감지 및 긴급 통화 연결

엔티티별 API 흐름:

🚗 차량 (TCU):

  1. 사고 감지: 에어백 전개 또는 차량 전복을 통해 사고 감지
  2. 데이터 수집: GPS, VIN, 속도 등 MSD(Minimum Set of Data) 수집
  3. 긴급 연락: 즉각적인 음성 통화 연결 및 데이터 전송

🏢 콜센터:

  1. 이벤트 모니터링: SSE를 통한 사고 알림 수신
  2. 사건 생성: ACN 레코드 생성 및 지도상 위치 확인
  3. 구조 협력: 구조 기관(119/112)에 출동 요청

📱 앱 (사용자):

  1. 모니터링: SSE를 통한 사고 알림 수신
  2. 상태 확인: 현재 사고 처리 상태 확인
  3. 시스템 헬스: ACN 시스템 상태 확인

시나리오 2: 사고 데이터 처리 및 상태 관리

엔티티별 API 흐름:

🏢 콜센터:

  1. 상태 관리: 상담원 가용 상태 확인
  2. 사건 할당: 할당된 사건 관리
  3. 통계 분석: ACN 처리량 모니터링
  4. 이력 감사: 과거 사고 기록 조회

🚗 차량 (TCU):

  1. 통화 상태 전송: 통화 종료 시 VCT 이벤트 전송
  2. 상태 업데이트: 사고 상태 변경 정보 전송
  3. 데이터 재전송: 통신 실패 시 데이터 재전송 시도
  4. 시스템 상태 유지: ACN 시스템과의 연결 상태 유지

📱 앱 (사용자):

  1. 실시간 상태 모니터링: SSE를 통한 사고 처리 상태 수신
  2. 사고 위치 확인: 지도상에 사고 위치 표시
  3. 시스템 헬스 상태: 시스템 상태 모니터링

시나리오 3: 사고 종료 및 후속 처리

엔티티별 API 흐름:

🏢 콜센터:

  1. 사건 종료: 구조 완료 후 ACN 사건 종료
  2. 결과 기록: 최종 구조 결과 및 종료 사유 기록

📱 앱 (사용자):

  1. 결과 확인: 최종 사고 처리 결과 확인
  2. 이력 관리: 완료된 사고 이력 보기

주요 기능

📱 앱 구현 기능

1. ACN 시스템 모니터링


🏢 콜센터 구현 기능

1. ACN 사건 관리

2. 상담원 및 통계 분석

시퀀스 다이어그램

ACN (자동 사고 통보) 시스템 흐름

ACN

API 엔드포인트

헤더, 응답 코드 및 에러 형식은 공통 API 사양을 참조하십시오.

ACN 통계 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/safety/acn/stats" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

ACN 사건 상태 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/safety/vehicles/KMHSH81C7LU123456/acn/status?cid=ACN_20260307_001" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

ACN 사건 이력 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/safety/vehicles/KMHSH81C7LU123456/acn/history" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

ACN 사건 종료

bash
curl -X POST "https://api.ecarus.run/api/v1/safety/vehicles/KMHSH81C7LU123456/acn/close" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
     -H "Content-Type: application/json" \
     -d '{
       "cid": "ACN_20260307_001",
       "closureReason": "EMERGENCY_SERVICES_DISPATCHED",
       "result": "SUCCESS",
       "agentId": "AGENT_001",
       "notes": "모든 피해자가 구조되었으며 안전합니다."
     }'

ACN 상담원 상태 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/safety/acn/agents/AGENT_001/status" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

상담원 할당 ACN 사건 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/safety/acn/agents/AGENT_001/incidents" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

ACN 시스템 상태 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/safety/acn/system/health" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

ACN 실시간 이벤트 수신 (SSE)

참고: 브라우저를 통해 접속하거나 전용 SSE 클라이언트 사용을 권장합니다.

bash
curl -N -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
     "https://api.ecarus.run/api/v1/safety/acn/events"

데이터 모델

ACN 통계 응답 (Statistics Response)

json
{
  "totalIncidents": 1250,
  "activeIncidents": 3,
  "resolvedToday": 8,
  "averageResponseTime": "4.5 min",
  "successRate": 98.2
}

ACN 상태 응답 (Status Response)

json
{
  "vin": "KMHSH81C7LU123456",
  "cid": "ACN_20260307_001",
  "status": "ACTIVE",
  "timestamp": "2026-03-07T14:30:00Z",
  "location": {
    "latitude": 37.4021,
    "longitude": 127.1023,
    "accuracy": 5.2
  },
  "severity": "HIGH",
  "trigger": "AIRBAG_DEPLOYMENT",
  "rescueStatus": "DISPATCHED",
  "estimatedArrival": "2026-03-07T14:45:00Z"
}

ACN 이력 응답 (History Response)

json
{
  "vin": "KMHSH81C7LU123456",
  "incidents": [
    {
      "cid": "ACN_20260307_001",
      "timestamp": "2026-03-07T14:30:00Z",
      "severity": "HIGH",
      "status": "RESOLVED",
      "duration": "45 min",
      "trigger": "AIRBAG_DEPLOYMENT",
      "location": {
        "latitude": 37.4021,
        "longitude": 127.1023
      },
      "resolution": "EMERGENCY_SERVICES_DISPATCHED"
    }
  ],
  "total": 1
}

ACN 사건 종료 요청 (Closure Request)

json
{
  "cid": "ACN_20260307_001",
  "closureReason": "EMERGENCY_SERVICES_DISPATCHED",
  "result": "SUCCESS",
  "notes": "모든 피해자가 구조되었으며 안전합니다."
}

ACN 사건 종료 응답 (Closure Response)

json
{
  "cid": "ACN_20260307_001",
  "status": "CLOSED",
  "timestamp": "2026-03-07T15:15:00Z"
}

ACN 상담원 상태 응답 (Agent Status Response)

json
{
  "agentId": "AGENT_001",
  "status": "ACTIVE",
  "currentIncidents": 2,
  "totalHandled": 145,
  "averageHandlingTime": "12.3 min",
  "lastActivity": "2026-03-07T14:45:00Z"
}

ACN 상담원 사건 조회 응답 (Agent Incidents Response)

json
{
  "agentId": "AGENT_001",
  "incidents": [
    {
      "cid": "ACN_20260307_001",
      "vin": "KMHSH81C7LU123456",
      "severity": "HIGH",
      "status": "ACTIVE",
      "timestamp": "2026-03-07T14:30:00Z",
      "location": {
        "latitude": 37.4021,
        "longitude": 127.1023
      },
      "assignedTime": "2026-03-07T14:32:00Z",
      "estimatedResolution": "2026-03-07T15:15:00Z"
    }
  ],
  "total": 1,
  "activeCount": 1
}

ACN 시스템 상태 응답 (System Status Response)

json
{
  "status": "HEALTHY",
  "timestamp": "2026-03-07T15:00:00Z",
  "services": {
    "psapConnection": "ACTIVE",
    "voiceCallService": "ACTIVE",
    "dataTransmission": "ACTIVE",
    "database": "ACTIVE"
  },
  "metrics": {
    "responseTime": "0.8s",
    "uptime": "99.9%",
    "activeConnections": 45
  }
}

ACN 실시간 이벤트 (SSE)

json
{
  "type": "INCIDENT_CREATED",
  "timestamp": "2026-03-07T14:30:00Z",
  "data": {
    "cid": "ACN_20260307_001",
    "vin": "KMHSH81C7LU123456",
    "severity": "HIGH",
    "location": {
      "latitude": 37.4021,
      "longitude": 127.1023,
      "accuracy": 5.2
    },
    "trigger": "AIRBAG_DEPLOYMENT"
  }
}

보안 및 프라이버시

인증 및 권한 부여

  • 사용자 인증 토큰 필요 (JWT/OAuth2)
  • 차량 접근 권한 확인
  • 긴급 상황 최우선 처리 권한 확인

데이터 보안

  • 모든 API 통신은 HTTPS/TLS 암호화
  • 사고 데이터 전송을 위한 추가 보안 조치 적용
  • 민감 정보는 서버측에만 저장

프라이버시 보호

  • 사고 정보 수집에 대한 명시적 동의
  • 긴급 상황 시 위치 정보 수집 목적 명시
  • 사고 데이터 보존 기간 정책 준수
  • 사용자 요청 시 데이터 삭제 권리 보장

접근 제어

  • VIN 기반 차량 접근 권한 확인
  • 긴급 상황 시 권한 최우선 처리
  • 외부 기관(구조팀) 접근을 위한 별도 인증 절차 적용

예외 처리

네트워크 관련

  • 연결 실패: 오프라인 모드 지원, 마지막 상태 캐싱
  • 응답 지연: 로딩 인디케이터, 타임아웃 처리
  • 서버 다운: 에러 메시지 표시, 재시도 제안

차량 상태 관련

  • 차량 오프라인: 마지막 사고 정보 표시, 오프라인 상태 알림
  • 통신 불가: 지연된 사고 정보 처리, 재전송 로직 적용
  • 음성 통화 실패: 대체 연결 수단 시도

긴급 상황 관련

  • 위치 정보 오류: 마지막 위치 기반 추정, Cell ID 기반 위치 보정
  • 중복 사고: 중복 이벤트 필터링 및 최신 정보 우선순위 설정
  • 승객 무의식 상태: 자동 음성 통화 연결 유지

테스트 설정

Base URL: https://api.ecarus.run/api/v1/safety
인증 토큰: sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d
샘플 VIN: KMHSH81C7LU123456

대화형 API 테스트를 위해 Swagger UI를 사용하십시오.

배포 고려사항

앱 스토어 등록

  • 긴급 알림 권한 요청
  • 위치 정보 수집에 대한 명확한 설명
  • 긴급 상황 서비스 목적 명시

법규 준수

  • 국가별 eCall 서비스 규정 확인
  • 긴급 구조 서비스 관련 법령 준수
  • 개인정보 보호법 준수 (특히 의료 정보 등)

서비스 통합

  • PSAP 또는 구조 기관과의 통합 연동
  • 보험사 연동 서비스 준비
  • 견인 서비스 업체와의 계약 체결 지원

Released under the MIT License.