105 lines
3.6 KiB
Markdown
105 lines
3.6 KiB
Markdown
|
|
# 保险计划书 AI 助手
|
|||
|
|
|
|||
|
|
将 PDF 计划书转换为专业 PPT 的 AI 工具,支持储蓄险、重疾险、万用寿险(IUL)三种产品类型。
|
|||
|
|
|
|||
|
|
## 功能概览
|
|||
|
|
|
|||
|
|
- **上传 PDF** — 支持多份计划书同时上传,自动识别产品类型
|
|||
|
|
- **AI 解析** — Gemini 2.5 Flash 提取关键数据(产品名称、保单信息、逐年利益演示)
|
|||
|
|
- **销售洞察** — 自动生成目标客户画像、核心卖点、建议叙事方向
|
|||
|
|
- **对话咨询** — 与 AI 保险顾问对话,询问计划书内容、对比分析、展示建议
|
|||
|
|
- **PPT 生成** — 基于解析结果自动生成 15 页专业销售 PPT,支持 4 种风格
|
|||
|
|
|
|||
|
|
## 快速开始
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /Users/soldier/free-code/packages/insurance-ppt
|
|||
|
|
bun install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 环境变量
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
export GEMINI_API_KEY="your-gemini-api-key"
|
|||
|
|
export PORT=3000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 启动服务
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
bun run src/api/server.ts
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
打开 http://localhost:3000 即可使用。
|
|||
|
|
|
|||
|
|
## 项目结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
src/
|
|||
|
|
api/server.ts # HTTP 服务器(路由、会话管理)
|
|||
|
|
extraction/
|
|||
|
|
orchestrator.ts # 提取编排器(Schema 验证、多类型支持)
|
|||
|
|
gemini-client.ts # Gemini API 客户端
|
|||
|
|
pdf-preprocessor.ts # PDF 预处理器(pymupdf 文本提取)
|
|||
|
|
prompts.ts # 各产品的 Prompt 模板
|
|||
|
|
schemas/
|
|||
|
|
savings-plan.ts # 储蓄险 Schema + 验证
|
|||
|
|
critical-illness.ts # 重疾险 Schema
|
|||
|
|
iul.ts # IUL Schema
|
|||
|
|
common.ts # 共享 Schema(受保人、保单、年度利益行)
|
|||
|
|
chat/
|
|||
|
|
chat-engine.ts # 对话引擎(支持三种产品类型)
|
|||
|
|
interpretation-engine.ts # AI 解读引擎(计划书 JSON → 销售洞察)
|
|||
|
|
outline-generator.ts # PPT 大纲生成器
|
|||
|
|
templates/
|
|||
|
|
markdown-templates.ts # Markdown 模板引擎
|
|||
|
|
generation/
|
|||
|
|
pptx-generator.ts # Python PPT 生成器(主)
|
|||
|
|
composition-engine.ts # JS Fallback PPT 组合引擎
|
|||
|
|
scripts/
|
|||
|
|
ppt_generator.py # Gamma/Google Stitch 风格 PPT 生成
|
|||
|
|
ppt_styles.py # 配色方案(modern/fresh/minimal/warm)
|
|||
|
|
public/
|
|||
|
|
index.html # Web UI(Apple 毛玻璃风格)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## API 端点
|
|||
|
|
|
|||
|
|
| 方法 | 路径 | 描述 | 认证 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| GET | `/api/health` | 健康检查 | — |
|
|||
|
|
| POST | `/api/upload` | 上传 PDF 文件 | 速率限制 |
|
|||
|
|
| POST | `/api/parse/:sessionId` | AI 解析计划书 | X-API-Key |
|
|||
|
|
| POST | `/api/chat/:sessionId` | 对话咨询 | X-API-Key |
|
|||
|
|
| POST | `/api/generate/:sessionId` | 生成 PPT | X-API-Key |
|
|||
|
|
| POST | `/api/company-info` | 查询公司介绍 | X-API-Key |
|
|||
|
|
|
|||
|
|
## 安全特性
|
|||
|
|
|
|||
|
|
- **命令注入防护** — `execSync` → `spawn`(数组参数,无 shell 展开)
|
|||
|
|
- **API 认证** — `X-API-Key` Header(当 `GEMINI_API_KEY` 已配置)
|
|||
|
|
- **速率限制** — 每 IP 每分钟 30 次请求
|
|||
|
|
- **目录遍历防护** — 静态文件服务路径校验
|
|||
|
|
- **会话 LRU 缓存** — 最多 100 个活跃会话,自动清理最旧会话
|
|||
|
|
|
|||
|
|
## 状态机
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
created → parsing → parsed → chatting → generating → done
|
|||
|
|
↘ parsed ↗
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 产品支持
|
|||
|
|
|
|||
|
|
| 产品类型 | Schema | 关键指标 |
|
|||
|
|
|----------|--------|---------|
|
|||
|
|
| 储蓄险 | SavingsPlanExtractionSchema | 回本年份、翻倍倍数、IRR |
|
|||
|
|
| 重疾险 | CiPlanExtractionSchema | 保额、年缴、每天成本、保障项目 |
|
|||
|
|
| 万用寿险 | IulExtractionSchema | 身故保障、杠杆倍数、指数账户利率 |
|
|||
|
|
|
|||
|
|
## PPT 风格
|
|||
|
|
|
|||
|
|
- **modern(默认)** — 深蓝 + 金色,专业高端
|
|||
|
|
- **fresh** — 青绿色,清新自然
|
|||
|
|
- **minimal** — 暗红 + 黑色,简洁有力
|
|||
|
|
- **warm** — 棕色 + 橙色,温暖亲切
|