feat: complete huihui square avatar workflows

This commit is contained in:
stefanfeng
2026-07-24 14:04:21 +08:00
parent 2ef58a44b8
commit e3bda469bb
68 changed files with 8062 additions and 132 deletions

View File

@@ -52,20 +52,45 @@ async def retry_interaction(record_id: int, db=Depends(get_db)):
if not user or user.status != 2:
raise HTTPException(status_code=400, detail="用户未登录,无法重试")
success, err = False, "未知类型"
success, err, platform_record_id = False, "未知类型", ""
if record.interact_type == "comment" and record.content:
success, err = await news_service.post_comment(db, user, record.article_id, record.article_title or "", record.content)
success, err, platform_record_id = await news_service.post_comment_with_record_id(
db, user, record.article_id, record.article_title or "", record.content
)
elif record.interact_type == "like":
success, err = await news_service.like_news(db, user, record.article_id, org_id="", title=record.article_title or "")
elif record.interact_type == "collect":
success, err = await news_service.collect_news(db, user, record.article_id, title=record.article_title or "")
elif record.interact_type == "forward":
success, err = await news_service.forward_news(db, user, record.article_id)
elif record.interact_type == "reply" and record.content:
parent_comment = None
if record.parent_comment_id:
comments = await news_service.get_comments(db, user, record.article_id or "")
parent_comment = next(
(
c for c in comments
if str(c.get("id") or c.get("commentId") or "") == str(record.parent_comment_id)
),
None,
)
if not parent_comment:
success, err, platform_record_id = False, "未找到被回复的原评论,无法重试回复", ""
else:
success, err, platform_record_id = await news_service.post_reply_with_record_id(
db, user,
record.article_id or "",
record.parent_comment_id or "",
record.content,
parent_comment=parent_comment,
article_title=record.article_title or "",
)
await db.execute(
update(InteractionRecord).where(InteractionRecord.id == record_id).values(
status=1 if success else 2,
error_msg=None if success else err,
platform_record_id=platform_record_id or record.platform_record_id,
retry_count=record.retry_count + 1,
)
)
@@ -147,15 +172,69 @@ async def cancel_interaction(record_id: int, db=Depends(get_db)):
news_id=record.article_id or "",
title=record.article_title or "",
)
elif record.interact_type in ("comment", "reply"):
elif record.interact_type == "comment":
comment_id = record.platform_record_id or ""
if not comment_id:
return ApiResponse(code=400, message="缺少评论ID无法删除")
comment_id, comment_count = await news_service.find_comment_id(
db, user,
news_id=record.article_id or "",
content=record.content or "",
)
if comment_id:
await db.execute(
update(InteractionRecord).where(InteractionRecord.id == record_id).values(
platform_record_id=comment_id
)
)
await db.commit()
elif comment_count == 0:
await db.execute(
update(InteractionRecord).where(InteractionRecord.id == record_id).values(
status=3,
error_msg="平台未查询到评论,已标记取消",
)
)
await db.commit()
return ApiResponse(message="平台未查询到评论,已标记取消")
else:
return ApiResponse(code=400, message="缺少评论ID且未能从平台评论列表反查到该评论")
ok, err = await news_service.cancel_comment(
db, user,
news_id=record.article_id or "",
comment_id=comment_id,
)
elif record.interact_type == "reply":
reply_id = record.platform_record_id or ""
if not reply_id:
reply_id, reply_count = await news_service.find_reply_id(
db, user,
news_id=record.article_id or "",
content=record.content or "",
parent_comment_id=record.parent_comment_id or "",
)
if reply_id:
await db.execute(
update(InteractionRecord).where(InteractionRecord.id == record_id).values(
platform_record_id=reply_id
)
)
await db.commit()
elif reply_count == 0:
await db.execute(
update(InteractionRecord).where(InteractionRecord.id == record_id).values(
status=3,
error_msg="平台未查询到回复,已标记取消",
)
)
await db.commit()
return ApiResponse(message="平台未查询到回复,已标记取消")
else:
return ApiResponse(code=400, message="缺少回复ID且未能从平台回复列表反查到该回复")
ok, err = await news_service.cancel_reply(
db, user,
news_id=record.article_id or "",
reply_id=reply_id,
)
if ok:
# 更新状态为手动取消status=3