feat(bot): support concurrent drafts and reply-based edits with error resilience
This commit is contained in:
@@ -41,7 +41,11 @@ class BotDraft(Base):
|
||||
"""A prepared-but-not-committed ERP action (quote / supplier / material)."""
|
||||
|
||||
__tablename__ = "bot_drafts"
|
||||
__table_args__ = (Index("ix_bot_drafts_chat_status", "chat_id", "status"),)
|
||||
__table_args__ = (
|
||||
Index("ix_bot_drafts_chat_status", "chat_id", "status"),
|
||||
Index("ix_bot_drafts_review_msg", "review_message_id"),
|
||||
Index("ix_bot_drafts_source_msg", "source_message_id"),
|
||||
)
|
||||
|
||||
id: Mapped[str] = _uuid_pk()
|
||||
chat_id: Mapped[int] = mapped_column(BigInteger, nullable=False, index=True)
|
||||
@@ -50,6 +54,7 @@ class BotDraft(Base):
|
||||
missing: Mapped[dict | None] = mapped_column(JSONB)
|
||||
status: Mapped[str] = mapped_column(String(16), nullable=False, default="active") # active|committed|cancelled|expired|failed
|
||||
source: Mapped[str | None] = mapped_column(String(16)) # text|voice
|
||||
source_message_id: Mapped[int | None] = mapped_column(BigInteger)
|
||||
review_message_id: Mapped[int | None] = mapped_column(BigInteger)
|
||||
last_bale_update_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True))
|
||||
created_at: Mapped[datetime] = _timestamptz()
|
||||
|
||||
Reference in New Issue
Block a user