ipns-eval-poc-backend / src /models /_proposal_ai_analysis.py
Aryan Jain
categorize the strengths
63dfa98
from enum import Enum as PyEnum
from sqlalchemy import (
Column,
DateTime,
Enum,
Float,
ForeignKey,
Integer,
String,
func,
)
from sqlalchemy.dialects.postgresql import UUID
from ._base import Base
class Category(PyEnum):
TECHNICAL = "TECHNICAL"
MANAGEMENT = "MANAGEMENT"
PAST_PERFORMANCE = "PAST_PERFORMANCE"
PRICE = "PRICE"
class ProposalAIAnalysis(Base):
__tablename__ = "proposal_ai_analyses"
id = Column(UUID(as_uuid=True), primary_key=True, nullable=False)
proposal_id = Column(
UUID(as_uuid=True),
ForeignKey("proposals.id", ondelete="CASCADE"),
nullable=False,
)
ai_score = Column(Float, nullable=False)
created_at = Column(DateTime, nullable=False, default=func.now())
updated_at = Column(
DateTime, nullable=False, default=func.now(), onupdate=func.now()
)
class ProposalStrength(Base):
__tablename__ = "proposal_strengths"
id = Column(UUID(as_uuid=True), primary_key=True, nullable=False)
proposal_id = Column(
UUID(as_uuid=True),
ForeignKey("proposals.id", ondelete="CASCADE"),
nullable=False,
)
strength_point = Column(String, nullable=False)
category = Column(Enum(Category, name="strengthcategory"), nullable=False)
created_at = Column(DateTime, nullable=False, default=func.now())
updated_at = Column(
DateTime, nullable=False, default=func.now(), onupdate=func.now()
)
class ProposalRejectionReason(Base):
__tablename__ = "proposal_rejection_reasons"
id = Column(UUID(as_uuid=True), primary_key=True, nullable=False)
proposal_id = Column(
UUID(as_uuid=True),
ForeignKey("proposals.id", ondelete="CASCADE"),
nullable=False,
)
reason = Column(String, nullable=False)
category = Column(Enum(Category, name="rejectioncategory"), nullable=False)
created_at = Column(DateTime, nullable=False, default=func.now())
updated_at = Column(
DateTime, nullable=False, default=func.now(), onupdate=func.now()
)
class ProposalWeakness(Base):
__tablename__ = "proposal_weaknesses"
id = Column(UUID(as_uuid=True), primary_key=True, nullable=False)
proposal_id = Column(
UUID(as_uuid=True),
ForeignKey("proposals.id", ondelete="CASCADE"),
nullable=False,
)
weakness_point = Column(String, nullable=False)
category = Column(Enum(Category, name="weaknesscategory"), nullable=False)
created_at = Column(DateTime, nullable=False, default=func.now())
updated_at = Column(
DateTime, nullable=False, default=func.now(), onupdate=func.now()
)
class ProposalImprovement(Base):
__tablename__ = "proposal_improvements"
id = Column(UUID(as_uuid=True), primary_key=True, nullable=False)
proposal_id = Column(
UUID(as_uuid=True),
ForeignKey("proposals.id", ondelete="CASCADE"),
nullable=False,
)
improvement_point = Column(String, nullable=False)
category = Column(Enum(Category, name="improvementcategory"), nullable=False)
created_at = Column(DateTime, nullable=False, default=func.now())
updated_at = Column(
DateTime, nullable=False, default=func.now(), onupdate=func.now()
)