修复策划V2问询交互与历史展示
Project CI / Repository checks (pull_request) Successful in 44m58s
Project CI / Frontend tests (pull_request) Successful in 45m27s
Project CI / Backend tests (pull_request) Failing after 48m47s
Project CI / Native shell tests (pull_request) Failing after 5m21s

回答提交后立即收起当前问询卡

保留选项回答和完整选项描述到历史

补充 GDD 历史条目的一句话与决策摘要
This commit is contained in:
2026-09-05 08:26:31 +00:00
parent b1456d9f11
commit d47928ceba
3 changed files with 36 additions and 3 deletions
+10
View File
@@ -6627,6 +6627,16 @@ export function App({
setProjectSupervisorRuntimeError('待回答问题已变更,请刷新策划状态');
return;
}
setMessages((current) => [
...current,
{
role: 'user',
text: answer,
runtimeOwned: true,
messageId: `planning-v2:${responseId}:user`,
updatedAt: Date.now(),
},
]);
await executePlanningV2Turn(nextProjectPath, answer, responseId);
return;
}
@@ -171,7 +171,7 @@ export function PlanningLaneRuntimeStrip({
) : null}
</div>
) : null}
{userInputRequest ? (
{userInputRequest && !controlBusy ? (
<AgentRuntimeUserInputCard
key={`${userInputRequest.requestId}:${userInputRequest.responseId ?? 'pending'}`}
request={userInputRequest}
@@ -226,7 +226,8 @@ export function planningResultText(result: PlanningTurnResultV2 | null) {
function questionDisplayText(question: PlanningQuestionV2) {
const options = question.options
.map(
(option, index) => `${String.fromCharCode(65 + index)}. ${option.label}`,
(option, index) =>
`${String.fromCharCode(65 + index)}. ${option.label}\n ${option.description}`,
)
.join('\n');
return `${question.header}\n${question.question}\n${options}`;
@@ -287,7 +288,29 @@ function messageDisplayText(message: PlanningMessageV2) {
const title = typeof game?.title === 'string' ? game.title.trim() : '';
const version =
typeof artifact?.version === 'number' ? artifact.version : null;
return `已生成 GDD${version === null ? '' : ` v${version}`}${title ? `${title}` : ''}`;
const oneLiner =
typeof game?.oneLiner === 'string' ? game.oneLiner.trim() : '';
const decisions = Array.isArray(nested?.decisions)
? nested.decisions
.map((value) => {
const decision = asRecord(value);
const topic =
typeof decision?.topic === 'string' ? decision.topic.trim() : '';
const summary =
typeof decision?.answerSummary === 'string'
? decision.answerSummary.trim()
: '';
return topic && summary ? `- ${topic}${summary}` : null;
})
.filter((value): value is string => Boolean(value))
: [];
return [
`已生成 GDD${version === null ? '' : ` v${version}`}${title ? `${title}` : ''}`,
oneLiner,
decisions.length > 0 ? `本轮决策:\n${decisions.join('\n')}` : '',
]
.filter(Boolean)
.join('\n');
}
if (message.kind === 'error') {
const summary = typeof payload?.summary === 'string' ? payload.summary : '';