Files
pj0235-eai_agentplatform/docs/对比分析_pj0231_vs_pj006-zhilianyuan2.md
T
eaiadminandClaude Code 0455f064ac feat: 新增语音转文字(ASR)功能
- 后端:新增 /api/audio/transcribe 接口,调用 Ollama whisper 进行语音识别
- 前端:新增 AudioTranscribePage.vue 页面,支持 MP3/WAV/M4A/OGG/FLAC 等格式
- 注册路由、工具卡片、智能助手欢迎语更新

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-14 00:53:36 +08:00

12 KiB
Raw Blame History

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_app/backend-go/internal/model/(11 张表)
  • 检索:eai_agentplatform_app/backend-go/internal/ai/retrieve.go(混合检索)
  • 考试:eai_agentplatform_app/backend-go/internal/api/exam.go(组卷 / 判分 / 存档)
  • AI 聊天:eai_agentplatform_app/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 低。