优化 Ikigai 报告 Prompt 与雷达图渲染
Ikigai 报告生成 prompt 优化、radar slide 渲染链路打通、AnimatedRadarChart 动画 bug 修复等
1. 问题背景
Ikigai 报告生成调用统一云函数 generate-theory-report,但 prompt 缺少 ikigai 专属四维分析引导,输出的 sections 格式无法驱动雷达图可视化。
2. 问题列表
2.1 prompt 无 ikigai 专属 extra
根因:THEORY_PROMPT_EXTRAS 中 MBTI/BigFive/Custom 有专属 extra,ikigai 缺失,导致 LLM 按泛化模板生成分析。
方案:
- 短期:为
report-ikigai新增 extra,引导四维框架分析 + radar 专用 section 输出格式 - 长远:建立各理论的专属 output schema
采纳方案:短期,直接在 theory-report-prompts.ts 的 THEORY_PROMPT_EXTRAS 添加 'report-ikigai' 条目。
2.2 sections 无法渲染雷达图
根因:objectToSlides 将所有 sections 统一转为 summary slide,未识别 radar 可视化类型。
方案:
- 短期:在
objectToSlides中新增visualizationType === 'radar'分支,生成type: 'radar'slide - 长远:统一报告 schema,各理论声明自己的 slide 类型
采纳方案:短期,在 app/(tabs)/zhi/report.tsx 的 objectToSlides 中处理 visualizationType === 'radar'。
2.3 AnimatedRadarChart 动画静默失效
根因:AnimatedPolygon 使用 useNativeDriver: true,但 SVG points 属性变化无法通过 native driver 驱动,导致动画不生效。
方案:
- 短期:将
useNativeDriver改为false - 长远:使用纯 JS 动画或 Web 专用 SVG 动画方案
采纳方案:短期,改 useNativeDriver: false。
2.4 Playwright 测试检查 canvas 而非 SVG
根因:测试验证雷达图时检查 canvas 元素,但 AnimatedRadarChart 实际使用 react-native-svg 渲染为 SVG。
方案:
- 短期:测试改为检查
svg元素 - 长远:建立组件渲染方式的单元测试
采纳方案:短期。
2.5 数据库表结构待确认
根因:报告生成依赖 plans/insights/wishes 三张表,表结构与前端查询字段是否一致未经验证。
方案:
- 短期:通过 MCP
querySqlDatabase查询 DESCRIBE 确认字段 - 长远:在
报告生成流程.md维护表结构文档
采纳方案:短期,确认三张表字段匹配。
3. 小结
本次优化完成了 ikigai 专属 prompt、radar slide 渲染链路、动画 bug 修复和 E2E 测试验证。LLM 已能正确输出 radar 格式(四维评分 + dimensions),objectToSlides → ReportViewer → AnimatedRadarChart 全链路打通,Playwright 测试验收通过(找到 4 个 SVG 元素)。