"""Portfolio models (포트폴리오).""" from sqlalchemy import Column, String, Text, Numeric, DateTime, ForeignKey from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import relationship import uuid from datetime import datetime from app.database import Base class Portfolio(Base): """Portfolio model (퇴직연금 포트폴리오).""" __tablename__ = "portfolios" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) name = Column(String(100), nullable=False) description = Column(Text) user_id = Column(String(100)) # 사용자 ID (향후 인증 시스템 연동) created_at = Column(DateTime, default=datetime.utcnow) # Relationship assets = relationship("PortfolioAsset", back_populates="portfolio", cascade="all, delete-orphan") def __repr__(self): return f"" class PortfolioAsset(Base): """Portfolio asset model (포트폴리오 자산 목표 비율).""" __tablename__ = "portfolio_assets" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) portfolio_id = Column(UUID(as_uuid=True), ForeignKey("portfolios.id"), nullable=False) ticker = Column(String(20), nullable=False) target_ratio = Column(Numeric(5, 2), nullable=False) # 목표 비율 (%) # Relationship portfolio = relationship("Portfolio", back_populates="assets") def __repr__(self): return f""