- 后端:新增 /api/audio/transcribe 接口,调用 Ollama whisper 进行语音识别 - 前端:新增 AudioTranscribePage.vue 页面,支持 MP3/WAV/M4A/OGG/FLAC 等格式 - 注册路由、工具卡片、智能助手欢迎语更新 Co-Authored-By: Claude Code <noreply@anthropic.com>
196 lines
8.5 KiB
Markdown
196 lines
8.5 KiB
Markdown
# eai_agentplatform_app 博昇内部培训平台 — 产品需求文档
|
||
|
||
> **版本:V1.1 最终版(V1 培训底座基线)| 纯本地化部署 | 极简架构 | 全功能闭环**
|
||
> **最后更新:2026-08-15**
|
||
>
|
||
> **文档状态:V1 基线,已升级。** 本项目已于 2026-08 升级为「数字员工平台」(对外以「专员」为能力单元,分通用数字员工 / 行业专属数字员工),当前产品主轴、分层架构与目标态见 [01_System_Overall/SY03](01_System_Overall/SY03_Knowledge_Centric_Agent_Platform_Strategy.md) 及 SY04–SY17。本文档描述的是已交付的 V1 培训底座(学习/考试/AI 答疑闭环),其中 §7「明确禁止」已随 V1.6 起部分放开,实际以 `docs/changelog.md` 为准。
|
||
|
||
---
|
||
|
||
## 1. 项目概述
|
||
|
||
### 1.1 项目定位
|
||
|
||
博昇 纯内网本地化、内部专属员工培训系统。用于新人入职培训、公司认知、产品知识学习、销售能力培训、统一考试验收。配套全局 AI 助教 PathCoach,提供答疑、产品查询、销售情景演练。
|
||
|
||
### 1.2 核心设计原则(强制)
|
||
|
||
- 100% 本地化部署,不上云、无 OSS、无 MinIO、不依赖公网云服务
|
||
- AI 所用 LLM 必须为内网可访问地址(本地 Ollama / vLLM / 内网统一 LLM 网关),严禁直连公网 AI API
|
||
- 极致极简,杜绝所有冗余功能、统计、学情分析、复杂权限
|
||
- 所有产品数据严格对齐《博昇产品与渠道合作表 V1.0》
|
||
- 所有课件支持:PPT / PDF / Word / MP4 视频 / 图片
|
||
- 所有上传素材必须审批通过才可生效、进入知识库、页面展示
|
||
- 考试区分自测 / 正式考试,正式考试永久留存成绩档案
|
||
|
||
### 1.3 技术栈
|
||
|
||
| 层级 | 技术 |
|
||
|------|------|
|
||
| **前端** | Vue3 + Vite + Element Plus + 本地 pdf.js(无 CDN)+ 原生 video |
|
||
| **后端** | Go + Gin + GORM(原 V1.1 为 FastAPI,已于 V1.2 重写)|
|
||
| **数据库** | MySQL 8.0 + FAISS 向量检索 |
|
||
| **认证** | JWT(golang-jwt)+ bcrypt 密码哈希 |
|
||
| **PDF 提取** | LibreOffice + pdftotext(裸进程)|
|
||
| **依赖服务** | LibreOffice(PPT/Word → PDF 预览)+ 内网 LLM 服务(OpenAI 兼容接口)|
|
||
|
||
### 1.4 硬性技术限制
|
||
|
||
- 不做视频转码,仅支持 H.264 标准 MP4
|
||
- 不做语音转写(ASR),视频不进 AI 文本知识库
|
||
- 文件白名单:ppt、pptx、pdf、doc、docx、mp4、png、jpg、jpeg
|
||
- 单文件上限:文档 200MB / 视频 2GB
|
||
- 视频 > 100MB 采用分片上传 + 断点续传
|
||
- 数据库只存元数据,不存文件二进制
|
||
- 审批通过后的转换 / 文本提取为后台异步任务
|
||
|
||
---
|
||
|
||
## 2. 全局布局
|
||
|
||
全站固定三栏结构:
|
||
- **左边导航菜单**(220px,含品牌 + 菜单 + 用户信息)
|
||
- **中间主内容区**
|
||
- **右侧常驻 AI PathCoach 聊天框**(360px,可收起 / 展开)
|
||
|
||
### 导航菜单
|
||
|
||
**普通员工可见:** 首页 | 公司介绍培训 | 产品知识 | 产品销售培训 | 考试
|
||
|
||
**管理员额外可见:** 知识管理(下拉)| 系统管理(下拉)
|
||
|
||
### 完整导航结构
|
||
|
||
```
|
||
考试 ─┬─ 自测练习
|
||
├─ 正式结业考试
|
||
├─ 我的考试记录
|
||
└─ 题库管理【管理员】
|
||
|
||
知识管理【管理员】─┬─ 课件素材管理
|
||
└─ 素材审批列表
|
||
|
||
系统管理【管理员】─┬─ 用户账号管理
|
||
├─ 全部考试成绩
|
||
└─ 系统参数配置
|
||
```
|
||
|
||
---
|
||
|
||
## 3. 四大核心业务模块
|
||
|
||
### 3.1 公司介绍培训(认知层)
|
||
|
||
**内容:** 企业简介、双主营业务(资本咨询 / AI 产业落地)、对外统一口径
|
||
**功能:** 纯阅读页面,可绑定 PPT / 视频课件,员工可提交素材建议
|
||
|
||
### 3.2 产品知识(静态手册)
|
||
|
||
**四大分类:** 资本咨询类 | 资质认定辅导类 | AI 咨询与实施类 | 企业级 AI 工具与平台
|
||
|
||
**产品字段:** 编号、名称、标签、业务说明、收费结构、两档佣金比例、公开课超额分成、版本风险、报备规则
|
||
|
||
**页面按钮:** 前往对应销售培训课程 | 向 AI 提问(自动注入产品上下文)
|
||
|
||
**管理员维护:** 新增 / 编辑 / 停用产品,支持逐条录入与批量导入(Excel / JSON)
|
||
|
||
### 3.3 产品销售培训(能力层)
|
||
|
||
**四大课程:** 资本产品谈单话术 | 资质辅导销售逻辑 | AI 公开课 / 诊断销售技巧 | AI 平台产品方案匹配
|
||
|
||
**课程内容:** 适配客户 & 禁接客户 | 标准话术 | 谈单流程、异议处理 | 交付避坑、报备规范
|
||
|
||
**管理员维护:** 编辑课程正文,绑定 / 解绑对应产品
|
||
|
||
### 3.4 考试系统
|
||
|
||
**题型:** 单选题、多选题、判断题
|
||
|
||
**题库管理(管理员):** 录入 / 编辑 / 停用题目,归属知识域(公司介绍 / 产品知识 / 销售培训)
|
||
|
||
**组卷规则:** 考试名称、类型(自测/正式)、抽题知识域、题量、总分、合格线、考试时长、是否随机抽题
|
||
|
||
| 模式 | 特点 |
|
||
|------|------|
|
||
| **自测练习** | 不限次数,即时对错 + 答案,不保存记录 |
|
||
| **正式结业考试** | 提交后永久保存档案(得分、正确率、答题明细、是否通过) |
|
||
|
||
---
|
||
|
||
## 4. 知识库课件体系
|
||
|
||
### 素材来源
|
||
- **员工提交素材建议**(弹窗提交,无独立页面)
|
||
- **管理员直接上传**(自动通过)
|
||
|
||
### 素材状态
|
||
`pending`(待审批)→ `approved`(已通过)→ `rejected`(已驳回)
|
||
|
||
### 核心规则
|
||
- 未审批 / 驳回素材前台完全不可见、不解析、不进 AI
|
||
- 审批通过才执行:文档转 PDF + 文本提取入库
|
||
- 视频(MP4)审批通过后仅支持在线预览,不提取文本
|
||
|
||
### 转换与提取管线
|
||
PPT/Word → LibreOffice 转 PDF → PyMuPDF 提取文本 → 按段落切片写入 knowledge_chunk
|
||
|
||
---
|
||
|
||
## 5. AI PathCoach
|
||
|
||
- **位置:** 全局常驻右侧,可收起
|
||
- **自动上下文:** 打开产品 / 课程 → 自动带入当前页面全部资料
|
||
- **快捷按钮:** 客户情景演练 | 查询佣金/规则 | 产品对比
|
||
- **AI 底座:** OpenAI 兼容接口(内网 Ollama / vLLM / LLM 网关)
|
||
- **知识检索:** MySQL 全文索引(关键词)+ FAISS 向量检索(语义)双路混合召回
|
||
- **能力边界:** 仅解答公司、产品、佣金、销售话术、业务规则,禁止闲聊和编造数据
|
||
|
||
---
|
||
|
||
## 6. 认证与鉴权
|
||
|
||
- **认证:** JWT 登录签发 access token,密码 bcrypt 哈希存储
|
||
- **鉴权:** 后端 API 统一鉴权,普通接口校验 token,管理员接口额外校验 role == admin
|
||
- **账号:** 仅管理员可创建 / 禁用账号,禁用账号即时失效
|
||
|
||
---
|
||
|
||
## 7. 明确禁止开发的功能(V1.1 约束,部分已随平台升级放开)
|
||
|
||
- ~~无学习进度仪表盘、无学情分析、无能力档案~~ → V1.6 起已实现(积分/排行榜/证书/学习档案/能力雷达)
|
||
- ~~无向量检索~~ → 已采用 MySQL + FAISS 混合检索
|
||
- 无复杂权限、无多级角色、无多租户洋葱模型 → 仍保持
|
||
- 无视频转码、无语音转写(ASR)→ 仍保持
|
||
- 无外网依赖、严禁直连公网 AI API → 仍保持
|
||
- 无云存储、无 MinIO → 仍保持
|
||
- 无强制学习任务、无课程解锁限制 → 仍保持
|
||
|
||
---
|
||
|
||
## 8. 数据表设计(核心字段摘要)
|
||
|
||
| 表 | 关键字段 |
|
||
|----|---------|
|
||
| **user** | id, username, password_hash, full_name, role(employee/admin), status(active/disabled) |
|
||
| **product** | id, code, name, category, tags, description, pricing, commission_recommend, commission_negotiate, public_course_bonus, version_risk, report_rules, status |
|
||
| **course** | id, code, name, category, target_customers, forbidden_customers, scripts, sales_process, objection_handling, delivery_pitfalls, report_rules, related_product_id |
|
||
| **media_file** | id, filename, stored_name, stored_path, file_ext, file_size, status(pending/approved/rejected), source, submitter_id, bind_type, bind_id, extracted |
|
||
| **knowledge_chunk** | id, media_file_id, source_type, source_id, chunk_index, content |
|
||
| **question** | id, domain, course_id, type(single/multiple/judge), stem, options(JSON), answer(JSON), explanation, status |
|
||
| **exam_paper** | id, name, type(self_test/formal), domain, question_count, total_score, pass_score, duration_minutes, randomize |
|
||
| **exam_record** | id, user_id, paper_id, exam_name, score, total_score, pass_score, passed, correct_count, wrong_count, detail_json |
|
||
|
||
---
|
||
|
||
## 9. 部署架构
|
||
|
||
```
|
||
Nginx(反代 + 前端 Vue 静态打包)
|
||
→ FastAPI 后端服务
|
||
→ MySQL 数据库
|
||
→ LibreOffice 文档转换容器
|
||
→ 内网 LLM 服务(Ollama / vLLM / 内网网关)
|
||
→ 文件存储:本地磁盘 data/media
|
||
```
|
||
|
||
完全无外网、无云服务。 |