feat: auto LLM feedback runner + problem link + 5xx retry
- Add SubmissionFeedbackRunner: async background queue for auto LLM feedback
- Enqueue feedback generation after each submission in submitProblem()
- Register runner in main.cc with CSP_FEEDBACK_AUTO_RUN env var
- Add problem_title to GET /api/v1/submissions/{id} response
- Frontend: clickable problem link on submission detail page
- Enhance LLM prompt with richer analysis dimensions
- Add 5xx/connection error retry (max 5 attempts) in Python LLM script
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
这个提交包含在:
@@ -1,5 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import Link from "next/link";
|
||||
import { useParams } from "next/navigation";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
|
||||
@@ -21,6 +22,7 @@ type Submission = {
|
||||
id: number;
|
||||
user_id: number;
|
||||
problem_id: number;
|
||||
problem_title?: string;
|
||||
contest_id: number | null;
|
||||
language: string;
|
||||
code: string;
|
||||
@@ -117,7 +119,17 @@ export default function SubmissionDetailPage() {
|
||||
<section className="rounded-xl border bg-white p-4 text-sm">
|
||||
<div className="grid gap-1 sm:grid-cols-2">
|
||||
<p>{tx("用户", "User")}: {data.user_id}</p>
|
||||
<p>{tx("题目", "Problem")}: {data.problem_id}</p>
|
||||
<p>
|
||||
{tx("题目", "Problem")}:{" "}
|
||||
<Link
|
||||
href={`/problems/${data.problem_id}`}
|
||||
className="text-blue-400 hover:text-blue-300 underline"
|
||||
>
|
||||
{data.problem_title
|
||||
? `P${data.problem_id} - ${data.problem_title}`
|
||||
: `P${data.problem_id}`}
|
||||
</Link>
|
||||
</p>
|
||||
<p>{tx("比赛", "Contest")}: {data.contest_id ?? "-"}</p>
|
||||
<p>{tx("语言", "Language")}: {data.language}</p>
|
||||
<p>{tx("状态", "Status")}: {data.status}</p>
|
||||
|
||||
在新工单中引用
屏蔽一个用户