from sqlalchemy import Column, String, Date, Enum, ForeignKey, Integer, Boolean from sqlalchemy.orm import relationship from BC01_评级.Schemas.RatingFlowSchema import RankLevelEnum, RatingFlowStatusEnum from ..DataBase import Base class RatingFlow(Base): __tablename__ = "rating_flow" id = Column(String(16), primary_key=True) report_date = Column(Date) status = Column(Enum(RatingFlowStatusEnum, values_callable=lambda x: [e.value for e in x])) rank_level = Column(Enum(RankLevelEnum, values_callable=lambda x: [e.value for e in x]), default="-") company = Column(String(32), index=True, comment="测评企业") company_id = Column(String(16), comment="企业ID") scorecard = Column(String(64), index=True, comment="打分卡") scorecard_id = Column(String(16), comment="打分卡ID") nodes = relationship("RatingFlowNode", backref="rating_flow") rating_flow_participant = relationship("RatingFlowParticipant", back_populates="rating_flow") class RatingFlowParticipant(Base): __tablename__ = "rating_flow_participant" id = Column(String(16), primary_key=True) participant = Column(String(32), index=True, comment="参与人") user_id = Column(String(16), comment="用户ID") rating_process_id = Column(String(16), ForeignKey("rating_flow.id", ondelete="CASCADE"), comment="评级流程ID") rating_flow = relationship("RatingFlow", back_populates="rating_flow_participant") class RatingFlowNode(Base): __tablename__ = "rating_flow_node" id = Column(String(16), primary_key=True, comment="流程节点ID") node_num = Column(Integer, comment="流程节点序号") node_name = Column(String(32), comment="流程节点名称") status = Column(Boolean, default=0, comment="流程节点状态") obj_id = Column(String(24), default=None, comment="流程内容mongoID") rating_process_id = Column(String(16), ForeignKey("rating_flow.id", ondelete="CASCADE"), comment="评级流程ID")