feat: 异步沉淀主题摘要和成长档案
This commit is contained in:
@@ -349,6 +349,34 @@ def generate_user_report(
|
||||
return api_success(periodic_report_dict(report), message="报告任务已进入后台队列")
|
||||
|
||||
|
||||
@router.post("/user/{user_id}/topic/{topic_id}/settlement/retry")
|
||||
def retry_topic_settlement(
|
||||
user_id: int,
|
||||
topic_id: int,
|
||||
db: Session = Depends(get_db),
|
||||
current_admin: Admin = Depends(get_current_admin),
|
||||
) -> dict:
|
||||
user = _get_user(db, user_id)
|
||||
topic = db.scalar(
|
||||
select(TopicSession).where(TopicSession.id == topic_id, TopicSession.user_id == user.id)
|
||||
)
|
||||
if topic is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="主题不存在")
|
||||
if topic.status != "completed":
|
||||
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="只能重试已结束主题的沉淀任务")
|
||||
summary = GrowthProfileService.retry_topic_settlement(db, user=user, topic=topic)
|
||||
OperationLogService.write(
|
||||
db,
|
||||
admin_id=current_admin.id,
|
||||
module="topic_settlement",
|
||||
action="retry",
|
||||
target_id=summary.id,
|
||||
)
|
||||
db.commit()
|
||||
db.refresh(summary)
|
||||
return api_success(topic_summary_dict(summary), message="主题沉淀任务已重新进入队列")
|
||||
|
||||
|
||||
@router.put("/user/{user_id}")
|
||||
def update_user(
|
||||
user_id: int,
|
||||
|
||||
@@ -98,6 +98,15 @@ def finish_topic(
|
||||
return api_success(GrowthProfileService.finish_active_topic(db, user=current_user, session=session))
|
||||
|
||||
|
||||
@router.get("/topic/settlement/{summary_id}")
|
||||
def topic_settlement(
|
||||
summary_id: int,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
) -> dict:
|
||||
return api_success(GrowthProfileService.topic_settlement_result(db, user=current_user, summary_id=summary_id))
|
||||
|
||||
|
||||
@router.post("/session/{session_id}/help-card")
|
||||
def generate_help_card(
|
||||
session_id: int,
|
||||
|
||||
@@ -48,6 +48,13 @@ def growth_profile(
|
||||
"summary": item.summary,
|
||||
"recommendedHomework": item.recommended_homework,
|
||||
"nextObservation": item.next_observation,
|
||||
"status": item.status,
|
||||
"errorMessage": item.error_message,
|
||||
"attemptCount": item.attempt_count,
|
||||
"maxAttempts": item.max_attempts,
|
||||
"nextRunAt": item.next_run_at,
|
||||
"lastStartedAt": item.last_started_at,
|
||||
"finishedAt": item.finished_at,
|
||||
"generatedAt": item.generated_at,
|
||||
}
|
||||
for item in summaries
|
||||
|
||||
Reference in New Issue
Block a user