把工作区里其余在制品一并入库,主要是工作台产品化的推进:
后端:新增 capability_definition / project / my_app_center / office_skill
接口与 action_definition / skill_definition / project / user_app_center
模型,config 加路由健康上报。
前端:新增 frontend/src/skills(Office 技能与 workbuddy 复刻)、
项目管理、应用中心、能力目录页,以及配套 api / store / config;
聊天侧新增 SpecialistChip / SpecialistPanel / SkillStrip / AppChatRail
等组件。
清理:移除旧 views/tools 下的单页工具(已并入工作台)、_frozen 冻结组件、
cmd/inspect_oa_debug 调试入口,以及两份调试笔记。
其它:文档与启动脚本同步。
(这批改动与上一提交的 SY23 工作并行进行,此前已在同一工作区内交织。)
Co-Authored-By: Claude Code <noreply@anthropic.com>
17 KiB
eai_agentplatform — EAI 数字员工平台 最终完整定稿 PRD(可直接交付 AI 生成前后端代码) 版本:V1.1 最终版 | 纯本地化部署 | 极简架构 | 全功能闭环
⚠️ 本文档为 V1.1 设计期历史快照。 项目已升级为「数字员工平台」(对外以「专员」为能力单元,见
01_System_Overall/SY03及 SY04–SY17);技术栈已重写为 Go + Gin + GORM + SQLite;「不做向量检索 / 无学情分析」等约束已随 V1.6 起放开,以docs/changelog.md为准。
修订记录 V1.0 → V1.1(修复内部不自洽):
-
明确 AI LLM 底座为「内网可访问地址(OpenAI 兼容接口)」,消除「无外网依赖」与「配置 LLM 地址」的矛盾。
-
明确 MP4 仅预览、不提取文本、不进 AI 知识库,消除「不做转码」与「视频进 AI」的矛盾。
-
补充 PDF 文本提取技术选型(PyMuPDF)。
-
补充题库管理、组卷规则、合格线配置,补全考试闭环。
-
补充产品 / 课程内容的后台维护入口。
-
补充认证鉴权方案(JWT + bcrypt + 后端 API 鉴权)。
-
补充大文件分片上传、审批后异步转换任务、上传安全。
-
补充核心数据表字段设计。
-
部署架构补充 LLM 服务与 Nginx 反代。
-
项目概述 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
SQLite(modernc 纯Go驱动)
认证:JWT(golang-jwt)+ bcrypt 密码哈希
文档转换:LibreOffice(裸进程)+ pdftotext
部署
systemd(裸进程)+ Clonezilla 整盘克隆,单二进制交付
硬性技术限制
不做视频转码,仅支持 H.264 标准 MP4;不做语音转写(ASR),视频不进 AI 文本知识库。
文件白名单:ppt、pptx、pdf、doc、docx、mp4、png、jpg、jpeg。
单文件上限:文档 200MB / 视频 2GB;视频采用分片上传 + 断点续传。
数据库只存元数据,不存文件二进制。
审批通过后的转换 / 文本提取为后台异步任务,不阻塞请求。
- 项目目录结构(最终强制规范) plaintext
eai_agentplatform/ # 项目根目录(所有代码集中此处) ├── docs/ # 独立文档目录(只放文档,不放代码) │ ├── PRD.md │ ├── db_schema.md │ ├── api.md │ ├── deploy.md │ └── changelog.md ├── frontend/ # 前端完整代码 ├── backend-go/ # Go 后端(单二进制 + systemd) ├── .gitignore └── README.md
前端目录结构 plaintext
frontend/ ├── public/static-lib/ # 本地pdf.js(无外网CDN) ├── src/ │ ├── api/ │ ├── components/ │ │ └── MaterialSuggestUpload.vue # 员工提交素材弹窗 │ ├── layout/ # 全局布局(顶部导航+右侧AI框) │ ├── router/ # 含管理员路由守卫 │ ├── store/ │ ├── views/ │ │ ├── home/ │ │ ├── companyTrain/ │ │ ├── product/ │ │ ├── salesTrain/ │ │ ├── exam/ │ │ │ ├── ExamSelfTest.vue │ │ │ ├── ExamFormal.vue │ │ │ ├── ExamMyRecord.vue │ │ │ └── ExamQuestionBank.vue # 管理员-题库管理 │ │ ├── knowledge/ # 管理员-知识管理 │ │ │ ├── MaterialManage.vue │ │ │ └── MaterialAuditList.vue │ │ └── system/ # 管理员-系统管理 │ │ ├── UserManage.vue │ │ ├── SystemConfig.vue │ │ └── ExamRecordManage.vue │ ├── App.vue │ └── main.js
后端目录结构 plaintext
backend-go/ ├── cmd/ │ └── server.go # 入口:gin.Engine + systemd 裸进程 ├── internal/ │ ├── api/ # 路由层(Gin handlers) │ │ ├── auth.go # /api/auth/* — 登录/注册/me │ │ ├── company_train.go # /api/company-train/* │ │ ├── product.go # /api/products/* │ │ ├── exam.go # /api/exam/* — 题库/组卷/考试/记录 │ │ ├── media.go # /api/media/* — 上传/预览/审批 │ │ ├── ai_chat.go # /api/ai-chat/* — PathCoach SSE │ │ └── system.go # /api/system/* — 用户/成绩/配置 │ ├── model/ # GORM 模型 │ │ ├── user.go │ │ ├── product.go │ │ ├── course.go │ │ ├── media_file.go │ │ ├── knowledge_chunk.go │ │ ├── question.go │ │ ├── exam_paper.go │ │ └── exam_record.go │ ├── store/ # 数据库层 │ │ └── db.go # SQLite Init + AutoMigrate │ ├── ai/ # AI 客户端与检索 │ │ ├── llm.go # OpenAI 兼容 LLM 调用 │ │ └── retrieve.go # 知识检索 │ ├── config/ # 配置加载 │ └── middleware/ # 中间件(JWT 认证等) ├── knowledge_source/ # 知识源 Markdown(运行时) ├── data/ # 运行时数据(db+media,git 忽略) └── deploy/ # systemd 单元 + DELIVERY.md
-
全局页面布局(全站统一) 全站固定三栏结构,所有页面统一
顶部导航菜单 中间主内容区 右侧常驻 AI PathCoach 聊天框(可收起 / 展开)
-
顶部导航菜单(最终定稿) 普通员工可见菜单(5 个)
首页 公司介绍培训 产品知识 产品销售培训 考试
管理员额外可见菜单(员工完全看不到)
知识管理(下拉)
系统管理(下拉)
完整导航结构
-
考试(下拉子菜单)
自测练习 正式结业考试 我的考试记录 题库管理【管理员专属,员工不可见】
-
知识管理【管理员专属】
课件素材管理 素材审批列表
-
系统管理【管理员专属】
用户账号管理 全部考试成绩 系统参数配置
-
四大核心业务模块详细需求 5.1 公司介绍培训(认知层) 包含:
企业简介 双主营业务介绍(资本咨询 / AI 产业落地) 对外统一口径
功能:
纯阅读页面
可绑定 PPT / 视频课件
员工可提交素材建议
5.2 产品知识(静态手册) 四大产品分类:
资本咨询类
资质认定辅导类
AI 咨询与实施类
企业级 AI 工具与平台
产品详情固定字段:
产品编号、名称、标签
业务内容说明
收费结构
两档佣金比例(推荐 / 谈单参与)
公开课超额分成高亮
版本风险、报备规则备注
页面按钮:
前往对应销售培训课程
向 AI 提问(自动注入产品上下文)
数据维护(管理员):
管理员在【产品知识】模块可直接新增 / 编辑 / 停用产品,字段严格对齐《博昇产品与渠道合作表 V1.0》。
支持逐条录入与批量导入(Excel / JSON),导入数据同样需管理员确认后生效。
5.3 产品销售培训(能力层) 四大课程:
资本产品谈单话术
资质辅导销售逻辑
AI 公开课 / 诊断销售技巧
AI 平台产品方案匹配
课程内容:
适配客户 & 禁接客户
标准话术
谈单流程、异议处理
交付避坑、报备规范
页面按钮:
查看对应产品
数据维护(管理员):
管理员在【产品销售培训】模块可直接编辑课程正文内容,并绑定 / 解绑对应产品。
5.4 考试系统(含成绩记录) 题型(固定三种,极简)
单选题
多选题
判断题
题库管理(管理员专属)
管理员在【题库管理】录入 / 编辑 / 停用题目。
题目归属知识域:公司介绍 / 产品知识 / 销售培训(可选绑定具体课程)。
字段:题干、选项、正确答案、答案解析。
组卷规则(考试配置)
管理员在【题库管理】配置考试(paper):考试名称、类型(自测 / 正式)、
抽题知识域、题量、总分、合格线、考试时长、是否随机抽题。
正式考试按配置抽题或固定卷;自测可随机抽题。
两种模式
自测练习
不限次数
即时对错 + 答案
不保存任何记录
正式结业考试
提交后永久保存考试档案
记录得分、正确率、答题明细、是否通过
考试权限
员工:只能看自己考试记录
管理员:可查看所有人全部考试记录
-
知识库课件体系(含审批流程) 6.1 素材来源两种方式
员工提交素材建议(弹窗提交,无独立页面) 管理员直接上传(自动通过)
6.2 素材状态
pending 待审批
approved 已通过(生效、可预览、进入 AI 知识库)
rejected 已驳回
6.3 核心强制规则
未审批 / 驳回素材,前台完全不可见、不解析、不进 AI。
只有审批通过才执行:文档转 PDF + 文本提取入库。
视频(MP4)审批通过后仅支持在线预览,不提取文本、不进 AI 知识库(不做语音转写)。
员工只能在课程 / 产品详情弹窗提交。
管理员在【知识管理】处理审核、管理素材。
6.4 转换与提取(异步,技术规格)
文档(PPT / Word)→ libreoffice 转 PDF → PyMuPDF 提取文本 → 按段落切片写入 knowledge_chunk。
PDF / 图片(png/jpg/jpeg)→ 直接预览;PDF 走 PyMuPDF 文本提取;图片不做 OCR(极简,不进 AI 文本库)。
以上转换 / 提取均由后台异步任务执行,任务结果写入 media_file(extracted 字段 + 日志),前端轮询或接口查询状态。
6.5 存储位置
物理文件:backend-go/data/media
文本知识库:SQLite knowledge_chunk
文件元数据:SQLite media_file
6.6 上传规格
文档 ≤ 200MB 单请求直传;视频 > 一定阈值(如 100MB)采用分片上传 + 断点续传,合并后校验扩展名与大小。
服务端校验文件扩展名(白名单)与 MIME,文件名重命名为存储 UUID,杜绝路径穿越。
上传目录对静态预览只读,禁止直接执行。
-
AI PathCoach 全局智能体 7.1 全局常驻右侧,可收起 7.2 自动上下文 打开产品 / 课程 → 自动带入当前页面全部资料 7.3 固定 3 个快捷按钮
客户情景演练 查询佣金 / 规则 产品对比
7.4 AI 底座(LLM,明确)
采用 OpenAI 兼容接口,地址 + API Key 通过【系统参数配置】维护。
必须是内网可达地址:本地 Ollama / vLLM / 内网统一 LLM 网关。
严禁直连公网 AI API(违反本地化强制原则)。
7.5 知识检索方案
检索基于已审批素材的 knowledge_chunk,采用 Go 内 brute-force 向量检索(余弦)+ 关键词兜底。
召回片段作为上下文注入 Prompt;数据量小无需 ANN 向量库。
若后续需要向量增强,作为可选项,不纳入 V1.1 范围。
7.6 AI 能力边界
仅解答公司、产品、佣金、销售话术、业务规则。
禁止闲聊、禁止编造数据。
严格依赖已审批知识库;知识库无相关内容时明确回答「未找到相关资料」,不得臆测。
-
管理员专属功能 8.1 知识管理
课件素材新增、编辑、删除、绑定课程 / 产品。 素材审批(预览、通过、驳回 + 理由)。
8.2 系统管理
用户账号新增、禁用、角色分配。
全员考试成绩查询、详情查看。
系统参数配置(LLM 地址与 Key、文件大小限制、分片阈值等)。
8.3 内容管理(产品 / 课程 / 题库)
产品知识与销售培训内容的录入、编辑、停用(见 5.2 / 5.3)。
题库管理与考试配置(见 5.4)。
-
认证、鉴权与安全 认证方式
JWT:登录成功签发 access token,过期时间由系统参数配置;前端存 token,请求头携带。 密码 bcrypt 哈希存储,永不明文。
鉴权(强制)
后端 API 层统一鉴权依赖:普通接口校验有效 token,管理员接口额外校验 role == admin。
前端路由守卫仅作 UX 隐藏,不作为安全边界;所有权限以后端鉴权为准。
账号与状态
仅管理员可创建 / 禁用账号;禁用账号即时失效(token 校验时检查 status)。
-
考试记录系统(完整闭环) 数据表 exam_record 保存字段
用户 ID、考试(paper)ID、考试名称、得分、总分、合格线 是否通过、答对 / 答错数 完整答题明细 JSON 考试时间
权限规则
员工:仅自己记录
管理员:全量记录可查
-
数据表设计(核心字段) user 用户表
id、username(唯一)、password_hash、full_name、 role(employee / admin)、status(active / disabled)、created_at、updated_at
product 产品表
id、code(产品编号,唯一)、name、category(四大分类)、tags、
description(业务内容说明)、pricing(收费结构)、
commission_recommend(推荐佣金比例)、commission_negotiate(谈单参与佣金比例)、
public_course_bonus(公开课超额分成)、version_risk(版本风险)、
report_rules(报备规则)、status(active / inactive)、created_at、updated_at
course 课程表
id、code、name、category(四大课程)、
target_customers(适配客户)、forbidden_customers(禁接客户)、
scripts(标准话术)、sales_process(谈单流程)、objection_handling(异议处理)、
delivery_pitfalls(交付避坑)、report_rules(报备规范)、
related_product_id(绑定产品,可空)、status、created_at、updated_at
media_file 素材表
id、filename(原始名)、stored_name(存储 UUID 名)、stored_path、file_ext、file_size、
status(pending / approved / rejected)、source(employee / admin)、submitter_id、
bind_type(company / product / course / none)、bind_id、
reject_reason、audit_by、audit_at、extracted(是否已提取)、created_at
knowledge_chunk 知识块表
id、media_file_id、source_type、source_id、chunk_index、content、created_at
question 题目表
id、domain(company / product / sales)、course_id(可空)、
type(single / multiple / judge)、stem、options(JSON)、answer(JSON)、
explanation、status、created_at、updated_at
exam_paper 考试配置表
id、name、type(self_test / formal)、domain、question_count、
total_score、pass_score、duration_minutes、randomize(是否随机抽题)、
status、created_at、updated_at
exam_record 考试记录表
id、user_id、paper_id、exam_name、score、total_score、pass_score、
passed、correct_count、wrong_count、detail_json、submitted_at
-
明确禁止开发的功能(强制)
无学习进度仪表盘 无学情分析、无能力档案 无复杂权限、无多级角色 无视频转码、无语音转写(ASR) 无向量检索(V1.1 不引入 embedding 依赖) 无外网依赖、严禁直连公网 AI API 无云存储、无 MinIO 无强制学习任务 无课程解锁限制
-
系统运行逻辑闭环
学公司认知 查产品手册(价格 / 佣金 / 规则) 学销售谈单能力 看课件视频辅助学习 AI 模拟演练答疑 正式考试存档验收 管理员统一审核素材、维护产品 / 课程 / 题库、管理账号、查看全员成绩
-
部署架构(纯本地离线) plaintext
本地内网环境 Nginx(反代 + 前端 Vue 静态打包) Go + Gin 后端服务 SQLite 数据库(单文件,systemd 守护) libreoffice + pdftotext 本地文档转换 内网 LLM 服务(Ollama / vLLM / 内网网关,OpenAI 兼容接口) 文件存储:本地磁盘 data/media 完全无外网、无云服务