Tech Stack


Front-End Tech Stack

Back-End Tech Stack

API


공통 규약

응답 메세지 형태

{
	"code": "",
	"message": "stt 변환 실패"
	"data" : response data
}

Member 구조

class Member(db.Model):
    ID = db.Column(db.String(20), primary_key=True)
    Email = db.Column(db.String(120), unique=True, nullable=False)
    Password = db.Column(db.String(100), nullable=False)

CCTV 구조

class CCTV(db.Model):

    # CCTV ID
    ID = db.Column(db.String(7), primary_key=True)
    # CCTV Name
    Name = db.Column(db.String(20), unique=True, nullable=False)
    # Center Name
    Center = db.Column(db.String(20), nullable=False)
    # X COORD
    Longitude = db.Column(db.Float, nullable=False)
    # Y COORD
    Latitude = db.Column(db.Float, nullable=False)
    # CCTV Streaming URL
    URL = db.Column(db.Text)

CCTVStatus 구조

class CCTVStatus(db.Model):

    # CCTV ID(외래키) 
    CCTVID = db.Column(db.String(7), db.ForeignKey('cctv.ID', ondelete='CASCADE'), primary_key=True)
    cctv = db.relationship('CCTV', backref=db.backref('status'))

    # 침수 단계
    FloodingStage = db.Column(db.Integer, nullable=False)

FloodHistory 구조

class FloodHistory(db.Model):

    # History code(Datetime, CCTV ID) 복합키로 기본키 지정
    __table_args__ = (db.PrimaryKeyConstraint('Datetime', 'CCTVID', name = 'HistoryCode'), )

    # Datetime - YYYY-MM-DD HH:MM:SS
    Datetime = db.Column(db.DateTime, nullable=False)

    # CCTV ID(외래키) 
    CCTVID = db.Column(db.String(7), db.ForeignKey('cctv.ID', ondelete='CASCADE'))
    cctv = db.relationship('CCTV', backref=db.backref('history_set'))

    # Flood Stage - 침수 단계
    FloodStage = db.Column(db.Integer, nullable=False)

    # Image URL - S3에 저장된 이미지 URL
    ImageURL = db.Column(db.Text)
    
    # Temperatures - 기온
    Temperature = db.Column(db.Float)

    # Humidity - 습도
    Humidity = db.Column(db.Float)

    # precipitation - 1시간 강수량
    Precipitation = db.Column(db.Float)

Shelter 구조