This commit is contained in:
2025-11-07 09:05:12 +08:00
parent 64d6f81013
commit d3e177b289

View File

@@ -0,0 +1,781 @@
"""
PPT设计基因和视觉指导相关提示词
包含所有用于设计分析和视觉指导的提示词模板
"""
from typing import Dict, Any
import logging
logger = logging.getLogger(__name__)
def _is_image_service_enabled() -> bool:
"""检查图片服务是否启用和可用"""
try:
# 尝试获取图片服务实例
from ..service_instances import get_ppt_service
ppt_service = get_ppt_service()
# 检查图片服务是否存在且已初始化
if not ppt_service.image_service:
return False
# 检查图片服务是否已初始化
if not ppt_service.image_service.initialized:
return False
# 检查是否有可用的提供者
from ..image.providers.base import provider_registry
# 检查是否有AI生成提供者
generation_providers = provider_registry.get_generation_providers(enabled_only=True)
# 检查是否有网络搜索提供者
search_providers = provider_registry.get_search_providers(enabled_only=True)
# 检查是否有本地存储提供者(总是可用)
storage_providers = provider_registry.get_storage_providers(enabled_only=True)
# 如果有任何可用的提供者AI生成、网络搜索或本地存储则认为服务可用
has_providers = len(generation_providers) > 0 or len(search_providers) > 0 or len(storage_providers) > 0
logger.debug(f"Image service status: initialized={ppt_service.image_service.initialized}, "
f"generation_providers={len(generation_providers)}, "
f"search_providers={len(search_providers)}, "
f"storage_providers={len(storage_providers)}")
return has_providers
except Exception as e:
logger.debug(f"Failed to check image service status: {e}")
return False
class DesignPrompts:
"""PPT设计基因和视觉指导相关的提示词集合"""
@staticmethod
def get_style_gene_extraction_prompt(template_code: str) -> str:
"""获取设计基因提取提示词"""
return f"""作为专业的UI/UX设计师请分析以下HTML模板代码提取其核心设计基因。
**模板代码:**
```html
{template_code}
```
请从以下维度分析并提取设计基因:
1. **色彩系统**:主色调、辅助色、背景色、文字色等
2. **字体系统**:字体族、字号层级、字重搭配等
3. **布局结构**:页面布局、间距规律、对齐方式等
4. **视觉元素**:边框样式、阴影效果、圆角设计等
5. **交互效果**:动画效果、悬停状态、过渡效果等
6. **组件风格**:按钮样式、卡片设计、图标风格等
请以结构化的方式输出设计基因包含具体的CSS属性值和设计规律以便后续页面能够保持一致的视觉风格。
输出格式:
- 每个维度用明确的标题分隔
- 提供具体的CSS属性和数值
- 说明设计规律和应用场景
- 突出关键的视觉特征"""
@staticmethod
def get_unified_design_guide_prompt(slide_data: Dict[str, Any], page_number: int, total_pages: int) -> str:
"""获取统一设计指导提示词"""
# 处理图片信息 - 只有在图片服务启用且有图片信息时才包含
images_context = ""
if _is_image_service_enabled() and 'images_summary' in slide_data:
images_context = f"""
**图片设计指导要求:**
- 请充分考虑这些图片资源在设计中的运用
- 根据图片的用途、内容描述和尺寸信息提供具体的布局建议
- 考虑图片的实际尺寸宽度x高度来优化布局和比例
- 根据图片文件大小和格式选择合适的显示方式
- 确保图片与页面内容的协调性和视觉平衡
- 提供图片样式和位置的优化建议
"""
return f"""作为资深的PPT设计师请为以下幻灯片生成全面的创意设计指导包含创意变化指导和内容驱动的设计建议
**完整幻灯片数据:**
{slide_data}
**页面位置:**第{page_number}页(共{total_pages}页)
{images_context}
请从以下角度生成统一的设计指导:
**A. 页面定位与创意策略**
- 分析该页面在整体PPT中的作用和重要性
- 确定页面的核心信息传达目标
- 提出符合页面定位的创意设计方向
**B. 视觉层级与布局建议**
- 根据内容重要性设计视觉层级
- 提供具体的布局方案和元素排列建议
- 考虑信息密度和视觉平衡
**C. 色彩与风格应用**
- 基于内容特点选择合适的色彩方案
- 提供具体的色彩搭配建议
- 确保与整体PPT风格的一致性
**D. 交互与动效建议**
- 根据页面类型提供合适的交互效果
- 建议页面切换和元素动画
- 增强用户体验和视觉吸引力
**E. 内容优化建议**
- 分析内容要点的表达方式
- 提供信息可视化建议
- 优化文字表达和信息结构
请提供具体、可操作的设计指导帮助生成高质量的PPT页面。"""
@staticmethod
def get_creative_variation_prompt(slide_data: Dict[str, Any], page_number: int, total_pages: int) -> str:
"""获取创意变化指导提示词"""
return f"""作为创意设计专家,请为以下幻灯片提供创意变化指导:
**幻灯片数据:**
{slide_data}
**页面位置:**第{page_number}页(共{total_pages}页)
请从以下角度提供创意指导:
**1. 视觉创意方向**
- 根据页面内容特点,提出独特的视觉表现方式
- 建议创新的布局形式和元素组合
- 提供差异化的设计思路
**2. 交互创意建议**
- 设计有趣的页面交互效果
- 提供动态元素的创意应用
- 增强用户参与感和体验感
**3. 内容呈现创新**
- 优化信息的可视化表达
- 提供创意的内容组织方式
- 增强信息的传达效果
**4. 风格变化控制**
- 在保持整体一致性的前提下,提供适度的风格变化
- 确保创意不影响信息传达的清晰度
- 平衡创新性与实用性
请提供具体的创意实施建议。"""
@staticmethod
def get_content_driven_design_prompt(slide_data: Dict[str, Any], page_number: int, total_pages: int) -> str:
"""获取内容驱动设计建议提示词"""
return f"""作为内容驱动设计专家,请为以下幻灯片提供基于内容的设计建议:
**幻灯片数据:**
{slide_data}
**页面位置:**第{page_number}页(共{total_pages}页)
请从以下角度提供设计建议:
**1. 内容分析与层级**
- 分析页面内容的重要性层级
- 确定主要信息和次要信息
- 提供信息优先级排序建议
**2. 视觉表达策略**
- 根据内容类型选择最佳的视觉表达方式
- 提供图表、图像、文字的组合建议
- 优化信息的可读性和理解性
**3. 布局优化方案**
- 基于内容特点设计最佳布局
- 确保信息流的逻辑性和连贯性
- 提供空间利用的优化建议
**4. 用户体验考虑**
- 从目标受众角度优化设计
- 确保信息传达的有效性
- 提高用户的理解和记忆效果
请提供具体的设计实施方案。"""
@staticmethod
def get_style_genes_extraction_prompt(template_html: str) -> str:
"""获取设计基因提取提示词"""
return f"""请分析以下HTML模板提取其核心设计基因
**HTML模板**
```html
{template_html}
```
请从以下维度提取设计基因:
**1. 色彩基因**
- 主色调和辅助色彩
- 色彩搭配规律
- 色彩的情感表达
**2. 字体基因**
- 字体族和字号规律
- 字重和字间距特点
- 文字层次结构
**3. 布局基因**
- 页面结构和比例
- 元素间距和对齐方式
- 空间利用特点
**4. 视觉基因**
- 装饰元素和图形风格
- 边框和阴影效果
- 视觉重点突出方式
**5. 交互基因**
- 动效和过渡效果
- 用户体验设计特点
- 响应式设计规律
请提供详细的设计基因分析报告,确保后续页面能够保持一致的设计风格。"""
@staticmethod
def get_creative_template_context_prompt(slide_data: Dict[str, Any], template_html: str,
slide_title: str, slide_type: str, page_number: int,
total_pages: int, context_info: str, style_genes: str,
unified_design_guide: str, project_topic: str,
project_type: str, project_audience: str, project_style: str) -> str:
"""获取创意模板上下文提示词"""
# 处理图片信息 - 只有在图片服务启用且有图片信息时才包含
images_info = ""
if _is_image_service_enabled() and 'images_summary' in slide_data:
images_info = f"""
**图片使用要求:**
- 请在HTML中合理使用这些图片资源
- 图片地址已经是绝对地址,可以直接使用
- 根据图片用途、内容描述和实际尺寸选择合适的位置和样式
- 充分利用图片的尺寸信息宽度x高度来优化布局设计
- 根据图片文件大小和格式选择合适的显示策略
- 确保图片与页面内容和设计风格协调
- 可以使用CSS对图片进行适当的样式调整大小、位置、边框等
"""
return f"""你是一位富有创意的设计师,需要为第{page_number}页创建一个既保持风格一致性又充满创意的PPT页面。
**严格内容约束**
- 页面标题:{slide_title}
- 页面类型:{slide_type}
- 总页数:{total_pages}
**完整页面数据参考**
{slide_data}
{images_info}
**风格模板(页眉和页脚必须完全保持原样)**
```html
{template_html}
```
**⚠️ 严格保留参考模板的页眉和页脚样式要求 ⚠️**
**绝对不允许修改的区域(除首页、目录页和尾页外)**
1. **页眉部分**:包括标题位置、字体、颜色、大小、布局等必须与参考模板中所示完全一致
2. **页脚部分**:包括页码、位置、字体、颜色、大小和任何页脚元素必须与参考模板中所示完全一致
3. **模板框架**:页眉和页脚的整体框架结构必须保持完全不变
**允许修改的区域**
- 仅限页眉和页脚之间的主要内容区域
- 主要内容区域内的布局、颜色、字体可以根据内容需要进行调整
- 主要内容区域内可以添加图片、图表、装饰元素等
**重要说明**
- 无论生成的幻灯片内容或设计变体如何,页眉和页脚都必须保留原样
- AI生成过程中不应对页眉和页脚模板区域进行任何样式修改
- "完全保持原样"意味着这些区域的所有视觉属性都不能改变
{context_info}
**核心设计原则**
1. **固定画布**:所有设计都必须在`1280x720`像素的固定尺寸画布内完成。最终页面应水平和垂直居中显示。
2. **页面专业度**:核心目标是让页面无论内容多少,都显得**专业且设计感强**。
3. **严格的模板框架保持**
- **页眉区域**:标题的位置、字体族、字体大小、字体颜色、字体粗细、对齐方式等必须与参考模板完全一致
- **页脚区域**:页码的位置、字体族、字体大小、字体颜色、字体粗细、对齐方式等必须与参考模板完全一致
- **框架结构**:页眉和页脚的容器尺寸、边距、内边距等布局属性必须保持不变
- **视觉统一**:确保所有页面的页眉和页脚在视觉上完全一致,建立统一的品牌框架
**动态内容自适应布局**
请根据内容的数量,智能地选择最佳布局和字体策略
**视觉呈现与组件运用**
* **创意优先**:不要局限于简单的文本列表。请根据内容特点,**自由选择并组合最合适的视觉组件**
* **视觉层次**:通过大小、颜色和布局的变化,建立清晰的视觉焦点和信息层次。
**关键约束**
* **严禁滚动条**:页面内容**绝对不能溢出**画布。如果内容过多,必须通过上述的**布局调整(如分栏、网格)或适度压缩字体/间距**来解决,而不是出现滚动条。
**核心设计基因(必须保持)**
{style_genes}
**统一创意设计指导**
{unified_design_guide}
**项目背景**
- 主题:{project_topic}
- 类型:{project_type}
- 目标受众:{project_audience}
- PPT风格{project_style}
**设计哲学**
1. **一致性原则** - 严格遵循核心设计基因,确保品牌识别度和视觉统一性
2. **创新性原则** - 仅在主要内容区域内进行创新,避免千篇一律但不破坏模板框架
3. **内容适配原则** - 让设计服务于内容,但必须在模板框架约束内进行
4. **用户体验原则** - 优化信息传达效率和视觉舒适度,同时保持模板的专业性
**创意要求**
- **创意范围**:仅在主要内容区域内进行创意设计,在保持核心设计基因的前提下创造独特的布局结构
- 根据内容特点选择最佳的信息展示方式,但不能影响页眉页脚的原有样式
- 使用创新的视觉元素增强表达效果,但必须限制在主要内容区域内
- 确保每一页都有独特的视觉亮点,同时保持页眉页脚的统一性
- **空间利用创意要求**
* 设计时必须考虑内容如何填满整个可用空间
* 使用flex布局的flex-grow属性让内容区域自动扩展
* 对于内容较少的页面,通过增大字体、图标、间距等方式充分利用空间
* 避免所有内容都集中在页面上半部分,要有意识地分布到整个页面
* 底部区域也要合理利用,可以放置装饰元素或次要信息
**富文本支持**
- 支持数学公式使用MathJax、代码高亮使用Prism.js、图表使用Chart.js等富文本元素
- 根据内容需要自动添加相应的库和样式
**技术规范**
- 生成完整的HTML页面包含<!DOCTYPE html>、head、body
- 使用Tailwind CSS或内联CSS确保美观的设计
- 页面尺寸严格控制html {{ height: 100%; display: flex; align-items: center; justify-content: center; }} body {{ width: 1280px; height: 720px; position: relative; overflow: hidden; }}
- 支持使用Chart.js和Font Awesome库
- 页码显示为:{page_number}/{total_pages}
- **页眉页脚严格保持原样**
* 页眉区域的所有HTML结构、CSS样式、字体属性必须与参考模板完全一致
* 页脚区域的所有HTML结构、CSS样式、字体属性必须与参考模板完全一致
- **空间利用优化**
* 主内容区域必须充分利用可用高度580-620px
* 避免内容区域底部出现大量空白
* 根据内容数量动态调整字体大小和间距
* 使用flex布局确保内容垂直分布均匀
* 避免页面内容超出页面底部或顶部
* 避免页面内容超出页面左右两侧
* 避免页面内容被遮挡
- 图表容器高度动态设置,确保所有图表内容完全可见且充分利用空间
- 所有内容元素都必须在1280x720范围内不能出现滚动条
**重要输出格式要求**
- 必须使用markdown代码块格式返回HTML代码
- 格式:```html\\n[HTML代码]\\n```
- HTML代码必须以<!DOCTYPE html>开始,以</html>结束
- 不要在代码块前后添加任何解释文字
"""
@staticmethod
def get_single_slide_html_prompt(slide_data: Dict[str, Any], confirmed_requirements: Dict[str, Any],
page_number: int, total_pages: int, context_info: str,
style_genes: str, unified_design_guide: str, template_html: str) -> str:
"""获取单页HTML生成提示词"""
# 处理图片信息 - 只有在图片服务启用且有图片信息时才包含
images_info = ""
if _is_image_service_enabled() and 'images_summary' in slide_data:
images_info = f"""
**图片使用要求:**
- 请在HTML中合理使用这些图片资源
- 图片地址已经是绝对地址,可以直接使用
- 根据图片用途、内容描述和实际尺寸选择合适的位置和样式
- 充分利用图片的尺寸信息宽度x高度来优化布局设计
- 根据图片文件大小和格式选择合适的显示策略
- 确保图片与页面内容和设计风格协调
- 可以使用CSS对图片进行适当的样式调整大小、位置、边框等
"""
return f"""
根据项目信息,为第{page_number}页生成完整的HTML代码。
项目信息:
- 主题:{confirmed_requirements.get('topic', '')}
- 目标受众:{confirmed_requirements.get('target_audience', '')}
- 其他说明:{confirmed_requirements.get('description', '')}
当前页面信息:
{slide_data}
{images_info}
**风格模板(页眉和页脚必须完全保持原样)**
```html
{template_html}
```
**⚠️ 严格保留参考模板的页眉和页脚样式要求 ⚠️**
**绝对不允许修改的区域(除首页、目录页和尾页外)**
1. **页眉部分**:包括标题位置、字体、颜色、大小、布局等必须与参考模板中所示完全一致
2. **页脚部分**:包括页码、位置、字体、颜色、大小和任何页脚元素必须与参考模板中所示完全一致
3. **模板框架**:页眉和页脚的整体框架结构必须保持完全不变
**允许修改的区域**
- 仅限页眉和页脚之间的主要内容区域
- 主要内容区域内的布局、颜色、字体可以根据内容需要进行调整
- 主要内容区域内可以添加图片、图表、装饰元素等
**重要说明**
- 无论生成的幻灯片内容或设计变体如何,页眉和页脚都必须保留原样
- AI生成过程中不应对页眉和页脚模板区域进行任何样式修改
- "完全保持原样"意味着这些区域的所有视觉属性都不能改变
**核心设计原则**
1. **固定画布**:所有设计都必须在`1280x720`像素的固定尺寸画布内完成。最终页面应水平和垂直居中显示。
2. **页面专业度**:核心目标是让页面无论内容多少,都显得**专业且设计感强**。
3. **严格的模板框架保持**
- **页眉区域**:标题的位置、字体族、字体大小、字体颜色、字体粗细、对齐方式等必须与参考模板完全一致
- **页脚区域**:页码的位置、字体族、字体大小、字体颜色、字体粗细、对齐方式等必须与参考模板完全一致
- **框架结构**:页眉和页脚的容器尺寸、边距、内边距等布局属性必须保持不变
- **视觉统一**:确保所有页面的页眉和页脚在视觉上完全一致,建立统一的品牌框架
**动态内容自适应布局**
请根据内容的数量,智能地选择最佳布局和字体策略。
**视觉呈现与组件运用**
* **创意优先**:不要局限于简单的文本列表。请根据内容特点,**自由选择并组合最合适的视觉组件**
* **视觉层次**:通过大小、颜色和布局的变化,建立清晰的视觉焦点和信息层次。
**关键约束**
* **严禁滚动条**:页面内容**绝对不能溢出**画布。如果内容过多,必须通过上述的**布局调整(如分栏、网格)或适度压缩字体/间距**来解决,而不是出现滚动条。
{context_info}
**设计平衡要求(一致性与创新并重)**
1. 使用16:9的响应式PPT尺寸适配不同屏幕大小
2. **必须保持一致的核心元素**
- 遵循提供的设计风格模板中的核心约束
- 保持主色调和字体系统的统一
- 维持整体视觉品牌的连贯性
3. **鼓励创新的设计空间**
- 根据内容特点创新布局结构
- 灵活运用视觉元素增强表达效果
- 适度融入当前设计趋势
- 优化信息层次和用户体验
**技术规范**
- 生成完整的HTML页面包含<!DOCTYPE html>、head、body不包含style标签
- 使用Tailwind CSS或内联CSS确保美观的设计
- 使用16:9响应式设计适配不同屏幕尺寸
- 使用CSS的aspect-ratio属性保持16:9比例
- 使用clamp()函数实现响应式字体大小
- 使用百分比和vw/vh单位实现响应式布局
- 内容布局清晰,重点突出
- 确保文字清晰可读,颜色搭配协调
{f'''
**图片集成指导**
- 图片资源: {slide_data.get('image_url', '')}
- 如果有图片资源,请必须合理地将图片融入页面设计中:
* 根据图片的实际尺寸宽度x高度优化布局和比例设计
* 考虑图片文件大小,对大文件图片进行适当的压缩显示
* 根据图片格式PNG/JPEG/WebP等选择合适的显示方式
* 图片大小和位置应与页面布局协调,不影响文字阅读
* 可以作为背景图、装饰图或内容配图等各种方式使用
* 确保图片不会导致页面内容溢出或布局混乱
* 图片应使用响应式设计,适配不同屏幕尺寸
''' if _is_image_service_enabled() else ''}
**富文本支持**
- 支持数学公式使用MathJax、代码高亮使用Prism.js、图表使用Chart.js等富文本元素
- 根据内容需要自动添加相应的库和样式
**严格的页面尺寸和高度控制**
- **页面尺寸**html {{ height: 100%; display: flex; align-items: center; justify-content: center; }} body {{ width: 1280px; height: 720px; position: relative; overflow: hidden; }}
- **内容高度分配**
* **页眉区域**标题的HTML结构、CSS样式、字体族、字体大小、字体颜色、字体粗细、位置、对齐方式等必须与参考模板完全一致不允许任何修改
* **页脚区域**页码的HTML结构、CSS样式、字体族、字体大小、字体颜色、字体粗细、位置、对齐方式等必须与参考模板完全一致不允许任何修改
* **主内容区域**580-620px充分利用可用空间根据内容动态调整- 这是唯一允许修改的区域
* 避免页面内容超出页面底部或顶部
* 避免页面内容超出页面左右两侧
* 避免页面内容被遮挡
- **空间充分利用原则**
* **内容自适应扩展**:根据内容数量和类型,动态调整各区域高度
* **避免大量留白**:合理分配空间,避免底部出现过多空余区域
**核心设计基因(必须保持)**
{style_genes}
**统一创意设计指导**
{unified_design_guide}
**重要输出格式要求:**
- 必须使用markdown代码块格式返回HTML代码
- 格式:```html\\n[HTML代码]\\n```
- HTML代码必须以<!DOCTYPE html>开始,以</html>结束
- 不要在代码块前后添加任何解释文字
- 确保代码块标记正确且完整
- 严格遵循上述风格要求生成HTML页面
- **页眉页脚保持原样**生成的HTML中页眉和页脚部分必须与参考模板完全一致不允许任何修改
"""
@staticmethod
def get_slide_context_prompt(page_number: int, total_pages: int) -> str:
"""获取幻灯片上下文提示词(特殊页面设计要求)"""
context_parts = []
if page_number == 1 or page_number == total_pages:
context_parts.append("**🌟 特殊页面设计要求 🌟**")
if page_number == 1:
context_parts.extend([
"这是首页,需要在保持原模板风格基础上创造强烈的第一印象。设计原则:",
"- **风格一致性**:严格遵循原模板的设计风格、色彩体系、字体选择和布局特征",
"- **主题呼应**:确保首页设计与演示主题高度契合,体现专业性和主题相关性",
"- **视觉层次**:在原模板框架内运用对比、大小、颜色等手段突出主题标题",
"- **背景处理**:基于原模板的背景风格进行适度增强,可考虑渐变、纹理等元素",
"- **标题强化**:在保持原模板字体风格的基础上,通过大小、颜色、位置等方式增强表现力",
"- **装饰协调**:使用与原模板风格一致的装饰元素,丰富视觉层次但不破坏整体和谐",
"- **色彩延续**:严格使用原模板的主色调体系,可适度增加饱和度或亮度来增强吸引力",
"- **品牌统一**:确保首页设计与整体演示保持品牌和视觉的统一性"
])
elif page_number == total_pages:
context_parts.extend([
"这是结尾页,需要在保持原模板风格基础上营造完整的收尾感。设计原则:",
"- **风格延续**:严格保持与原模板和首页一致的设计风格、色彩和字体体系",
"- **主题收尾**:确保结尾页设计与演示主题形成完整呼应,体现主题的完整性",
"- **视觉呼应**:与首页和中间页面形成视觉连贯性,保持整体演示的统一感",
"- **重点突出**:在原模板框架内突出核心总结信息,确保关键信息得到强调",
"- **背景协调**:基于原模板背景风格进行适度处理,营造收尾感但不破坏整体风格",
"- **布局平衡**:遵循原模板的布局原则,通过留白和元素分布增强页面的完整感",
"- **色彩统一**:严格使用原模板的色彩体系,可适度调整明度来营造收尾氛围",
"- **品牌闭环**:确保结尾页与整体演示形成完整的品牌和视觉闭环"
])
context_parts.append("")
return "\\n".join(context_parts) if context_parts else ""
@staticmethod
def get_style_genes_extraction_prompt(template_html: str) -> str:
"""获取设计基因提取提示词"""
return f"""请分析以下HTML模板提取其核心设计基因
**HTML模板**
```html
{template_html}
```
请从以下维度提取设计基因:
**1. 色彩基因**
- 主色调和辅助色彩
- 色彩搭配规律
- 色彩的情感表达
**2. 字体基因**
- 字体族和字号规律
- 字重和字间距特点
- 文字层次结构
**3. 布局基因**
- 页面结构和比例
- 元素间距和对齐方式
- 空间利用特点
**4. 视觉基因**
- 装饰元素和图形风格
- 边框和阴影效果
- 视觉重点突出方式
**5. 交互基因**
- 动效和过渡效果
- 用户体验设计特点
- 响应式设计规律
请提供详细的设计基因分析报告,确保后续页面能够保持一致的设计风格。"""
@staticmethod
def get_creative_template_context_prompt(slide_data: Dict[str, Any], template_html: str,
slide_title: str, slide_type: str, page_number: int,
total_pages: int, context_info: str, style_genes: str,
unified_design_guide: str, project_topic: str,
project_type: str, project_audience: str, project_style: str) -> str:
"""获取创意模板上下文提示词"""
# 处理图片信息 - 只有在图片服务启用且有图片信息时才包含
images_info = ""
if _is_image_service_enabled() and 'images_summary' in slide_data:
images_info = f"""
**图片使用要求:**
- 请在HTML中合理使用已有图片资源
- 图片地址已经是绝对地址,可以直接使用
- 根据图片用途、内容描述和实际尺寸选择合适的位置和样式
- 充分利用图片的尺寸信息宽度x高度来优化布局设计
- 根据图片文件大小和格式选择合适的显示策略
- 确保图片与页面内容和设计风格协调
- 可以使用CSS对图片进行适当的样式调整大小、位置、边框等
"""
return f"""你是一位富有创意的设计师,需要为第{page_number}页创建一个既保持风格一致性又充满创意的PPT页面。
**严格内容约束**
- 页面标题:{slide_title}
- 页面类型:{slide_type}
- 总页数:{total_pages}
**完整页面数据参考**
{slide_data}
{images_info}
**风格模板(页眉和页脚必须完全保持原样)**
```html
{template_html}
```
**⚠️ 严格保留参考模板的页眉和页脚样式要求 ⚠️**
**绝对不允许修改的区域(除首页、目录页和尾页外)**
1. **页眉部分**:包括标题位置、字体、颜色、大小、布局等必须与参考模板中所示完全一致
2. **页脚部分**:包括页码、位置、字体、颜色、大小和任何页脚元素必须与参考模板中所示完全一致
3. **模板框架**:页眉和页脚的整体框架结构必须保持完全不变
**允许修改的区域**
- 仅限页眉和页脚之间的主要内容区域
- 主要内容区域内的布局、颜色、字体可以根据内容需要进行调整
- 主要内容区域内可以添加图片、图表、装饰元素等
**重要说明**
- 无论生成的幻灯片内容或设计变体如何,页眉和页脚都必须保留原样
- AI生成过程中不应对页眉和页脚模板区域进行任何样式修改
- "完全保持原样"意味着这些区域的所有视觉属性都不能改变
{context_info}
**核心设计原则**
1. **固定画布**:所有设计都必须在`1280x720`像素的固定尺寸画布内完成。最终页面应水平和垂直居中显示。
2. **页面专业度**:核心目标是让页面无论内容多少,都显得**专业且设计感强**。
3. **严格的模板框架保持**
- **页眉区域**:标题的位置、字体族、字体大小、字体颜色、字体粗细、对齐方式等必须与参考模板完全一致
- **页脚区域**:页码的位置、字体族、字体大小、字体颜色、字体粗细、对齐方式等必须与参考模板完全一致
- **框架结构**:页眉和页脚的容器尺寸、边距、内边距等布局属性必须保持不变
- **视觉统一**:确保所有页面的页眉和页脚在视觉上完全一致,建立统一的品牌框架
**动态内容自适应布局**
请根据内容的数量,智能地选择最佳布局和字体策略
**视觉呈现与组件运用**
* **创意优先**:不要局限于简单的文本列表。请根据内容特点,**自由选择并组合最合适的视觉组件**
* **视觉层次**:通过大小、颜色和布局的变化,建立清晰的视觉焦点和信息层次。
**关键约束**
* **严禁滚动条**:页面内容**绝对不能溢出**画布。如果内容过多,必须通过上述的**布局调整(如分栏、网格)或适度压缩字体/间距**来解决,而不是出现滚动条。
**核心设计基因(必须保持)**
{style_genes}
**统一创意设计指导**
{unified_design_guide}
**项目背景**
- 主题:{project_topic}
- 类型:{project_type}
- 目标受众:{project_audience}
- PPT风格{project_style}
**设计哲学**
1. **一致性原则** - 严格遵循核心设计基因,确保品牌识别度和视觉统一性
2. **创新性原则** - 仅在主要内容区域内进行创新,避免千篇一律但不破坏模板框架
3. **内容适配原则** - 让设计服务于内容,但必须在模板框架约束内进行
4. **用户体验原则** - 优化信息传达效率和视觉舒适度,同时保持模板的专业性
5. **空间最大化原则** - 在主要内容区域内充分利用页面空间,避免大量留白浪费
* 内容应该垂直分布均匀,占满主要内容区域的可用高度
* 使用合适的字体大小和间距,确保内容填充整个主要内容区域
**创意要求**
- **创意范围**:仅在主要内容区域内进行创意设计,在保持核心设计基因的前提下创造独特的布局结构
- 根据内容特点选择最佳的信息展示方式,但不能影响页眉页脚的原有样式
- 使用创新的视觉元素增强表达效果,但必须限制在主要内容区域内
- 确保每一页都有独特的视觉亮点,同时保持页眉页脚的统一性
- **空间利用创意要求**
* 设计时必须考虑内容如何填满整个可用空间
* 使用flex布局的flex-grow属性让内容区域自动扩展
* 对于内容较少的页面,通过增大字体、图标、间距等方式充分利用空间
* 避免所有内容都集中在页面上半部分,要有意识地分布到整个页面
* 底部区域也要合理利用,可以放置装饰元素或次要信息
{f'''
**图片集成指导**
- 图片资源: {slide_data.get('image_url', '')}
- 如果有图片资源,请必须创造性地将图片融入页面设计中:
* 根据图片的实际尺寸宽度x高度进行精确的布局设计
* 考虑图片文件大小和格式,优化加载性能和显示效果
* 利用图片的元数据信息(尺寸、格式、大小)进行智能布局
* 图片大小和位置应与页面布局协调,增强而非干扰内容表达
* 确保图片使用符合模板的设计基因和风格要求
* 图片大小和位置应与页面布局协调,不影响文字阅读
* 可以作为背景图、装饰图或内容配图等各种方式使用
* 确保图片不会导致页面内容溢出或布局混乱
''' if _is_image_service_enabled() else ''}
**富文本支持**
- 支持数学公式使用MathJax、代码高亮使用Prism.js、图表使用Chart.js等富文本元素
- 根据内容需要自动添加相应的库和样式
**技术规范**
- 生成完整的HTML页面包含<!DOCTYPE html>、head、body
- 使用Tailwind CSS或内联CSS确保美观的设计
- 页面尺寸严格控制html {{ height: 100%; display: flex; align-items: center; justify-content: center; }} body {{ width: 1280px; height: 720px; position: relative; overflow: hidden; }}
- 支持使用Chart.js和Font Awesome库
- 页码显示为:{page_number}/{total_pages}
- **页眉页脚严格保持原样**
* 页眉区域的所有HTML结构、CSS样式、字体属性必须与参考模板完全一致
* 页脚区域的所有HTML结构、CSS样式、字体属性必须与参考模板完全一致
- **空间利用优化**
* 主内容区域必须充分利用可用高度580-620px
* 避免内容区域底部出现大量空白
* 根据内容数量动态调整字体大小和间距
* 使用flex布局确保内容垂直分布均匀
* 避免页面内容超出页面底部或顶部
* 避免页面内容超出页面左右两侧
* 避免页面内容被遮挡
- 图表容器高度动态设置,确保所有图表内容完全可见且充分利用空间
- 所有内容元素都必须在1280x720范围内不能出现滚动条
**重要输出格式要求**
- 必须使用markdown代码块格式返回HTML代码
- 格式:```html\\n[HTML代码]\\n```
- HTML代码必须以<!DOCTYPE html>开始,以</html>结束
- 不要在代码块前后添加任何解释文字
- **页眉页脚保持原样**生成的HTML中页眉和页脚部分必须与参考模板完全一致不允许任何修改
"""