# 项目状态总览(PROJECT_STATE) > 单一事实源:新对话默认先读此文件恢复上下文;每次关键决策后必须更新。 > 最后更新:2026-08-16 ## 1. 项目是什么 **eaisalestrain_app** — 博昇内部培训平台。 纯内网本地化、内部专属员工培训系统,用于新人入职培训、公司认知、产品知识学习、 销售能力培训、统一考试验收。配套全局 AI 助教 PathCoach。 ## 2. 当前状态 ### 已完成 - ✅ PRD V1.1 最终定稿(docs/PRD.md / 设计稿) - ✅ 文档架构搭建(docs/ 体系) - ✅ 编码规范制定(CODING_RULES.md / CLAUDE.md / PROJECT_STATE.md) - ✅ 知识入库体系(BE05)后端代码落地:knowledge_source 表 + 解析/扫描/摄入 + 审批 API + 脚本 ### 已完成(Go 后端) - ✅ 后端重写为 Go 完成:认证 / CRUD / 考试 / 素材媒体 / 知识入库 / AI PathCoach / 系统管理 - ✅ 交付形态落地:单二进制 + systemd + Clonezilla 清理清单(backend-go/deploy/) - ✅ 岗位与知识对应能力(P0):Position / PositionKnowledge 表 + 岗位 CRUD + 知识映射 + 用户设岗(`user.position_id`)+ 岗位驱动组卷(`exam_paper.position_id` → `pickQuestions` 岗位过滤分支); 前端「岗位管理」页 + 映射编辑面板 + 用户/考试关联岗位下拉 - ✅ 岗位能力闭环(P1 + P2):学员「我的岗位应学清单」(`/api/my/position`)+ 成绩按岗位聚合(`/api/system/exam-stats-by-position`)+ 岗位考试蓝图(`position_exam_blueprint`); 错题本(`mistake_record`)+ 简答题 LLM 评分(`essay` 题型 + `essay_grade` 能力)+ 后端自动化测试(`_test.go`,`go test ./...` 全绿) - ✅ 学员成长体系(对标竞品,突破「极简/禁止学情分析」边界):学习积分 + 排行榜(`point_event` + `user.learning_points`);考试合格证书(`certificate`,正式通过自动颁发);学习档案/能力雷达 (`/api/my/profile`,按域掌握度 + 薄弱域 + 成绩趋势);前端新增「我的学习档案 / 我的证书 / 学习排行榜」页 - ✅ 组织架构 + 消息通知:部门字典(`department`)+ 按部门学情统计(`/api/system/department-stats`); 站内通知(`notification`,考试发布/考试通过发证/设岗三事件推送)+ 侧栏铃铛角标; 社交社区/讨论区**定死不做** ### 待开始 - ⬜ (暂无待办)前端/后端能力已基本闭环;后续为可选打磨项 ## 3. 已拍板决策 | # | 决策 | 状态 | |---|------|------| | D01 | 前端:Vue3 + Vite + Element Plus | 已定 | | D02 | 后端:Go + Gin + GORM + SQLite(modernc 纯Go驱动,接口留 MySQL 兼容) | 已定 | | D03 | 认证:JWT(golang-jwt)+ bcrypt | 已定 | | D04 | 文档转换:LibreOffice(裸进程)+ pdftotext | 已定 | | D05 | AI 底座:内网 OpenAI 兼容接口(非公网) | 已定 | | D06 | 视频仅预览、不提取文本、不进 AI | 已定 | | D07 | 知识检索:混合检索(向量 brute-force + 关键词兜底),数据量小无需 ANN | 已定 | | D08 | 审批通过后异步转换/提取 | 已定 | | D09 | 视频 > 100MB 分片上传 + 断点续传 | 已定 | | D10 | 题库 + 组卷配置(随机/固定抽题) | 已定 | | D11 | 角色:employee / admin 两级,无复杂权限 | 已定 | | D12 | 结构化知识源通道:backend-go/knowledge_source/ md → knowledge_source 表审批 → 摄入 product/question/chunk | 已定 | | D13 | 向量检索:brute-force 余弦 + Ollama bge-m3 embedding(单容器双模型,随盘交付) | 已定 | | D14 | 交付形态:裸进程 + systemd + Clonezilla 整盘克隆,Go 单二进制无源码交付 | 已定 | | D15 | 岗位与知识对应:Position/PositionKnowledge 表 + 用户单岗位(`user.position_id`)+ 岗位驱动组卷 | 已定(P0 落地) | | D16 | 岗位考试蓝图:`position_exam_blueprint` 按「域 + 题型」抽样(题目无级别字段,不做级别加权);蓝图存在时优先于岗位映射抽题 | 已定(P1 落地) | | D17 | 错题本(学员自助,非学情分析,自测/正式均写)+ 简答题 LLM 评分(`essay` 题型,复用 title_gen 路由,`essay_grade` 不扣点) | 已定(P2 落地) | | D18 | 突破原「极致极简/杜绝学情分析」边界:新增学员成长体系 = 学习积分+排行榜(游戏化)+ 考试证书(认证)+ 学习档案/能力雷达(学情,学员自助视角);积分规则集中常量可调 | 已定(V1.6 落地) | | D19 | 部门组织架构(department 字典表,用户以 department 字符串归属、改名同步)+ 按部门学情统计;站内消息通知(考试发布/通过发证/设岗三事件);**社交社区/讨论区定死不做** | 已定(V1.7 落地) | ## 4. 文档索引 | 文档 | 路径 | 说明 | |------|------|------| | PRD | `../docs/PRD.md` | 产品需求文档(V1.1 最终版) | | 设计稿 | `../docs/eaisalestrain_app设计稿.md` | 完整 PRD 中文原稿 | | DB Schema | `../docs/db_schema.md` | 9 张核心表字段设计 | | API 文档 | `../docs/api.md` | API 接口定义 | | 部署文档 | `../docs/deploy.md` | 部署架构与步骤 | | 变更日志 | `../docs/changelog.md` | 版本变更记录 | | 知识入库体系 | `../docs/04_Backend/BE05_Knowledge_Ingest_Module.md` | 上传→生成→审批→入库总设计 | | 知识源目录 | `backend-go/knowledge_source/` | 结构化知识源 md(5 份,28 产品 + 20 题) | | 编码准则 | `../CODING_RULES.md` | 编码与调试最高准则 | | AI 协作锚点 | `CLAUDE.md` | AI 新对话启动仪式 | ## 5. 目录结构(当前) ``` pj0231-eaisalestraining/ # 工作区根(仓库根) ├── CODING_RULES.md # 编码与调试最高准则 ├── start_dev_10231_10232.sh # 开发启动脚本 ├── docs/ # 设计文档(项目级,与代码分离) │ ├── 00_AI_Context/ # AI 协作上下文 │ ├── 01_System_Overall/ # 系统总览 │ ├── 02_Architecture/ # 架构设计 │ ├── 04_Backend/ # 后端设计与 API │ ├── 06_Product_Lines/ # 产品线与前端设计 │ ├── 08_Design_Rules/ # UI/UX 设计规范 │ ├── PRD.md / db_schema.md / api.md / deploy.md / changelog.md │ ├── eaisalestrain_app设计稿.md # 完整 PRD 中文原稿 │ └── 博昇产品与渠道合作表.md # 知识源权威数据 └── eaisalestrain_app/ # 应用代码 ├── backend-go/ # Go 后端(正式,唯一后端,已完成) │ ├── cmd/ internal/ # Go 源码 │ ├── knowledge_source/ # 知识源 Markdown(运行时数据) │ ├── data/ # 运行时数据(db+media,git 忽略) │ └── deploy/ # 交付物(systemd/env/清理脚本/DELIVERY.md) ├── frontend/ # 前端代码 ├── CLAUDE.md ├── PROJECT_STATE.md └── .gitignore ```