Files
pj0235-eai_agentplatform/docs/PRD.md
T
eaiadminandClaude Code 0455f064ac feat: 新增语音转文字(ASR)功能
- 后端:新增 /api/audio/transcribe 接口,调用 Ollama whisper 进行语音识别
- 前端:新增 AudioTranscribePage.vue 页面,支持 MP3/WAV/M4A/OGG/FLAC 等格式
- 注册路由、工具卡片、智能助手欢迎语更新

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-14 00:53:36 +08:00

196 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```
完全无外网、无云服务。