refactor(frontend): clarify toVM/PROCEED 提取到 clarify.ts 共享(WFW-9 M2)

This commit is contained in:
Yaojia Wang
2026-07-08 11:54:05 +02:00
parent 9b32743606
commit 4b1088a179
3 changed files with 97 additions and 28 deletions

View File

@@ -3,10 +3,7 @@
import { useCallback, useState } from "react";
import { api } from "@/lib/api/client";
import type { ClarifyDecisionVM } from "./clarify";
// 澄清预检结论为「放行」(直接去 refine不反问——后端 error/前端异常时的确定性回退。
const PROCEED: ClarifyDecisionVM = { needClarification: false, questions: [] };
import { PROCEED, toVM, type ClarifyDecisionVM } from "./clarify";
export type ClarifyStatus = "idle" | "checking" | "asking" | "proceed" | "error";
@@ -24,30 +21,6 @@ export interface UseClarify {
reset: () => void;
}
// 后端 snake_case ClarifyDecision → 前端 camelCase VM不信任外部数据全部显式取值 + 默认)。
function toVM(data: {
need_clarification?: boolean;
questions?: {
question?: string;
options?: { label?: string; value?: string }[];
allow_free_text?: boolean;
}[];
verification?: string | null;
}): ClarifyDecisionVM {
return {
needClarification: Boolean(data.need_clarification),
questions: (data.questions ?? []).map((q) => ({
question: q.question ?? "",
options: (q.options ?? []).map((o) => ({
label: o.label ?? "",
value: o.value ?? "",
})),
allowFreeText: Boolean(q.allow_free_text),
})),
verification: data.verification ?? undefined,
};
}
// AI 反问澄清预检WFW-9 M1路线A 两阶段之「问题」阶段)。
// 「再沟通」意见含糊/极短时先调独立非流式端点让 AI 反问needClarification=false 或失败=放行去既有 refine。
export function useClarify(): UseClarify {