File size: 3,263 Bytes
8e1c132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63dfa98
 
 
 
 
8e1c132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63dfa98
8e1c132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63dfa98
8e1c132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63dfa98
8e1c132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63dfa98
8e1c132
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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()
    )