- 后端:新增 /api/audio/transcribe 接口,调用 Ollama whisper 进行语音识别 - 前端:新增 AudioTranscribePage.vue 页面,支持 MP3/WAV/M4A/OGG/FLAC 等格式 - 注册路由、工具卡片、智能助手欢迎语更新 Co-Authored-By: Claude Code <noreply@anthropic.com>
8.5 KiB
eai_agentplatform_app 博昇内部培训平台 — 产品需求文档
版本:V1.1 最终版(V1 培训底座基线)| 纯本地化部署 | 极简架构 | 全功能闭环 最后更新:2026-08-15
文档状态:V1 基线,已升级。 本项目已于 2026-08 升级为「数字员工平台」(对外以「专员」为能力单元,分通用数字员工 / 行业专属数字员工),当前产品主轴、分层架构与目标态见 01_System_Overall/SY03 及 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
完全无外网、无云服务。