@lemonppt/agent-prompts 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,11 @@
1
1
  /**
2
2
  * 当未配置 LLM API Key 时,基于用户输入生成一份 demo 级别的 goal.json。
3
3
  * fallback 直接产出完整 Slide(含 role + layout),仍走 recomposeDeck 规范化。
4
+ *
5
+ * 优化方向:
6
+ * - 从输入中提取关键词和数字,让内容与主题更相关
7
+ * - 根据关键词自动选择新版式(feature_v2 / pricing_v2 / team_v2 / roadmap_v2 / timeline_v2)
8
+ * - 避免固定写死的数据, metric / chart 使用输入中的数字或合理占位
4
9
  */
5
10
  import type { DeckGoal } from '@lemonppt/core';
6
11
  export interface FallbackOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAyDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CA4IrE"}
1
+ {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuWD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAsBrE"}
package/dist/fallback.js CHANGED
@@ -1,6 +1,14 @@
1
1
  // lemonPPT - AI-powered presentation generation
2
2
  // Copyright (c) 2026 lemonforme
3
3
  // SPDX-License-Identifier: AGPL-3.0-or-later
4
+ const ROLE_KEYWORDS = {
5
+ team: ['团队', '成员', '创始人', '员工', '我们', '介绍', '核心成员'],
6
+ pricing: ['价格', '定价', '套餐', '付费', '方案', '订阅', '多少钱'],
7
+ roadmap: ['路线图', '规划', '阶段', '里程碑', '季度', '年度', 'roadmap', '计划'],
8
+ feature: ['特性', '功能', '优势', '亮点', '特点', 'feature', '卖点'],
9
+ metric: ['指标', '数据', '增长', 'kpi', 'metric', '业绩', '营收', '效率'],
10
+ timeline: ['时间线', '历程', '发展', '里程碑', 'timeline', '历史', '节点'],
11
+ };
4
12
  const layoutToRole = (layout) => {
5
13
  if (layout.startsWith('cover'))
6
14
  return 'cover';
@@ -46,11 +54,16 @@ const layoutToRole = (layout) => {
46
54
  return 'closing';
47
55
  return 'content';
48
56
  };
57
+ function detectKeywords(input) {
58
+ return Object.fromEntries(Object.entries(ROLE_KEYWORDS).map(([key, words]) => [
59
+ key,
60
+ words.some((word) => input.toLowerCase().includes(word.toLowerCase())),
61
+ ]));
62
+ }
49
63
  function extractTitle(input) {
50
64
  const firstSentence = input.split(/[。!?\n]/)[0].trim();
51
65
  if (firstSentence.length <= 80)
52
66
  return firstSentence || '未命名演示';
53
- // 超过 80 字符时,尽量在语义边界截断,避免切断数字或关键词
54
67
  const truncated = firstSentence.slice(0, 80);
55
68
  const lastPunct = Math.max(truncated.lastIndexOf(','), truncated.lastIndexOf('、'));
56
69
  if (lastPunct > 40)
@@ -58,46 +71,124 @@ function extractTitle(input) {
58
71
  return truncated;
59
72
  }
60
73
  function inferAudience(input) {
61
- if (input.includes('企业客户'))
62
- return '企业客户';
63
74
  if (input.includes('投资人'))
64
75
  return '投资人';
76
+ if (input.includes('企业客户') || input.includes('企业'))
77
+ return '企业客户';
65
78
  if (input.includes('内部'))
66
79
  return '内部团队';
80
+ if (input.includes('用户'))
81
+ return '终端用户';
67
82
  return '通用观众';
68
83
  }
69
84
  function inferSellingPoints(input) {
70
- const match = input.match(/核心卖点[::](.+)/);
71
- if (match) {
72
- return match[1]
73
- .split(/[,,、]/)
74
- .map((s) => s.trim())
75
- .filter(Boolean)
76
- .slice(0, 4);
77
- }
78
- return ['核心优势一', '核心优势二', '核心优势三'];
85
+ const patterns = [/核心卖点[::](.+)/, /优势[::](.+)/, /特点[::](.+)/, /亮点[::](.+)/, /卖点[::](.+)/];
86
+ for (const re of patterns) {
87
+ const match = input.match(re);
88
+ if (match) {
89
+ const pts = match[1]
90
+ .split(/[,,、]/)
91
+ .map((s) => s.trim())
92
+ .filter(Boolean)
93
+ .slice(0, 4);
94
+ if (pts.length >= 2)
95
+ return pts;
96
+ }
97
+ }
98
+ const clauses = input
99
+ .split(/[,,、。!?]/)
100
+ .map((s) => s.trim())
101
+ .filter((s) => s.length >= 4 && s.length <= 30 && !/^面向/.test(s));
102
+ if (clauses.length >= 2)
103
+ return clauses.slice(0, 4);
104
+ // 基于主题关键词生成更自然的默认卖点(优先匹配更具体的垂直领域)
105
+ const lowered = input.toLowerCase();
106
+ if (lowered.includes('ai') || lowered.includes('人工智能') || lowered.includes('智能')) {
107
+ return ['智能化决策支持', '自动化流程处理', '数据驱动洞察', '持续学习优化'];
108
+ }
109
+ if (lowered.includes('教育') || lowered.includes('培训') || lowered.includes('学习')) {
110
+ return ['个性化学习路径', '互动式教学体验', '学习效果追踪', '优质内容沉淀'];
111
+ }
112
+ if (lowered.includes('医疗') || lowered.includes('健康')) {
113
+ return ['全病程管理', '数据互联互通', '智能辅助决策', '患者体验升级'];
114
+ }
115
+ if (lowered.includes('金融') || lowered.includes('财务') || lowered.includes('支付')) {
116
+ return ['合规风控体系', '实时资金流转', '智能对账核算', '多场景覆盖'];
117
+ }
118
+ if (lowered.includes('电商') || lowered.includes('零售') || lowered.includes('供应链')) {
119
+ return ['全渠道运营', '智能选品补货', '库存精益管理', '消费者精准运营'];
120
+ }
121
+ if (lowered.includes('数据') || lowered.includes('分析') || lowered.includes('大数据')) {
122
+ return ['全域数据采集', '实时分析看板', '智能预测预警', '决策可视呈现'];
123
+ }
124
+ if (lowered.includes('营销') || lowered.includes('增长') || lowered.includes('获客')) {
125
+ return ['精准用户触达', '全链路转化追踪', '内容智能分发', 'ROI 持续提升'];
126
+ }
127
+ if (lowered.includes('团队') || lowered.includes('协作') || lowered.includes('办公')) {
128
+ return ['信息实时同步', '任务高效协同', '知识沉淀复用', '流程透明可控'];
129
+ }
130
+ if (lowered.includes('云') || lowered.includes('saas') || lowered.includes('平台')) {
131
+ return ['弹性扩展能力', '降低运维成本', '快速部署上线', '多端协同支持'];
132
+ }
133
+ return ['显著提升效率', '降低综合成本', '优化用户体验', '支撑持续增长'];
79
134
  }
80
- export function createFallbackGoal(options) {
81
- const { input, pageCount = 5, theme = 'base', language = 'zh' } = options;
82
- const title = extractTitle(input);
83
- const audience = inferAudience(input);
84
- const sellingPoints = inferSellingPoints(input);
85
- const [sp1 = '核心优势一', sp2 = '核心优势二', sp3 = '核心优势三', sp4 = '持续迭代'] = sellingPoints;
86
- const baseSlides = [
87
- {
88
- layout: 'cover_v1',
89
- props: {
90
- kicker: '产品发布',
91
- title,
92
- subtitle: ' lemonPPT 根据你的描述生成(fallback 示例)',
93
- },
135
+ function extractNumbers(input) {
136
+ const matches = input.match(/\d+(\.\d+)?/g);
137
+ return matches ? matches.map(Number) : [];
138
+ }
139
+ function inferMetric(input, numbers) {
140
+ const unitMatch = input.match(/(\d+(?:\.\d+)?)\s*([倍%万家个kK亿]+)/);
141
+ if (unitMatch) {
142
+ return { label: '关键指标', value: unitMatch[1], unit: unitMatch[2], description: '从主题中提取的核心数据' };
143
+ }
144
+ if (numbers.length > 0) {
145
+ return { label: '关键指标', value: String(numbers[0]), unit: '%', description: '从主题中提取的核心数据' };
146
+ }
147
+ return { label: '效率提升', value: '85', unit: '%', description: 'AI 助手帮助企业客户显著降本增效' };
148
+ }
149
+ function inferChartData(input, numbers) {
150
+ const quarterMatch = input.match(/(Q[1-4][\s,,、Q]+){2,}/i);
151
+ if (quarterMatch && numbers.length >= 2) {
152
+ return { labels: ['Q1', 'Q2', 'Q3', 'Q4'], data: numbers.slice(0, 4), unit: '%' };
153
+ }
154
+ if (numbers.length >= 4) {
155
+ return { labels: ['阶段一', '阶段二', '阶段三', '阶段四'], data: numbers.slice(0, 4), unit: '' };
156
+ }
157
+ if (numbers.length >= 2) {
158
+ return { labels: numbers.map((_, i) => `节点 ${i + 1}`), data: numbers, unit: '' };
159
+ }
160
+ return { labels: ['Q1', 'Q2', 'Q3', 'Q4'], data: [20, 45, 70, 95], unit: '%' };
161
+ }
162
+ function buildCandidateSlides(input, title, audience, points, numbers, pageCount) {
163
+ const [sp1 = '核心优势一', sp2 = '核心优势二', sp3 = '核心优势三', sp4 = '持续迭代'] = points;
164
+ const metric = inferMetric(input, numbers);
165
+ const chart = inferChartData(input, numbers);
166
+ const kw = detectKeywords(input);
167
+ const cover = {
168
+ layout: 'cover_v1',
169
+ props: {
170
+ kicker: '产品发布',
171
+ title,
172
+ subtitle: `面向${audience}的演示方案`,
94
173
  },
174
+ };
175
+ const closing = {
176
+ layout: 'closing_v2',
177
+ props: {
178
+ title: '开启新篇章',
179
+ subtitle: title,
180
+ contact: '产品团队',
181
+ email: 'hello@lemonppt.dev',
182
+ link: 'https://lemonppt.dev',
183
+ },
184
+ };
185
+ const requiredMiddle = [
95
186
  {
96
187
  layout: 'table_of_contents_v1',
97
188
  props: {
98
189
  kicker: '目录',
99
190
  title: '内容概览',
100
- items: ['核心卖点', '关键数据', '实施流程', '展望未来'],
191
+ items: ['核心卖点', '关键数据', '实施流程', '未来展望'],
101
192
  },
102
193
  },
103
194
  {
@@ -109,25 +200,52 @@ export function createFallbackGoal(options) {
109
200
  rightPoints: [sp3, sp4],
110
201
  },
111
202
  },
112
- {
113
- layout: 'metric_v1',
114
- props: {
115
- label: '效率提升',
116
- value: '10',
117
- unit: '',
118
- description: 'AI 助手帮助企业客户显著降本增效',
203
+ kw.feature
204
+ ? {
205
+ layout: 'feature_v2',
206
+ props: {
207
+ kicker: '产品特性',
208
+ title: '核心能力一览',
209
+ features: [
210
+ { title: sp1, description: '为业务场景深度优化的关键能力', icon: '◆' },
211
+ { title: sp2, description: '显著提升效率与体验的差异化优势', icon: '◆' },
212
+ { title: sp3, description: '面向未来扩展的长期价值支撑', icon: '◆' },
213
+ ],
214
+ },
215
+ }
216
+ : {
217
+ layout: 'content_v3',
218
+ props: {
219
+ kicker: '方案介绍',
220
+ title,
221
+ points: [sp1, sp2, sp3],
222
+ },
119
223
  },
224
+ {
225
+ layout: numbers.length > 0 ? 'metric_v1' : 'metric_v3',
226
+ props: numbers.length > 0
227
+ ? {
228
+ kicker: '关键数据',
229
+ label: metric.label,
230
+ value: metric.value,
231
+ unit: metric.unit,
232
+ description: metric.description,
233
+ }
234
+ : {
235
+ kicker: '关键数据',
236
+ title: '核心增长指标',
237
+ metrics: [
238
+ { label: '效率提升', value: '10', unit: '倍', change: '+35%' },
239
+ { label: '客户覆盖', value: '50+', unit: '家', change: '+120%' },
240
+ ],
241
+ },
120
242
  },
121
243
  {
122
- layout: 'process_v2',
244
+ layout: 'process_v1',
123
245
  props: {
124
246
  kicker: '实施流程',
125
247
  title: '三步落地',
126
- steps: [
127
- { title: '需求调研', description: '梳理企业业务场景与关键痛点' },
128
- { title: '私有化部署', description: '安全接入企业知识库与系统' },
129
- { title: '持续运营', description: '基于使用数据不断优化效果' },
130
- ],
248
+ steps: ['需求调研', '方案落地', '持续运营'],
131
249
  },
132
250
  },
133
251
  {
@@ -136,76 +254,120 @@ export function createFallbackGoal(options) {
136
254
  kicker: '数据洞察',
137
255
  title: '增长趋势',
138
256
  type: 'bar',
139
- labels: ['Q1', 'Q2', 'Q3', 'Q4'],
140
- data: [12, 19, 28, 40],
141
- unit: '%',
257
+ labels: chart.labels,
258
+ data: chart.data,
259
+ unit: chart.unit,
142
260
  },
143
261
  },
144
262
  {
145
263
  layout: 'quote_v2',
146
264
  props: {
147
- quote: 'AI 不是替代人,而是让每个人拥有更强的创造力。',
265
+ quote: '让技术真正服务于人,让每一次表达都更有力量。',
148
266
  author: '产品团队',
149
267
  role: '产品理念',
150
268
  },
151
269
  },
152
- {
153
- layout: 'swot_v1',
270
+ ];
271
+ const optionalMiddle = [];
272
+ if (kw.timeline) {
273
+ optionalMiddle.push({
274
+ layout: 'timeline_v2',
154
275
  props: {
155
- title: 'SWOT 简析',
156
- strength: '深耕企业场景,私有化部署能力',
157
- weakness: '品牌知名度仍需建设',
158
- opportunity: '企业数字化转型需求旺盛',
159
- threat: '同类产品竞争激烈',
276
+ kicker: '发展历程',
277
+ title: '关键里程碑',
278
+ milestones: [
279
+ { date: '第一阶段', title: '产品立项', description: '验证核心场景与用户需求' },
280
+ { date: '第二阶段', title: '快速迭代', description: '发布 MVP 并收集反馈' },
281
+ { date: '第三阶段', title: '规模化', description: '服务更多客户,完善生态' },
282
+ ],
160
283
  },
161
- },
162
- {
163
- layout: 'closing_v2',
284
+ });
285
+ }
286
+ if (kw.roadmap) {
287
+ optionalMiddle.push({
288
+ layout: 'roadmap_v2',
164
289
  props: {
165
- title: '开启智能办公新篇章',
166
- subtitle: '让 AI 助手成为企业增长的新引擎',
167
- contact: '产品团队',
168
- email: 'hello@lemonppt.dev',
169
- link: 'https://lemonppt.dev',
290
+ kicker: '产品路线图',
291
+ title: '未来规划',
292
+ phases: [
293
+ { phase: '短期', goals: ['完成核心功能打磨', '验证首批客户场景'] },
294
+ { phase: '中期', goals: ['扩展平台能力', '提升自动化水平'] },
295
+ { phase: '长期', goals: ['构建生态闭环', '成为行业标杆'] },
296
+ ],
170
297
  },
171
- },
172
- ];
173
- const slides = baseSlides
174
- .slice(0, pageCount)
175
- .map((s) => ({ role: layoutToRole(s.layout), layout: s.layout, props: s.props }));
176
- // 如果页数少于基础版式,确保最后一页是结尾页
177
- const lastSlide = slides[slides.length - 1];
178
- if (lastSlide && lastSlide.role !== 'closing') {
179
- const closing = baseSlides.find((s) => layoutToRole(s.layout) === 'closing');
180
- if (closing) {
181
- slides[slides.length - 1] = {
182
- role: 'closing',
183
- layout: closing.layout,
184
- props: closing.props,
185
- };
186
- }
298
+ });
187
299
  }
188
- // 如果页数多于基础版式,用内容页填充
189
- while (slides.length < pageCount) {
190
- slides.splice(slides.length - 1, 0, {
191
- role: 'content',
192
- layout: 'content_v3',
300
+ if (kw.team) {
301
+ optionalMiddle.push({
302
+ layout: 'team_v2',
193
303
  props: {
194
- kicker: `补充页 ${slides.length}`,
195
- title: '更多内容',
196
- points: [
197
- `围绕“${title}”展开说明`,
198
- '可替换为 AI 生成的要点',
199
- '保持整体叙事一致',
304
+ kicker: '团队介绍',
305
+ title: '认识我们',
306
+ members: [
307
+ { name: '创始人', role: 'CEO', bio: '负责战略与整体方向' },
308
+ { name: '产品负责人', role: 'CPO', bio: '聚焦用户体验与产品迭代' },
309
+ { name: '技术负责人', role: 'CTO', bio: '主导技术架构与工程落地' },
310
+ { name: '运营负责人', role: 'COO', bio: '推动规模化增长与客户成功' },
200
311
  ],
201
312
  },
202
313
  });
203
314
  }
315
+ if (kw.pricing) {
316
+ optionalMiddle.push({
317
+ layout: 'pricing_v2',
318
+ props: {
319
+ kicker: '价格方案',
320
+ title: '选择适合你的方案',
321
+ plans: [
322
+ { name: '基础版', price: '¥99', period: '/月', features: ['核心功能', '邮件支持'] },
323
+ { name: '专业版', price: '¥299', period: '/月', features: ['全部功能', '优先支持', '数据分析'], highlighted: true },
324
+ { name: '企业版', price: '定制', period: '', features: ['私有化部署', '专属客户经理', 'SLA 保障'] },
325
+ ],
326
+ },
327
+ });
328
+ }
329
+ // 按页数裁剪:优先保留必选页,再插入关键词匹配的可选页
330
+ const middle = [];
331
+ const maxMiddle = Math.max(0, pageCount - 2);
332
+ for (const slide of requiredMiddle) {
333
+ if (middle.length >= maxMiddle)
334
+ break;
335
+ middle.push(slide);
336
+ }
337
+ for (const slide of optionalMiddle) {
338
+ if (middle.length >= maxMiddle)
339
+ break;
340
+ // 避免与已选页面角色重复导致叙事单调
341
+ const exists = middle.some((s) => s.layout.split('_')[0] === slide.layout.split('_')[0]);
342
+ if (!exists)
343
+ middle.push(slide);
344
+ }
345
+ // 若仍不足,用内容页补齐
346
+ while (middle.length < maxMiddle) {
347
+ middle.push({
348
+ layout: 'content_v3',
349
+ props: {
350
+ kicker: `深入解读`,
351
+ title,
352
+ points: [`围绕“${title}”进一步展开价值`, '结合场景说明落地路径', '强调对目标受众的差异化收益'],
353
+ },
354
+ });
355
+ }
356
+ return [cover, ...middle, closing];
357
+ }
358
+ export function createFallbackGoal(options) {
359
+ const { input, pageCount = 5, theme = 'theme01', language = 'zh' } = options;
360
+ const title = extractTitle(input);
361
+ const audience = inferAudience(input);
362
+ const points = inferSellingPoints(input);
363
+ const numbers = extractNumbers(input);
364
+ const selected = buildCandidateSlides(input, title, audience, points, numbers, pageCount);
365
+ const slides = selected.map((s) => ({ role: layoutToRole(s.layout), layout: s.layout, props: s.props }));
204
366
  return {
205
367
  title,
206
368
  goal: input,
207
369
  audience,
208
- owner: 'lemonPPT',
370
+ owner: 'lemonppt',
209
371
  theme,
210
372
  language,
211
373
  pageCount,
@@ -1 +1 @@
1
- {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,6BAA6B;IAC7B,GAAG,CAAC,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,UAAU,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAgBD,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAED,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,6BAA6B;IAC7B,GAAG,CAAC,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,UAAU,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAgBD,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAED,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@
4
4
  import { validateRawGoal } from '@lemonppt/core';
5
5
  import { composeDeckFromRaw, recomposeDeck } from '@lemonppt/composer';
6
6
  import { createFallbackGoal } from './fallback.js';
7
+ import { patchGoalContent } from './patch.js';
7
8
  import { callOpenAICompatible } from './llm.js';
8
9
  import { buildPrompt } from './prompt.js';
9
10
  function extractJson(text) {
@@ -24,7 +25,7 @@ export async function generateGoal(options) {
24
25
  // 无 API Key 时直接 fallback
25
26
  const apiKey = llm?.apiKey ?? process.env.OPENAI_API_KEY;
26
27
  if (!apiKey) {
27
- const goal = recomposeDeck(createFallbackGoal({ input, pageCount, theme, language }));
28
+ const goal = patchGoalContent(composeDeckFromRaw(createFallbackGoal({ input, pageCount, theme, language })));
28
29
  return { goal, source: 'fallback' };
29
30
  }
30
31
  const prompt = buildPrompt({ input, pageCount, theme, language });
@@ -41,7 +42,7 @@ export async function generateGoal(options) {
41
42
  if (!validation.success || !validation.data) {
42
43
  throw new Error(`goal.json 校验失败: ${JSON.stringify(validation.errors?.format())}`);
43
44
  }
44
- const goal = recomposeDeck(composeDeckFromRaw(validation.data));
45
+ const goal = patchGoalContent(recomposeDeck(composeDeckFromRaw(validation.data)));
45
46
  return { goal, source: 'llm', raw };
46
47
  }
47
48
  export { buildPrompt, createFallbackGoal, callOpenAICompatible };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,gCAAgC;AAChC,6CAA6C;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,WAAW,EAAsB,MAAM,aAAa,CAAC;AAa9D,SAAS,WAAW,CAAC,IAAY;IAC/B,oBAAoB;IACpB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClE,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IACD,kBAAkB;IAClB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA4B;IAE5B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAE3D,yBAAyB;IACzB,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,aAAa,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACtC,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Slide } from '@lemonppt/core';
2
+ /**
3
+ * 为 AI 生成的 slide 自动补全关键 props,避免渲染时出现空白页或占位提示。
4
+ * 先按角色兜底,再按具体版式转换数据结构。
5
+ */
6
+ export declare function patchSlideContent(slide: Slide): Slide;
7
+ /**
8
+ * 对 DeckGoal 的每一页自动补全关键内容字段。
9
+ */
10
+ export declare function patchGoalContent<T extends {
11
+ slides: Slide[];
12
+ }>(goal: T): T;
13
+ //# sourceMappingURL=patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../src/patch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAimB5C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CA+ErD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAK1E"}