新增: 首页 + 资料导入 + PDF导出 + AI文档生成
This commit is contained in:
@@ -383,6 +383,35 @@ export async function generate(opts: { topic: string; count?: number; signal?: A
|
||||
return { action: 'create_all', slides }
|
||||
}
|
||||
|
||||
/** 文档内容 → AI 分析后生成幻灯片 */
|
||||
export async function generateFromDocument(opts: {
|
||||
text: string
|
||||
filename?: string
|
||||
signal?: AbortSignal
|
||||
}): Promise<{ action: 'create_all'; slides: Slide[] }> {
|
||||
const SYS_DOC =
|
||||
SYS_BASE +
|
||||
'\n任务:分析下方提供的文档内容,将其提炼为 5-10 页专业演示稿(含封面 1 页 + 内容 3-7 页 + 结尾 1 页)。\n' +
|
||||
'要求:\n' +
|
||||
'- 提取文档中的核心观点、关键数据、重要结论,不要遗漏重要信息\n' +
|
||||
'- 每页只有一个主题,标题具体、有信息量,如「Q3 营收增长 23%」而非「业绩回顾」\n' +
|
||||
'- 正文有实质内容,包含具体数字、案例、来源;避免空泛口号\n' +
|
||||
'- 合理运用 card(对比/分组)、stat(突出数据)、chart(趋势/分布)等元素\n' +
|
||||
'- 每个主要元素都加 style.anim 入场动画\n' +
|
||||
'- 封面用 g-primary 渐变,结尾可用 g-primary 或 g-deep,内容页用 bg/panel 浅底\n' +
|
||||
'严格输出 JSON:{"action":"create_all","slides":[...]}'
|
||||
|
||||
const messages: Message[] = [
|
||||
{ role: 'system', content: SYS_DOC },
|
||||
{ role: 'user', content: '文档' + (opts.filename ? '(' + opts.filename + ')' : '') + '内容如下:\n\n' + opts.text }
|
||||
]
|
||||
const r = await streamChat(messages, { jsonMode: true, signal: opts.signal })
|
||||
if (!r.json) throw new Error('AI 输出无法解析为 JSON,请重试。')
|
||||
const slides = normSlides(r.json.slides || r.json)
|
||||
if (!slides.length) throw new Error('AI 未生成有效幻灯片,请重试或检查文档内容。')
|
||||
return { action: 'create_all', slides }
|
||||
}
|
||||
|
||||
/** 润色单页 */
|
||||
export async function polish(opts: { slide: Slide; instruction?: string; signal?: AbortSignal }): Promise<{ action: 'update_page'; slide: Slide; note: string }> {
|
||||
const instruction = opts.instruction || '让这页内容更有吸引力、表达更精炼'
|
||||
|
||||
Reference in New Issue
Block a user