28 lines
1.4 KiB
Python
28 lines
1.4 KiB
Python
"""飞书回执 Outbox 模型。"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from sqlalchemy import Integer, TIMESTAMP, TEXT, VARCHAR
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from .base import Base
|
|
|
|
|
|
class FeishuReplyOutbox(Base):
|
|
__tablename__ = "feishu_reply_outbox"
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
|
trace_id: Mapped[Optional[str]] = mapped_column(VARCHAR(64), nullable=True, index=True)
|
|
source_message_id: Mapped[Optional[str]] = mapped_column(VARCHAR(128), nullable=True, index=True)
|
|
sent_message_id: Mapped[Optional[str]] = mapped_column(VARCHAR(128), nullable=True, index=True)
|
|
chat_id: Mapped[str] = mapped_column(VARCHAR(128), nullable=False, index=True)
|
|
message_text: Mapped[str] = mapped_column(TEXT, nullable=False)
|
|
reply_hash: Mapped[Optional[str]] = mapped_column(VARCHAR(32), nullable=True, index=True)
|
|
status: Mapped[str] = mapped_column(VARCHAR(20), nullable=False, default="pending", index=True)
|
|
attempts: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
|
next_retry_at: Mapped[Optional[datetime]] = mapped_column(TIMESTAMP, nullable=True, index=True)
|
|
sent_at: Mapped[Optional[datetime]] = mapped_column(TIMESTAMP, nullable=True)
|
|
last_error: Mapped[Optional[str]] = mapped_column(TEXT, nullable=True)
|