Go to file
wsb1224 751302205a 文件 问题 严重度
1	poster/routes.py:156	下载路径硬编码,与实际存储路径不一致 → 下载 404	P0
2	poster/service.py:41	get_reviewed_products() N+1 查询	P1
3	poster/service.py:169,226	json.loads 无异常处理 → 数据损坏时崩溃	P1
4	3 个 model 文件	to_dict() 中 json.loads 无防御 → 序列化崩溃	P1
5	poster/tasks.py	~120 行死代码(线程版海报生成)	P2
6	generation/celery_tasks.py	parse_poster_task + _execute_poster_parse 死代码(~70 行)	P2
7	generation/task_service.py	对应移除 ("poster", "parse") 映射	P2
8	utils/security.py	SSRF TOCTOU:DNS 检查与请求之间的时间窗口可被 DNS rebinding 利用 → 新增 _SafeHTTPTransport 在连接时重新验证 IP	P1 安全
9	poster/image_generator.py	anchor="mm" 在旧 Pillow 默认字体上崩溃;改用 hasattr 检测	P1
前端(3 项)
#	文件	问题	严重度
10	poster-api.ts:54	downloadPoster() 返回 AxiosResponse 而非 Blob → 海报永远无法下载	P0
11	PosterStepUpload.vue	解析轮询无超时 → 无限轮询	P1
12	PosterStepPreview.vue	生成轮询无超时 → 无限轮询	P1
修改的文件总计
后端 7 个:security.py, image_generator.py, service.py, routes.py, tasks.py, celery_tasks.py, task_service.py, poster_case_upload.py, poster_record.py, poster_template_model.py

前端 3 个:poster-api.ts, PosterStepUpload.vue, PosterStepPreview.vue

未修复(确认无需修复)
manual_parser.py — 之前误判为死代码,实际被 Celery 产品小册子解析任务使用,保留不动
llm_client.py 中的 httpx 调用 — URL 来自管理员配置的系统设置,不是用户输入,SSRF 风险极低;加检查反而会阻断合法的私网 LLM 端点
2026-07-29 22:41:27 +08:00
.agents/skills/impeccable 上线阻断问题全部修复 2026-07-27 13:52:09 +08:00
.cache 0727 PPT加海报功能01版本修复-修复一个版本 2026-07-27 10:36:13 +08:00
.codex 上线阻断问题全部修复 2026-07-27 13:52:09 +08:00
.impeccable/critique 07-29 PPT生成优化第一阶段完成: 2026-07-29 21:26:48 +08:00
api 文件 问题 严重度 2026-07-29 22:41:27 +08:00
dify-main 07-29 修复一版问题 2026-07-29 12:19:26 +08:00
docs 所有阶段 3-5 的任务全部完成。最终盘点: 2026-07-29 22:14:02 +08:00
frontend 文件 问题 严重度 2026-07-29 22:41:27 +08:00
plugin_files/langgenius 第一次提交。可以使用企微群消息 2026-07-02 23:13:23 +08:00
scripts 0723 PPT加海报功能01版本修复 2026-07-23 17:40:12 +08:00
tests 07-29 PPT生成优化第一阶段完成: 2026-07-29 21:26:48 +08:00
.env.example 0712 修复一个版本 2026-07-12 14:17:18 +08:00
.gitignore 第一次提交。可以使用企微群消息 2026-07-02 23:13:23 +08:00
AGENTS.md 上线阻断问题全部修复 2026-07-27 13:52:09 +08:00
CLAUDE.md 0723 代码整理 2026-07-23 08:52:59 +08:00
nginx-frontend.conf 第一次提交。可以使用企微群消息 2026-07-02 23:13:23 +08:00
nginx.conf 0712 修复一个版本 2026-07-12 14:17:18 +08:00
README.md 0723 整理文件 2026-07-23 08:38:11 +08:00
serve.py 0723 PPT加海报功能初步完成 2026-07-23 15:04:16 +08:00
保险智能客服系统_功能清单_无建议书版.xlsx 第一次提交。可以使用企微群消息 2026-07-02 23:13:23 +08:00

保险智能客服系统

基于 BaoDan 源码的保险行业智能客服系统。直接在 BaoDan 源码上开发,自研代码放在 api/insurance/ 目录下,与 BaoDan 代码物理隔离。

系统架构

用户浏览器 / 企微 H5
    │
    ▼
