Files
pj0235-eai_agentplatform/docs/eaisalestrain_app设计稿.md
T
eaiadminandClaude Code 16d63de4e1 chore: 工作台产品化进行中的改动
把工作区里其余在制品一并入库,主要是工作台产品化的推进:

  后端:新增 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>
2026-09-17 21:32:35 +08:00

482 lines
17 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 — 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(修复内部不自洽):
1. 明确 AI LLM 底座为「内网可访问地址(OpenAI 兼容接口)」,消除「无外网依赖」与「配置 LLM 地址」的矛盾。
2. 明确 MP4 仅预览、不提取文本、不进 AI 知识库,消除「不做转码」与「视频进 AI」的矛盾。
3. 补充 PDF 文本提取技术选型(PyMuPDF)。
4. 补充题库管理、组卷规则、合格线配置,补全考试闭环。
5. 补充产品 / 课程内容的后台维护入口。
6. 补充认证鉴权方案(JWT + bcrypt + 后端 API 鉴权)。
7. 补充大文件分片上传、审批后异步转换任务、上传安全。
8. 补充核心数据表字段设计。
9. 部署架构补充 LLM 服务与 Nginx 反代。
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
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;视频采用分片上传 + 断点续传。
数据库只存元数据,不存文件二进制。
审批通过后的转换 / 文本提取为后台异步任务,不阻塞请求。
2. 项目目录结构(最终强制规范)
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
3. 全局页面布局(全站统一)
全站固定三栏结构,所有页面统一
顶部导航菜单
中间主内容区
右侧常驻 AI PathCoach 聊天框(可收起 / 展开)
4. 顶部导航菜单(最终定稿)
普通员工可见菜单(5 个)
首页
公司介绍培训
产品知识
产品销售培训
考试
管理员额外可见菜单(员工完全看不到)
知识管理(下拉)
系统管理(下拉)
完整导航结构
1. 考试(下拉子菜单)
自测练习
正式结业考试
我的考试记录
题库管理【管理员专属,员工不可见】
2. 知识管理【管理员专属】
课件素材管理
素材审批列表
3. 系统管理【管理员专属】
用户账号管理
全部考试成绩
系统参数配置
5. 四大核心业务模块详细需求
5.1 公司介绍培训(认知层)
包含:
企业简介
双主营业务介绍(资本咨询 / AI 产业落地)
对外统一口径
功能:
纯阅读页面
可绑定 PPT / 视频课件
员工可提交素材建议
5.2 产品知识(静态手册)
四大产品分类:
资本咨询类
资质认定辅导类
AI 咨询与实施类
企业级 AI 工具与平台
产品详情固定字段:
产品编号、名称、标签
业务内容说明
收费结构
两档佣金比例(推荐 / 谈单参与)
公开课超额分成高亮
版本风险、报备规则备注
页面按钮:
前往对应销售培训课程
向 AI 提问(自动注入产品上下文)
数据维护(管理员):
管理员在【产品知识】模块可直接新增 / 编辑 / 停用产品,字段严格对齐《博昇产品与渠道合作表 V1.0》。
支持逐条录入与批量导入(Excel / JSON),导入数据同样需管理员确认后生效。
5.3 产品销售培训(能力层)
四大课程:
资本产品谈单话术
资质辅导销售逻辑
AI 公开课 / 诊断销售技巧
AI 平台产品方案匹配
课程内容:
适配客户 & 禁接客户
标准话术
谈单流程、异议处理
交付避坑、报备规范
页面按钮:
查看对应产品
数据维护(管理员):
管理员在【产品销售培训】模块可直接编辑课程正文内容,并绑定 / 解绑对应产品。
5.4 考试系统(含成绩记录)
题型(固定三种,极简)
单选题
多选题
判断题
题库管理(管理员专属)
管理员在【题库管理】录入 / 编辑 / 停用题目。
题目归属知识域:公司介绍 / 产品知识 / 销售培训(可选绑定具体课程)。
字段:题干、选项、正确答案、答案解析。
组卷规则(考试配置)
管理员在【题库管理】配置考试(paper):考试名称、类型(自测 / 正式)、
抽题知识域、题量、总分、合格线、考试时长、是否随机抽题。
正式考试按配置抽题或固定卷;自测可随机抽题。
两种模式
自测练习
不限次数
即时对错 + 答案
不保存任何记录
正式结业考试
提交后永久保存考试档案
记录得分、正确率、答题明细、是否通过
考试权限
员工:只能看自己考试记录
管理员:可查看所有人全部考试记录
6. 知识库课件体系(含审批流程)
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,杜绝路径穿越。
上传目录对静态预览只读,禁止直接执行。
7. 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. 管理员专属功能
8.1 知识管理
课件素材新增、编辑、删除、绑定课程 / 产品。
素材审批(预览、通过、驳回 + 理由)。
8.2 系统管理
用户账号新增、禁用、角色分配。
全员考试成绩查询、详情查看。
系统参数配置(LLM 地址与 Key、文件大小限制、分片阈值等)。
8.3 内容管理(产品 / 课程 / 题库)
产品知识与销售培训内容的录入、编辑、停用(见 5.2 / 5.3)。
题库管理与考试配置(见 5.4)。
9. 认证、鉴权与安全
认证方式
JWT:登录成功签发 access token,过期时间由系统参数配置;前端存 token,请求头携带。
密码 bcrypt 哈希存储,永不明文。
鉴权(强制)
后端 API 层统一鉴权依赖:普通接口校验有效 token,管理员接口额外校验 role == admin。
前端路由守卫仅作 UX 隐藏,不作为安全边界;所有权限以后端鉴权为准。
账号与状态
仅管理员可创建 / 禁用账号;禁用账号即时失效(token 校验时检查 status)。
10. 考试记录系统(完整闭环)
数据表 exam_record 保存字段
用户 ID、考试(paper)ID、考试名称、得分、总分、合格线
是否通过、答对 / 答错数
完整答题明细 JSON
考试时间
权限规则
员工:仅自己记录
管理员:全量记录可查
11. 数据表设计(核心字段)
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
12. 明确禁止开发的功能(强制)
无学习进度仪表盘
无学情分析、无能力档案
无复杂权限、无多级角色
无视频转码、无语音转写(ASR)
无向量检索(V1.1 不引入 embedding 依赖)
无外网依赖、严禁直连公网 AI API
无云存储、无 MinIO
无强制学习任务
无课程解锁限制
13. 系统运行逻辑闭环
学公司认知
查产品手册(价格 / 佣金 / 规则)
学销售谈单能力
看课件视频辅助学习
AI 模拟演练答疑
正式考试存档验收
管理员统一审核素材、维护产品 / 课程 / 题库、管理账号、查看全员成绩
14. 部署架构(纯本地离线)
plaintext
本地内网环境
Nginx(反代 + 前端 Vue 静态打包)
Go + Gin 后端服务
SQLite 数据库(单文件,systemd 守护)
libreoffice + pdftotext 本地文档转换
内网 LLM 服务(Ollama / vLLM / 内网网关,OpenAI 兼容接口)
文件存储:本地磁盘 data/media
完全无外网、无云服务