用户上传图片进行AI分析后,出现以下问题:
HTML期望的数据结构(旧版):
{
sceneRecognition: { spaceType, overallTone, confidence },
spaceRegionAnalysis: { percentageBreakdown: { ceiling, wall, floor... } },
lightingSystemDetailed: { naturalLight, mainLighting... },
colorProportionWeight: [...]
}
AI服务实际返回的数据结构(新优化版):
{
rawContent: string, // AI原始输出
formattedContent: string, // 格式化后的内容
structuredData: { // 结构化数据
spacePositioning, layout, hardDecoration,
colorAnalysis, materials, form, style, suggestions
},
hasContent: boolean,
timestamp: string
}
结论:HTML中使用了sceneRecognition、spaceRegionAnalysis等字段,但新的AI服务返回的是formattedContent和structuredData,导致数据无法显示。
代码问题:
// ❌ 旧代码:传递用户选择的空间类型
spaceType: this.aiDesignCurrentSpace?.name || '',
问题:AI分析时会基于用户选择的空间(如"主卧"、"厨房")进行分析,而不是根据图片实际内容识别空间类型。这样即使用户上传了客厅的图片,如果选择的空间是"主卧",AI也会将其分析为主卧。
文件: stage-requirements.component.ts
修改:
// ✅ 新代码:不传递spaceType,让AI基于图片自动识别
const analysisResult = await this.designAnalysisAIService.analyzeReferenceImages({
images: this.aiDesignUploadedImages,
textDescription: this.aiDesignTextDescription,
spaceType: undefined, // 🔥 不传递,让AI自动识别
conversationHistory: [],
deepThinking: this.deepThinkingEnabled,
onProgressChange: (progress) => {...},
onContentStream: (content) => {...}
});
效果:AI会基于图片内容自动识别空间类型,在分析结果的"空间定位与场景属性"维度中说明是什么空间。
文件: stage-requirements.component.html
新结构:
generateBriefSummary()生成一行概要formattedContent(格式化后的8维度分析)structuredData按维度折叠展示代码示例:
<!-- 简洁摘要 -->
@if (getAISummary()) {
<div class="result-card summary-card">
<p class="summary-text">{{ getAISummary() }}</p>
</div>
}
<!-- 完整分析 -->
@if (aiDesignAnalysisResult.formattedContent) {
<div class="result-card full-analysis-card">
<pre class="analysis-text">{{ aiDesignAnalysisResult.formattedContent }}</pre>
</div>
}
<!-- 分维度查看 -->
@if (aiDesignAnalysisResult.structuredData) {
<div class="result-card dimensions-card">
<div class="dimensions-grid">
<!-- 8个维度折叠展示 -->
</div>
</div>
}
文件: stage-requirements.component.ts
新增方法:
管理维度折叠状态
getAISummary(): string {
if (!this.aiDesignAnalysisResult) return '';
return this.designAnalysisAIService.generateBriefSummary(this.aiDesignAnalysisResult);
}
输出示例:
客餐厅一体化 | 现代+法式 | 暖色系、暖灰 | 温馨、精致 | 主要材质:护墙板、木材、大理石
toggleDimension(dimensionKey: string): void {
if (this.expandedDimensions.has(dimensionKey)) {
this.expandedDimensions.delete(dimensionKey);
} else {
this.expandedDimensions.add(dimensionKey);
}
}
切换维度的展开/折叠状态
async generateServiceNotes(): Promise<void> {
const serviceNotes = this.designAnalysisAIService.generateCustomerServiceNotes(
this.aiDesignAnalysisResult,
this.aiDesignTextDescription
);
// 保存到项目data
projectData.designReports[spaceId].serviceNotes = serviceNotes;
// 复制到剪贴板
this.copyToClipboard(serviceNotes);
}
生成客服标注格式并复制到剪贴板
文件: stage-requirements.component.scss
新增样式:
.summary-card - 简洁摘要卡片(蓝色渐变背景).full-analysis-card - 完整分析卡片(带滚动条).dimensions-card - 维度查看卡片(可折叠)
.dimension-item - 单个维度.dimension-header - 维度标题(可点击).dimension-content - 维度内容(折叠显示)用户上传图片
↓
调用 analyzeReferenceImages()
↓
AI分析(不传递spaceType,自动识别)
↓
返回 {
rawContent,
formattedContent, // 格式化的8维度分析
structuredData, // 按维度分段的数据
hasContent,
timestamp
}
↓
HTML显示:
1. 简洁摘要(generateBriefSummary)
2. 完整分析(formattedContent)
3. 分维度查看(structuredData + 折叠)
↓
用户可以生成客服标注(generateServiceNotes)
自动生成并复制到剪贴板:
【客户要求】
风格: 现代法式(偏暖色系)
护墙板颜色: 淡奶灰色
【风格定位】
现代法式风格,偏向暖色系基调
【色调要求】
主色调:淡奶灰色为基底,辅以暖白和原木色
【材质要求】
地面:大理石瓷砖,柔哑面质感
墙面:护墙板,淡奶灰色涂装
【施工注意】
护墙板需采用哑光涂装工艺,地砖铺贴注意超边细节
粘贴到项目文档或客服系统
| 文件 | 修改内容 |
|---|---|
stage-requirements.component.ts |
1. 移除spaceType参数传递 2. 添加expandedDimensions Set 3. 添加getAISummary()方法 4. 添加toggleDimension()方法 5. 添加generateServiceNotes()方法 |
stage-requirements.component.html |
1. 重构AI分析结果显示区域 2. 添加简洁摘要卡片 3. 添加完整分析卡片 4. 添加分维度查看卡片 5. 添加生成客服标注按钮 |
stage-requirements.component.scss |
1. 添加.summary-card样式 2. 添加.full-analysis-card样式 3. 添加.dimensions-card样式 4. 添加维度折叠交互样式 |
修复后请验证以下功能:
通过本次修复:
现在用户可以:
修复日期: 2025-11-27
修复人: 开发团队
相关文档: ai-analysis-usage-guide.md