from enum import Enum as PyEnum from sqlalchemy import ( Column, DateTime, Enum, Float, ForeignKey, Integer, String, func, ) from sqlalchemy.dialects.postgresql import UUID from pydantic import BaseModel from ._base import Base class ProposalStatus(PyEnum): APPROVED = "APPROVED" EVALUATED = "EVALUATED" IN_REVIEW = "IN_REVIEW" class GateCriteria(PyEnum): PASS = "PASS" FAIL = "FAIL" IN_REVIEW = "IN_REVIEW" class Proposal(Base): __tablename__ = "proposals" id = Column(UUID(as_uuid=True), primary_key=True, nullable=False) rfp_id = Column( UUID(as_uuid=True), ForeignKey("rfps.id", ondelete="CASCADE"), nullable=False ) name = Column(String, nullable=False) tep = Column(String, nullable=False) gate_criteria = Column(Enum(GateCriteria), nullable=False) status = Column(Enum(ProposalStatus), nullable=False) ai_score = Column(Float, nullable=True) final_score = Column(Float, nullable=True) created_at = Column(DateTime, nullable=False, default=func.now()) updated_at = Column( DateTime, nullable=False, default=func.now(), onupdate=func.now() )