路径: src/modules/project/pages/project-detail/stages/components/ai-design-analysis-v2/
功能:
路径: src/modules/project/pages/project-detail/stages/components/ai-chat-sidebar-v2/
功能:
在 stage-requirements.component.ts 中添加:
import { AIDesignAnalysisV2Component } from './components/ai-design-analysis-v2/ai-design-analysis-v2.component';
import { AIChatSidebarV2Component } from './components/ai-chat-sidebar-v2/ai-chat-sidebar-v2.component';
@Component({
// ...
imports: [
// ...existing imports
AIDesignAnalysisV2Component,
AIChatSidebarV2Component
]
})
替换原有的AI设计分析区域(第55-176行):
原代码:
<!-- AI设计分析区域 - 页面顶部 -->
<div class="ai-design-analysis-section">
<!-- 大量HTML代码... -->
</div>
新代码:
<!-- AI设计分析区域 - 使用组件化版本 -->
<app-ai-design-analysis-v2
[projectId]="projectId"
[products]="projectProducts"
[currentSpace]="aiDesignCurrentSpace"
[uploadedFiles]="aiDesignUploadedFiles"
[analysisResult]="aiDesignAnalysisResult"
[analyzing]="aiDesignAnalyzing"
[dragOver]="aiDesignDragOver"
(spaceSelected)="selectAISpace($event)"
(filesUploaded)="handleAIFileUpload($event)"
(fileDrop)="onAIFileDrop($event)"
(fileDragOver)="onAIFileDragOver($event)"
(fileDragLeave)="onAIFileDragLeave($event)"
(fileRemoved)="removeAIDialogImage($event)"
(filePreview)="previewFileOrImage($event)"
(startAnalysis)="startAIDesignAnalysis()"
(triggerFileInput)="triggerAIDialogFileInput()">
</app-ai-design-analysis-v2>
替换AI对话区域(第177-336行):
原代码:
<!-- AI对话区域 -->
<div class="ai-chat-container">
<!-- 大量HTML代码... -->
</div>
新代码:
<!-- AI对话侧边栏 - 使用组件化版本 -->
<app-ai-chat-sidebar-v2
[messages]="aiChatMessages"
[analyzing]="aiDesignAnalyzing"
[inputText]="aiChatInput"
[hasFiles]="aiDesignUploadedFiles.length > 0"
(sendMessage)="sendAIChatMessage()"
(inputChange)="onChatInputTextChange($event)"
(useQuickPrompt)="useQuickPrompt($event)"
(clearMessages)="clearChat()"
(copyMessage)="copyMessage($event)"
(uploadAttachment)="openAttachmentDialog()">
</app-ai-chat-sidebar-v2>
在 stage-requirements.component.ts 中添加:
// 处理文件预览事件
previewFileOrImage(event: { file: any; index?: number }): void {
if (event.index !== undefined) {
this.previewImage(event.file.url, event.index);
} else {
this.previewFile(event.file);
}
}
// 处理聊天输入文本变化
onChatInputTextChange(text: string): void {
this.aiChatInput = text;
}
删除旧代码
// 在组件中添加开关
useV2Components = false; // 设为true启用新组件
// 在HTML中
@if (useV2Components) {
<app-ai-design-analysis-v2 ...></app-ai-design-analysis-v2>
} @else {
<!-- 原有代码 -->
}
SpaceRequirementsManagementComponent解决: 确保组件是standalone组件,且已在imports数组中声明
解决: 检查ViewEncapsulation设置,确保继承父组件样式
解决: 检查@Output装饰器和EventEmitter配置
解决: 确保@Input数据正确传递,使用ChangeDetectorRef.markForCheck()