fix(rectification): isolate receipt activity after staging sync
This commit is contained in:
@@ -57,7 +57,8 @@ type RectificationAgenticChatProps = Readonly<{
|
||||
|
||||
type RenderMessage = ChatMessageView & {
|
||||
renderKey: string;
|
||||
activity?: readonly string[];
|
||||
/** V9 execution-receipt steps; separate from shared consultation activity. */
|
||||
receiptActivity?: readonly string[];
|
||||
receiptStatus?: string;
|
||||
};
|
||||
|
||||
@@ -119,7 +120,7 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
|
||||
text: turn.text ?? "",
|
||||
renderKey: key,
|
||||
state: turn.status === "completed" ? "settled" : "thinking",
|
||||
activity: activityFromReceipt(turn.receipt),
|
||||
receiptActivity: activityFromReceipt(turn.receipt),
|
||||
receiptStatus: turn.receipt?.status,
|
||||
}];
|
||||
}
|
||||
@@ -212,7 +213,7 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
|
||||
...(action === "message"
|
||||
? [{ role: "user", text: trimmed, renderKey: userRenderKey, state: "settled" } satisfies RenderMessage]
|
||||
: []),
|
||||
{ role: "assistant", text: "", renderKey: assistantRenderKey, state: "thinking", activity: [] },
|
||||
{ role: "assistant", text: "", renderKey: assistantRenderKey, state: "thinking", receiptActivity: [] },
|
||||
]);
|
||||
setDraft("");
|
||||
|
||||
@@ -293,7 +294,7 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
|
||||
activitySet.add(event.type);
|
||||
liveActivity = [...liveActivity, labelForPhase(event.type)];
|
||||
setMessages((current) => current.map((message) => message.renderKey === assistantRenderKey
|
||||
? { ...message, activity: liveActivity }
|
||||
? { ...message, receiptActivity: liveActivity }
|
||||
: message));
|
||||
}
|
||||
}
|
||||
@@ -304,7 +305,7 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
|
||||
const succeeded = completed && !streamFailed && Boolean(parsed.text);
|
||||
setMessages((current) => succeeded
|
||||
? current.map((message) => message.renderKey === assistantRenderKey
|
||||
? { ...message, text: parsed.text, suggestions: parsed.suggestions, state: "settled", activity: liveActivity }
|
||||
? { ...message, text: parsed.text, suggestions: parsed.suggestions, state: "settled", receiptActivity: liveActivity }
|
||||
: message)
|
||||
: current.filter((message) => message.renderKey !== assistantRenderKey));
|
||||
setSuggestions(succeeded ? parsed.suggestions : []);
|
||||
@@ -386,11 +387,11 @@ export function RectificationAgenticChat(props: RectificationAgenticChatProps) {
|
||||
{messages.map((message) => (
|
||||
<div key={message.renderKey} className="rectification-message-wrap">
|
||||
<ChatMessageRow message={message} />
|
||||
{message.activity && message.activity.length > 0 && (
|
||||
{message.receiptActivity && message.receiptActivity.length > 0 && (
|
||||
<details className="rectification-activity">
|
||||
<summary>本轮做了什么</summary>
|
||||
<ol>
|
||||
{message.activity.map((step) => <li key={step}>{step}</li>)}
|
||||
{message.receiptActivity.map((step) => <li key={step}>{step}</li>)}
|
||||
</ol>
|
||||
</details>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user