You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

14 KiB

Enterprise AI Platform - 开发规划

基于对 backend、frontend 全部代码和 ENTERPRISE_PLAN.md 的详细审查 日期: 2026-05-11


一、项目现状总览

1.1 整体评估

维度 完成度 说明
后端 CRUD API 80% 路由完整,但多个模块是 Mock/Stub 实现
Agent 功能 20% Agent 框架有了,但工具全是 [模拟] 占位返回
流编排引擎 30% 框架完整,但所有节点类型都返回 Mock 数据
前端页面 40% 页面骨架都在,但大量只有展示/空白页,缺少交互表单
MCP 集成 50% 注册管理完整,但在流引擎中是 Mock
RAG 0% 仅有 Mock 节点,无真实 embedding/向量存储
企微集成 60% 回调+发送骨架存在,但工具是 Mock

1.2 后端模块功能矩阵

模块 文件 列表 创建 更新 删除 详情 真实度
Auth modules/auth/router.py - login - - me 真实
Org/部门 modules/org/router.py - 真实
Org/用户 modules/org/router.py - 真实
RBAC/角色 modules/rbac/router.py 真实
RBAC/权限 modules/rbac/router.py - - - - 真实
Task modules/task/router.py - 真实
Flow modules/flow_engine/ 半真实 (引擎内节点 Mock)
Agent modules/agent_manager/ chat - - history 半真实 (工具 Mock)
MCP modules/mcp_registry/ 真实
Document modules/document/ - upload - parse 半真实 (文档解析无真实库)
Monitor modules/monitor/router.py - - - dashboard 真实 (但依赖真实数据)
WeCom modules/wecom/router.py - 回调 - - config 半真实 (工具 Mock)
Notification modules/notification/ 模板 - - 真实 (WebSocket)
Audit modules/audit/router.py 分页 - - - - 真实
System modules/system/ 指标 - - - health 真实

1.3 前端页面功能矩阵

页面 路由 文件 展示列表 创建表单 编辑 删除 问题
登录 /login Login.vue - - - 正常
工作台 /user/dashboard Dashboard.vue - - - 基础展示
员工监控 /user/monitor/employees EmployeeList.vue - - - 仅列表,无操作
工作看板 /user/monitor/:id/dashboard WorkDashboard.vue - - - 可能跳空白页
AI分析 /user/monitor/:id/analysis AIAnalysis.vue - - - 依赖LLM,可能空白
任务列表 /user/task/list TaskList.vue - - - 仅列表
任务详情 /user/task/:id TaskDetail.vue - - - 可能空白页
智能体 /user/agent/list AgentList.vue - - - 仅展示4个类型
智能体对话 /user/agent/chat/:type AgentChat.vue - - - - 基础聊天
文档管理 /user/document/manager DocumentManager.vue - 上传 - - 功能不全
企微配置 /user/wecom/config BotConfig.vue - - - - 展示配置
通知中心 /user/notification/center NotificationCenter.vue - - - - 基础
控制台 /admin Dashboard.vue - - - 同工作台
部门管理 /admin/org/departments DepartmentTree.vue - - - 仅树状展示
人员管理 /admin/org/users UserList.vue - - - 仅列表
角色管理 /admin/role/list RoleList.vue - - - 仅列表
权限配置 /admin/role/:id/permissions PermissionConfig.vue - - - - 可能空白页
流列表 /admin/flow/list FlowList.vue - - - 仅列表
流编辑器 /admin/flow/editor FlowEditor.vue - - - - 基础SVG画布,非拖拽
流市场 /admin/flow/market FlowMarket.vue - - - 仅列表
创建任务 /admin/task/create TaskCreate.vue - - - 跳空白页
审计日志 /admin/audit AuditLog.vue - - - 基础列表
系统监控 /admin/system/monitor SystemMonitor.vue - - - 基础展示

二、核心问题详解

2.1 Agent 全部是 Mock

agentscope_integration/tools/ 下的工具函数全部返回模拟字符串:

# document_tools.py
def parse_document(file_path, file_type="auto"):
    return f"[模拟] 已解析文档 {file_path} (类型: {file_type})"

def format_correction(content, format_rules="standard"):
    return f"[模拟] 已按 {format_rules} 规则修正格式:\n{content[:200]}..."
# wecom_tools.py
def send_notification(to_user, message, msg_type="text"):
    return f"通知已发送至 {to_user}: {message}"

Agent 框架(ReActAgent + Toolkit)本身是完整的,但注册的工具没有真正执行任何操作。

2.2 流编排引擎节点全部是 Mock

modules/flow_engine/engine.py 中定义的节点类型:

