feat(web): Scope B B1 — 多章工作流链前端 UI(发起/轮询/裁决续跑)

链页 app/projects/[id]/chains(RSC fetchProject)+ ChainPage/ChainStarter/
ChainProgress/ChainAdjudication;lib/chain 纯函数(result 收窄/相位映射/resume 组装)。
复用 useJobPoll 轮询、ConflictCard + decisions.ts 裁决、normalizeConflicts/latestReview、
friendlyError;nav 加 chains 入口。awaiting(interrupt)→ 读该章冲突渲 ConflictCard →
POST .../chains/runs/{job_id}/resume 续跑。gen:api 纳入 chains run/resume。
守 #5(链暂停=等裁决,token/正文不入 job result)。
This commit is contained in:
Yaojia Wang
2026-06-23 19:21:00 +02:00
parent 416caed56b
commit a2dcd89881
11 changed files with 874 additions and 4 deletions

View File

@@ -0,0 +1,20 @@
import { notFound } from "next/navigation";
import { ChainPage } from "@/components/chain/ChainPage";
import { fetchProject } from "@/lib/api/server";
interface PageProps {
params: Promise<{ id: string }>;
}
// 多章工作流链页Scope B B1。Server Component 取项目ChainPageClient承载
// 发起 → job 轮询进度 → interrupt 裁决 → resume 续跑交互。
export default async function ChainsRoutePage({ params }: PageProps) {
const { id } = await params;
try {
const project = await fetchProject(id);
return <ChainPage project={project} />;
} catch {
notFound();
}
}