# MES-Manager_View DeepSeekV4Pro AI 助手与 MCP 服务设计文档 ## 1. 背景与目标 本设计用于在 `MES-Manager_View` 中建设一个类似 `C:\work\Project\Mes\HL_MES_manager` 的网页内置 AI 助手,名称为 `DeepSeekV4Pro AI 助手`。助手需要具备以下能力: | 目标 | 说明 | | --- | --- | | 项目功能 MCP 化 | 将 `MES-Manager_View` 中页面、接口、菜单、查询、质量管理、SPC 分析等功能整理为 MCP 工具,由本地服务统一暴露。 | | 质量管理数据查询 | 支持用户用自然语言查询质量管理相关页面和数据,例如质量追溯、质量 Andon、质量数据、线体质量、巡检、物料质量等。 | | SPC 图文展示 | 支持查询并图文并茂展示 SPC 分析中的基本趋势图、样本趋势图、直方图、正态分布图、过程能力分析图、排列图、X-R 图、X-S 图等。 | | 网页内助手 | 在前端页面全局挂载可拖拽、可折叠、可清空、可调整大小的 AI 对话浮窗。 | | 表格化回答 | AI 回答优先使用规范 HTML 表格;涉及图表时返回图表说明、统计摘要、数据表和可渲染图表配置。 | | 不改底层逻辑 | 不修改现有业务页面、后端 `.ashx`、数据库存储过程、现有接口语义,只新增 AI 组件、MCP 服务、知识库与配置,并调用现有函数或接口。 | ## 2. 现状梳理 ### 2.1 当前项目结构 | 模块 | 当前位置 | 说明 | | --- | --- | --- | | 前端入口 | `src/App.vue` | 当前只渲染 `router-view`,尚未挂载 AI 助手。 | | 路由 | `src/router/index.js`、`src/router/getRouter.js` | 登录后动态菜单由后端返回,前端根据 `component` 映射到 `src/views`。 | | 全局请求 | `src/utils/request.js` | 主要通过 `window.g.baseURL + /submit/MESCommonBase.ashx` 调用通用后端接口。 | | 运行配置 | `static/config.js`、`dist/static/config.js` | 当前包含 `baseURL`、MQTT、打印模板等配置,未包含 AI MCP 地址。 | | SPC 接口 | `src/api/SPCanalysis/*` | 已封装趋势图、直方图、正态分布、过程能力、X-R、X-S、排列图等接口。 | | SPC 页面 | `src/views/SearchData/*` | 包含 `SPC_Analysis`、`sampleTrendChart`、`histogram`、`processCapabilityAnalysis`、`arrangeChart`、`QualityData_XR`、`QualityData_XS` 等页面。 | | 质量管理页面 | `src/views/QualityAssurance/*`、`src/views/AndonSystem/*`、`src/views/SearchData/QualityDatasearch` | 包含质量数据、质量 Andon、巡检、条码、线体质量、装配质量等相关功能。 | ### 2.2 参考项目能力 `HL_MES_manager` 中已存在以下可参考内容: | 参考内容 | 路径 | 可复用思想 | | --- | --- | --- | | AI 前端组件 | `src/components/DeepSeekAssistant/index.vue` | 全局浮窗、拖拽、折叠、清空、HTML 表格渲染、调用本地 AI 服务。 | | AI 挂载方式 | `src/App.vue` | 在 `router-view` 后挂载 `deep-seek-assistant`。 | | MCP 服务 | `mcp-server/server.js` | 本地 HTTP 服务、MCP JSON-RPC、DeepSeek 代理、知识库检索、只读查询。 | | 知识库构建 | `mcp-server/build-knowledge-base.js` | 从静态分析 CSV 生成 JSON 知识库。 | | 文档产物 | `docs/*.csv`、`docs/hl-mes-knowledge-base.json` | 页面调用、接口映射、SQL 表对象、模块摘要。 | | 启停脚本 | `scripts/*.ps1`、`scripts/*.bat` | 日常启动、停止、状态检查。 | ### 2.3 当前项目关键差异 | 差异项 | 当前项目情况 | 设计处理 | | --- | --- | --- | | 前端未挂 AI 组件 | `MES-Manager_View` 没有 `components/DeepSeekAssistant` | 新增组件,不改现有业务组件。 | | 没有 MCP 服务目录 | 当前无 `mcp-server`、`docs` 分析产物、`scripts` AI 脚本 | 新增独立服务目录和脚本。 | | SPC 接口使用独立 `ip` | `src/api/ipAddress.js` 指向 `http://localhost:57966` | MCP 服务读取配置并调用 SPC `.ashx` 接口。 | | 通用业务接口使用 `baseURL` | `static/config.js` 中 `baseURL` 当前为 `http://127.0.0.1:10050` | MCP 服务可配置 `MES_BACKEND_URL`,默认只读。 | | 质量/SPC 结果格式不统一 | 有的接口返回数组,有的返回字符串拼接,有的返回分页对象 | MCP 服务增加标准化适配层,转为表格数据和图表数据。 | ## 3. 总体架构 ### 3.1 架构分层 | 层级 | 新增内容 | 职责 | | --- | --- | --- | | 前端 AI 组件层 | `src/components/DeepSeekAssistant` | 展示对话、发送问题、展示 HTML 表格、展示图表卡片、触发页面跳转。 | | 前端配置层 | `static/config.js` | 增加 AI MCP 服务地址配置,例如 `aiMcpURL`。 | | MCP 服务层 | `mcp-server/server.js` | 暴露 MCP tools、代理 DeepSeek、调用知识库、调用只读 MES/SPC 接口、生成 HTML 表格和图表结构。 | | 知识库层 | `docs/*.csv`、`docs/wc-spc-knowledge-base.json` | 存储页面、接口、函数、质量模块、SPC 图表、字段映射、查询入口。 | | 静态分析层 | `mcp-server/build-knowledge-base.js` 及分析脚本 | 扫描 `src/views`、`src/api`、`src/assets/img/api`,提取接口调用和业务功能。 | | 业务系统层 | 现有 `.ashx`、`MESCommonBase.ashx`、SPC 接口 | 保持不变,由 MCP 服务按只读规则调用。 | ### 3.2 数据流 | 场景 | 数据流 | | --- | --- | | 用户咨询项目功能 | 前端助手发送问题到 MCP 服务;MCP 服务检索知识库;必要时调用 DeepSeek 整理;返回 HTML 表格。 | | 用户要求打开页面 | MCP 服务通过知识库匹配页面路径;前端助手收到 `navigate` 动作后调用 `$router.push`。 | | 用户查询质量数据 | MCP 服务识别质量模块和查询条件;调用知识库中的只读接口或只读 SQL 白名单;返回数据表、字段说明和查询来源。 | | 用户查看 SPC 图 | MCP 服务识别图表类型;调用对应 SPC 接口;标准化为 ECharts option、统计摘要、明细表;前端助手渲染图表和表格。 | | DeepSeek 智能回答 | MCP 服务把知识库摘要、查询结果、图表摘要作为上下文发送给 DeepSeek;要求输出 HTML 表格化答案。 | ## 4. 修改范围与不修改范围 ### 4.1 允许新增或调整的内容 | 类型 | 文件或目录 | 修改方式 | | --- | --- | --- | | 新增 | `src/components/DeepSeekAssistant/index.vue` | 新增 AI 助手组件,参考 `HL_MES_manager`,适配中文编码和 SPC 图表展示。 | | 小范围调整 | `src/App.vue` | 只增加组件引入和挂载,不改变 `router-view`、`provide/reload` 逻辑。 | | 小范围调整 | `static/config.js`、必要时 `dist/static/config.js` | 增加 `window.g.aiMcpURL`,不改变现有 `baseURL`、MQTT、打印配置。 | | 新增 | `mcp-server/*` | 新增本地 AI MCP 服务,独立运行。 | | 新增 | `docs/*` | 生成静态分析文档和知识库文件。 | | 新增 | `scripts/*` | 新增启动、停止、状态检查脚本。 | | 小范围调整 | `package.json` | 增加 AI MCP 启动、停止、知识库构建脚本;必要时增加 `mssql` 依赖。 | ### 4.2 明确不修改的内容 | 不修改对象 | 原因 | | --- | --- | | 现有业务页面查询逻辑 | 避免影响生产页面行为和用户习惯。 | | `src/api/SPCanalysis/*` 原函数签名 | AI 服务可参考和调用接口语义,但不改变已有页面引用。 | | `src/utils/request.js` 的拦截、登录态、超时等逻辑 | 避免影响全局请求和权限。 | | 后端 `.ashx`、数据库存储过程、数据库表结构 | 本次只做前端 AI 与 MCP 服务设计。 | | 动态菜单生成逻辑 | AI 页面跳转通过已有路由能力实现,不改变权限菜单来源。 | ## 5. MCP 服务设计 ### 5.1 服务定位 MCP 服务是一个运行在本机或内网服务器上的 Node.js 服务,作用是把 `MES-Manager_View` 项目的页面、接口、函数和数据查询能力包装成标准 MCP 工具。浏览器不直接访问 DeepSeek API,也不保存 DeepSeek 密钥。 | 项目 | 设计 | | --- | --- | | 默认端口 | `3100` 或由环境变量 `AI_MCP_PORT` 配置。 | | DeepSeek 密钥 | 只放在 `mcp-server/.env.local` 或服务器环境变量中。 | | MES 通用接口 | 默认读取 `MES_BACKEND_URL`,可指向 `window.g.baseURL + /submit/MESCommonBase.ashx`。 | | SPC 接口地址 | 默认读取 `SPC_BACKEND_URL`,对应当前 `src/api/ipAddress.js` 中的 `http://localhost:57966`。 | | 数据库连接 | 可选,只允许只读账号,只查询知识库白名单对象。 | | 输出格式 | HTML 表格、结构化数据、图表配置、页面跳转动作。 | ### 5.2 服务端点 | 端点 | 方法 | 用途 | | --- | --- | --- | | `/health` | GET | 检查服务、DeepSeek、知识库、SQL、SPC 接口配置状态。 | | `/mcp` | POST | MCP JSON-RPC 入口,支持工具列表和工具调用。 | | `/api/tools` | GET | 前端或调试时查看可用 MCP 工具。 | | `/api/assistant/chat` | POST | 前端 AI 助手聊天入口,返回 HTML、图表、动作。 | | `/api/chart/render-data` | POST | 可选,用于前端按图表 ID 拉取标准化图表数据。 | ### 5.3 MCP 工具清单 #### 5.3.1 项目知识类工具 | 工具名 | 作用 | 输入 | 输出 | | --- | --- | --- | --- | | `project_summary` | 返回项目模块、接口数量、质量/SPC 能力总览 | 无 | HTML 总览表 | | `list_feature_modules` | 列出所有页面模块 | 模块关键字、分页参数 | 模块表 | | `search_project_functions` | 按关键字搜索页面、接口、函数 | `query`、`limit` | 页面和接口匹配表 | | `get_view_calls` | 查看某个页面调用了哪些接口或数据库操作 | `view`、`limit` | 调用清单表 | | `get_api_file_mapping` | 查看某个 API 文件封装了哪些后端接口 | `apiFile`、`limit` | API 映射表 | | `get_module_knowledge` | 返回指定模块的知识库详情 | `module` | 模块、页面、接口、查询入口 | | `reload_project_index` | 重新加载知识库 | 无 | 状态表 | #### 5.3.2 页面导航类工具 | 工具名 | 作用 | 示例问题 | 输出 | | --- | --- | --- | --- | | `find_page_route` | 根据自然语言匹配页面 | “打开 SPC 分析页面” | 候选页面表 | | `navigate_to_page` | 返回前端可执行跳转动作 | “进入质量数据查询” | `navigate` 动作和页面表 | 说明:MCP 服务只返回动作建议,真正跳转由前端助手调用当前 Vue Router 完成,不绕过现有权限体系。 #### 5.3.3 质量管理数据工具 | 工具名 | 作用 | 数据来源 | | --- | --- | --- | | `list_quality_modules` | 列出质量相关功能模块 | `src/views/QualityAssurance`、`src/views/AndonSystem`、`src/views/SearchData` | | `search_quality_functions` | 搜索质量管理相关页面和接口 | 知识库 | | `query_quality_data` | 根据自然语言查询质量数据 | 知识库只读接口、只读 SQL 白名单、通用 MES 接口 | | `quality_data_summary` | 对质量数据做数量、异常、时间范围、工位等摘要 | 查询结果 | | `quality_field_dictionary` | 解释质量数据字段含义 | 知识库字段映射 | 质量数据查询需要遵守以下规则: | 规则 | 说明 | | --- | --- | | 只读 | 只允许查询类接口、`SELECT` SQL、分页查询。 | | 白名单 | 只能调用知识库识别出的查询接口或白名单表/视图。 | | 限制行数 | 默认最多返回 100 行,用户要求更多时仍需要上限控制。 | | 条件明确 | 查询质量明细时必须有时间范围、工位、条码、机型、测量项等至少一个过滤条件;缺少条件时返回条件提示表。 | | 禁止写操作 | 新增、修改、删除、导入、审核、提交、上传、执行类接口不开放给 AI 自动调用。 | #### 5.3.4 SPC 分析工具 | 工具名 | 图表能力 | 当前项目对应位置 | | --- | --- | --- | | `spc_list_dimensions` | 查询可选工位、机型、测量位置、测量项目 | `CreateData('11', 'SPC分析_去重字段_查询', ...)` 及相关质量查询接口 | | `spc_query_raw_data` | 查询 SPC 明细数据 | `GetDataTableByConditent` 类接口 | | `spc_sample_trend_chart` | 样本趋势图 | `src/api/SPCanalysis/sampleTrendChart.js` | | `spc_basic_trend_chart` | 基本趋势图 | `src/api/SPCanalysis/basicTrendTap.js` | | `spc_histogram_chart` | 直方图 | `src/api/SPCanalysis/histogram.js` | | `spc_normal_distribution_chart` | 正态分布图 | `src/api/SPCanalysis/normal_distribution.js` | | `spc_process_capability_chart` | 过程能力分析 | `src/api/SPCanalysis/processCapabilityAnalysis.js` | | `spc_pareto_chart` | 排列图 | `src/api/SPCanalysis/arrangeChart.js` | | `spc_xr_chart` | X-R 控制图 | `src/api/SPCanalysis/QualityData_XR.js` | | `spc_xs_chart` | X-S 控制图 | `src/api/SPCanalysis/QualityData_XS.js` | | `spc_chart_explain` | 解释 SPC 结果、异常点、规格线、Cp/Cpk | 标准化图表结果和 DeepSeek | ### 5.4 SPC 入参模型 | 参数 | 含义 | 是否必填 | 默认策略 | | --- | --- | --- | --- | | `chartType` | 图表类型,如 `sampleTrend`、`histogram`、`xr`、`xs` | 是 | 由自然语言识别,无法识别时返回候选表 | | `startTime` | 开始日期 | 是 | 可默认最近 7 天,但需在回答中明示 | | `endTime` | 结束日期 | 是 | 默认当天 | | `opName` | 工位号或工位名称 | 建议必填 | 缺少时先查询候选工位 | | `measureName` | 测量位置 | 视图表而定 | 缺少时根据工位返回候选 | | `measureContent` | 测量项目 | 视图表而定 | 缺少时根据工位和测量位置返回候选 | | `model` | 机型或零件号 | 可选 | 用户未指定时不加过滤 | | `sampleSize` | 样本容量 | 可选 | 默认沿用现有页面常用值 `5` | | `sampleNumber` | 样本个数 | 可选 | 默认沿用现有页面常用值 `20` | | `usl` | 上规格限 | 过程能力/正态分布需要 | 用户未提供时使用接口返回或提示输入 | | `lsl` | 下规格限 | 过程能力/正态分布需要 | 用户未提供时使用接口返回或提示输入 | | `pageSize` | 明细表页大小 | 可选 | 默认 20,最大 100 | | `pageCurrent` | 当前页 | 可选 | 默认 1 | ### 5.5 SPC 输出模型 每次 SPC 图表查询统一返回以下结构,前端助手据此渲染: | 输出块 | 内容 | 展示方式 | | --- | --- | --- | | 查询条件 | 时间、工位、机型、测量位置、测量项目、样本参数 | HTML 表格 | | 统计摘要 | 最大值、最小值、平均值、标准差、Cp、Cpk、USL、LSL、异常点数量等 | HTML 表格 | | 图表数据 | ECharts option 或内部标准图表模型 | 前端图表容器渲染 | | 明细数据 | 原始测量值、单位、发动机号、生产日期等 | HTML 表格 | | 解释结论 | 趋势说明、异常提示、规格线说明、建议关注点 | HTML 表格或短段落 | | 来源信息 | 调用的页面、API 文件、后端 `.ashx`、接口 `type` | HTML 表格 | 前端不执行 AI 生成的任意 JavaScript。图表渲染只使用 MCP 服务返回的可信结构化图表模型,由内置渲染器转成 ECharts 配置。 ## 6. 前端 AI 助手设计 ### 6.1 组件能力 | 能力 | 说明 | | --- | --- | | 全局可见 | 在 `src/App.vue` 中挂载,所有业务页面可使用。 | | 可拖拽 | 支持鼠标拖动,位置自动限制在浏览器视口内。 | | 可折叠 | 支持最小化,减少遮挡业务页面。 | | 可调整大小 | 支持小、中、大三种窗口尺寸。 | | 可清空 | 支持清空当前聊天记录。 | | HTML 表格渲染 | 对助手返回的 HTML 做安全过滤后展示。 | | 图表渲染 | 识别响应中的 `charts` 数组,使用 ECharts 渲染图表。 | | 页面跳转 | 识别 `actions` 中的 `navigate` 动作,通过 `$router.push` 进入页面。 | | 错误提示 | MCP 服务不可用、接口不可用、条件不足时以表格展示原因和处理建议。 | ### 6.2 前端响应展示规范 | 响应类型 | 展示规范 | | --- | --- | | 普通问答 | 一个或多个 HTML 表格,标题清晰,字段不拥挤。 | | 数据查询 | 先展示查询条件,再展示摘要,再展示明细表。 | | 图表分析 | 先展示图表,再展示统计摘要和数据表。 | | 多候选结果 | 展示候选表,提示用户补充筛选条件。 | | 错误 | 展示错误类型、原因、建议处理、关联配置。 | ### 6.3 HTML 安全策略 | 策略 | 说明 | | --- | --- | | 禁止脚本 | 删除 `script`、事件属性、`javascript:` 链接。 | | 白名单标签 | 只允许表格、标题、段落、列表、强调、代码等展示标签。 | | 图表结构化 | 图表不通过 HTML 内嵌脚本实现,只通过结构化数据渲染。 | | 外链控制 | 外部链接默认新窗口打开,不自动执行。 | ## 7. 知识库建设设计 ### 7.1 静态分析范围 | 分析对象 | 目标 | | --- | --- | | `src/views/**/*.vue` | 提取页面路径、页面标题、导入的 API、`CreateData`、`ExecDatabase`、`RawSQL`、ECharts 调用。 | | `src/api/**/*.js` | 提取封装函数、`.ashx` 地址、`type`、参数名、业务域。 | | `src/assets/img/api/**/*.js` | 提取历史遗留 API 文件中的业务接口。 | | `src/router/**/*.js` | 提取静态路由、动态路由生成规则。 | | `src/icons/svg` | 辅助识别菜单和模块名称。 | ### 7.2 产物文件 | 文件 | 内容 | | --- | --- | | `docs/wc-spc-static-analysis.md` | 项目结构、模块数量、接口数量、质量/SPC 摘要。 | | `docs/view-database-calls.csv` | 页面中的查询、增删改、RawSQL、通用接口调用。 | | `docs/view-database-calls-summary.csv` | 按页面汇总调用数量、业务域、接口名。 | | `docs/view-api-imports.csv` | 页面与 API 文件导入关系。 | | `docs/api-name-mapping.csv` | API 文件中的函数、`.ashx`、`type`、参数映射。 | | `docs/raw-sql-table-mapping.csv` | 前端出现的 SQL 和表对象。 | | `docs/spc-chart-mapping.csv` | SPC 页面、API、图表类型、参数、返回格式映射。 | | `docs/quality-module-mapping.csv` | 质量管理页面、接口、字段、可查询能力映射。 | | `docs/wc-spc-knowledge-base.json` | MCP 服务运行时加载的统一知识库。 | ### 7.3 知识库字段设计 | 字段 | 说明 | | --- | --- | | `module` | 一级模块,如 `QualityAssurance`、`SearchData`、`AndonSystem`。 | | `view` | 页面文件路径。 | | `routePath` | 可推导的路由路径。 | | `title` | 页面中文名称,优先来自菜单或文件名映射。 | | `domains` | 业务域,如质量数据、SPC、ANDON、MES。 | | `apiFiles` | 页面导入的 API 文件。 | | `backendEndpoints` | `.ashx` 地址和 `type`。 | | `queryable` | 是否允许 AI 自动查询。 | | `writeOperation` | 是否为写操作,写操作默认禁用。 | | `chartTypes` | 页面支持的图表类型。 | | `fieldMap` | 字段中文名、含义、单位、是否用于筛选。 | | `keywords` | 搜索关键字和中文分词片段。 | ## 8. DeepSeekV4Pro 调用策略 ### 8.1 模型职责 | 职责 | 说明 | | --- | --- | | 意图识别 | 判断用户是在问功能、查数据、看图、跳转页面还是解释结果。 | | 条件补全 | 从自然语言中抽取时间、工位、机型、测量项、图表类型。 | | 结果解释 | 对查询结果和 SPC 图表进行中文解释。 | | 表格生成 | 尽可能使用 HTML 表格组织回答。 | ### 8.2 服务端优先规则 | 规则 | 说明 | | --- | --- | | 可确定数据先查数据 | 明确的数据查询不只让模型猜测,先由 MCP 工具查询真实数据。 | | 图表先生成结构化结果 | SPC 图表由服务端按接口返回构造,不让模型自由编造。 | | 模型只做表达和解释 | DeepSeek 负责总结、归纳、提示风险,不负责直接执行数据库写操作。 | | 无密钥也可运行 | 未配置 DeepSeek 密钥时,助手仍可基于本地知识库返回表格结果。 | ### 8.3 Prompt 输出约束 | 约束 | 说明 | | --- | --- | | 使用中文 | 默认中文回答。 | | 优先 HTML 表格 | 除简短确认外,所有结构化结果使用表格。 | | 不编造数据 | 没有查询到真实数据时说明“未查询到”或“条件不足”。 | | 明示来源 | 数据结果必须展示来源接口或页面。 | | 不输出可执行脚本 | 不返回任意可执行 JavaScript;图表通过结构化 `charts` 输出。 | ## 9. 质量管理数据查询设计 ### 9.1 质量模块识别范围 | 模块路径 | 质量相关能力 | | --- | --- | | `src/views/QualityAssurance` | 巡检、物料数据、条码、线体质量、装配质量、生产计划完成等。 | | `src/views/SearchData/QualityDatasearch` | SPC 数据导入、质量数据查询、趋势分析基础数据。 | | `src/views/SearchData/SPC_Analysis` | SPC 综合分析。 | | `src/views/SearchData/QualityData_XR` | X-R 图分析。 | | `src/views/SearchData/QualityData_XS` | X-S 图分析。 | | `src/views/AndonSystem/qualityAndon*` | 质量 Andon 与统计。 | ### 9.2 查询流程 | 步骤 | 处理 | | --- | --- | | 1. 识别意图 | 判断用户是否查询质量管理数据。 | | 2. 匹配模块 | 根据“巡检、条码、线体质量、质量 Andon、SPC、测量值”等关键字匹配知识库模块。 | | 3. 抽取条件 | 抽取时间、工位、条码、发动机号、机型、测量位置、测量项目等条件。 | | 4. 检查安全 | 确认调用为只读查询,且来源在知识库白名单内。 | | 5. 执行查询 | 调用通用 MES 接口、SPC `.ashx` 或只读 SQL。 | | 6. 标准化结果 | 统一为 `columns`、`rows`、`summary`。 | | 7. 生成回答 | 返回 HTML 条件表、摘要表、数据表、来源表。 | ### 9.3 条件不足时的处理 当问题类似“帮我查质量数据”但缺少关键条件时,助手不直接全表查询,而返回如下提示表: | 需要补充项 | 示例 | | --- | --- | | 时间范围 | 今天、最近 7 天、2026-05-01 到 2026-05-27 | | 数据类型 | SPC、巡检、条码、质量 Andon、线体质量 | | 过滤条件 | 工位、机型、测量位置、测量项目、发动机号 | | 返回数量 | 前 20 条、前 100 条、按异常汇总 | ## 10. SPC 图文并茂展示设计 ### 10.1 图表类型与输出内容 | 图表 | 输出内容 | 说明 | | --- | --- | --- | | 基本趋势图 | 折线图、规格线、明细表 | 用于查看测量值随时间或样本变化趋势。 | | 样本趋势图 | 样本均值/点位趋势、明细表 | 对应 `QualityData_TrendPicture.ashx`。 | | 直方图 | 柱状分布、频数表 | 对应 `QualityData_Histogram.ashx`。 | | 正态分布图 | 正态曲线、频数柱、USL/LSL/中心线、Cp/Cpk | 对应 `QualityData_NormalDistribution.ashx`。 | | 过程能力图 | Cp/Cpk 指标、规格限、分布图 | 组合直方图和正态分布数据。 | | 排列图 | 柱状图、累计折线、占比表 | 对应 `QualityData_Pareto.ashx`。 | | X-R 图 | 均值图、极差图、控制线、异常点表 | 对应 `QualityData_XR.ashx`。 | | X-S 图 | 均值图、标准差图、控制线、异常点表 | 对应 `QualityData_XS.ashx`。 | ### 10.2 图表回答结构 | 展示顺序 | 内容 | | --- | --- | | 1 | 图表标题和查询条件表。 | | 2 | ECharts 图表区域,可展示一张或多张图。 | | 3 | SPC 统计指标表,例如平均值、标准差、Cp、Cpk、USL、LSL、UCL、LCL。 | | 4 | 异常点或超限点表。 | | 5 | 明细数据表,默认前 20 条。 | | 6 | AI 解释表,包括趋势判断、是否超规格、建议关注点。 | | 7 | 数据来源表,列出页面、API、`.ashx` 和接口 `type`。 | ### 10.3 图表渲染原则 | 原则 | 说明 | | --- | --- | | 使用已有 ECharts | 当前项目 `main.js` 已挂载 `Vue.prototype.$echarts`,AI 组件可复用。 | | 不依赖业务页面 DOM | AI 图表在助手组件内部独立容器渲染,不读取现有页面的 `myChart`。 | | 不修改现有绘图函数 | 可复刻其数据解析规则到 MCP 标准化层,但不改页面内 `drawLine`。 | | 图表可追溯 | 每个图表响应带 `chartType`、调用接口、查询条件。 | | 多图支持 | X-R、X-S 可返回两个图表,过程能力可返回分布图和指标表。 | ## 11. 安全与权限设计 | 风险 | 控制措施 | | --- | --- | | DeepSeek 密钥泄露 | 密钥只存在 MCP 服务端环境变量或 `.env.local`,不写入前端。 | | AI 执行写操作 | MCP 工具默认禁用新增、修改、删除、导入、审核、提交、上传、执行类接口。 | | SQL 注入 | 只允许白名单表/视图;禁止拼接用户原始 SQL;禁止分号、多语句和写关键字。 | | 越权访问 | 前端跳转仍走现有路由和菜单权限;数据查询建议使用只读服务账号。 | | 大量数据拖垮系统 | 默认限制 100 行,图表限制合理时间范围,超出时提示收窄条件。 | | HTML 注入 | 前端过滤脚本和事件属性,图表不执行模型返回脚本。 | | 生产接口误调用 | `call_mes_backend` 默认只允许查询类接口;写接口需要明确关闭。 | ## 12. 配置设计 ### 12.1 前端配置项 | 配置项 | 说明 | 示例含义 | | --- | --- | --- | | `window.g.aiMcpURL` | AI MCP 服务地址 | 浏览器调用本地或内网 AI 服务。 | | `window.g.baseURL` | 现有 MES 后端地址 | 保持原值,不因 AI 改动。 | ### 12.2 MCP 服务环境变量 | 变量 | 说明 | | --- | --- | | `AI_MCP_PORT` | MCP 服务端口。 | | `DEEPSEEK_API_KEY` | DeepSeek API 密钥。 | | `DEEPSEEK_BASE_URL` | DeepSeek API 地址。 | | `DEEPSEEK_MODEL` | 模型名称,按实际账号支持的模型配置。 | | `MES_BACKEND_URL` | 通用 MES 后端接口地址。 | | `SPC_BACKEND_URL` | SPC 专用 `.ashx` 后端地址。 | | `AI_MCP_ALLOW_BACKEND_CALLS` | 是否允许调用 MES 后端,默认仅只读查询。 | | `AI_MCP_ALLOW_SQL_QUERY` | 是否允许直接查询 SQL Server,默认可关闭。 | | `SQL_SERVER`、`SQL_DATABASE`、`SQL_USER`、`SQL_PASSWORD` | 只读数据库连接配置。 | ## 13. 任务节点与实施计划 ### 阶段 1:项目静态分析与知识库设计 | 节点 | 工作内容 | 产出 | 验收标准 | | --- | --- | --- | --- | | 1.1 | 扫描 `src/views`、`src/api`、`src/assets/img/api` | 初始 CSV | 能列出页面、API、接口名、`.ashx`、`type`。 | | 1.2 | 专项识别质量模块 | `quality-module-mapping.csv` | 能列出质量相关页面和查询入口。 | | 1.3 | 专项识别 SPC 图表模块 | `spc-chart-mapping.csv` | 每种 SPC 图表能映射到 API 文件和接口。 | | 1.4 | 构建 JSON 知识库 | `wc-spc-knowledge-base.json` | MCP 服务可加载,`/health` 显示模块数量。 | ### 阶段 2:MCP 服务基础能力 | 节点 | 工作内容 | 产出 | 验收标准 | | --- | --- | --- | --- | | 2.1 | 新增 `mcp-server` 基础服务 | `server.js` | `/health`、`/mcp`、`/api/tools` 可访问。 | | 2.2 | 增加项目知识工具 | MCP tools | 能按关键字查询项目功能和页面。 | | 2.3 | 增加页面导航工具 | `navigate` 动作 | 问“打开 SPC 分析”能返回正确候选页面。 | | 2.4 | 增加 DeepSeek 代理 | 聊天接口 | 浏览器不暴露 API key,服务端可调用模型。 | ### 阶段 3:质量管理查询能力 | 节点 | 工作内容 | 产出 | 验收标准 | | --- | --- | --- | --- | | 3.1 | 建立质量数据查询白名单 | 查询工具配置 | 写接口不出现在可调用工具中。 | | 3.2 | 实现 `query_quality_data` | MCP 工具 | 能按时间、工位、条码等查询质量数据。 | | 3.3 | 实现质量摘要 | 摘要表 | 返回数量、异常、时间范围、关键字段统计。 | | 3.4 | 条件不足提示 | HTML 提示表 | 无条件全量查询被拦截并提示补充条件。 | ### 阶段 4:SPC 图表能力 | 节点 | 工作内容 | 产出 | 验收标准 | | --- | --- | --- | --- | | 4.1 | 标准化 SPC 入参 | 参数解析器 | 能从自然语言抽取时间、工位、图表类型。 | | 4.2 | 接入样本趋势、基本趋势 | MCP 图表工具 | 返回趋势图、明细表、来源表。 | | 4.3 | 接入直方图、正态分布、过程能力 | MCP 图表工具 | 返回分布图、Cp/Cpk、规格线表。 | | 4.4 | 接入排列图、X-R、X-S | MCP 图表工具 | 返回多图、控制线、异常点表。 | | 4.5 | 图表解释 | AI 解释结果 | 能解释趋势、超限、异常点和建议关注项。 | ### 阶段 5:前端助手集成 | 节点 | 工作内容 | 产出 | 验收标准 | | --- | --- | --- | --- | | 5.1 | 新增 AI 助手组件 | `DeepSeekAssistant` | 可拖拽、可折叠、可清空。 | | 5.2 | 挂载到 `App.vue` | 全局助手 | 登录后各页面均可看到助手。 | | 5.3 | HTML 表格渲染 | 消息展示 | 表格样式规范,长字段不撑破窗口。 | | 5.4 | 图表渲染 | ECharts 容器 | SPC 查询可展示图表和表格。 | | 5.5 | 页面跳转动作 | 路由联动 | AI 能打开匹配到的项目页面。 | ### 阶段 6:脚本、配置与验收 | 节点 | 工作内容 | 产出 | 验收标准 | | --- | --- | --- | --- | | 6.1 | 增加启动脚本 | `scripts/start-daily.*` | 一键启动 MCP 服务。 | | 6.2 | 增加停止和状态脚本 | `scripts/stop-ai.*`、`scripts/ai-status.*` | 能查看和停止服务。 | | 6.3 | 增加 package 脚本 | `ai:mcp`、`kb:build` 等 | 命令可执行。 | | 6.4 | 编写使用说明 | `mcp-server/README.md` | 说明配置、启动、常见问题。 | | 6.5 | 最终测试 | 验收清单 | 功能问答、质量查询、SPC 图表均通过。 | ## 14. 验收用例 | 编号 | 用户问题 | 期望结果 | | --- | --- | --- | | A1 | “项目里有哪些质量管理功能?” | 返回质量模块表,包含页面、接口数量、可查询能力。 | | A2 | “打开 SPC 分析页面” | 返回页面表并跳转到匹配的 SPC 页面。 | | A3 | “查询最近 7 天某工位的质量数据前 20 条” | 返回查询条件表、数据表、来源表。 | | A4 | “画某工位某测量项最近 7 天的样本趋势图” | 返回趋势图、统计摘要表、明细表。 | | A5 | “看这个测量项目的过程能力,USL 是 10,LSL 是 5” | 返回过程能力图、Cp/Cpk 表、规格线表和解释。 | | A6 | “生成 X-R 控制图” | 条件完整时返回均值图和极差图;条件不足时返回补充条件表。 | | A7 | “删除质量数据” | 拒绝执行,返回安全说明表。 | | A8 | “查全部质量表所有数据” | 拒绝全量查询,提示补充时间和过滤条件。 | ## 15. 关键技术约束 | 约束 | 处理方案 | | --- | --- | | Vue 版本较旧 | 沿用 Vue 2、Element UI、ECharts 4,不引入新前端框架。 | | 编码显示可能存在历史问题 | 新增文件统一 UTF-8,避免复制乱码文本;页面展示文字重新整理。 | | 现有接口返回格式复杂 | MCP 服务做适配层,不要求现有接口改造。 | | 动态菜单由后端控制 | 知识库只用于推荐和跳转,权限仍由现有系统控制。 | | DeepSeek 模型名称需按实际账号确认 | 配置项保留 `DEEPSEEK_MODEL`,默认值可按环境调整。 | ## 16. 最终交付清单 | 类型 | 交付物 | | --- | --- | | 前端组件 | `src/components/DeepSeekAssistant/index.vue` | | 前端挂载 | `src/App.vue` 的最小变更 | | 前端配置 | `static/config.js` 增加 `aiMcpURL` | | MCP 服务 | `mcp-server/server.js`、`mcp-server/build-knowledge-base.js`、`mcp-server/README.md` | | 知识库文档 | `docs/*.csv`、`docs/wc-spc-static-analysis.md`、`docs/wc-spc-knowledge-base.json` | | 运维脚本 | `scripts/start-daily.*`、`scripts/stop-ai.*`、`scripts/ai-status.*` | | 包脚本 | `package.json` 中新增 AI 和知识库脚本 | | 验收说明 | 使用说明、配置说明、验收用例 | ## 17. 实施原则总结 | 原则 | 说明 | | --- | --- | | 新增优先 | 尽量新增组件、服务、文档和配置,不改原业务逻辑。 | | 只读优先 | AI 自动查询默认只读,写操作禁止。 | | 真实数据优先 | 能调用现有接口查到真实数据时,不让模型猜测。 | | 表格优先 | 回答、错误、来源、摘要都尽量表格化。 | | 图表结构化 | SPC 图表用标准结构渲染,不执行模型生成脚本。 | | 可追溯 | 每条数据回答都展示来源页面、接口或表对象。 |