绑卡任务表
| 127 | |
| 128 | |
| 129 | class BindCardTask(Base): |
| 130 | """绑卡任务表""" |
| 131 | __tablename__ = "bind_card_tasks" |
| 132 | |
| 133 | id = Column(Integer, primary_key=True, autoincrement=True) |
| 134 | # 允许账号删除后保留任务记录:删除账号时将 account_id 置空,邮箱使用快照字段展示 |
| 135 | account_id = Column(Integer, ForeignKey("accounts.id", ondelete="SET NULL"), nullable=True, index=True) |
| 136 | account_email = Column(String(255)) # 账号邮箱快照(历史记录展示用) |
| 137 | plan_type = Column(String(20), nullable=False) # plus / team |
| 138 | workspace_name = Column(String(255)) |
| 139 | price_interval = Column(String(20)) |
| 140 | seat_quantity = Column(Integer) |
| 141 | country = Column(String(10), default="US") |
| 142 | currency = Column(String(10), default="USD") |
| 143 | checkout_url = Column(Text, nullable=False) |
| 144 | checkout_session_id = Column(String(120)) |
| 145 | publishable_key = Column(String(255)) |
| 146 | client_secret = Column(Text) |
| 147 | checkout_source = Column(String(50)) # openai_checkout / aimizy_fallback |
| 148 | bind_mode = Column(String(30), default="semi_auto") # semi_auto / third_party / local_auto |
| 149 | status = Column(String(20), default="link_ready") # link_ready / opened / waiting_user_action / verifying / completed / failed |
| 150 | last_error = Column(Text) |
| 151 | opened_at = Column(DateTime) |
| 152 | last_checked_at = Column(DateTime) |
| 153 | completed_at = Column(DateTime) |
| 154 | created_at = Column(DateTime, default=utcnow_naive) |
| 155 | updated_at = Column(DateTime, default=utcnow_naive, onupdate=utcnow_naive) |
| 156 | |
| 157 | # 关系 |
| 158 | account = relationship("Account", back_populates="bind_card_tasks") |
| 159 | |
| 160 | |
| 161 | class AppLog(Base): |
no outgoing calls
no test coverage detected