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>
This commit is contained in:
eaiadmin
2026-09-17 21:32:35 +08:00
co-authored by Claude Code
parent 8b136d4a10
commit 16d63de4e1
180 changed files with 22283 additions and 13850 deletions
+49 -61
View File
@@ -1,8 +1,8 @@
eai_agentplatform_app 博昇内部培训平台
eai_agentplatform — EAI 数字员工平台
最终完整定稿 PRD(可直接交付 AI 生成前后端代码)
版本:V1.1 最终版 | 纯本地化部署 | 极简架构 | 全功能闭环
> **⚠️ 本文档为 V1.1 设计期历史快照。** 项目已升级为「数字员工平台」(对外以「专员」为能力单元,见 `01_System_Overall/SY03` 及 SY04–SY17);技术栈已重写为 Go + Gin + GORM + MySQL 8.0 + FAISS;「不做向量检索 / 无学情分析」等约束已随 V1.6 起放开,以 `docs/changelog.md` 为准。
> **⚠️ 本文档为 V1.1 设计期历史快照。** 项目已升级为「数字员工平台」(对外以「专员」为能力单元,见 `01_System_Overall/SY03` 及 SY04–SY17);技术栈已重写为 **Go + Gin + GORM + SQLite**;「不做向量检索 / 无学情分析」等约束已随 V1.6 起放开,以 `docs/changelog.md` 为准。
修订记录
V1.0 → V1.1(修复内部不自洽):
@@ -45,20 +45,14 @@ V1.0 → V1.1(修复内部不自洽):
后端
FastAPI (Python)
SQLAlchemy ORM
MySQL 8.0
认证:JWT(python-jose)+ bcrypt 密码哈希
PDF 文本提取:PyMuPDF
Go + Gin + GORM
SQLite(modernc 纯Go驱动)
认证:JWT(golang-jwt)+ bcrypt 密码哈希
文档转换:LibreOffice(裸进程)+ pdftotext
依赖服务(共两个)
部署
1. 本地 Docker:libreoffice-preview
用于 PPT/Word → PDF 预览、文本提取入库
2. 内网 LLM 服务(OpenAI 兼容接口)
本地 Ollama / vLLM / 内网统一 LLM 网关均可
地址通过【系统参数配置】维护,启动时读取
systemd(裸进程)+ Clonezilla 整盘克隆,单二进制交付
硬性技术限制
@@ -71,7 +65,7 @@ V1.0 → V1.1(修复内部不自洽):
2. 项目目录结构(最终强制规范)
plaintext
eai_agentplatform_app/ # 项目根目录(所有代码集中此处)
eai_agentplatform/ # 项目根目录(所有代码集中此处)
├── docs/ # 独立文档目录(只放文档,不放代码)
│ ├── PRD.md
│ ├── db_schema.md
@@ -79,8 +73,7 @@ eai_agentplatform_app/ # 项目根目录(所有代码集中
│ ├── deploy.md
│ └── changelog.md
├── frontend/ # 前端完整代码
├── backend/ # 后端完整代码
├── docker-compose.yml
├── backend-go/ # Go 后端(单二进制 + systemd)
├── .gitignore
└── README.md
@@ -119,42 +112,37 @@ frontend/
后端目录结构
plaintext
backend/
├── app/
│ ├── main.py
│ ├── api/
│ │ ├── auth.py
│ │ ├── company_train.py
│ │ ├── product.py
│ │ ├── sales_train.py
│ │ ├── exam.py
│ │ ├── media.py
│ │ ├── ai_chat.py
│ │ └── system.py
│ ├── models/
│ │ ├── user.py
│ │ ├── product.py
│ │ ├── course.py
│ │ ├── media_file.py
│ │ ├── knowledge_chunk.py
│ │ ├── question.py
│ │ ├── exam_paper.py
│ │ └── exam_record.py
│ ├── schemas/
│ ├── services/
│ │ ├── media_service.py
│ │ ├── ai_service.py
│ │ └── exam_service.py
│ ├── core/
│ │ ├── config.py # 读取 .env 与系统参数
│ │ ├── security.py # JWT 签发 / 校验、密码哈希、鉴权依赖
│ │ └── deps.py
│ └── utils/
├── data/media/ # 本地文件存储(git忽略)
│ ├── upload/
│ └── _preview_cache/
├── requirements.txt
└── .env
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. 全局页面布局(全站统一)
全站固定三栏结构,所有页面统一
@@ -325,9 +313,9 @@ backend/
6.5 存储位置
物理文件:backend/data/media
文本知识库:MySQL knowledge_chunk
文件元数据:MySQL media_file
物理文件:backend-go/data/media
文本知识库:SQLite knowledge_chunk
文件元数据:SQLite media_file
6.6 上传规格
@@ -353,8 +341,8 @@ backend/
7.5 知识检索方案
检索基于已审批素材的 knowledge_chunk,采用 MySQL 全文索引 + 关键词召回。
召回片段作为上下文注入 Prompt;不做向量检索(避免引入 embedding 额外依赖,保持极简)。
检索基于已审批素材的 knowledge_chunk,采用 Go 内 brute-force 向量检索(余弦)+ 关键词兜底。
召回片段作为上下文注入 Prompt;数据量小无需 ANN 向量库。
若后续需要向量增强,作为可选项,不纳入 V1.1 范围。
7.6 AI 能力边界
@@ -485,9 +473,9 @@ plaintext
本地内网环境
Nginx(反代 + 前端 Vue 静态打包)
FastAPI 后端服务
MySQL 数据库
libreoffice-preview 本地文档转换容器
Go + Gin 后端服务
SQLite 数据库(单文件,systemd 守护)
libreoffice + pdftotext 本地文档转换
内网 LLM 服务(Ollama / vLLM / 内网网关,OpenAI 兼容接口)
文件存储:本地磁盘 data/media
完全无外网、无云服务