AssetPilot OrangePi 5 Pluse Server-First Commit
This commit is contained in:
55
asset_pilot_docker/app/models.py
Normal file
55
asset_pilot_docker/app/models.py
Normal file
@@ -0,0 +1,55 @@
|
||||
from sqlalchemy import Column, Integer, String, Float, DateTime, Text, ForeignKey
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import relationship
|
||||
from datetime import datetime
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
class Asset(Base):
|
||||
"""자산 마스터 테이블"""
|
||||
__tablename__ = "assets"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
symbol = Column(String(20), unique=True, nullable=False, index=True)
|
||||
name = Column(String(100), nullable=False)
|
||||
category = Column(String(50)) # 귀금속, 암호화폐, 환율 등
|
||||
created_at = Column(DateTime, default=datetime.utcnow)
|
||||
|
||||
# 관계
|
||||
user_assets = relationship("UserAsset", back_populates="asset")
|
||||
price_history = relationship("PriceHistory", back_populates="asset")
|
||||
|
||||
class UserAsset(Base):
|
||||
"""사용자 자산 정보"""
|
||||
__tablename__ = "user_assets"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
asset_id = Column(Integer, ForeignKey("assets.id"), nullable=False)
|
||||
previous_close = Column(Float, default=0.0) # 전일종가
|
||||
average_price = Column(Float, default=0.0) # 평균매입가
|
||||
quantity = Column(Float, default=0.0) # 보유량
|
||||
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
# 관계
|
||||
asset = relationship("Asset", back_populates="user_assets")
|
||||
|
||||
class PriceHistory(Base):
|
||||
"""가격 히스토리 (선택적)"""
|
||||
__tablename__ = "price_history"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
asset_id = Column(Integer, ForeignKey("assets.id"), nullable=False)
|
||||
price = Column(Float, nullable=False)
|
||||
timestamp = Column(DateTime, default=datetime.utcnow, index=True)
|
||||
|
||||
# 관계
|
||||
asset = relationship("Asset", back_populates="price_history")
|
||||
|
||||
class AlertSetting(Base):
|
||||
"""알림 설정"""
|
||||
__tablename__ = "alert_settings"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
setting_key = Column(String(100), unique=True, nullable=False)
|
||||
setting_value = Column(Text) # JSON 형식으로 저장
|
||||
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
Reference in New Issue
Block a user