feat: restore dispatch confirmation flows
This commit is contained in:
35
src/lib/dispatch-plan-ui.ts
Normal file
35
src/lib/dispatch-plan-ui.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
export type DispatchPlanUiTarget = {
|
||||
projectId: string;
|
||||
threadDisplayName: string;
|
||||
};
|
||||
|
||||
export type DispatchPlanUiPayload = {
|
||||
planId: string;
|
||||
status?: string;
|
||||
summary?: string;
|
||||
targets?: DispatchPlanUiTarget[];
|
||||
};
|
||||
|
||||
export function latestPendingDispatchPlan(plans: DispatchPlanUiPayload[] | null | undefined) {
|
||||
return (plans ?? []).find((plan) => plan.status === "pending_user_confirmation") ?? null;
|
||||
}
|
||||
|
||||
export function summarizeDispatchPlan(plan: DispatchPlanUiPayload | null | undefined) {
|
||||
if (!plan) {
|
||||
return "主 Agent 暂未生成推荐线程。";
|
||||
}
|
||||
const summary = plan.summary?.trim() || "主 Agent 已生成推荐线程。";
|
||||
const titles = (plan.targets ?? [])
|
||||
.map((target) => target.threadDisplayName?.trim() || "")
|
||||
.filter(Boolean);
|
||||
if (!titles.length) {
|
||||
return summary;
|
||||
}
|
||||
return `${summary}\n推荐线程:${titles.join("、")}`;
|
||||
}
|
||||
|
||||
export function extractApprovedTargetProjectIds(plan: DispatchPlanUiPayload | null | undefined) {
|
||||
return (plan?.targets ?? [])
|
||||
.map((target) => target.projectId?.trim() || "")
|
||||
.filter(Boolean);
|
||||
}
|
||||
Reference in New Issue
Block a user