From 3af1c30d49c37a69c442e03f2c0bea30a10716ef Mon Sep 17 00:00:00 2001 From: LIlGG <1103069291@qq.com> Date: Fri, 10 Oct 2025 11:29:19 +0800 Subject: [PATCH] fix: Reduce the frequency of saving empty pages --- app/lib/common/prompts/prompts.ts | 3 ++- app/lib/hooks/useProject.ts | 18 ++++++++++++++++++ app/lib/stores/web-builder.ts | 5 ++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/lib/common/prompts/prompts.ts b/app/lib/common/prompts/prompts.ts index 596c24d..f89e713 100644 --- a/app/lib/common/prompts/prompts.ts +++ b/app/lib/common/prompts/prompts.ts @@ -12,8 +12,9 @@ export const getSystemPrompt = () => ` - 绝对不生成任何后端相关代码。 - 如果是多页面项目,需生成所有页面,保证每页都有完整内容。 - 不要啰嗦,除非用户要求更多信息,否则不要解释任何内容。 - - 永远不要使用 "artifact" 这个词。 + - 永远不要使用 "artifact" 或 "action" 这两个词。 - 仅对所有回答使用有效的 markdown,除了构件外不要使用 HTML 标签! + - 确保生成的代码是可用于生产环境的代码,脚本和样式必须完整且正确。 页面规则: - 仅使用原生 HTML、CSS 与 JS 构建前端页面,不使用任何框架。 diff --git a/app/lib/hooks/useProject.ts b/app/lib/hooks/useProject.ts index 61caf6e..1bd0778 100644 --- a/app/lib/hooks/useProject.ts +++ b/app/lib/hooks/useProject.ts @@ -37,6 +37,24 @@ export function useProject() { logger.error('保存项目失败: 页面或 Section 不能为空'); return false; } + const isConsistent = projectPages.every((page) => { + const actionIds = page.actionIds; + const content = page.content; + if (actionIds.length === 0) { + return true; + } + if (!content) { + return false; + } + return true; + }); + if (!isConsistent) { + logger.error('保存项目失败: 页面内容与 actions 不一致', { + projectPages, + projectSections, + }); + return false; + } try { // 先保存在本地数据中 saveEditorProject(messageId, projectPages, projectSections); diff --git a/app/lib/stores/web-builder.ts b/app/lib/stores/web-builder.ts index d827806..27da7f2 100644 --- a/app/lib/stores/web-builder.ts +++ b/app/lib/stores/web-builder.ts @@ -112,8 +112,11 @@ export class WebBuilderStore { } async setDocumentContent(pageName: string, _html: string) { + if (_html.trim() === '') { + return; + } // 更新内容,但不会触发保存,不会保存至 pages 中。 - this.editorStore.updateDocumentContent(pageName, _html ?? ''); + this.editorStore.updateDocumentContent(pageName, _html); } /**