from enum import IntEnum, unique from sqlalchemy import Column, Integer, String, DateTime, ForeignKey from sqlalchemy.orm import relationship from models.base import BaseModel @unique class DealStatus(IntEnum): AWAITING_ACCEPTANCE = 0 PACKAGING = 1 AWAITING_SHIPMENT = 2 AWAITING_PAYMENT = 3 COMPLETED = 4 CANCELLED = 5 class Deal(BaseModel): __tablename__ = 'deals' id = Column(Integer, autoincrement=True, primary_key=True, index=True) name = Column(String, nullable=False, comment='Название сделки') created_at = Column(DateTime, nullable=False, comment='Дата создания') current_status = Column(Integer, nullable=False, comment='Текущий статус') status_history = relationship('DealStatusHistory', back_populates='deal') class DealStatusHistory(BaseModel): __tablename__ = 'deals_status_history' id = Column(Integer, autoincrement=True, primary_key=True, index=True) deal_id = Column(Integer, ForeignKey('deals.id'), nullable=False, comment='ID сделки') deal = relationship('Deal', back_populates='status_history') user_id = Column(Integer, ForeignKey('users.id'), nullable=False) user = relationship('User') changed_at = Column(DateTime, nullable=False, comment='Дата и время когда произошла смена статуса') from_status = Column(Integer, nullable=False, comment='Предыдущий статус') to_status = Column(Integer, nullable=False, comment='Новый статус')