节点类型 代理类 实际行为
trigger PassThroughAgent 透传(正确)
llm LLMNodeAgent 真实调用 LLM
tool ToolNodeAgent 返回固定字符串
mcp MCPNodeAgent 返回固定字符串
wecom_notify WeComNotifyAgent 返回固定字符串
condition ConditionNodeAgent 全透传,无分支逻辑
rag RAGNodeAgent 返回固定字符串
output OutputNodeAgent 透传(正确)

结论:流编排引擎只能跑纯 LLM 链(trigger → llm → llm → output),任何涉及工具/MCP/RAG/条件分支的节点都是假的。

2.3 没有 RAG/知识库

  • RAGNodeAgent 返回 [RAG检索] 已从知识库检索相关内容。
  • 没有引入 embedding 模型
  • 没有向量数据库(如 Chroma/Milvus/PGVector)
  • 没有文档切分/索引流程
  • 上传的文档只被物理存储,没有被 embedding 化

2.4 文档管理:只是文件存储,非 RAG

上传的文件存储在 uploads/ 目录,解析只做了简单的文本读取(支持 .txt/.md/.py/.json 等文本格式),PDF/Word/Excel 只返回一个占位字符串:

elif ext == ".pdf":
    content = f"[PDF文档解析] 文件: {found_filename}"

2.5 前端大量页面只有骨架

  • 员工列表:只有表格展示,没有创建/编辑/操作的按钮和弹窗
  • 角色管理:只有列表展示
  • 部门管理:只有树状展示
  • 流编辑器:只有基础 SVG 画布,不是真正的拖拽编辑器
  • 任务创建:跳转到空白页
  • 权限配置:可能空白页

三、与 ENTERPRISE_PLAN.md 的差距

原规划 当前状态 差距
Dify-like 可视化流编排 SVG 画布骨架,无拖拽交互 需要完整的拖拽节点编辑器
员工 AI 助手 Agent 框架有,工具 Mock 需要真实工具实现
管理者分析助手 Agent 框架有,无工具 需要数据库查询工具
任务管理助手 Agent 框架有,无工具 需要任务 CRUD 工具
文档处理助手 Agent 框架有,工具 Mock 需要真实文档解析库
RAG 知识库 需要从零实现
企微深度集成 回调框架有,消息发送 Mock 需要真实企业微信 API
MCP 服务编排 注册管理有,流中 Mock 需要真实 MCP 客户端调用
双 RBAC 已实现 无需改进
审计日志 已实现 无需改进
Docker 部署 已实现 端口冲突已修复
数据看板 基础展示 需要 ECharts 丰富图表

四、开发任务排期

P0 - 核心可用(让已有功能正常工作)

# 任务 优先级 预估 说明
1 修复前端空白页 🔴 P0 2天 TaskCreate.vue、PermissionConfig.vue、WorkDashboard.vue、TaskDetail.vue 等页面表单和详情展示
2 前端增删改操作表单 🔴 P0 3天 为员工列表、角色管理、部门管理、流列表、任务列表等页面补齐创建/编辑/删除弹窗和表单
3 Agent 工具真实化 🔴 P0 3天 document_tools.py 接入 python-docx/PyPDF2 等真实库;wecom_tools.py 接入真实企微API
4 流引擎节点真实化 🔴 P0 3天 ToolNodeAgent 调用真实 Toolkit;ConditionNodeAgent 实现分支;WeComNotifyAgent 真实推送

P1 - 关键能力(补齐核心功能缺口)

# 任务 优先级 预估 说明
5 Word/PDF 真实解析 🟡 P1 2天 引入 python-docx、PyPDF2/pdfplumber,替换 Mock
6 RAG 知识库 🟡 P1 5天 引入 embedding 模型 + PGVector 向量存储;实现文档切分/索引/检索;RAGNodeAgent 真实查询
7 流编辑器拖拽交互 🟡 P1 5天 FlowEditor.vue 使用 vue-flow 实现真正的拖拽节点编辑器(已有依赖 @vue-flow/core)
8 MCP 真实调用 🟡 P1 2天 MCPNodeAgent 通过 agentscope HttpStatefulClient 真实调用 MCP 服务

P2 - 体验完善(让产品可交付)

# 任务 优先级 预估 说明
9 数据看板可视化 🟢 P2 2天 Dashboard 使用 ECharts(已引入)展示用户/任务/流统计数据
10 企微 OAuth 登录 🟢 P2 1天 企微扫码登录替代纯用户名密码
11 Agent 多模型配置 🟢 P2 1天 前端增加 LLM 配置页面,支持切换模型、API Key
12 任务列表/智能体列表操作 🟢 P2 1天 任务列表增加编辑/删除操作;智能体列表增加配置入口