┌─ BaoDan 服务BaoDan + 你的代码,同一进程)─────────────┐
│  BaoDan WebApp对话界面iframe 嵌入)                  │
│  BaoDan 管理后台(知识库/Prompt/模型/日志)               │
│  你的 Extensionsapi/insurance/                   │
│    · 企微机器人 + OAuth                                │
│    · 产品推荐                                         │
│    · 角色权限                                         │
│    · 数据统计                                         │
└───────────────────────┬──────────────────────────────┘
                        │
        ┌───────────────▼───────────────┐
        │  你的前端Vue 3独立项目     │
        │  对话页 / 推荐页 / 管理页       │
        └───────────────────────────────┘

技术栈

层级 技术 说明
基础平台 BaoDan 1.14.2(源码) Flask 后端 + Next.js 前端
自研后端 Python + Flask Blueprint 放在 api/insurance/,复用 BaoDan 基础设施
自研前端 Vue 3 + TypeScript + Vite + Element Plus 对话 iframe + 推荐页 + 管理页
数据库 PostgreSQL 15 复用 BaoDan 的 DB新增 3 张自研表
向量库 BaoDan 内置 知识库检索
缓存 Redis 6 复用 BaoDan 的 Redis

项目结构

baodan-main/
├── api/
│   ├── insurance/              # ★ 你的代码(新建目录)
│   │   ├── wecom/              #   企微机器人 + OAuth
│   │   ├── recommend/          #   产品推荐
│   │   ├── permissions/        #   角色权限
│   │   ├── stats/              #   数据统计
│   │   └── db/                 #   自研数据表
│   ├── core/                   # BaoDan 核心(不动)
│   ├── controllers/            # BaoDan API不动
│   ├── models/                 # BaoDan 模型(不动)
│   └── main.py                 # ★ 只改这里:注册路由
│
├── web/
│   └── .env.local              # ★ 只改这里:开启 iframe
│
├── dev/                        # 开发脚本BaoDan 自带)
└── docker/                     # Docker 部署BaoDan 自带)

frontend/                       # 你的前端Vue 3
├── src/
├── package.json
└── 前端开发计划.md

deploy/
├── sql/init.sql                # 自研表建表脚本
└── nginx.conf                  # Nginx 反向代理

修改 BaoDan 文件清单

文件 改动 改动量
api/main.py 注册 insurance Blueprint ~5 行
web/.env.local 开启 iframe 嵌入 1 行
合计 只改 2 个 BaoDan 文件 ~6 行

快速开始

前置条件

  • Python 3.12 + uv
  • Node.js 22 + pnpm
  • PostgreSQL 15 + Redis 6
  • DeepSeek API Key

启动步骤

# 1. 克隆 BaoDan 源码
git clone https://github.com/langgenius/baodan.git
cd baodan

# 2. 安装依赖
./dev/setup

# 3. 配置环境变量
# 编辑 api/.env 和 web/.env.local详见开发文档

# 4. 启动服务4 个终端)
./dev/start-api          # 终端1后端含你的 insurance 模块)
./dev/start-worker       # 终端2Celery Worker
./dev/start-web          # 终端3BaoDan 前端
./dev/start-beat         # 终端4定时任务可选

# 5. 启动你的 Vue 前端
cd ../frontend && pnpm install && pnpm dev

# 6. 验证
curl http://localhost:5001/api/health

BaoDan 功能 vs 自研功能

功能 来源 你做什么
对话界面 BaoDan WebApp iframe 嵌入
知识库管理 BaoDan 后台 不写代码
Prompt 编辑 BaoDan 后台 不写代码
模型配置 BaoDan 后台 不写代码
对话日志 BaoDan 后台 不写代码
产品推荐 自研 api/insurance/recommend/
企微机器人 自研 api/insurance/wecom/
企微 OAuth 自研 api/insurance/wecom/
角色权限 自研 api/insurance/permissions/
数据统计 自研 api/insurance/stats/

开发文档

所有文档在 docs/ 目录,完整索引见 docs/README.md

文档 说明
需求文档 137 项功能 + 数据库设计 + 数据流转
API 接口文档 45 个接口完整设计
后续开发计划 项目状态64%+ 未完成功能 + 时间表
开发任务清单 412 项可勾选任务
编码规范 编码标准 + BaoDan 集成规范
测试用例 功能/边界/异常测试 + 上线 Checklist
前端开发计划 Vue 3 前端完整组件代码
API curl 示例 接口调试 curl 示例
部署指南 完整部署文档 + 架构图

BaoDan 升级流程

cd baodan
git stash                    # 暂存你的改动
git pull origin main         # 拉取 BaoDan 新版本
git stash pop                # 恢复你的改动
# main.py 冲突 → 手动合并(只合并注册路由的 5 行)
# .env.local 冲突 → 重新加那一行
# api/insurance/ 目录永远不会冲突

许可证

BaoDan 部分Apache 2.0 你的自研部分MIT