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
+19 -23
View File
@@ -1,9 +1,9 @@
# eai_agentplatform_app 博昇内部培训平台 — 编码与调试最高准则
# eai_agentplatform 博昇 AI 数字员工平台(EAI Agent Platform)— 编码与调试最高准则
> **版本:V1.0**
> **日期:2026-08-15**
> **状态:必须强制执行 (Highest Priority)**
> **适用范围:博昇内部培训平台前端、后端、数据库、考试引擎、AI PathCoach、素材上传与审批**
> **适用范围:eai_agentplatform(EAI 数字员工平台)后端(Go)、前端(Vue3)、数据库(SQLite)、AI 检索/对话、考试引擎、素材上传与审批**
> **AI 助手启动任何任务前必须先读取并确认本文件。**
---
@@ -16,7 +16,7 @@
# 第一部分:通用开发规则
> **适用范围**:适用于 eai_agentplatform_app 及 EAIHub 下其他涉及 FastAPI/Vue3/AI 的项目。
> **适用范围**:适用于 eai_agentplatform 及 EAIHub 下其他涉及 Go/Vue3/AI 的项目。
> **使用方式**:新任务开始前应先通读本部分;项目专用规则(P)在遵守本部分基础上叠加。
## 索引
@@ -38,7 +38,7 @@
1. **强制全链路埋点**:禁止盲目猜测,必须在后端路由、中间件、服务层以及前端 JS 关键回调中,大量写入过程性输出。
2. **统一特殊日志文件**:
- 路径:`backend/logs/special_trace_YYYY-MM-DD.log`(按天生成)
- 路径:`debuglog/backend_YYYY-MM-DD.log`(按天生成,由 `start_dev_*.sh` 落盘)
- 内容:必须包含 `[时间戳] [模块名] [详细描述]`
- 必须包含:请求参数、Session 状态、关键业务变量
- **脱敏红线**:落盘前必须脱敏/删除敏感信息(Authorization/Cookie/JWT/密码/API Key 等)
@@ -88,10 +88,10 @@
1. **完成判定必须看 exit code,禁止仅看屏幕末尾文字**:命令后立刻 `echo $?` 或 `if [ $? -ne 0 ]`;链式命令必须确认每一段都退出 0。
2. **修改既存文件前必须 Read 整文件**,禁止凭印象 Edit。
3. **新依赖必须同步进 `requirements.txt` / `package.json`**:任何新 import 出现必检查此包是否在依赖清单中。
3. **新依赖必须同步进 `go.mod` / `package.json`**:任何新 import 出现必检查此包是否在依赖清单中。
4. **测试/build 失败时禁止"再试一次"侥幸**:失败原因必须先找出来。
5. **声明完成前的最小验证清单**:
- [ ] 后端:`python -c "from app.main import app"` 无 import error
- [ ] 后端:`go build ./...` 无编译错误 且 `go test ./...` 通过
- [ ] 前端:`npx vite build` exit 0
- [ ] API smoke:`/api/health` 返回 200,管理员 login 返回 200
- [ ] 任何新 import 在依赖清单中
@@ -112,9 +112,9 @@
## G06 原则:AI 助手行为规范
1. **任务启动预读**:AI 助手在接收到新任务后的第一步操作中,必须读取本项目根目录下的 `CODING_RULES.md` 与 `eai_agentplatform_app/CLAUDE.md`。
1. **任务启动预读**:AI 助手在接收到新任务后的第一步操作中,必须读取本项目根目录下的 `CODING_RULES.md` 与 `eai_agentplatform/CLAUDE.md`。
2. **持续追踪**:直到问题完全解决并经由日志或接口验证通过前,不得结束任务。
3. **新对话启动仪式**:新对话必须先读 `eai_agentplatform_app/PROJECT_STATE.md` → `CODING_RULES.md`,再开始干活。
3. **新对话启动仪式**:新对话必须先读 `eai_agentplatform/PROJECT_STATE.md` → `CODING_RULES.md`,再开始干活。
4. **发现规则与实现冲突时**,优先提醒并修正,不得静默忽略。
5. **Git 同步状态必须用 `-sb` 显式确认**:首次执行 git 相关操作时,必须使用 `git status -sb` 或 `git status -v` 而非简短版本,确保能清晰看到本地与远端的 ahead/behind 关系。禁止依赖 `git diff HEAD origin/HEAD` 单条链式命令判断,因其 `&&` 链在中间出错时会导致后续输出丢失。
6. **Git 检查必须指定分支名**:使用 `origin/<branch>`(如 `origin/main`)而非 `origin/HEAD`,避免 `origin/HEAD` 歧义。
@@ -141,9 +141,9 @@
---
# 第二部分:eai_agentplatform_app 项目专用规则
### 第二部分:eai_agentplatform 项目专用规则
> **适用范围**:仅适用于博昇内部培训平台项目。
> **适用范围**:仅适用于博昇 AI 数字员工平台项目。
> **使用方式**:本部分在通用规则之上叠加。若两者看似冲突,应先检查是否为项目专用规则对通用规则的场景化收敛。
## 索引
@@ -156,16 +156,12 @@
---
## P01 最高原则:培训平台定位 — 知识库 + 考试 + 素材审批
## P01 最高原则:平台定位 — 通用数字员工平台(对齐 D20/D25/D26)
1. 博昇内部培训平台是**公司培训知识库 + 考试引擎 + 素材审批**系统,不是在线课程平台,不是 AI 对话机器人平台。
2. **四个核心业务模块**不可偏移:
- **公司介绍**:博昇介绍 + 资质荣誉 + 发展历程(静态内容)
- **产品知识**:四大产品线(资本咨询/资质辅导/AI咨询/AI工具)的知识体系
- **销售培训**:对应四大产品的销售课程(话术/流程/异议处理/避坑)
- **考试中心**:自测练习 + 正式考试 + 成绩记录
3. **知识库是后台能力**:素材审批 → 文本提取 → 知识切片 → AI PathCoach 检索,不独立为前台页面。
4. **AI PathCoach 是辅助工具**:嵌入全局右侧栏,提供产品知识问答 + 情景演练 + 佣金查询 + 产品对比,不是产品中心。
1. 本项目是 **EAI 通用数字员工平台(Agent Platform)**:以「数字员工/专家、技能、长程 App」为核心对象,Chat 优先界面承载新建任务/对话,知识库作为组织级内建 App 有独立入口(对齐 D20「先通用、后定制」、D25 六层架构第 5 层对象层、D26 路由三类命名)。不再被描述为「博昇内部培训平台 / AI 对话机器人平台」。
2. **首批四类通用数字员工**(对齐 D20):知识运营、培训考试、内容生成、任务推进;后续再沉淀行业包与企业半定制。(原有产品知识/销售培训/考试等业务能力收敛为内部 App 注入其中。)
3. **业务对象统一为一级对象**(对齐 D21/D25/D26):Expert(专家/专员)、Skill(技能)、App(长程任务壳)。任务定义为「工作实例容器」,可挂载主 app、右栏 expert、后台 skill;消息流降级为对话轨迹,长程状态由 app 侧状态承载。
4. **知识库是组织级内建 App**(对齐 D25):素材审批 → 文本提取 → 知识切片 → 混合检索,有独立一级入口,不再只是后台能力。
5. 开始写某个模块前,先明确对应文档:
- `docs/04_Backend/BE*.md`(后端详细设计)
- `docs/06_Product_Lines/PL*.md`(产品原型)
@@ -182,7 +178,7 @@
1. **只存元数据,不存文件二进制**:数据库仅存储文件路径、大小、类型等元数据。
2. **素材文本存 knowledge_chunk 表**:审批通过的文档类素材经异步转换提取文本,切片写入。
3. **FULLTEXT 全文检索**:AI PathCoach 知识检索基于 MySQL FULLTEXT 索引,不做向量检索(不上 Milvus/Elasticsearch)。
3. **混合检索**:AI 知识检索 = 向量(Go 内 brute-force 余弦,Ollama bge-m3 embedding)+ 关键词兜底;数据量小无需 ANN/向量库(不上 Milvus/FAISS/Elasticsearch)。
4. **图片不进知识库**:png/jpg/jpeg 仅做存储预览,不做 OCR 提取,不进 AI 文本检索。
5. **审批前置**:素材只有 `approved` 状态才会触发异步转换;`pending` / `rejected` 的素材不进知识库。
6. **视频仅存储**:mp4 文件上传后仅做存储和预览,不做视频分析、不做帧提取。
@@ -197,12 +193,12 @@
## P03 原则:考试判分与记录规则
1. **确定性判分**:判分逻辑采用确定性规则(单选/多选/判断),不涉及 AI 评分。
1. **确定性判分**:单选/多选/判断题型采用确定性规则判分;**简答题(essay)除外**——按 D17 走后端 LLM 评分(复用 title_gen 路由、essay_grade 能力,不扣点数)。所有判分都在后端。
2. **判分逻辑必须在后端**:前端仅做选项展示和提交,不得在前端判分。
3. **自测 vs 正式考**:
- **自测(self_test)**:提交后立即显示正确答案 + 解析,不持久化成绩
- **正式考(formal)**:提交后判分落 `exam_record` 表,不显示正确答案
4. **考试 session 内存存储**:`_exam_sessions: dict[str, dict]` — 启动考试时抽题存入内存,不落数据库。
4. **考试试卷落库**:试卷为 DB 持久化配置(`exam_paper` 表),按配置从题库抽题,成绩与记录保存到 `exam_record`,不使用进程内字典兜底。
5. **正式考不可重做**:同一用户对同一正式考卷仅可提交一次(后端校验)。
---
@@ -212,7 +208,7 @@
1. **管理员上传自动通过**:管理员(`role=admin`)上传的素材直接 `approved` + 立即触发异步转换。
2. **员工上传需审批**:员工上传后状态为 `pending`,管理员审批通过后才转 `approved`。
3. **驳回必须填写理由**:管理员驳回素材时,`reject_reason` 字段必填。
4. **异步转换管线**:审批通过 → 后台线程执行 `LibreOffice(ppt/docx→pdf) → PyMuPDF(提取文本) → 切片 → 写入 knowledge_chunk`。
4. **异步转换管线**:审批通过 → 后台线程执行 `LibreOffice(ppt/docx→pdf) → pdftotext(提取文本) → 切片 → 写入 knowledge_chunk`。
5. **前端轮询状态**:前端通过 `GET /api/media/{id}/status` 轮询素材/转换状态,不使用 WebSocket。
6. **分片上传**:> 100MB 的视频文件走分片上传(init → chunk → complete)。