宽度超过 10 分钟或头名并列时不再出交付卡,改为按大运边界逐条问、 用类型芯片和年/月选择器录入。跳过的线换问法再问一次;答「这类事 都没有过」的不再问。用户说「没有了」仍立刻给目前范围。Skill 10.0.27。 BUG-740~743
86 lines
2.6 KiB
TypeScript
86 lines
2.6 KiB
TypeScript
"use client";
|
|
|
|
import type { PublicLanguageModel } from "../lib/public-models.ts";
|
|
import type { ChatMessage } from "../lib/chat-message-view.ts";
|
|
import type { RectificationCaseSnapshotPayload } from "../lib/rectification-surface-state.ts";
|
|
import { RectificationAgenticChat } from "./rectification-agentic-chat.tsx";
|
|
|
|
export type PersistedRectificationTurn = Readonly<{
|
|
id: string;
|
|
role: "user" | "assistant";
|
|
text: string | null;
|
|
status: string;
|
|
question?: unknown;
|
|
offer_result_id?: string | null;
|
|
receipt?: Readonly<{
|
|
status: string;
|
|
phases: readonly string[];
|
|
tool_activities?: readonly Readonly<{
|
|
tool: string;
|
|
status: string;
|
|
methods?: readonly string[];
|
|
started_at?: string | null;
|
|
elapsed_ms?: number | null;
|
|
detail?: Readonly<Record<string, unknown>> | null;
|
|
}>[];
|
|
tools: readonly string[];
|
|
methods?: readonly string[];
|
|
skill_name?: string;
|
|
skill_version?: string;
|
|
answer_origin?: "host_fallback";
|
|
}> | null;
|
|
}>;
|
|
|
|
export type RectificationChatPanel = Readonly<{
|
|
caseId: string;
|
|
sessionId: string;
|
|
readonly: boolean;
|
|
shouldStartOpening: boolean;
|
|
initialTurns: readonly PersistedRectificationTurn[];
|
|
/** The Case snapshot read together with the turns before the surface mounted; null when hydration failed. */
|
|
initialSnapshot: RectificationCaseSnapshotPayload | null;
|
|
pendingConsultationQuestion?: string | null;
|
|
headerSlot: HTMLElement | null;
|
|
onMessagesChange?: (messages: ChatMessage[]) => void;
|
|
onCompleted?: () => void;
|
|
onPendingChange?: (pending: boolean) => void;
|
|
onProfileIncomplete?: () => void;
|
|
onOpeningConsumed?: () => void;
|
|
onRestart?: () => void;
|
|
}>;
|
|
|
|
export type ConversationalBirthTimeRectificationProps = Readonly<{
|
|
/** The declared birth minute from the profile, shown on the board before any candidate exists. */
|
|
declaredTime: string | null;
|
|
birthDate: string | null;
|
|
models: readonly PublicLanguageModel[];
|
|
selectedModelId: string;
|
|
onSelectModel: (modelId: string) => void;
|
|
onOpenBilling?: (options?: { source?: string }) => void;
|
|
onSaved?: (time: string, status: "accepted" | "confirmed") => void;
|
|
panel: RectificationChatPanel;
|
|
}>;
|
|
|
|
export function ConversationalBirthTimeRectification({
|
|
declaredTime,
|
|
birthDate,
|
|
models,
|
|
selectedModelId,
|
|
onSelectModel,
|
|
onOpenBilling,
|
|
onSaved,
|
|
panel,
|
|
}: ConversationalBirthTimeRectificationProps) {
|
|
const props = {
|
|
declaredTime,
|
|
birthDate,
|
|
models,
|
|
selectedModelId,
|
|
onSelectModel,
|
|
onOpenBilling,
|
|
onSaved,
|
|
...panel,
|
|
};
|
|
return <RectificationAgenticChat {...props} />;
|
|
}
|