把工作区里其余在制品一并入库,主要是工作台产品化的推进:
后端:新增 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>
162 lines
12 KiB
Markdown
162 lines
12 KiB
Markdown
# pj0231-eai_agentplatforming vs pj006-zhilianyuan2 能力对比分析
|
||
|
||
> 生成日期:2026-08-16
|
||
> 范围:知识库能力、考试能力、测试/自测能力、岗位与知识对应能力
|
||
> 原则:以**实际代码**为准(本项目 PRD 文档存在过时,见 §0)
|
||
>
|
||
> **注:** 本文基于 2026-08-16 代码快照(后端 Go + Gin + GORM,检索为 brute-force 余弦 + bge-m3);数据库与向量栈已决策迁移至 **MySQL 8.0 + FAISS**,见 `docs/db_schema.md` / `docs/deploy.md`。
|
||
|
||
---
|
||
|
||
## 0. 一句话结论
|
||
|
||
两个项目**不是同一量级**:
|
||
|
||
- **pj0231** 是一个**极简单租户、内部专属的培训平台**——Go 后端约 4,900 行,11 张表,2 个角色,聚焦「看资料 → AI 答疑 → 考试验收」的窄闭环。
|
||
- **pj006** 是一个**多租户、多角色、带完整 AI 对练 / 岗位能力模型的通用销售培训平台(智练猿)**——Python 后端约 1.7 万行 + 独立 engine 库,23 版 schema、40+ 张表,4 个前端,具备岗位洋葱模型、知识工厂、AI 角色扮演道场、能力对标等。
|
||
|
||
在本文对比的四个维度上,pj006 全部**能力更全、更深**;但 pj0231 在个别点上有「更实」的实现(见 §6)。
|
||
|
||
> ⚠️ **重要前提:pj0231 的 PRD 文档已过时。**
|
||
> `docs/PRD.md` 写「FastAPI + MySQL + 不做向量检索」,但实际代码是 **Go + Gin + GORM + SQLite**,且检索已实现**向量(brute-force 余弦 + bge-m3 embedding)**。本报告以实际代码为准。
|
||
|
||
---
|
||
|
||
## 1. 系统定位与技术架构对照
|
||
|
||
| 维度 | pj0231 | pj006 |
|
||
|---|---|---|
|
||
| 定位 | 博昇内部培训(单企业) | 通用 AI 销售培训平台(多企业 SaaS) |
|
||
| 后端 | Go + Gin + GORM + SQLite | Python 3.10 + FastAPI + SQLite(per-org 分库) |
|
||
| 前端 | 1 个:Vue3 + Vite + Element Plus | 4 个:app / orgadmin / admin / platformadmin |
|
||
| 角色 | 2(employee / admin) | 多级(学员 / 组织管理员 oadmin / 平台管理员 padmin / 教练 trainer) |
|
||
| 租户 | 单租户 | 多租户(`orgs` 注册表 + 每 org 一个 `<org>.db`,路由键 `org_code_id`) |
|
||
| 代码量 | ~4,900 行 Go | ~17,200 行 Python + `zlylibs/engine` 引擎库 |
|
||
| 数据表 | 11 张 | 40+ 张(schema 版本 v23) |
|
||
| AI 底座 | 内网 OpenAI 兼容接口(Ollama LLM + bge-m3 embedding) | OpenAI 兼容路由(trainee/coach/eval 三 slot,可配多模型) |
|
||
| 交付 | 单二进制 + systemd + Clonezilla | 多服务 + 多端 |
|
||
|
||
---
|
||
|
||
## 2. 知识库能力对比
|
||
|
||
| 能力 | pj0231 | pj006 |
|
||
|---|---|---|
|
||
| **素材摄入** | ✅ 上传→审批→转换→切片(真实跑通) | ⚠️ 知识工厂骨架完备,但 Phase 1 解析抽取**「不真跑、停 pending」**(见 `schema.py` 中 `kb_asset_tasks` 注释) |
|
||
| 文档转换 | LibreOffice + pdftotext,切片入 `knowledge_chunk` | 设计了 parse / structured / extraction_blocks 多阶段管线,但未实跑 |
|
||
| 审批流 | ✅ 三层 `pending / approved / rejected`,审批前置 | ✅ 更细:`working_knowledge_points` 待复核 + `kb_publish_records` 发布链 |
|
||
| **知识组织** | 扁平 `knowledge_chunk`(段落切片)+ `knowledge_source`(markdown 知识源) | 多层:`knowledge_points` → `knowledge_meta`(语料)→ `knowledge_units`(统一主干,含 domain/section/dimension/sub_dimension/role/position/level/kind)→ `knowledge_chunks`(带 `embedding_status`) |
|
||
| 术语 / 规则 | ❌ 无 | ✅ `knowledge_terms`(别名/禁用词)、`industry_rules` |
|
||
| **检索** | ✅ **混合检索**:向量(brute-force 余弦,bge-m3)+ 关键词兜底,去重合并 topK | ⚠️ **实跑的是 jieba 分词 + SQLite LIKE 关键词检索**;向量(ChromaDB/Neo4j)仅文档宣称,`embedding_status` 字段预留 |
|
||
| **自动出题** | ❌ 无 | ✅ 设计:`working_questions` 从知识块自动生成题目(待复核) |
|
||
| 知识-题目/场景关联 | 仅题目挂 `course_id` | ✅ `question_knowledge_units`、`scene_knowledge_units`、`knowledge_unit_links` 三张桥接表 |
|
||
|
||
**小结**:pj0231 的「文档→文本→检索」链路**真实端到端跑通**(且检索更强,含向量);pj006 的知识模型**层级深、可扩展强**(知识主干 + 术语 + 规则 + 自动出题 + 发布链),但知识工厂的自动解析在 Phase 1 尚未实跑。
|
||
|
||
---
|
||
|
||
## 3. 考试能力对比
|
||
|
||
| 能力 | pj0231 | pj006 |
|
||
|---|---|---|
|
||
| 题型 | 单选 / 多选 / 判断 | 单选 / 多选 / 判断 / **简答 essay** |
|
||
| 简答题评分 | ❌ 无 | ✅ LLM 按 rubric 评分(`engine.eval.grade_short_answer`),得分率持久化 `exam_session_grades` |
|
||
| **组卷** | ✅ 按知识域 + 随机抽题(`randomize`、`domain` 逗号分隔) | ⚠️ 实际是**固定 `question_ids` 列表**(手动组卷);蓝图组卷(`position_exam_blueprints`)已落表+CRUD,但考试服务未接蓝图抽题 |
|
||
| 考试次数 | 正式考**只允许一次**(重考即 409) | ✅ `max_attempts`(最多考 N 次)、`deadline` 截止 |
|
||
| 自测模式 | ✅ 自测(不限次、即时对错、**不存记录**) | ✅ 练习走独立 `practice` 模块(见 §4) |
|
||
| 判分 | 确定性比对(`isCorrect`) | 选择题确定性 + 简答 LLM;总分 = Σ得分率/题数×100 |
|
||
| **成绩分析** | 仅存记录:得分 / 正确率 / 答题明细 | ✅ **维度能力分析**(`competency_breakdown`:weak<70% / ok / strong≥90%)、薄弱题、改进建议 |
|
||
| 错题联动 | ❌ 无 | ✅ 交卷错题自动写入 `mistake_records`(错题本) |
|
||
| 成绩档案 | `exam_record`(永久存档) | `exam_sessions` + 报告回溯(`review_exam`) |
|
||
|
||
**小结**:pj006 考试在**题型(简答)、评分(LLM)、维度分析、错题联动、考试次数控制**上全面领先;pj0231 仅在**自动随机抽题组卷**这一点上更「自动化」(pj006 实际为手动固定组卷)。
|
||
|
||
---
|
||
|
||
## 4. 测试 / 自测 / 评估能力对比
|
||
|
||
### 4.1 面向学员的自测与评估(产品能力)
|
||
|
||
| 能力 | pj0231 | pj006 |
|
||
|---|---|---|
|
||
| 自测练习 | ✅ 自测(即时对错,不存记录) | ✅ 每日一练 `practice`(**游戏化**:段位/星/连击/经验/积分 `practice_profile`) |
|
||
| 错题本 | ❌ 无 | ✅ `mistake_records`(练习+考试两来源聚合,可标记已掌握) |
|
||
| 学习笔记 / 收藏 | ❌ 无 | ✅ `study_notes` + 收藏(`study_progress.favorited`) |
|
||
| 学习档案 / 学情 | ❌ **明确禁止**(PRD 第 7 节) | ✅ 学习档案 dashboard:学习天数、**能力对标**(来自对练复盘评分)、AI 对练摘要 |
|
||
| **AI 对练复盘评分** | ❌ 无(仅快捷动作「扮演销售」的文本生成) | ✅ `dialogue_review_scores` + `ReviewScoreService`:维度评分、整体等级、趋势、强项/风险维度、复发问题、改进建议 |
|
||
|
||
### 4.2 面向软件工程的自动化测试(工程能力)
|
||
|
||
| 维度 | pj0231 | pj006 |
|
||
|---|---|---|
|
||
| 后端测试 | ❌ **0 个 `_test.go`** | ✅ 31 个 pytest 文件(exam/eval/position/profile/dojo/dialogue/review/kb/…) |
|
||
| 引擎测试 | 无 engine 层 | ✅ `zlylibs/engine/tests` 约 20 个(HEP 8层、DSRP loader、UPP、KB、eval、e2e smoke) |
|
||
| 测试策略文档 | ❌ 无 | ✅ `docs/12_Test_Strategy`(可见点击测试、完整旅程 E2E 测试计划、legacy prompt) |
|
||
| CI / 依赖管理 | 无 | ✅ pyproject `[dependency-groups] dev = pytest` |
|
||
|
||
**小结**:这是**差距最大**的一项。pj006 有完整的 pytest 测试体系 + 测试策略文档 + E2E 测试计划;pj0231 **一行测试都没有**。
|
||
|
||
---
|
||
|
||
## 5. 岗位与知识对应能力对比(差距最大的维度)
|
||
|
||
这是 pj0231 的**结构性缺失**——PRD 明确「不做能力档案、不做复杂权限」,代码里用户只有 `role` 字段,**完全没有岗位概念**。
|
||
|
||
| 能力 | pj0231 | pj006 |
|
||
|---|---|---|
|
||
| 岗位表 | ❌ 无 | ✅ `positions`(code/name/description,按 org 隔离) |
|
||
| 岗位↔用户绑定 | ❌ 无 | ✅ `user_positions` |
|
||
| **岗位能力模型(洋葱模型)** | ❌ 无 | ✅ `competency_layers`(C1知识技能/C2能力素质/C3职业素养)+ `competency_levels`(**L1-L4**)+ `competency_details` |
|
||
| 能力模型自动生成 | ❌ 无 | ✅ `generate_competency_model`(自动生成三层 + L1-L4 初稿,可人工保存) |
|
||
| **岗位↔知识映射** | ❌ 无 | ✅ `position_knowledge_units`(required_level / weight / is_mandatory),`auto_match_knowledge_units` 自动匹配 + 人工修正 |
|
||
| **岗位考试蓝图** | ❌ 无 | ✅ `position_exam_blueprints`(维度/级别/题型/题量/权重) |
|
||
| 标准岗位 / 职级代码 | ❌ 无 | ✅ `SD01_Standard_Job_Codes`(JobFunction + JobRank 双正交编码)+ `SD06_PROFILE_CODE_ENUM.json` |
|
||
| 岗位驱动学练考 | ❌ 无 | ✅ 设计文档 `DA00_07`(A11 学习分发 / A12 练习分发 / A13 考试蓝图组卷) |
|
||
| 用户身份 / 角色分级 | 2 角色 | 学员/教练/组织管理员/平台管理员 + NPC 人格(`UPP`) |
|
||
|
||
**小结**:pj006 把岗位从「一个标签」升级成了「知识分发与能力成长的**主控制器**」——岗位决定学什么(知识单元映射)、练什么(薄弱维度反查)、考什么(考试蓝图)。pj0231 完全没有这条能力链,这也是两项目最本质的定位差异。
|
||
|
||
---
|
||
|
||
## 6. 反向差异:pj0231 有、pj006 反而没有 / 较弱的点
|
||
|
||
诚实地讲,pj0231 并非全面落后,有几个点它反而更「实」:
|
||
|
||
1. **向量检索是真实现**:pj0231 的混合检索(向量余弦 + 关键词)端到端可用;pj006 实际跑的是 jieba 关键词,向量仅停在文档与字段预留层。
|
||
2. **随机 + 按知识域自动抽题组卷**:pj0231 支持;pj006 考试实际为固定题目列表(蓝图组卷未接)。
|
||
3. **文档→文本→检索链路真实跑通**:pj0231 的 LibreOffice / pdftotext 切片入库是完整的;pj006 的知识工厂「解析抽取」在 Phase 1 未实跑(仅表结构 + 状态机)。
|
||
4. **AI 算力点计费 + 审计日志**:pj0231 有 `ai_call_log`(按用户扣点、按能力计费、延迟/错误审计);pj006 未见同等的算力计费。
|
||
|
||
---
|
||
|
||
## 7. 关键文件索引(证据)
|
||
|
||
**pj0231**(本项,实际代码为准):
|
||
- 数据模型:`eai_agentplatform/backend-go/internal/model/`(11 张表)
|
||
- 检索:`eai_agentplatform/backend-go/internal/ai/retrieve.go`(混合检索)
|
||
- 考试:`eai_agentplatform/backend-go/internal/api/exam.go`(组卷 / 判分 / 存档)
|
||
- AI 聊天:`eai_agentplatform/backend-go/internal/api/ai_chat.go`(PathCoach + 3 快捷动作)
|
||
|
||
**pj006**(对比项):
|
||
- 数据模型:`zlyapp/backend/app/db/schema.py`(v23,40+ 表,含 `orgs` 多租户根)
|
||
- 考试:`zlyapp/backend/app/exam/service.py`(简答 LLM 评分、维度分析、错题联动)
|
||
- 评估:`zlyapp/backend/app/eval/service.py`(学习档案、错题本、对练摘要)
|
||
- 岗位:`zlyapp/backend/app/position/service.py`(洋葱模型生成、岗位知识自动匹配、考试蓝图)
|
||
- 检索:`zlyapp/backend/app/kb/sqlite_retriever.py`(jieba + LIKE)
|
||
- 引擎:`zlylibs/engine/`(HEP 8层、DSRP、UPP、KB、eval)+ 约 20 测试
|
||
- 岗位洋葱设计:`docs/07_Data_Assets/DA00_07_Position_Onion_Model.md`
|
||
- 测试策略:`docs/12_Test_Strategy/`
|
||
|
||
---
|
||
|
||
## 8. 给下一步的建议(不改代码,仅判断)
|
||
|
||
若目标是让 pj0231 **向 pj006 对齐**,优先级建议(按 ROI):
|
||
|
||
1. **补岗位模型 + 岗位-知识映射**(`positions` / `user_positions` / `position_knowledge_units`)——这是两项目最本质的差距,也是「岗位与知识对应」这一诉求的核心。
|
||
2. **补错题本 + 学习档案**(`mistake_records`、维度能力分析)——pj0231 考试目前「考完就结束」,无闭环。
|
||
3. **补简答题题型 + LLM 评分**——已有 LLM 底座,复用成本低。
|
||
4. **补自动化测试**——当前 0 测试是工程隐患。
|
||
|
||
不建议盲目引入的:多租户分库、NPC 人格 / HEP 引擎、KPI 模块——这些与 pj0231「极简内网单企业」定位冲突,ROI 低。
|