# JY1.0 项目结构、功能全景与 MCP 服务设计文档 ## 1. 文档目标 本文档用于指导为「景耀 JY1.0」MES 前端项目创建配套 MCP 服务,使 AI 助手能够安全、可控地理解项目结构、查询业务功能、定位页面/API、生成代码建议、辅助排障,并在授权范围内调用项目相关工具。 本文档覆盖: - 当前前端项目结构与技术栈。 - 现有业务功能模块全景。 - 前端与 ASP.NET `.ashx` 后端的通信规范。 - MCP 服务的资源、工具、提示词、权限和数据模型设计。 - MCP 服务的实施路线、部署方式和验收标准。 ## 2. 项目概述 JY1.0 是江苏高精机械设备有限公司使用的制造执行系统前端,基于 Vue 2 和 Element UI 构建,后端以 ASP.NET 通用处理程序 `.ashx` 暴露统一入口。系统覆盖销售、基础资料、技术、精工车间、装配、采购、仓储、设备、可视化等制造业务。 项目特点: - 前端为单页应用,基于 `vue-element-admin` 改造。 - 运行时路由主要由后端菜单数据动态注入。 - 业务请求统一 POST 到 `MESCommonBase.ashx` 一类端点。 - 业务字段大量使用中文数据库字段名。 - 页面以 Element UI 表单、筛选栏、表格、弹窗、分页为主。 - 文件上传下载、Excel 导出、图片/PDF 查看属于重要业务能力。 ## 3. 技术栈 | 类别 | 技术 | | --- | --- | | 框架 | Vue 2.5.17 | | 路由 | Vue Router 3.0.7 | | 状态 | Vuex 3.0.1 | | UI | Element UI 2.13 | | HTTP | Axios 0.18 | | 图表 | ECharts 4 | | 构建 | Webpack 4 | | 样式 | SCSS、Stylus | | 文档/导出 | xlsx、xlsx-style、FileSaver、jsPDF、html2canvas、docxtemplater | | 鉴权存储 | js-cookie | | 富文本 | TinyMCE 4.7.5 | | 预览 | v-viewer | 约束: - 不使用 Vue 3。 - 不使用 TypeScript。 - 不使用 Composition API。 - 业务页面保持 Vue 2 Options API 风格。 - 请求封装沿用现有 `CreateData`、`ExecDatabase`、`getTable` 等全局方法。 ## 4. 项目目录结构 根目录主要内容: | 路径 | 说明 | | --- | --- | | `src/` | 前端源码 | | `src/views/` | 页面视图,按业务模块组织 | | `src/api/` | API 函数,部分新页面直接在视图内调用 `CreateData` | | `src/utils/` | 请求封装、CRUD 工具、鉴权、通用方法 | | `src/router/` | 静态路由与动态路由生成 | | `src/store/` | Vuex 模块 | | `src/components/` | 通用组件 | | `src/icons/svg/` | SVG 图标 | | `src/styles/` | 全局样式 | | `static/config.js` | 服务地址、上传下载地址、WebSocket 地址 | | `build/`、`config/` | Webpack 构建配置 | | `dist/`、`dist.zip`、`dist.7z` | 构建产物 | `src/views` 已识别的业务目录: | 模块目录 | 功能定位 | | --- | --- | | `SalesManagement` | 销售、合同、订单、发货、售后、统计分析 | | `BasicData` | 基础资料、人员、角色、菜单、工艺、班次、日历、物料 | | `TechnologyCenter` | 技术中心、BOM、图纸、物料查询、图纸确认 | | `SeikoWorkshop` | 精工车间、工艺制定、生产计划、派工、执行、质检、追溯 | | `AssemblyManagement` | 装配任务、装配执行、领料、补货、滑台/专机装配 | | `PurchasingManagement` | 采购订单、到货通知、供应商、外协采购查询 | | `WarehouseManagement` | 仓储、入库、出库、库存、盘点、调拨、补货、库位 | | `DeviceManagement` | 设备状态、点检、维修、实时监控、能耗、异常原因 | | `ManufacturingCenter` | 制造中心相关页面 | | `WarehouseVisualization` | 仓库可视化 | | `dashboard` | 首页仪表盘 | | `login` | 登录页 | | `layout` | 主框架、导航、侧边栏、标签页 | ## 5. 业务功能全景 ### 5.1 登录、权限与菜单 核心文件: - `src/api/login.js` - `src/store/modules/user.js` - `src/store/modules/permission.js` - `src/router/index.js` - `src/router/getRouter.js` - `src/permission.js` 功能: - 用户名密码登录。 - Cookie 保存 token、用户姓名、人员流水号、工号等。 - 登录后获取用户信息和角色菜单。 - 后端返回菜单数据,前端按 `pid` 递归构建路由。 - 动态组件路径映射到 `src/views` 下的 Vue 文件。 - 路由 `meta.title` 为中文标题,`meta.icon` 对应 `src/icons/svg` 文件。 动态路由核心模式: ```js component: () => import(`@/views${data[i].component}`) ``` ### 5.2 统一请求机制 核心文件: - `src/utils/request.js` - `src/utils/curd.js` - `static/config.js` 请求入口: - Axios `baseURL` 来自 `static/config.js` 的 `request_config`。 - 业务请求 `url` 通常为空字符串。 - 由后端统一入口根据 `name` 字段路由到存储过程或 SQL 逻辑。 标准请求字段: | 字段 | 说明 | | --- | --- | | `type` | 操作类型,常见为 `1` 查询、`2` 增删改、`7` 批量,也存在项目内扩展值如 `11`、`12`、`2001` | | `name` | 后端过程名、业务路由名或特殊 SQL 字符串 | | `param` | 参数,旧 API 多为 `key=value&key2=value2`,新全局方法多为参数数组 JSON 字符串 | | `pageSize` | 分页大小 | | `pageList` | 当前页 | | `UserID` | 当前用户,来自 Cookie | | `ModularID` | 当前路由路径 | 全局工具: | 方法 | 用途 | | --- | --- | | `CreateData(type, name, data, pageSize, pageList)` | 构建后端请求参数 | | `ExecDatabase(num)` | 向主服务发送 POST | | `ExecDatabase1(num)` | 向备用服务发送 POST | | `getTable(requestData, param, e)` | 分页表格查询并格式化日期 | | `getData(requestData, carrier, param)` | 普通查询 | | `getSelect(requestData, select, carrier, param)` | 下拉框查询 | | `addForm(form, callback)` | 打开新增表单并重置 | | `editForm(row, form, callback)` | 行数据填充到编辑表单 | | `addTable(...)` | 新增表格行 | | `editTable(...)` | 编辑表格行 | | `deleteRow(...)` | 删除表格行 | | `exportExcel_NPOI(param)` | 触发后端 NPOI Excel 导出 | | `setColumnWidth(str)` | 按中文字段名设置表格列宽 | ### 5.3 基础数据 目录: - `src/views/BasicData` - `src/api/BasicData` 覆盖功能: - 菜单管理。 - 系统角色维护。 - 用户权限管理。 - 人员管理。 - 车间人员角色管理。 - 班次管理。 - 工厂日历。 - 物料维护。 - 零件编号维护。 - 工艺分类、工艺名称、工艺要求维护。 - 设备能力设置。 - 设备人员维护。 - 项目管理显示。 MCP 需识别这些页面与 API 名称,支持按中文功能名定位文件、定位后端 `name` 调用点。 ### 5.4 销售管理 目录: - `src/views/SalesManagement` - `src/api/SalesManagement` 覆盖功能: - 客户管理。 - 公司信息维护。 - 产品维护。 - 报价创建。 - 销售合同、机床合同、售后合同。 - 合同查询、合同审核、合同新版页面。 - 订单管理、订单下发、订单查询、订单审核。 - 订单进度、订单进度总览、订单追溯、物料追溯。 - 发货通知、发货记录、发货审核、产品发货、发货通知查询。 - 售后、售后查询。 - 统计分析:区域销售、订单趋势、产品类别、产品占比、产品定价、设备利用率、工时统计等。 ### 5.5 技术中心 目录: - `src/views/TechnologyCenter` 覆盖功能: - BOM 基础数据。 - BOM 维护、BOM 查询、BOM 库存查询。 - BOM 导入。 - 物料维护、物料查询。 - 零件图导入。 - 图纸确认、图纸确认分发、图纸确认查询。 ### 5.6 精工车间 目录: - `src/views/SeikoWorkshop` 覆盖功能: - 工艺制定、工艺文档管理、工序查询。 - 生产计划、生产任务查询。 - 车间派工、生产执行、在加工零件。 - 零件追溯、订单工时、工时统计。 - 工况页面、设备监控。 - 物料审核、采购合同审核。 - 质检维护、自检记录、质检信息查询、采购质检、其他质检。 - 报废投产、其他工作完成、测试数据录入。 - Andon/异常提示相关页面。 ### 5.7 装配管理 目录: - `src/views/AssemblyManagement` 覆盖功能: - 装配任务查询。 - 接收装配任务。 - 装配执行。 - 专机装配执行。 - 滑台装配执行。 - 补货单、滑台补货单。 - 装配领料、临时领料。 - 装配开始、完成、自检、暂停、恢复、打回。 - 装配参数、调试数据、滑台调试数据维护。 ### 5.8 采购管理 目录: - `src/views/PurchasingManagement` 覆盖功能: - 供应商管理。 - 到货通知。 - 采购订单。 - 外协采购订单。 - 订单查询。 - 外协订单查询。 - 外购件查询。 - 外协件查询。 ### 5.9 仓储管理 目录: - `src/views/WarehouseManagement` 覆盖功能: - 采购件入库。 - 外协入库。 - 入库扫描。 - 入库记录、采购入库记录、外协记录、主轴库存记录。 - 出库、出库明细、采购出库记录。 - 领料单查询、物料领用。 - 退料记录。 - 库存查询、库存记录、库存汇总、库存盘点。 - 调拨查询、外协调拨。 - 补货、补货查询、新补货查询。 - 库位管理、物料库位、模具管理。 - 外协厂维护。 - 仓库可视化。 ### 5.10 设备管理 目录: - `src/views/DeviceManagement` 覆盖功能: - 设备状态。 - 设备状态监控。 - 设备信息。 - 实时信息、历史信息、当前监控。 - 点检、点检记录。 - 维修记录。 - 设备能耗。 - 灯控。 - 不合格原因。 ### 5.11 文件、打印、导出和可视化 功能: - 文件上传:`uploadFile.ashx`、`MESUploadFile.ashx`、`uploadOP.ashx`、`uploadPerson.ashx` 等。 - 文件下载:`downloadFile.ashx`、`MESDownloadFile.ashx`、`MESDownloadFileNew.ashx` 等。 - Excel 导出:通过 `ExcelDownLoad` 指向统一服务。 - 图片/PDF 查看:`v-viewer`、文件服务接口。 - 条码/二维码:`@xkeshi/vue-barcode`、`qrcode`。 - 图表:ECharts。 - 3D/可视化:仓储可视化、设备监控中存在图片、布局图和部分 Three.js 依赖。 ## 6. MCP 服务总体设计 ### 6.1 MCP 服务定位 MCP 服务作为 AI 助手和 JY1.0 项目之间的受控桥梁,负责提供: - 项目结构检索。 - 页面、组件、API、路由定位。 - 业务功能索引。 - 后端 `name` 调用点分析。 - 中文字段与页面表格列提取。 - 代码规范检查。 - 文档知识库检索。 - 可选的只读运行状态查询。 - 经审批的代码生成建议。 MCP 服务不应直接绕过现有前端权限去修改生产业务数据。所有业务数据写操作必须默认关闭,除非后续建立明确的审批、审计和沙箱机制。 ### 6.2 设计原则 - 只读优先:默认工具只读取代码、文档和元数据。 - 最小权限:按工具粒度授权,不暴露任意 shell。 - 中文友好:所有业务搜索支持中文字段、中文页面名、中文过程名。 - 可追溯:工具返回文件路径、行号、调用链、数据来源。 - 与现有规范兼容:保留 Vue 2、Element UI、统一 `.ashx` 请求模式。 - 安全隔离:生产数据库写操作不通过 MCP 直接暴露。 ### 6.3 推荐技术选型 | 层 | 方案 | | --- | --- | | MCP SDK | Node.js MCP SDK 或 Python MCP SDK | | 语言 | Node.js 18+ 优先,便于解析 JS/Vue 项目 | | 传输 | 本地 stdio 用于 IDE/桌面助手;内网可选 Streamable HTTP | | 索引 | ripgrep + 自建 JSON 索引 | | 代码解析 | `@babel/parser`、`vue-template-compiler`、正则辅助 | | 文档解析 | Markdown 原生、docx 可用 mammoth | | 向量库 | 本地 Chroma/Qdrant/Milvus,轻量阶段可用 SQLite + 向量扩展 | | 嵌入模型 | DeepSeek 不提供嵌入时,可选 bge-m3、bge-large-zh、text2vec | | LLM | DeepSeek Chat / DeepSeek Reasoner | ## 7. MCP Resources 设计 Resources 用于暴露只读上下文。 | Resource URI | 内容 | 来源 | | --- | --- | --- | | `jy://project/overview` | 项目概览、技术栈、目录说明 | 自动生成 | | `jy://project/package` | `package.json` 依赖、脚本 | `package.json` | | `jy://project/config` | 服务地址配置摘要,敏感值脱敏 | `static/config.js` | | `jy://router/static` | 静态路由 | `src/router/index.js` | | `jy://router/dynamic-builder` | 动态路由生成逻辑 | `src/router/getRouter.js` | | `jy://api/request-wrapper` | 请求封装说明 | `src/utils/request.js`、`src/utils/curd.js` | | `jy://modules/list` | 业务模块目录与页面数量 | 扫描 `src/views` | | `jy://api/list` | API 文件与导出函数 | 扫描 `src/api` | | `jy://icons/list` | SVG 图标清单 | 扫描 `src/icons/svg` | | `jy://docs/index` | 项目文档索引 | `docs/`、`AGENTS.md` | ## 8. MCP Tools 设计 ### 8.1 项目结构工具 #### `scan_project_structure` 用途:返回项目目录树、模块数量、关键文件状态。 输入: ```json { "maxDepth": 3, "includeFiles": true } ``` 输出: ```json { "root": "D:/景耀/JY1.0", "modules": ["SalesManagement", "BasicData"], "keyFiles": ["package.json", "static/config.js"], "tree": [] } ``` #### `list_business_modules` 用途:列出 `src/views` 下全部业务模块、页面数量、页面路径。 输入: ```json { "module": "WarehouseManagement", "includePages": true } ``` 输出需包含: - 模块英文目录。 - 建议中文名称。 - 页面列表。 - 每个页面的 `index.vue` 路径。 ### 8.2 页面与组件分析工具 #### `analyze_vue_page` 用途:分析指定 Vue 页面。 输入: ```json { "path": "src/views/WarehouseManagement/PurchasePartsStorage/index.vue" } ``` 输出: - 页面标题推断。 - template 使用的 Element UI 组件。 - 表格列中文字段。 - data 字段。 - methods 列表。 - 调用的 `CreateData`/`ExecDatabase`。 - 后端 `name` 清单。 - 上传下载/打印/导出能力。 #### `find_pages_by_keyword` 用途:按中文或英文关键词查页面。 输入: ```json { "keyword": "入库", "scope": "views" } ``` 输出: - 命中文件。 - 命中行号。 - 上下文片段。 - 可能关联模块。 ### 8.3 API 与后端过程分析工具 #### `list_backend_operations` 用途:扫描项目中所有 `CreateData`、API 文件 `name` 字段、SQL 字符串。 输入: ```json { "module": "AssemblyManagement", "operationType": "query" } ``` 输出字段: | 字段 | 说明 | | --- | --- | | `file` | 文件路径 | | `line` | 行号 | | `type` | 请求类型 | | `name` | 后端过程名或 SQL | | `params` | 参数名列表 | | `page` | 页面路径 | #### `trace_backend_name` 用途:根据后端 `name` 反查调用点。 输入: ```json { "name": "装配执行_开始装配" } ``` 输出: - 调用页面。 - 方法名。 - 参数来源。 - 用户操作入口。 - 相关表格/弹窗。 ### 8.4 字段与表格工具 #### `extract_table_columns` 用途:提取指定页面所有 `el-table-column` 的中文 label、prop、slot 字段。 输入: ```json { "path": "src/views/SeikoWorkshop/PartTraceability/index.vue" } ``` 输出: ```json { "tables": [ { "columns": [ {"label": "订单号", "prop": "订单号", "width": "140px"} ] } ] } ``` #### `find_chinese_field` 用途:根据中文字段名搜索全项目引用。 输入: ```json { "field": "订单编号" } ``` 输出: - 页面引用。 - API 参数引用。 - 表格列引用。 - 表单字段引用。 ### 8.5 代码规范检查工具 #### `check_jy_conventions` 用途:检查指定变更或文件是否符合本项目约束。 检查项: - 是否使用 Vue 2 Options API。 - 是否引入 Vue 3/Composition API。 - 是否绕过 `CreateData`/`ExecDatabase` 自行封装业务请求。 - 是否使用中文字段名。 - 是否符合 `app-container > el-card > 搜索栏 + el-table` 模式。 - 是否使用 `.then().catch()` 而非 `async/await`。 - 是否新增第三方库。 - 深度选择器是否使用 `>>>`。 输入: ```json { "paths": ["src/views/WarehouseManagement/NewPage/index.vue"] } ``` 输出: - 违规等级。 - 文件路径和行号。 - 修改建议。 ### 8.6 文档与知识库工具 #### `search_project_docs` 用途:检索 `AGENTS.md`、`docs/`、README、项目档案等文档。 输入: ```json { "query": "新增页面开发流程", "topK": 5 } ``` 输出: - 文档片段。 - 文件路径。 - 相关度。 #### `search_code_knowledge` 用途:从代码索引和向量知识库中检索相关页面/API/规范。 输入: ```json { "query": "如何实现采购件入库页面的批量入库", "topK": 8 } ``` 输出: - 命中代码片段。 - 相关文档。 - 可追溯引用。 ### 8.7 可选业务查询工具 如需让 AI 助手查询真实业务数据,应单独设计白名单工具,不开放任意 SQL。 示例: - `query_menu_by_user` - `query_role_modules` - `query_dictionary` - `query_order_status` - `query_inventory_summary` 要求: - 只读。 - 参数校验。 - 绑定服务账号。 - 返回数据脱敏。 - 写审计日志。 ## 9. MCP Prompts 设计 ### 9.1 新增页面 Prompt 名称:`create_jy_vue_page` 用途:指导 AI 按项目规范新增 Vue 页面。 输入: ```json { "module": "WarehouseManagement", "pageName": "库存预警", "backendNames": ["仓储管理_库存预警_查询"], "fields": ["物料名称", "图号", "库存", "最低库存"] } ``` 输出: - 页面文件建议路径。 - API 调用建议。 - Vue 2 代码骨架。 - 表格列定义。 - 查询条件。 - 需要后端配置的菜单字段。 ### 9.2 故障排查 Prompt 名称:`debug_jy_request` 用途:根据报错、页面、后端 `name` 定位问题。 输出: - 请求链路。 - 可能原因。 - 需要检查的 Cookie、路由、参数、后端过程。 - 前端修改建议。 ### 9.3 功能说明 Prompt 名称:`explain_jy_feature` 用途:解释某个页面或模块功能。 输出: - 功能入口。 - 页面操作流程。 - 涉及后端过程。 - 关键字段。 - 相关页面。 ## 10. MCP 服务内部索引设计 ### 10.1 文件索引 ```json { "path": "src/views/WarehouseManagement/PurchasePartsStorage/index.vue", "module": "WarehouseManagement", "type": "vue", "mtime": "2026-04-23T16:54:00", "size": 123456 } ``` ### 10.2 页面索引 ```json { "path": "src/views/AssemblyManagement/AssemblyExecution/index.vue", "module": "AssemblyManagement", "components": ["el-table", "el-dialog", "el-select"], "methods": ["searchTable", "submitStart", "submitFinish"], "backendNames": ["装配执行_开始装配", "装配执行_完成装配"], "fields": ["订单号", "产品名称", "状态"] } ``` ### 10.3 后端操作索引 ```json { "name": "仓储管理_采购件入库_循环执行", "type": "12", "params": ["物料流水号组", "实际到货数量组", "入库人员流水号"], "callers": [ { "file": "src/views/WarehouseManagement/PurchasePartsStorage/index.vue", "method": "submitInStorage", "line": 800 } ] } ``` ### 10.4 字段索引 ```json { "field": "订单号", "occurrences": [ { "file": "src/views/SalesManagement/OrderInquiry/index.vue", "kind": "table-column" } ] } ``` ## 11. 安全设计 ### 11.1 权限分层 | 等级 | 能力 | 默认 | | --- | --- | --- | | L0 | 读项目文档 | 开启 | | L1 | 读项目代码 | 开启 | | L2 | 生成建议,不写文件 | 开启 | | L3 | 写项目文档 | 需授权 | | L4 | 修改前端代码 | 需授权 | | L5 | 调用只读业务接口 | 需服务账号和审计 | | L6 | 调用写业务接口 | 默认禁止 | ### 11.2 敏感信息处理 - `static/config.js` 中 IP、文件服务地址可展示,但生产账号、密钥必须脱敏。 - 用户提供的账号密码不写入文档和代码。 - DeepSeek API Key 只能放环境变量或密钥管理服务。 - MCP 日志不得记录完整 Cookie、token、密码、身份证、手机号等敏感数据。 ### 11.3 业务写操作限制 禁止通过通用工具暴露: - 任意 SQL 执行。 - 任意 `type=2/7/12` 写操作。 - 任意文件删除。 - 任意生产数据库更新。 如后续确需写操作,必须满足: - 白名单过程名。 - 参数 schema。 - 人工确认。 - 审计日志。 - 回滚方案。 ## 12. 部署设计 ### 12.1 本地 stdio 模式 适合开发者 IDE、Codex、Claude Desktop 等本地 AI 工具。 启动方式: ```bash node server.js --root D:/景耀/JY1.0 ``` 配置示例: ```json { "mcpServers": { "jy-mes": { "command": "node", "args": ["D:/景耀/JY1.0/mcp-server/server.js", "--root", "D:/景耀/JY1.0"] } } } ``` ### 12.2 内网 HTTP 模式 适合多人共享 AI 助手。 建议: - 部署在内网服务器。 - 使用反向代理和 HTTPS。 - 增加用户认证。 - 按用户角色限制工具。 - 建立调用日志。 ## 13. 实施路线 ### 阶段 1:只读项目索引 目标: - 搭建 MCP 服务骨架。 - 实现 `scan_project_structure`、`list_business_modules`。 - 建立页面/API/字段索引。 - 支持按关键词搜索。 交付: - `mcp-server/` 服务。 - `index-store/` 索引文件。 - 基础 Resources 和 Tools。 ### 阶段 2:Vue/API 深度分析 目标: - 解析 `.vue` 页面结构。 - 提取 `el-table-column`。 - 提取 `CreateData` 调用和参数。 - 反查后端 `name` 调用链。 交付: - `analyze_vue_page`。 - `list_backend_operations`。 - `trace_backend_name`。 - `check_jy_conventions`。 ### 阶段 3:文档知识库接入 目标: - 将 `AGENTS.md`、`docs/`、关键源码说明入库。 - 支持语义检索。 - AI 回答必须给出来源。 交付: - 知识库构建脚本。 - 文档检索工具。 - 知识库更新机制。 ### 阶段 4:AI 助手集成 目标: - 接入 DeepSeek。 - 支持项目问答、功能解释、代码生成建议、排障。 - 支持 MCP 工具调用。 交付: - AI 助手后端服务。 - Web 聊天界面或集成到现有系统。 - 权限和审计。 ### 阶段 5:受控业务查询 目标: - 增加只读业务查询白名单。 - 支持订单、库存、设备状态、任务状态等查询。 交付: - 只读业务 API 代理。 - 参数 schema。 - 审计日志。 ## 14. 验收标准 MCP 服务应满足: - 能列出全部业务模块和页面。 - 能按中文关键词定位页面和后端调用。 - 能分析指定 Vue 文件中的表格列、方法、请求。 - 能反查某个后端 `name` 被哪些页面调用。 - 能根据项目规范检查新增页面。 - 能检索项目文档并返回来源。 - 不暴露任意 shell、任意 SQL、生产写操作。 - 生成代码建议符合 Vue 2、Element UI、现有全局 CRUD 方法。 ## 15. 后续建议 - 为后端存储过程建立正式清单,补齐参数、返回字段和业务含义。 - 将页面中文标题、路由路径、组件路径、后端 `name` 维护成可生成的功能矩阵。 - 将编码异常文件逐步统一为 UTF-8,降低 AI 和工具解析难度。 - 将现有散落在页面内的 API 调用逐步沉淀到 `src/api`,便于 MCP 建模和复用。