五、各任务详细说明

5.1 修复前端空白页

问题文件

  • TaskCreate.vue - 创建任务跳空白页,需要补全表单(标题、内容、负责人、优先级、截止日期)
  • PermissionConfig.vue - 权限配置页空白,需要权限列表的 checkbox 配置
  • WorkDashboard.vue - 工作看板空白,需要展示员工统计数据
  • TaskDetail.vue - 任务详情空白,需要展示任务完整信息

目标:4 个页面全部有可用的 UI 和数据展示。

5.2 前端增删改操作表单

需要补齐表单的页面

  • EmployeeList.vue - 点击员工弹出编辑抽屉(信息、角色分配)
  • RoleList.vue - 创建/编辑角色弹窗
  • DepartmentTree.vue - 右键菜单:新增/编辑/删除部门
  • FlowList.vue - 操作列:编辑/删除/发布/下架按钮
  • TaskList.vue - 操作列:编辑/删除/推送企微按钮

5.3 Agent 工具真实化

document_tools.py 改造:

# 改为真实实现
def parse_document(file_path, file_type="auto"):
    if file_type == "pdf" or file_path.endswith(".pdf"):
        import pdfplumber
        with pdfplumber.open(file_path) as pdf:
            return "\n".join(page.extract_text() for page in pdf.pages)
    if file_type == "word" or file_path.endswith((".docx", ".doc")):
        from docx import Document
        doc = Document(file_path)
        return "\n".join(p.text for p in doc.paragraphs)
    ...

wecom_tools.py 改造:接入 settings.WECOM_CORP_IDsettings.WECOM_APP_SECRET 真实调用企微 API。

5.4 流引擎节点真实化

  • ToolNodeAgent:创建时读取 tool_name,注册真实工具函数到 Toolkit
  • ConditionNodeAgent:使用 LLM 判断条件表达式是否匹配
  • WeComNotifyAgent:调用企微 API 真实发送消息
  • MCPNodeAgent:通过 agentscope_runtime 的 MCP client 真实调用

5.5 RAG 知识库

技术方案

  • Embedding 模型:支持 OpenAI text-embedding-3-small 或本地模型
  • 向量存储:PGVector(PostgreSQL 扩展,复用现有 postgres)
  • 文档处理:docx/pdfplumber 提取文本 → 切分为 chunks → embedding → 存入 PGVector
  • 检索:用户查询 → embedding → PGVector 相似度搜索 → 返回 top_k → 注入 LLM 上下文

新增依赖

pgvector
langchain-text-splitters  # 或自写 chunk 切分

5.6 流编辑器拖拽交互

当前 FlowEditor.vue 使用基础 SVG 画布,但项目已引入 @vue-flow/core@vue-flow/background@vue-flow/controls@vue-flow/minimap

改造方向

  • 使用 VueFlow 替代当前 SVG 画布
  • 实现侧边栏拖拽节点类型(trigger/llm/tool/mcp/rag/wecom_notify/condition/output)
  • 节点之间连线创建 edge
  • 每个节点可双击编辑配置(如 LLM 的 system_prompt)
  • 保存按钮将 nodes+edges 序列化为后端 API 格式

六、技术债务记录

# 问题 位置 影响
1 passlib 已弃用,已改为 bcrypt 直调 modules/auth/router.py 已修复
2 docker-compose.yml 中 postgres 端口从 5432 改为 5431 docker-compose.yml 已修复
3 init-db/01-init.sql 中密码哈希是无效的(已更新) init-db/01-init.sql 已修复
4 bcrypt 未锁定版本(已在 requirements.txt 中移除 passlib) backend/requirements.txt 已修复
5 audit.py 中 model_validate 应改为 from_orm 或用 from_attributes modules/audit/router.py:57 低优先级
6 uuid.uuid4()document_tools.pywecom_tools.py 中重复定义同名函数 两个文件 中优先级
7 FlowEditor.vue 中 visibleEdges 类型守卫问题 FlowEditor.vue:184 已修复

七、建议执行顺序

Week 1: P0 #1 #2 → 前端所有页面可交互(增删改查正常)
Week 2: P0 #3 #4 → Agent 和流编排能真正工作
Week 3: P1 #5 #6 → 文档真实解析 + RAG 知识库
Week 4: P1 #7    → 流编辑器完整拖拽交互
Week 5: P1 #8    → MCP 真实集成
Week 6: P2 #9-#12 → 数据看板 + 体验完善