fix(bot): eliminate duplicate review cards caused by sync race and edit fallback
This commit is contained in:
@@ -81,21 +81,27 @@ async def get_by_prefix(draft_prefix: str, chat_id: int | None = None) -> BotDra
|
||||
|
||||
async def save_payload(draft: BotDraft, missing: dict | None = None,
|
||||
review_message_id: int | None = None,
|
||||
source_message_id: int | None = None) -> None:
|
||||
source_message_id: int | None = None,
|
||||
mark_bale_synced: bool = False) -> None:
|
||||
async with SessionLocal() as session:
|
||||
effective_review_msg_id = review_message_id if review_message_id is not None else draft.review_message_id
|
||||
values: dict = {
|
||||
"payload": draft.payload,
|
||||
"missing": missing,
|
||||
"review_message_id": review_message_id or draft.review_message_id,
|
||||
"review_message_id": effective_review_msg_id,
|
||||
}
|
||||
if source_message_id:
|
||||
if source_message_id is not None:
|
||||
values["source_message_id"] = source_message_id
|
||||
draft.source_message_id = source_message_id
|
||||
if mark_bale_synced:
|
||||
values["last_bale_update_at"] = func.now()
|
||||
await session.execute(
|
||||
update(BotDraft)
|
||||
.where(BotDraft.id == draft.id)
|
||||
.values(**values)
|
||||
)
|
||||
await session.commit()
|
||||
draft.review_message_id = effective_review_msg_id
|
||||
|
||||
|
||||
async def set_status(draft_id: str, status: str) -> None:
|
||||
|
||||
Reference in New Issue
Block a user