Files
pj0235-eai_agentplatform/eai_agentplatform/PROJECT_STATE.md
T
eaiadmin b7238ad667 refactor: 收口技能与专员目录定义
统一 skill 与 specialist 清单,移除旧的 office 执行包与下线对象,并补入 text_to_speech、customer_followup 等当前目录定义与种子数据。
2026-09-22 23:38:56 +08:00

119 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目状态总览(PROJECT_STATE)
> 单一事实源:新对话默认先读此文件恢复上下文;每次关键决策后必须更新。
> 最后更新:2026-09-16
## 1. 项目是什么
**eai_agentplatform** — EAI 数字员工平台(AI Agent Platform)。
纯内网本地化的企业 AI 数字员工平台,围绕数字员工(专家)、知识库底座、自动化工坊、
考试评估与系统管理组织业务能力。配套全局 AI 助手。
## 2. 当前状态
### 已完成
- ✅ PRD V1.1 最终定稿(docs/06_Product_Lines/Historical_PRD_And_Designs/产品需求文档.md / 设计稿)
- ✅ 文档架构搭建(docs/ 体系)
- ✅ 编码规范制定(TOP_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`,考试发布/考试通过发证/设岗三事件推送)+ 侧栏铃铛角标;
社交社区/讨论区**定死不做**
### 待开始
- ⬜ 按 `docs/01_System_Overall/History_And_Retrospectives/系统演进旧稿/SY19_通用数字员工产品规划.md`
将当前项目从“已有专员雏形”进一步收口为“通用数字员工平台 V1.0”
## 3. 已拍板决策
| # | 决策 | 状态 |
|---|------|------|
| D01 | 前端:Vue3 + Vite + Element Plus | 已定 |
| D02 | 后端:Go + Gin + GORM + SQLite(modernc 纯Go驱动) | 已定 |
| 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 | 结构化知识源通道:assets/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 落地) |
| D20 | 当前阶段产品路线收口为「先通用、后定制」:先做标准化通用数字员工产品包,不直接追 WorkBuddy 的高自由度路线;第一批优先沉淀知识运营、培训考试、内容生成、任务推进 4 个通用数字员工,后续再长行业包与企业半定制 | 已定(见 `docs/01_System_Overall/History_And_Retrospectives/系统演进旧稿/SY19_通用数字员工产品规划.md`) |
| D21 | 前端曾短暂采用「冻结归档」机制保存停用代码;当前已取消该策略,早期历史代码直接删除,不再维护 `frontend/src/_frozen/`。站内通知如需恢复,按当前实现重新设计,不再依赖冻结稿。 | 已更新 |
| D22 | 任务记录**延迟到发出第一条消息时创建**(对齐 WorkBuddy:新建任务只是导航动作,不落库)。「新建任务」只做「回到 /home 开场画布 + 清空当前任务」,任务标题由第一句话决定、专员取输入框 `+` 里先选的那个(`pendingSpecialistKey` 暂存,建任务时作为 `specialist_key` 一并提交,后端已支持)。**不允许存在没聊过天的空任务** —— 原实现点一次落一条 `新任务`,是「最近任务」堆满空行的根因 | 已定(V1.8 落地) |
| D23 | 侧边栏「最近任务」的行菜单(对齐 ChatGPT 悬停 `⋯` + WorkBuddy 任务卡「更多」):**重命名**(就地编辑,回车提交/Esc 取消)、**置顶**(新增 `worker_task.pinned`,排序 `pinned DESC, updated_at DESC`)、**删除**(新增 `DELETE /api/worker/my-tasks/:id`,硬删、无回收站,确认框写明「无法恢复」)。对照后**不做**:分享任务(纯内网无意义)、打开文件夹(Web 无此能力)、保存到工作空间(项目无 workspace 概念)、归档(没有「已归档」入口可找回,等于软删陷阱)。`el-dropdown` 加 `:persistent="false"` —— 默认每行留一份隐藏菜单在 DOM 里,50 条任务就是 50 份 | 已定 |
| D24 | SQLite **定期备份内置进二进制**(不用外部 cron/systemd timer):启动时补一次 + 每小时查是否到期,默认间隔 24h、保留最近 7 份,落在 `data/backups/`(systemd 是 `ProtectSystem=strict`,只放开了 `data/` 可写)。快照用 `VACUUM INTO` 而非 `cp` 主库 —— 边服务边写时 `cp` 可能拷到写了一半的页。产出自检 SQLite 文件头,不合格即删。另提供 `-backup` 子命令供升级/迁移前手工备一份。**边界**:只防误删/误改/写坏,不防整盘损坏,跨机保存仍需人工 | 已定(见 `deploy/DELIVERY.md` 第 7 节) |
| D25 | 平台总架构继续采用 6 层,但第 5 层正式升级为 **对象层(Expert / Skill / App)**;新增与“专家 / 技能”并列的第三类一级对象 **App**,其定位是“长程任务运行壳”而非页面或大技能。任务统一定义为“工作实例容器”,可挂载主 `app`、右栏 `expert`、后台 `skill`;消息流降级为对话轨迹,长程状态由 `app_state + app_event + domain_data` 承载。产品一级导航目标态需完整描述为 **新建任务 / 项目 / 专家·技能·连接器 / 长程APP / 知识库 / 后台管理 / 我的**,其中 `知识库` 被确认为组织级默认必装的内建 App,拥有一级直达入口;其它专题型业务主导航后续应优先收敛为 `app` 并归入“长程APP”。文档锚点:`docs/01_System_Overall/SY22_角色技能应用统一任务架构.md` | 已定 |
| D26 | 路由命名正式拆分为三类以避免混同:`ai_route_*` 专指 AI 模型路由;`object_entry_route` 专指 Expert / Skill / App 等业务对象的进入入口;`page_route` 专指普通页面导航。后端 API、前端对象配置与导航配置均按该口径收口;旧 `route / entry_route` 已降为启动时一次性迁移并随后删除的历史列,不再保留为日常兼容字段。 | 已定 |
| D27 | 后端「仓库层」正式更名为**数据访问层**,英文同步改:包 `internal/repository` → `internal/dal`,类型 `XxxRepo` → `XxxDAO`(`TaskRecordDAO` / `SpecialistDAO`…),日志前缀 `[repository]` → `[dal]`。理由是原名的「仓库」是 repository 的直译,中文里与「代码仓库 / git 仓库」同词,而这一层做的事就是数据访问。命名规范见 AR09 §3.1 / §5.6 | 已定 |
## 4. 文档索引
| 文档 | 路径 | 说明 |
|------|------|------|
| PRD | `../docs/06_Product_Lines/Historical_PRD_And_Designs/产品需求文档.md` | 产品需求文档(V1.1 最终版) |
| 设计稿 | `../docs/eaisalestrain_app设计稿.md` | 完整 PRD 中文原稿 |
| DB Schema | `../docs/04_Backend/数据库结构.md` | 9 张核心表字段设计 |
| API 文档 | `../docs/04_Backend/接口文档.md` | API 接口定义 |
| 部署文档 | `../docs/02_Architecture/部署文档.md` | 部署架构与步骤 |
| 变更日志 | `../docs/01_System_Overall/变更日志.md` | 版本变更记录 |
| 知识入库体系 | `../docs/04_Backend/BE05_知识导入模块.md` | 上传→生成→审批→入库总设计 |
| 知识源目录 | `assets/knowledge/source/` | 结构化知识源 md(5 份,28 产品 + 20 题) |
| 培训资料目录 | `assets/training/materials/` | 培训课程资产与种子源文件 |
| 编码准则 | `../TOP_CODING_RULES.md` | 编码与调试最高准则 |
| AI 协作锚点 | `CLAUDE.md` | AI 新对话启动仪式 |
## 5. 目录结构(当前)
```
pj0235-eai_agentplatform-ubu/ # 工作区根(仓库根)
├── TOP_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 # 知识源权威数据
└── eai_agentplatform/ # 应用代码
├── backend-go/ # Go 后端(正式,唯一后端,已完成)
│ ├── cmd/ internal/ # Go 源码
│ ├── data/ # 运行时数据(db+media,git 忽略)
│ └── deploy/ # 交付物(systemd/env/清理脚本/DELIVERY.md)
├── assets/ # 内容资产层(运行时输入,不属于源码)
│ ├── knowledge/source/ # 知识源 Markdown
│ └── training/materials/ # 培训资料资产
├── frontend/ # 前端代码
├── CLAUDE.md
├── PROJECT_STATE.md
└── .gitignore
```