Skip to content
 
 

Latest commit

 

History

308 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SSAI Backend

Spring Boot 기반의 스마트 안전 모니터링 백엔드입니다. 사용자·시설·카메라를 관리하고, AI가 MQTT로 전달한 위험 이벤트를 저장한 뒤 웹과 모바일에 실시간 알림으로 전달합니다.

프로젝트 시각 자료

스마트 안전 관제 시스템 시연 영상

프로젝트 전체 이벤트 흐름

스마트 안전 관제 시스템 흐름

운영·보안 구조 참고

프로젝트 전체 보안 아키텍처

이미지는 백엔드 단독 기능이 아니라 strangeRookies 프로젝트 통합 자료의 전체 운영 구조를 보여주는 참고 자료입니다.

주요 기능

  • 개인·기업 회원가입과 로그인
  • BCrypt 비밀번호 처리, JWT Access/Refresh Token
  • HttpOnly Refresh Token 쿠키와 Redis 세션·로그인 제한
  • SMS 인증, 비밀번호 재설정, 약관 동의 관리
  • 개인 시설·기업 카메라·보호 대상자·긴급 연락처 관리
  • 카메라별 시나리오와 위험구역 ROI 설정 관리
  • MQTT 위험 이벤트·카메라 상태·오버레이 수신
  • 이벤트 ID 기반 중복 처리와 영상 후첨부
  • PostgreSQL 기반 이벤트·이력·상태 저장
  • 최근 이벤트 Redis 캐시와 PostgreSQL fallback
  • STOMP over WebSocket 기반 시설·기업별 실시간 알림
  • FCM 모바일 푸시와 기기 토큰·전송 이력 관리
  • S3 스냅샷·클립 저장 및 Presigned URL 발급
  • VLM 설명 작업과 선택적 임베딩·검색 연동
  • 오래된 알림 데이터 정리 스케줄러

시스템 흐름

AI Worker
  -> MQTT Broker
  -> MQTT Subscriber
  -> 비동기 이벤트 처리
  -> PostgreSQL 저장
  -> STOMP WebSocket / FCM
  -> 웹 대시보드·Android 앱

데이터 관리

  • PostgreSQL: 사용자, 시설, 카메라, 시나리오, ROI, AlertEvent, 스냅샷 메타데이터와 알림 이력
  • Redis: 인증번호, Refresh Token, 로그인 제한, 최근 10분 이벤트 캐시
  • S3: 스냅샷과 클립 파일
  • 최근 이벤트 캐시는 시설·기업별 Sorted Set으로 관리하며 최대 100건을 조회
  • 동일 이벤트는 eventId와 DB Unique 제약조건으로 중복 저장을 방지
  • 기본 알림 보관 기간은 30일이며 환경변수로 조정 가능

DB 설계

사용자, 기업, 시설, 카메라, 위험 이벤트, 알림 및 긴급 연락처 간의 관계를 기준으로 데이터베이스를 설계했습니다.

스마트 안전 모니터링 시스템 DB 스키마

DB 스키마 원본 크기로 보기

실행

필수 환경변수를 설정한 후 실행합니다.

./gradlew bootRun

기본 개발 설정은 다음 인프라를 사용합니다.

PostgreSQL: localhost:5432
Redis: localhost:6379
MQTT Broker: localhost:1883
API: localhost:8080
WebSocket: /ws

주요 환경변수 예시:

DB_URL=jdbc:postgresql://localhost:5432/strange_safety
DB_USERNAME=postgres
DB_PASSWORD=your-password
REDIS_HOST=localhost
MQTT_HOST=localhost
JWT_SECRET=change-me
FCM_ENABLED=false
AWS_S3_BUCKET=your-bucket

담당 개발 내용

  • 개인·기업 회원가입, 로그인, SMS 인증과 약관 동의 흐름
  • JWT 인증과 Refresh Token 재발급·로그아웃 처리
  • MQTT 이벤트 수신, 시설·기업별 이벤트 매핑과 중복 처리
  • PostgreSQL 이벤트 모델과 Redis 최근 이벤트 캐시
  • STOMP 토픽 기반 웹 실시간 알림
  • FCM 기기 등록, 푸시 발송과 전송 결과 관리
  • 카메라·ROI·시설·보호 대상자 관리 API
  • S3 미디어 메타데이터와 Presigned URL 처리

관련 저장소

함께 진행한 주요 프로젝트

About

MQTT 이벤트를 PostgreSQL·Redis에 저장하고 STOMP·FCM으로 전달하는 Spring Boot 안전 관제 백엔드

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages