更新维修记录、精工车间开发流程,新增文档和物料采购进度功能
This commit is contained in:
756
docs/JY1.0-AI助手知识库与DeepSeek对接设计文档.md
Normal file
756
docs/JY1.0-AI助手知识库与DeepSeek对接设计文档.md
Normal file
@@ -0,0 +1,756 @@
|
|||||||
|
# JY1.0 AI 助手、知识库与 DeepSeek 对接设计文档
|
||||||
|
|
||||||
|
## 1. 文档目标
|
||||||
|
|
||||||
|
本文档用于设计面向「景耀 JY1.0」MES 项目的 AI 助手。该助手应具备项目知识问答、业务功能解释、代码定位、开发辅助、排障分析、规范检查和可选业务数据查询能力,并通过 MCP 服务读取项目上下文,通过知识库检索长期知识,通过 DeepSeek 模型生成答案。
|
||||||
|
|
||||||
|
## 2. AI 助手定位
|
||||||
|
|
||||||
|
AI 助手面向三类用户:
|
||||||
|
|
||||||
|
| 用户 | 主要诉求 |
|
||||||
|
| --- | --- |
|
||||||
|
| 前端开发 | 快速理解页面、定位 API、生成符合项目规范的 Vue 2 代码 |
|
||||||
|
| 实施/运维 | 查询功能入口、解释业务流程、排查请求和权限问题 |
|
||||||
|
| 管理/业务人员 | 了解系统模块、查询功能说明、按权限查询只读业务状态 |
|
||||||
|
|
||||||
|
助手边界:
|
||||||
|
|
||||||
|
- 可以解释项目、检索代码、生成建议。
|
||||||
|
- 可以在授权后读取只读业务数据。
|
||||||
|
- 不默认执行生产写操作。
|
||||||
|
- 不保存用户密码、Cookie、token。
|
||||||
|
- 不绕过现有系统权限。
|
||||||
|
|
||||||
|
## 3. 总体架构
|
||||||
|
|
||||||
|
推荐架构:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
U["用户"] --> UI["AI 助手界面"]
|
||||||
|
UI --> API["AI 助手服务"]
|
||||||
|
API --> LLM["DeepSeek API"]
|
||||||
|
API --> RAG["知识库检索服务"]
|
||||||
|
API --> MCP["JY1.0 MCP 服务"]
|
||||||
|
MCP --> Code["项目代码/文档"]
|
||||||
|
MCP --> Meta["项目索引"]
|
||||||
|
RAG --> VDB["向量库"]
|
||||||
|
RAG --> Doc["文档与代码片段"]
|
||||||
|
API --> Audit["审计日志"]
|
||||||
|
API -.可选只读.-> Biz["MES 业务只读接口"]
|
||||||
|
```
|
||||||
|
|
||||||
|
核心组件:
|
||||||
|
|
||||||
|
| 组件 | 职责 |
|
||||||
|
| --- | --- |
|
||||||
|
| AI 助手界面 | 聊天入口、问题输入、引用展示、审批确认 |
|
||||||
|
| AI 助手服务 | 会话管理、工具编排、RAG 编排、权限控制 |
|
||||||
|
| DeepSeek API | 自然语言理解、推理、答案生成 |
|
||||||
|
| MCP 服务 | 项目代码、结构、页面、API、规范工具 |
|
||||||
|
| 知识库 | 项目文档、代码摘要、业务流程、接口说明 |
|
||||||
|
| 向量库 | 语义检索 |
|
||||||
|
| 审计日志 | 记录工具调用、数据访问、用户问题 |
|
||||||
|
| 业务只读接口 | 可选,查询订单、库存、设备、任务等状态 |
|
||||||
|
|
||||||
|
## 4. DeepSeek 对接方案
|
||||||
|
|
||||||
|
### 4.1 模型选择
|
||||||
|
|
||||||
|
建议按任务选择模型:
|
||||||
|
|
||||||
|
| 任务 | 推荐模型 |
|
||||||
|
| --- | --- |
|
||||||
|
| 日常项目问答、代码解释 | `deepseek-chat` |
|
||||||
|
| 复杂设计、技术路线、长链路排障 | `deepseek-reasoner` |
|
||||||
|
| 低成本批量摘要 | `deepseek-chat` |
|
||||||
|
|
||||||
|
DeepSeek API 兼容 OpenAI 风格的 Chat Completions 接口。建议在服务端使用 OpenAI SDK 兼容方式接入,避免前端暴露 API Key。
|
||||||
|
|
||||||
|
### 4.2 配置方式
|
||||||
|
|
||||||
|
环境变量:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
DEEPSEEK_API_KEY=你的密钥
|
||||||
|
DEEPSEEK_BASE_URL=https://api.deepseek.com
|
||||||
|
DEEPSEEK_MODEL=deepseek-chat
|
||||||
|
```
|
||||||
|
|
||||||
|
Node.js 示例:
|
||||||
|
|
||||||
|
```js
|
||||||
|
import OpenAI from 'openai'
|
||||||
|
|
||||||
|
const client = new OpenAI({
|
||||||
|
apiKey: process.env.DEEPSEEK_API_KEY,
|
||||||
|
baseURL: process.env.DEEPSEEK_BASE_URL || 'https://api.deepseek.com'
|
||||||
|
})
|
||||||
|
|
||||||
|
export function chat(messages) {
|
||||||
|
return client.chat.completions.create({
|
||||||
|
model: process.env.DEEPSEEK_MODEL || 'deepseek-chat',
|
||||||
|
messages: messages,
|
||||||
|
temperature: 0.2
|
||||||
|
})
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.3 调用策略
|
||||||
|
|
||||||
|
- 业务问答:先检索知识库,再调用 DeepSeek。
|
||||||
|
- 代码定位:先调用 MCP 工具,再让模型汇总。
|
||||||
|
- 复杂问题:先让模型生成检索计划,再调用 MCP/RAG,再二次回答。
|
||||||
|
- 代码生成:必须注入 `AGENTS.md` 规范和相似页面代码片段。
|
||||||
|
- 排障:必须附带请求链路、文件路径、后端 `name`、参数。
|
||||||
|
|
||||||
|
### 4.4 Prompt 基线
|
||||||
|
|
||||||
|
系统提示词建议:
|
||||||
|
|
||||||
|
```text
|
||||||
|
你是景耀 JY1.0 MES 项目的 AI 助手。项目使用 Vue 2、Element UI、Vuex、Vue Router、Axios、Webpack 4,不使用 Vue 3、TypeScript、Composition API。业务请求统一通过 MESCommonBase.ashx,使用 CreateData 和 ExecDatabase 构造请求。数据库字段和页面字段多为中文,回答和代码必须保留中文字段名。你必须优先根据知识库和 MCP 工具返回的项目事实回答;不确定时说明需要检索或确认。不得建议绕过权限、不得生成生产写库脚本、不得暴露密钥。
|
||||||
|
```
|
||||||
|
|
||||||
|
开发辅助提示词应补充:
|
||||||
|
|
||||||
|
```text
|
||||||
|
生成代码时遵循现有页面结构:div.app-container > el-card > 搜索栏 + el-table。使用 Vue 2 Options API、Element UI、.then().catch(),不新增第三方库。新增/编辑/删除优先使用全局工具方法。表格字段和请求参数使用后端中文字段名。
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. 知识库设计
|
||||||
|
|
||||||
|
### 5.1 知识库目标
|
||||||
|
|
||||||
|
知识库用于解决模型“不知道项目细节”的问题。它应覆盖:
|
||||||
|
|
||||||
|
- 项目规则。
|
||||||
|
- 业务模块说明。
|
||||||
|
- 页面与 API 映射。
|
||||||
|
- 后端过程名说明。
|
||||||
|
- 常见问题。
|
||||||
|
- 新增页面范式。
|
||||||
|
- 部署和配置说明。
|
||||||
|
- 历史变更与版本记录。
|
||||||
|
|
||||||
|
### 5.2 知识来源
|
||||||
|
|
||||||
|
| 来源 | 内容 | 入库方式 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `AGENTS.md` | 项目 Agent 规则、代码规范 | 原文切片 |
|
||||||
|
| `docs/` | 设计文档、实施文档 | 原文切片 |
|
||||||
|
| `package.json` | 依赖和脚本 | 结构化摘要 |
|
||||||
|
| `src/router` | 路由机制 | 代码摘要 |
|
||||||
|
| `src/utils/request.js` | 请求封装 | 代码摘要 |
|
||||||
|
| `src/utils/curd.js` | 全局 CRUD 方法 | 代码摘要 |
|
||||||
|
| `src/views` | 页面功能、字段、后端调用 | 自动抽取摘要 |
|
||||||
|
| `src/api` | API 函数和后端 `name` | 自动抽取摘要 |
|
||||||
|
| `static/config.js` | 服务地址类型 | 脱敏摘要 |
|
||||||
|
| `static/项目档案.docx` | 项目档案 | docx 转文本后入库 |
|
||||||
|
|
||||||
|
### 5.3 知识分类
|
||||||
|
|
||||||
|
建议知识库分为以下集合:
|
||||||
|
|
||||||
|
| 集合 | 内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| `project_rules` | AGENTS、编码规范、技术栈 |
|
||||||
|
| `architecture` | 路由、请求、状态、构建、部署 |
|
||||||
|
| `business_modules` | 模块和页面说明 |
|
||||||
|
| `api_operations` | 后端 `name`、参数、调用页面 |
|
||||||
|
| `fields` | 中文字段、表格列、表单项 |
|
||||||
|
| `faq` | 常见问题和排障 |
|
||||||
|
| `change_logs` | 提交记录、变更说明 |
|
||||||
|
|
||||||
|
### 5.4 文档切片规则
|
||||||
|
|
||||||
|
Markdown:
|
||||||
|
|
||||||
|
- 按标题层级切片。
|
||||||
|
- 每片 500 到 1200 中文字。
|
||||||
|
- 保留标题路径。
|
||||||
|
- 保留文件路径。
|
||||||
|
|
||||||
|
Vue 文件:
|
||||||
|
|
||||||
|
- template 摘要:页面结构、表格列、弹窗。
|
||||||
|
- script 摘要:data、methods、CreateData 调用。
|
||||||
|
- style 摘要:仅记录特殊样式。
|
||||||
|
- 大文件不整篇入库,使用结构化抽取。
|
||||||
|
|
||||||
|
API 文件:
|
||||||
|
|
||||||
|
- 每个导出函数作为一个知识单元。
|
||||||
|
- 提取函数名、type、name、param、UserID、ModularID。
|
||||||
|
|
||||||
|
后端过程:
|
||||||
|
|
||||||
|
- 每个 `name` 一个知识单元。
|
||||||
|
- 汇总调用文件和参数。
|
||||||
|
|
||||||
|
### 5.5 知识条目结构
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": "api:仓储管理_采购件入库_循环执行",
|
||||||
|
"collection": "api_operations",
|
||||||
|
"title": "仓储管理_采购件入库_循环执行",
|
||||||
|
"content": "该后端操作由采购件入库页面 submitInStorage 调用,用于批量执行采购件入库...",
|
||||||
|
"metadata": {
|
||||||
|
"source": "src/views/WarehouseManagement/PurchasePartsStorage/index.vue",
|
||||||
|
"module": "WarehouseManagement",
|
||||||
|
"type": "backend_name",
|
||||||
|
"operationType": "12",
|
||||||
|
"fields": ["物料流水号组", "实际到货数量组", "入库人员流水号"],
|
||||||
|
"updatedAt": "2026-06-10"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5.6 向量库选型
|
||||||
|
|
||||||
|
本地/内网优先:
|
||||||
|
|
||||||
|
| 方案 | 适用场景 |
|
||||||
|
| --- | --- |
|
||||||
|
| Chroma | 快速原型、本地部署简单 |
|
||||||
|
| Qdrant | 生产部署、性能和过滤较好 |
|
||||||
|
| Milvus | 大规模、多项目知识库 |
|
||||||
|
| SQLite + sqlite-vec | 单机轻量化 |
|
||||||
|
|
||||||
|
推荐路线:
|
||||||
|
|
||||||
|
- 原型阶段:Chroma 或 SQLite。
|
||||||
|
- 内网生产:Qdrant。
|
||||||
|
- 多系统统一知识库:Milvus。
|
||||||
|
|
||||||
|
### 5.7 Embedding 模型
|
||||||
|
|
||||||
|
DeepSeek 主要用于对话,不建议假设其提供可用的 embedding 服务。中文项目建议:
|
||||||
|
|
||||||
|
| 模型 | 特点 |
|
||||||
|
| --- | --- |
|
||||||
|
| `BAAI/bge-m3` | 中英多语、长文本、综合能力好 |
|
||||||
|
| `bge-large-zh-v1.5` | 中文语义检索效果好 |
|
||||||
|
| `text2vec-large-chinese` | 中文轻量方案 |
|
||||||
|
|
||||||
|
部署方式:
|
||||||
|
|
||||||
|
- 内网 GPU:本地 embedding 服务。
|
||||||
|
- 无 GPU:CPU 量化模型或商用 embedding API。
|
||||||
|
|
||||||
|
## 6. RAG 检索流程
|
||||||
|
|
||||||
|
标准流程:
|
||||||
|
|
||||||
|
1. 用户提问。
|
||||||
|
2. 意图识别:项目问答、代码定位、业务查询、开发生成、排障。
|
||||||
|
3. 查询改写:补充同义词,如“入库”扩展到“采购件入库、外协入库、自制件入库”。
|
||||||
|
4. 多路检索:
|
||||||
|
- 向量检索文档。
|
||||||
|
- BM25/关键词检索中文字段和后端 `name`。
|
||||||
|
- MCP 工具检索代码结构。
|
||||||
|
5. 重排:优先同模块、同页面、同后端 `name`。
|
||||||
|
6. 构造上下文。
|
||||||
|
7. DeepSeek 生成答案。
|
||||||
|
8. 输出引用来源。
|
||||||
|
9. 记录审计。
|
||||||
|
|
||||||
|
回答必须包含:
|
||||||
|
|
||||||
|
- 结论。
|
||||||
|
- 文件/模块来源。
|
||||||
|
- 如果是代码建议,说明需修改哪些文件。
|
||||||
|
- 如果不确定,说明缺少什么信息。
|
||||||
|
|
||||||
|
## 7. AI 助手功能设计
|
||||||
|
|
||||||
|
### 7.1 项目问答
|
||||||
|
|
||||||
|
示例问题:
|
||||||
|
|
||||||
|
- “这个项目怎么新增一个页面?”
|
||||||
|
- “`CreateData` 参数怎么传?”
|
||||||
|
- “仓储管理有哪些页面?”
|
||||||
|
- “菜单权限是怎么生成路由的?”
|
||||||
|
|
||||||
|
实现:
|
||||||
|
|
||||||
|
- 检索 `project_rules`、`architecture`。
|
||||||
|
- 调用 MCP `list_business_modules` 或 `analyze_vue_page`。
|
||||||
|
|
||||||
|
### 7.2 业务功能解释
|
||||||
|
|
||||||
|
示例问题:
|
||||||
|
|
||||||
|
- “采购件入库页面做了什么?”
|
||||||
|
- “装配执行的开始、暂停、完成分别调用哪个后端过程?”
|
||||||
|
- “零件追溯在哪个页面?”
|
||||||
|
|
||||||
|
实现:
|
||||||
|
|
||||||
|
- MCP 分析页面。
|
||||||
|
- 检索 `business_modules`、`api_operations`。
|
||||||
|
- 输出操作流程、后端调用、关键字段。
|
||||||
|
|
||||||
|
### 7.3 代码定位
|
||||||
|
|
||||||
|
示例问题:
|
||||||
|
|
||||||
|
- “查找所有调用 `装配执行_完成装配` 的地方。”
|
||||||
|
- “哪个页面用了字段 `订单编号`?”
|
||||||
|
- “库存查询页面在哪里?”
|
||||||
|
|
||||||
|
实现:
|
||||||
|
|
||||||
|
- MCP `trace_backend_name`。
|
||||||
|
- MCP `find_chinese_field`。
|
||||||
|
- MCP `find_pages_by_keyword`。
|
||||||
|
|
||||||
|
### 7.4 新功能开发辅助
|
||||||
|
|
||||||
|
示例问题:
|
||||||
|
|
||||||
|
- “新增一个库存预警页面。”
|
||||||
|
- “给采购订单查询增加供应商筛选。”
|
||||||
|
- “新增一个导出按钮。”
|
||||||
|
|
||||||
|
实现:
|
||||||
|
|
||||||
|
- 检索相似页面。
|
||||||
|
- 注入项目规范。
|
||||||
|
- 生成最小改动方案。
|
||||||
|
- 调用规范检查工具。
|
||||||
|
|
||||||
|
输出:
|
||||||
|
|
||||||
|
- 修改文件。
|
||||||
|
- 代码片段。
|
||||||
|
- 后端需要提供的 `name` 和字段。
|
||||||
|
- 测试清单。
|
||||||
|
|
||||||
|
### 7.5 排障分析
|
||||||
|
|
||||||
|
示例问题:
|
||||||
|
|
||||||
|
- “登录后页面空白。”
|
||||||
|
- “接口提示账号登录失效。”
|
||||||
|
- “新增页面菜单点不开。”
|
||||||
|
- “入库按钮点了没反应。”
|
||||||
|
|
||||||
|
实现:
|
||||||
|
|
||||||
|
- 检索 FAQ。
|
||||||
|
- MCP 分析页面请求。
|
||||||
|
- 检查路由、Cookie、后端 `name`、参数、返回结构。
|
||||||
|
|
||||||
|
### 7.6 规范检查
|
||||||
|
|
||||||
|
示例问题:
|
||||||
|
|
||||||
|
- “检查这个页面是否符合项目规范。”
|
||||||
|
- “这次改动有没有用了 Vue 3 写法?”
|
||||||
|
|
||||||
|
实现:
|
||||||
|
|
||||||
|
- MCP `check_jy_conventions`。
|
||||||
|
- 输出问题等级、路径、行号、修复建议。
|
||||||
|
|
||||||
|
### 7.7 只读业务查询
|
||||||
|
|
||||||
|
可选能力:
|
||||||
|
|
||||||
|
- 查询订单状态。
|
||||||
|
- 查询库存汇总。
|
||||||
|
- 查询设备状态。
|
||||||
|
- 查询装配任务。
|
||||||
|
- 查询采购到货。
|
||||||
|
|
||||||
|
要求:
|
||||||
|
|
||||||
|
- 使用独立业务只读代理。
|
||||||
|
- 不允许任意 SQL。
|
||||||
|
- 绑定当前登录用户。
|
||||||
|
- 记录审计日志。
|
||||||
|
- 对敏感字段脱敏。
|
||||||
|
|
||||||
|
## 8. AI 助手服务接口设计
|
||||||
|
|
||||||
|
### 8.1 聊天接口
|
||||||
|
|
||||||
|
`POST /api/ai/chat`
|
||||||
|
|
||||||
|
请求:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"sessionId": "s001",
|
||||||
|
"userId": "10001",
|
||||||
|
"message": "采购件入库页面在哪里?",
|
||||||
|
"context": {
|
||||||
|
"currentRoute": "/WarehouseManagement/PurchasePartsStorage"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
响应:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"answer": "采购件入库页面位于 ...",
|
||||||
|
"citations": [
|
||||||
|
{
|
||||||
|
"type": "code",
|
||||||
|
"path": "src/views/WarehouseManagement/PurchasePartsStorage/index.vue"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"toolCalls": [
|
||||||
|
{
|
||||||
|
"name": "find_pages_by_keyword",
|
||||||
|
"status": "success"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8.2 知识库检索接口
|
||||||
|
|
||||||
|
`POST /api/knowledge/search`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"query": "动态路由",
|
||||||
|
"collections": ["architecture", "project_rules"],
|
||||||
|
"topK": 5
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8.3 知识库重建接口
|
||||||
|
|
||||||
|
`POST /api/knowledge/rebuild`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"scope": "all",
|
||||||
|
"force": false
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8.4 页面分析接口
|
||||||
|
|
||||||
|
`POST /api/project/analyze-page`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"path": "src/views/AssemblyManagement/AssemblyExecution/index.vue"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9. 数据库与存储设计
|
||||||
|
|
||||||
|
### 9.1 会话表
|
||||||
|
|
||||||
|
| 字段 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `id` | 会话 ID |
|
||||||
|
| `user_id` | 用户 ID |
|
||||||
|
| `title` | 会话标题 |
|
||||||
|
| `created_at` | 创建时间 |
|
||||||
|
| `updated_at` | 更新时间 |
|
||||||
|
|
||||||
|
### 9.2 消息表
|
||||||
|
|
||||||
|
| 字段 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `id` | 消息 ID |
|
||||||
|
| `session_id` | 会话 ID |
|
||||||
|
| `role` | user/assistant/tool |
|
||||||
|
| `content` | 内容 |
|
||||||
|
| `metadata` | 引用、工具调用、token |
|
||||||
|
| `created_at` | 创建时间 |
|
||||||
|
|
||||||
|
### 9.3 知识文档表
|
||||||
|
|
||||||
|
| 字段 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `id` | 文档 ID |
|
||||||
|
| `source_path` | 来源路径 |
|
||||||
|
| `collection` | 集合 |
|
||||||
|
| `title` | 标题 |
|
||||||
|
| `content_hash` | 内容哈希 |
|
||||||
|
| `metadata` | 元数据 |
|
||||||
|
| `updated_at` | 更新时间 |
|
||||||
|
|
||||||
|
### 9.4 工具审计表
|
||||||
|
|
||||||
|
| 字段 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `id` | 审计 ID |
|
||||||
|
| `user_id` | 用户 |
|
||||||
|
| `tool_name` | 工具名 |
|
||||||
|
| `input` | 输入,敏感字段脱敏 |
|
||||||
|
| `output_summary` | 输出摘要 |
|
||||||
|
| `status` | success/error |
|
||||||
|
| `created_at` | 时间 |
|
||||||
|
|
||||||
|
## 10. 权限与安全设计
|
||||||
|
|
||||||
|
### 10.1 用户认证
|
||||||
|
|
||||||
|
可选方案:
|
||||||
|
|
||||||
|
- 与现有 MES 登录态集成。
|
||||||
|
- 独立 AI 助手账号。
|
||||||
|
- 内网单点登录。
|
||||||
|
|
||||||
|
建议:
|
||||||
|
|
||||||
|
- 前期使用独立账号和角色。
|
||||||
|
- 后期接入 MES Cookie/session,并复用角色权限。
|
||||||
|
|
||||||
|
### 10.2 权限矩阵
|
||||||
|
|
||||||
|
| 功能 | 开发 | 实施 | 业务 |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 项目文档问答 | 允许 | 允许 | 部分允许 |
|
||||||
|
| 代码检索 | 允许 | 部分允许 | 禁止 |
|
||||||
|
| 代码生成 | 允许 | 禁止 | 禁止 |
|
||||||
|
| 业务功能解释 | 允许 | 允许 | 允许 |
|
||||||
|
| 只读业务查询 | 部分允许 | 允许 | 按角色 |
|
||||||
|
| 写业务数据 | 禁止 | 禁止 | 禁止 |
|
||||||
|
| 知识库重建 | 允许 | 禁止 | 禁止 |
|
||||||
|
|
||||||
|
### 10.3 防护措施
|
||||||
|
|
||||||
|
- API Key 只放服务端环境变量。
|
||||||
|
- 日志脱敏。
|
||||||
|
- 工具调用白名单。
|
||||||
|
- 禁止任意 SQL。
|
||||||
|
- 禁止任意 shell。
|
||||||
|
- 业务数据查询按角色过滤。
|
||||||
|
- 生产写操作默认禁用。
|
||||||
|
|
||||||
|
## 11. 前端集成方案
|
||||||
|
|
||||||
|
### 11.1 独立 AI 助手页面
|
||||||
|
|
||||||
|
在现有项目新增:
|
||||||
|
|
||||||
|
```text
|
||||||
|
src/views/AIAssistant/index.vue
|
||||||
|
```
|
||||||
|
|
||||||
|
功能:
|
||||||
|
|
||||||
|
- 左侧会话列表。
|
||||||
|
- 中间聊天窗口。
|
||||||
|
- 右侧引用来源。
|
||||||
|
- 支持复制答案、查看文件路径。
|
||||||
|
- 支持按模块选择上下文。
|
||||||
|
|
||||||
|
页面仍使用 Vue 2 + Element UI。
|
||||||
|
|
||||||
|
### 11.2 嵌入式浮窗
|
||||||
|
|
||||||
|
在 `src/views/layout/components/Navbar.vue` 增加 AI 入口,点击打开右侧抽屉。
|
||||||
|
|
||||||
|
适合:
|
||||||
|
|
||||||
|
- 当前页面上下文问答。
|
||||||
|
- “解释当前页面”。
|
||||||
|
- “检查当前页面问题”。
|
||||||
|
|
||||||
|
### 11.3 权限菜单
|
||||||
|
|
||||||
|
后端菜单需新增:
|
||||||
|
|
||||||
|
- AI 助手。
|
||||||
|
- AI 知识库管理。
|
||||||
|
- AI 审计日志。
|
||||||
|
|
||||||
|
对应路由仍通过动态菜单注入。
|
||||||
|
|
||||||
|
## 12. 知识库更新机制
|
||||||
|
|
||||||
|
### 12.1 手动更新
|
||||||
|
|
||||||
|
开发者点击“重建知识库”或执行脚本:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
node scripts/build-knowledge.js --root D:/景耀/JY1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
### 12.2 Git Hook 更新
|
||||||
|
|
||||||
|
在提交或部署后触发:
|
||||||
|
|
||||||
|
- 检测变更文件。
|
||||||
|
- 只重建变更页面/API/文档。
|
||||||
|
- 更新向量库和索引。
|
||||||
|
|
||||||
|
### 12.3 定时更新
|
||||||
|
|
||||||
|
每天夜间:
|
||||||
|
|
||||||
|
- 扫描 `docs`、`src/views`、`src/api`。
|
||||||
|
- 对比 hash。
|
||||||
|
- 增量更新。
|
||||||
|
|
||||||
|
## 13. 技术路线
|
||||||
|
|
||||||
|
### 阶段 1:文档与代码知识库
|
||||||
|
|
||||||
|
周期:1 到 2 周。
|
||||||
|
|
||||||
|
任务:
|
||||||
|
|
||||||
|
- 建立知识库目录。
|
||||||
|
- 编写项目规则、功能矩阵、API 映射文档。
|
||||||
|
- 搭建向量库。
|
||||||
|
- 实现 Markdown、Vue、JS 文件切片。
|
||||||
|
- 接入 DeepSeek 基础问答。
|
||||||
|
|
||||||
|
验收:
|
||||||
|
|
||||||
|
- 能回答项目技术栈、目录结构、请求规范。
|
||||||
|
- 能根据关键词找到页面。
|
||||||
|
- 回答带来源。
|
||||||
|
|
||||||
|
### 阶段 2:MCP 工具接入
|
||||||
|
|
||||||
|
周期:2 到 3 周。
|
||||||
|
|
||||||
|
任务:
|
||||||
|
|
||||||
|
- 实现 MCP 服务。
|
||||||
|
- 提供项目结构、页面分析、后端 `name` 反查工具。
|
||||||
|
- AI 助手支持工具调用。
|
||||||
|
|
||||||
|
验收:
|
||||||
|
|
||||||
|
- 能分析指定 Vue 页面。
|
||||||
|
- 能列出页面后端调用。
|
||||||
|
- 能检查代码规范。
|
||||||
|
|
||||||
|
### 阶段 3:开发辅助能力
|
||||||
|
|
||||||
|
周期:2 周。
|
||||||
|
|
||||||
|
任务:
|
||||||
|
|
||||||
|
- 新增页面生成 Prompt。
|
||||||
|
- 相似页面检索。
|
||||||
|
- 代码规范检查。
|
||||||
|
- 生成测试清单。
|
||||||
|
|
||||||
|
验收:
|
||||||
|
|
||||||
|
- 能生成符合 Vue 2 + Element UI + `CreateData` 风格的页面骨架。
|
||||||
|
- 能解释需要后端配置的菜单和过程名。
|
||||||
|
|
||||||
|
### 阶段 4:业务只读查询
|
||||||
|
|
||||||
|
周期:3 到 4 周。
|
||||||
|
|
||||||
|
任务:
|
||||||
|
|
||||||
|
- 梳理只读业务查询白名单。
|
||||||
|
- 建立业务查询代理。
|
||||||
|
- 接入用户权限。
|
||||||
|
- 增加审计。
|
||||||
|
|
||||||
|
验收:
|
||||||
|
|
||||||
|
- 能查询订单状态、库存概况、设备状态。
|
||||||
|
- 无任意 SQL 能力。
|
||||||
|
- 数据按用户权限过滤。
|
||||||
|
|
||||||
|
### 阶段 5:系统化运营
|
||||||
|
|
||||||
|
周期:持续。
|
||||||
|
|
||||||
|
任务:
|
||||||
|
|
||||||
|
- 增加问题反馈。
|
||||||
|
- 建立 FAQ。
|
||||||
|
- 统计高频问题。
|
||||||
|
- 自动生成模块文档。
|
||||||
|
- 结合提交记录生成变更说明。
|
||||||
|
|
||||||
|
## 14. 推荐代码仓库结构
|
||||||
|
|
||||||
|
建议在项目中新增:
|
||||||
|
|
||||||
|
```text
|
||||||
|
docs/
|
||||||
|
JY1.0-MCP服务设计文档.md
|
||||||
|
JY1.0-AI助手知识库与DeepSeek对接设计文档.md
|
||||||
|
功能矩阵.md
|
||||||
|
后端过程清单.md
|
||||||
|
常见问题.md
|
||||||
|
|
||||||
|
mcp-server/
|
||||||
|
package.json
|
||||||
|
src/
|
||||||
|
server.js
|
||||||
|
tools/
|
||||||
|
project.js
|
||||||
|
vue.js
|
||||||
|
api.js
|
||||||
|
conventions.js
|
||||||
|
resources/
|
||||||
|
project.js
|
||||||
|
indexer/
|
||||||
|
scan.js
|
||||||
|
parseVue.js
|
||||||
|
parseApi.js
|
||||||
|
|
||||||
|
ai-assistant-server/
|
||||||
|
package.json
|
||||||
|
src/
|
||||||
|
app.js
|
||||||
|
llm/deepseek.js
|
||||||
|
rag/search.js
|
||||||
|
rag/ingest.js
|
||||||
|
mcp/client.js
|
||||||
|
auth/
|
||||||
|
audit/
|
||||||
|
```
|
||||||
|
|
||||||
|
是否放在同一仓库取决于部署策略:
|
||||||
|
|
||||||
|
- 开发阶段可放同仓库,便于读取代码。
|
||||||
|
- 生产阶段建议 MCP/AI 服务独立仓库,JY1.0 仓库只保留文档和客户端入口。
|
||||||
|
|
||||||
|
## 15. 关键风险与应对
|
||||||
|
|
||||||
|
| 风险 | 影响 | 应对 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| 源码存在编码异常 | 解析中文字段困难 | 逐步 UTF-8 规范化,索引器容错 |
|
||||||
|
| 后端过程无正式文档 | AI 难以准确解释参数 | 从前端调用自动抽取,后续人工补全 |
|
||||||
|
| 页面内直接写请求较多 | API 映射分散 | MCP 扫描 `CreateData` 调用 |
|
||||||
|
| 任意 SQL 调用历史存在 | 安全风险 | AI 工具不暴露任意 SQL |
|
||||||
|
| DeepSeek 输出幻觉 | 错误建议 | 强制 RAG 引用和工具来源 |
|
||||||
|
| 生产数据敏感 | 合规风险 | 只读白名单、脱敏、审计 |
|
||||||
|
|
||||||
|
## 16. 验收清单
|
||||||
|
|
||||||
|
AI 助手上线前应验证:
|
||||||
|
|
||||||
|
- 能回答项目结构和技术栈。
|
||||||
|
- 能解释统一请求机制。
|
||||||
|
- 能检索所有主要业务模块。
|
||||||
|
- 能定位指定页面路径。
|
||||||
|
- 能反查后端 `name` 调用点。
|
||||||
|
- 能抽取页面表格字段。
|
||||||
|
- 能按项目规范生成 Vue 2 页面建议。
|
||||||
|
- 能接入 DeepSeek 且 API Key 不出现在前端。
|
||||||
|
- 知识库回答包含来源。
|
||||||
|
- 审计日志可查看。
|
||||||
|
- 默认不具备生产写库能力。
|
||||||
|
|
||||||
|
## 17. 参考资料
|
||||||
|
|
||||||
|
- Model Context Protocol 官方文档:https://modelcontextprotocol.io/
|
||||||
|
- DeepSeek API 官方文档:https://api-docs.deepseek.com/
|
||||||
943
docs/JY1.0-MCP服务设计文档.md
Normal file
943
docs/JY1.0-MCP服务设计文档.md
Normal file
@@ -0,0 +1,943 @@
|
|||||||
|
# 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 建模和复用。
|
||||||
291
docs/JY1.0-功能矩阵与知识库覆盖清单.md
Normal file
291
docs/JY1.0-功能矩阵与知识库覆盖清单.md
Normal file
@@ -0,0 +1,291 @@
|
|||||||
|
# JY1.0 功能矩阵与知识库覆盖清单
|
||||||
|
|
||||||
|
## 1. 用途
|
||||||
|
|
||||||
|
本文档用于作为 MCP 服务和 AI 助手知识库的覆盖清单。后续建设知识库、页面索引、API 索引和功能问答时,应以本清单为基础逐项补齐页面说明、后端过程、字段和常见问题。
|
||||||
|
|
||||||
|
## 2. 总体功能矩阵
|
||||||
|
|
||||||
|
| 模块目录 | 中文模块 | 页面数量约计 | 核心功能 | MCP/知识库覆盖点 |
|
||||||
|
| --- | --- | ---: | --- | --- |
|
||||||
|
| `SalesManagement` | 销售管理 | 37 | 客户、产品、报价、合同、订单、发货、售后、统计分析 | 合同/订单/发货流程、后端 `name`、订单字段、统计图表 |
|
||||||
|
| `BasicData` | 基础数据 | 14 | 菜单、角色、权限、人员、班次、日历、物料、工艺、设备能力 | 权限配置、菜单路由、基础字典、工艺维护 |
|
||||||
|
| `TechnologyCenter` | 技术中心 | 12 | BOM、物料、图纸、图纸确认、导入 | BOM 字段、图纸上传下载、导入模板 |
|
||||||
|
| `SeikoWorkshop` | 精工车间 | 26 | 工艺制定、计划、派工、执行、质检、工时、追溯、工况 | 工艺流程、派工执行链路、零件追溯、质检字段 |
|
||||||
|
| `AssemblyManagement` | 装配管理 | 11 | 装配任务、接收任务、执行、领料、补货、滑台/专机 | 装配开始/暂停/恢复/完成、领料、调试、自检 |
|
||||||
|
| `PurchasingManagement` | 采购管理 | 8 | 供应商、到货通知、采购订单、外协订单、采购查询 | 采购订单字段、到货状态、供应商筛选 |
|
||||||
|
| `WarehouseManagement` | 仓储管理 | 27 | 入库、出库、库存、盘点、调拨、库位、补货、可视化 | 入库/出库流程、库存字段、批量操作、条码打印 |
|
||||||
|
| `DeviceManagement` | 设备管理 | 13 | 设备状态、监控、点检、维修、能耗、灯控、异常原因 | 设备状态字段、实时/历史数据、点检维修流程 |
|
||||||
|
| `ManufacturingCenter` | 制造中心 | 1 | 制造中心扩展页面 | 页面调用和业务说明 |
|
||||||
|
| `WarehouseVisualization` | 仓库可视化 | 1 | 仓储布局和可视化展示 | 可视化数据来源、布局资源 |
|
||||||
|
| `dashboard` | 首页 | 1 | 首页信息、统计、入口 | 首页卡片、统计接口 |
|
||||||
|
| `login` | 登录 | 1 | 登录、改密、获取角色菜单 | 登录接口、Cookie、动态路由 |
|
||||||
|
| `layout` | 系统框架 | 8 | 顶栏、侧边栏、标签页、主内容区 | 导航结构、权限菜单、路由缓存 |
|
||||||
|
|
||||||
|
## 3. 销售管理覆盖清单
|
||||||
|
|
||||||
|
目录:`src/views/SalesManagement`
|
||||||
|
|
||||||
|
应覆盖页面能力:
|
||||||
|
|
||||||
|
- 客户管理:客户资料维护、查询、编辑。
|
||||||
|
- 公司信息维护:公司基础资料。
|
||||||
|
- 产品维护:产品基础资料。
|
||||||
|
- 创建报价:报价单创建和维护。
|
||||||
|
- 销售合同、机床合同、新版合同、售后合同。
|
||||||
|
- 合同查询、新版合同查询、合同审核。
|
||||||
|
- 订单管理、订单下发、订单查询、订单审核。
|
||||||
|
- 订单进度、订单进度总览、订单追溯。
|
||||||
|
- 物料追溯。
|
||||||
|
- 发货通知、发货通知查询、发货记录、发货审核、产品发货。
|
||||||
|
- 售后和售后查询。
|
||||||
|
- 统计分析:区域销售、订单趋势、产品类别、产品占比、产品定价、设备利用率、工时统计。
|
||||||
|
|
||||||
|
知识库重点:
|
||||||
|
|
||||||
|
- 合同编号、订单号、客户名称、产品名称、发货状态等中文字段。
|
||||||
|
- 合同到订单、订单到生产、订单到发货的业务链路。
|
||||||
|
- 销售统计图表的数据口径。
|
||||||
|
- 新旧合同页面差异。
|
||||||
|
|
||||||
|
## 4. 基础数据覆盖清单
|
||||||
|
|
||||||
|
目录:`src/views/BasicData`、`src/api/BasicData`
|
||||||
|
|
||||||
|
应覆盖页面能力:
|
||||||
|
|
||||||
|
- 菜单管理:角色模块分配、菜单上下移动、一级/二级菜单维护。
|
||||||
|
- 系统角色维护。
|
||||||
|
- 用户权限管理。
|
||||||
|
- 人员管理、车间人员角色管理。
|
||||||
|
- 班次管理、工厂日历。
|
||||||
|
- 物料维护。
|
||||||
|
- 零件编号维护。
|
||||||
|
- 车间工艺分类、工艺名称、工艺要求维护。
|
||||||
|
- 设备能力设置、设备人员维护。
|
||||||
|
- 项目管理显示。
|
||||||
|
|
||||||
|
知识库重点:
|
||||||
|
|
||||||
|
- 动态菜单字段:`id`、`pid`、`path`、`component`、`redirect`、`name`、`title`、`icon`。
|
||||||
|
- 权限配置影响路由和侧边栏。
|
||||||
|
- 基础字典如何被其他模块作为下拉数据使用。
|
||||||
|
- 工艺基础数据与精工车间工艺制定的关系。
|
||||||
|
|
||||||
|
## 5. 技术中心覆盖清单
|
||||||
|
|
||||||
|
目录:`src/views/TechnologyCenter`
|
||||||
|
|
||||||
|
应覆盖页面能力:
|
||||||
|
|
||||||
|
- BOM 基础数据。
|
||||||
|
- BOM 维护、查询、库存查询。
|
||||||
|
- BOM 导入。
|
||||||
|
- 物料维护、物料查询。
|
||||||
|
- 零件图导入。
|
||||||
|
- 图纸确认、图纸确认分发、图纸确认查询。
|
||||||
|
|
||||||
|
知识库重点:
|
||||||
|
|
||||||
|
- BOM 层级、物料编码、图号、零件名称。
|
||||||
|
- Excel 导入流程和校验。
|
||||||
|
- 图纸上传下载接口。
|
||||||
|
- 技术资料与生产/装配页面的关联。
|
||||||
|
|
||||||
|
## 6. 精工车间覆盖清单
|
||||||
|
|
||||||
|
目录:`src/views/SeikoWorkshop`
|
||||||
|
|
||||||
|
应覆盖页面能力:
|
||||||
|
|
||||||
|
- 制定工艺、工艺文档管理、工序查询。
|
||||||
|
- 生产计划、生产任务查询。
|
||||||
|
- 车间派工、生产执行、在加工零件。
|
||||||
|
- 零件追溯。
|
||||||
|
- 工时统计、订单工时、其他工作完成。
|
||||||
|
- 工况、设备监控。
|
||||||
|
- 物料审核、采购合同审核。
|
||||||
|
- 质量维护、自检记录、质检信息查询、采购质检、其他质检。
|
||||||
|
- 报废投产、测试数据录入。
|
||||||
|
- Andon 异常提示。
|
||||||
|
|
||||||
|
知识库重点:
|
||||||
|
|
||||||
|
- 工艺制定到派工到执行的完整链路。
|
||||||
|
- 工序、设备、人员、工时字段。
|
||||||
|
- 零件追溯查询条件和结果字段。
|
||||||
|
- 质检、报废、返工相关状态。
|
||||||
|
|
||||||
|
## 7. 装配管理覆盖清单
|
||||||
|
|
||||||
|
目录:`src/views/AssemblyManagement`
|
||||||
|
|
||||||
|
应覆盖页面能力:
|
||||||
|
|
||||||
|
- 装配任务查询、接收任务。
|
||||||
|
- 装配执行、专机装配执行、滑台装配执行。
|
||||||
|
- 装配领料、临时领料。
|
||||||
|
- 补货单、滑台补货单。
|
||||||
|
- 开始装配、完成装配、自检、暂停、恢复、打回。
|
||||||
|
- 调试数据、滑台调试数据、产品详细参数维护。
|
||||||
|
|
||||||
|
知识库重点:
|
||||||
|
|
||||||
|
- `装配执行_开始装配`、`装配执行_完成装配`、`装配管理_暂停装配`、`装配管理_恢复装配` 等后端过程。
|
||||||
|
- 领料单、三表查询、产品参数、调试记录。
|
||||||
|
- 装配任务状态流转。
|
||||||
|
- 装配页面涉及的图纸/PDF/客户资料查看。
|
||||||
|
|
||||||
|
## 8. 采购管理覆盖清单
|
||||||
|
|
||||||
|
目录:`src/views/PurchasingManagement`
|
||||||
|
|
||||||
|
应覆盖页面能力:
|
||||||
|
|
||||||
|
- 供应商管理。
|
||||||
|
- 到货通知。
|
||||||
|
- 采购订单、外协采购订单。
|
||||||
|
- 订单查询、外协订单查询。
|
||||||
|
- 外购件查询、外协件查询。
|
||||||
|
|
||||||
|
知识库重点:
|
||||||
|
|
||||||
|
- 供应商、采购合同、采购订单、到货数量、到货状态。
|
||||||
|
- 采购到仓储入库的衔接。
|
||||||
|
- 外协订单和普通采购订单差异。
|
||||||
|
|
||||||
|
## 9. 仓储管理覆盖清单
|
||||||
|
|
||||||
|
目录:`src/views/WarehouseManagement`
|
||||||
|
|
||||||
|
应覆盖页面能力:
|
||||||
|
|
||||||
|
- 采购件入库、自制件入库、外协到货/外协入库。
|
||||||
|
- 入库扫描、入库记录、采购入库记录、外协记录、主轴库存记录。
|
||||||
|
- 出库、出库明细、采购出库记录。
|
||||||
|
- 领料单查询、物料领用、退料记录。
|
||||||
|
- 库存查询、库存记录、库存汇总、库存盘点。
|
||||||
|
- 调拨查询、外协调拨。
|
||||||
|
- 补货、补货查询、新补货查询。
|
||||||
|
- 库位管理、物料库位、模具管理。
|
||||||
|
- 外协厂维护。
|
||||||
|
- 仓库可视化。
|
||||||
|
|
||||||
|
知识库重点:
|
||||||
|
|
||||||
|
- 入库批量选择、数量校验、库位校验、条码打印。
|
||||||
|
- 库存字段:物料名称、图号/型号、库存、库位、批次、单位。
|
||||||
|
- 采购件、自制件、外协件的入库差异。
|
||||||
|
- 出库、领料、调拨、盘点对库存的影响。
|
||||||
|
|
||||||
|
## 10. 设备管理覆盖清单
|
||||||
|
|
||||||
|
目录:`src/views/DeviceManagement`
|
||||||
|
|
||||||
|
应覆盖页面能力:
|
||||||
|
|
||||||
|
- 设备状态、设备状态监控。
|
||||||
|
- 设备信息。
|
||||||
|
- 实时信息、历史信息、当前监控。
|
||||||
|
- 设备点检、点检记录。
|
||||||
|
- 维修记录。
|
||||||
|
- 设备能耗。
|
||||||
|
- 灯控。
|
||||||
|
- 不合格原因。
|
||||||
|
|
||||||
|
知识库重点:
|
||||||
|
|
||||||
|
- 设备编号、设备名称、状态、报警、点检、维修、能耗字段。
|
||||||
|
- 实时监控和历史查询的数据差异。
|
||||||
|
- 设备状态与车间生产执行的关联。
|
||||||
|
|
||||||
|
## 11. 系统框架覆盖清单
|
||||||
|
|
||||||
|
目录:`src/views/layout`、`src/router`、`src/store`
|
||||||
|
|
||||||
|
应覆盖能力:
|
||||||
|
|
||||||
|
- 登录后权限获取。
|
||||||
|
- 动态路由注入。
|
||||||
|
- 侧边栏渲染。
|
||||||
|
- 顶栏用户操作。
|
||||||
|
- 标签页缓存。
|
||||||
|
- 404 和重定向。
|
||||||
|
|
||||||
|
知识库重点:
|
||||||
|
|
||||||
|
- `constantRouterMap` 与动态路由的边界。
|
||||||
|
- `getRouter.js` 根据 `pid` 递归生成树。
|
||||||
|
- `tagsView`、`permission`、`user` Vuex 模块职责。
|
||||||
|
- Cookie 过期导致强制登出的处理。
|
||||||
|
|
||||||
|
## 12. 请求与后端过程覆盖清单
|
||||||
|
|
||||||
|
知识库和 MCP 必须覆盖以下请求类型:
|
||||||
|
|
||||||
|
| 类型 | 说明 | 覆盖要求 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `type=1` | 查询 | 提取 name、param、分页、返回 rows/total |
|
||||||
|
| `type=2` | 增删改 | 默认只做说明,不直接执行 |
|
||||||
|
| `type=7` | 批量提交 | 提取批量字段和数组结构 |
|
||||||
|
| `type=11` | 项目扩展查询 | 作为查询类处理 |
|
||||||
|
| `type=12` | 项目扩展写操作 | 作为写操作说明,MCP 默认禁止执行 |
|
||||||
|
| `type=3` | SQL/菜单类查询 | 高风险,知识库可说明,工具不得开放任意 SQL |
|
||||||
|
| `type=2001` | 报表/特殊查询 | 记录来源和页面 |
|
||||||
|
|
||||||
|
## 13. AI 助手问题覆盖样例
|
||||||
|
|
||||||
|
项目类:
|
||||||
|
|
||||||
|
- JY1.0 使用什么技术栈?
|
||||||
|
- 新增页面应该放在哪里?
|
||||||
|
- 为什么不能用 Vue 3 写法?
|
||||||
|
- 请求为什么 url 为空?
|
||||||
|
|
||||||
|
功能类:
|
||||||
|
|
||||||
|
- 仓储管理有哪些功能?
|
||||||
|
- 采购件入库页面的流程是什么?
|
||||||
|
- 装配执行有哪些状态流转?
|
||||||
|
- 零件追溯在哪些页面用到?
|
||||||
|
|
||||||
|
代码类:
|
||||||
|
|
||||||
|
- 查找所有调用 `CreateData('12'...)` 的地方。
|
||||||
|
- 查询字段 `订单号` 被哪些页面使用。
|
||||||
|
- 找到 `装配执行_完成装配` 的调用点。
|
||||||
|
- 分析指定 Vue 文件的表格列。
|
||||||
|
|
||||||
|
排障类:
|
||||||
|
|
||||||
|
- 登录后跳回登录页是什么原因?
|
||||||
|
- 新增菜单后页面打不开如何排查?
|
||||||
|
- 接口有返回但表格不显示如何排查?
|
||||||
|
- 入库成功但库存没变化如何排查?
|
||||||
|
|
||||||
|
开发类:
|
||||||
|
|
||||||
|
- 生成一个符合项目规范的查询页面。
|
||||||
|
- 给某个页面增加导出按钮。
|
||||||
|
- 给表格增加状态标签。
|
||||||
|
- 检查新页面是否符合 AGENTS.md 规则。
|
||||||
|
|
||||||
|
## 14. 后续补全计划
|
||||||
|
|
||||||
|
第一轮补全:
|
||||||
|
|
||||||
|
- 自动生成所有页面路径清单。
|
||||||
|
- 自动生成所有 `CreateData` 后端 `name` 清单。
|
||||||
|
- 自动生成所有表格中文字段清单。
|
||||||
|
|
||||||
|
第二轮补全:
|
||||||
|
|
||||||
|
- 人工补充每个后端过程的真实业务含义。
|
||||||
|
- 人工补充关键页面操作流程。
|
||||||
|
- 人工补充常见报错和解决方案。
|
||||||
|
|
||||||
|
第三轮补全:
|
||||||
|
|
||||||
|
- 接入只读业务查询。
|
||||||
|
- 将高频问答沉淀为 FAQ。
|
||||||
|
- 每次发布后增量更新知识库。
|
||||||
120
docs/工艺接口设计文档.md
Normal file
120
docs/工艺接口设计文档.md
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
# 存储过程:工艺数据\_PLM导入 - 运行流程图
|
||||||
|
|
||||||
|
## 流程图示
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Start([开始]) --> Validate1{产品流水号<br>是否为空?}
|
||||||
|
Validate1 -->|是| Fail1[导入类型=0<br>返回:产品流水号不能为空]
|
||||||
|
Fail1 --> End1([结束])
|
||||||
|
|
||||||
|
Validate1 -->|否| CheckProduct[查询产品信息表<br>获取产品名称]
|
||||||
|
CheckProduct --> Validate2{产品是否存在?}
|
||||||
|
Validate2 -->|否| Fail2[导入类型=0<br>返回:产品流水号不存在]
|
||||||
|
Fail2 --> End2([结束])
|
||||||
|
|
||||||
|
Validate2 -->|是| SetName[设置产品名称<br>若为空则使用查询到的名称]
|
||||||
|
SetName --> Validate3{必填字段验证:<br>图号/名称/工序号/<br>工艺名称/工艺要求}
|
||||||
|
|
||||||
|
Validate3 -->|任一为空| Fail3[导入类型=3<br>返回:对应字段不能为空]
|
||||||
|
Fail3 --> End3([结束])
|
||||||
|
|
||||||
|
Validate3 -->|全部非空| FindMaterial1{物料编码是否存在<br>且非空?}
|
||||||
|
|
||||||
|
FindMaterial1 -->|是| FindByCode[通过物料编码<br>查询物料主文件]
|
||||||
|
FindByCode --> FindMaterial2{是否找到物料?}
|
||||||
|
|
||||||
|
FindMaterial1 -->|否| FindByDrawing[通过图号+名称<br>查询物料主文件]
|
||||||
|
FindByDrawing --> FindMaterial2
|
||||||
|
|
||||||
|
FindMaterial2 -->|否| Fail4[导入类型=0<br>返回:物料不存在提示]
|
||||||
|
Fail4 --> End4([结束])
|
||||||
|
|
||||||
|
FindMaterial2 -->|是| GetProcessPlan[订单流水号<br>存在且>0?]
|
||||||
|
GetProcessPlan --> CheckExist{获取工艺计划流水号<br>从零件工艺计划视图通过订单号,零件名称,图号查询}
|
||||||
|
|
||||||
|
CheckExist --> CheckDuplicate[检查工艺数据是否已存在<br>查询零件工序表]
|
||||||
|
|
||||||
|
|
||||||
|
CheckDuplicate -->|是-更新| UpdateOrder[更新订单工艺数据<br>SET 工艺计划流水号/<br>工序顺序/工艺编号/工艺要求]
|
||||||
|
UpdateOrder --> CheckUpdate{更新成功?<br>ROWCOUNT>0}
|
||||||
|
|
||||||
|
CheckDuplicate -->|否-新增| InsertOrder[插入订单工艺数据]
|
||||||
|
InsertOrder --> CheckInsert{插入成功?<br>ROWCOUNT>0}
|
||||||
|
|
||||||
|
|
||||||
|
CheckUpdate -->|是| Success2[导入类型=2<br>返回:更新成功]
|
||||||
|
CheckUpdate -->|否| Fail6[导入类型=0<br>返回:工艺数据更新失败]
|
||||||
|
|
||||||
|
CheckInsert -->|是| Success1[导入类型=1<br>返回:新增成功]
|
||||||
|
CheckInsert -->|否| Fail7[导入类型=0<br>返回:工艺数据导入失败]
|
||||||
|
|
||||||
|
Success1 --> End6([结束])
|
||||||
|
Success2 --> End6
|
||||||
|
Fail6 --> End6
|
||||||
|
Fail7 --> End6
|
||||||
|
```
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
## 涉及的数据表
|
||||||
|
|
||||||
|
| 表名 | 用途 |
|
||||||
|
| :------------------ | :--------------- |
|
||||||
|
| 产品信息\_基础表 | 验证产品是否存在,获取产品名称 |
|
||||||
|
| 库存管理\_物料主文件\_基本 | 验证物料是否存在,获取物料流水号 |
|
||||||
|
| 车间生产管理\_零件工艺计划\_视图 | 获取工艺计划流水号 |
|
||||||
|
| 车间生产管理工艺\_基础表\_工艺名称 | 获取工艺编号 |
|
||||||
|
| 车间生产管理工艺\_零件工序 | 工艺数据的主存储表(增删改查) |
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
## 流程说明
|
||||||
|
|
||||||
|
### 3.1 产品验证阶段
|
||||||
|
|
||||||
|
1. **产品流水号校验**:检查产品流水号是否为空
|
||||||
|
2. **产品存在性验证**:从产品信息表查询产品是否存在
|
||||||
|
3. **产品名称设置**:若传入的产品名称为空,则使用查询到的名称
|
||||||
|
|
||||||
|
### 3.2 必填字段验证阶段
|
||||||
|
|
||||||
|
验证以下必填字段是否非空:
|
||||||
|
|
||||||
|
- 图号
|
||||||
|
- 名称
|
||||||
|
- 工序号
|
||||||
|
- 工艺名称
|
||||||
|
- 工艺要求
|
||||||
|
|
||||||
|
### 3.3 物料查找阶段
|
||||||
|
|
||||||
|
支持两种查找方式:
|
||||||
|
|
||||||
|
1. **优先通过物料编码查找**:若物料编码存在且非空,通过物料编码查询
|
||||||
|
2. **图号+名称查找**:若物料编码为空,通过图号和名称组合查询
|
||||||
|
|
||||||
|
|
||||||
|
### 3.4 数据处理阶段
|
||||||
|
|
||||||
|
根据订单流水号判断处理逻辑:
|
||||||
|
|
||||||
|
| 条件 | 处理方式 |
|
||||||
|
| :-------- | :-------------------------- |
|
||||||
|
| 订单流水号 > 0 | 查询零件工序表检查是否已存在,存在则更新,不存在则新增 |
|
||||||
|
| 订单流水号 ≤ 0 | 直接插入产品工艺数据 |
|
||||||
|
|
||||||
|
### 3.5 工艺信息获取阶段
|
||||||
|
|
||||||
|
1. **获取工艺计划流水号**:从零件工艺计划视图通过订单号获取
|
||||||
|
|
||||||
|
### 3.6 返回结果码说明
|
||||||
|
|
||||||
|
| 返回码 | 说明 |
|
||||||
|
| :-- | :-------------------------------- |
|
||||||
|
| 0 | 失败(产品流水号不存在、物料不存在、工艺名称错误、更新/插入失败) |
|
||||||
|
| 1 | 新增成功 |
|
||||||
|
| 2 | 更新成功 |
|
||||||
|
| 3 | 数据不完整(必填字段为空) |
|
||||||
|
| 4 | 工艺名称错误(工艺编号不存在) |
|
||||||
|
|
||||||
13
src/api/PurchasingManagement/MaterialPurchaseProgress.js
Normal file
13
src/api/PurchasingManagement/MaterialPurchaseProgress.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
export function getMaterialPurchaseProgress(query) {
|
||||||
|
return request({
|
||||||
|
url: '',
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
type: '1',
|
||||||
|
name: '采购管理_物料采购进度_查询',
|
||||||
|
param: query
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -32,6 +32,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="原因" prop="整修原因" align="center" show-overflow-tooltip />
|
<el-table-column label="原因" prop="整修原因" align="center" show-overflow-tooltip />
|
||||||
|
<el-table-column label="整修方案" prop="整修方案" align="center" show-overflow-tooltip />
|
||||||
</el-table>
|
</el-table>
|
||||||
<div class="block" style="margin-top: 10px">
|
<div class="block" style="margin-top: 10px">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
|
|||||||
@@ -0,0 +1,110 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-card style="height: 850px;padding: 0">
|
||||||
|
<div style="margin-top: 7px; margin-bottom: 7px; margin-left: 7px">
|
||||||
|
<el-input
|
||||||
|
v-model="orderNo"
|
||||||
|
size="small"
|
||||||
|
clearable
|
||||||
|
style="width:180px;"
|
||||||
|
placeholder="订单号"
|
||||||
|
@keyup.enter.native="search"/>
|
||||||
|
<el-input
|
||||||
|
v-model="materialName"
|
||||||
|
size="small"
|
||||||
|
clearable
|
||||||
|
style="width:180px;margin-left: 10px"
|
||||||
|
placeholder="物料名称"
|
||||||
|
@keyup.enter.native="search"/>
|
||||||
|
<el-input
|
||||||
|
v-model="drawingNo"
|
||||||
|
size="small"
|
||||||
|
clearable
|
||||||
|
style="width:180px;margin-left: 10px"
|
||||||
|
placeholder="图号"
|
||||||
|
@keyup.enter.native="search"/>
|
||||||
|
<el-button type="primary" size="mini" style="margin-left: 10px" icon="el-icon-search" @click="search">查询</el-button>
|
||||||
|
</div>
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="tableData"
|
||||||
|
border
|
||||||
|
stripe
|
||||||
|
size="mini"
|
||||||
|
height="750">
|
||||||
|
<el-table-column type="index" width="50" label="序号" align="center"/>
|
||||||
|
<el-table-column label="状态" prop="状态" align="center" show-overflow-tooltip width="100"/>
|
||||||
|
<el-table-column label="订单号" prop="订单编号" align="center" show-overflow-tooltip width="150"/>
|
||||||
|
<el-table-column label="物料编码" prop="物料编码" align="center" show-overflow-tooltip width="150"/>
|
||||||
|
<el-table-column label="物料名称" prop="物料名称" align="center" show-overflow-tooltip min-width="100"/>
|
||||||
|
<el-table-column label="图号" prop="图号或型号" align="center" show-overflow-tooltip width="260"/>
|
||||||
|
<el-table-column label="采购数" prop="数量" align="center" show-overflow-tooltip width="100"/>
|
||||||
|
<el-table-column label="已入库数量" prop="已到货数量" align="center" show-overflow-tooltip width="100"/>
|
||||||
|
<el-table-column label="采购合同" prop="采购合同编号" align="center" show-overflow-tooltip min-width="150"/>
|
||||||
|
</el-table>
|
||||||
|
<div class="block" style="margin-top: 10px;">
|
||||||
|
<el-pagination
|
||||||
|
:current-page="pageCurrent"
|
||||||
|
:page-sizes="[10, 20, 30, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="total"
|
||||||
|
:pager-count="5"
|
||||||
|
layout="total, prev, pager, next"
|
||||||
|
@size-change="handleSizeChanges"
|
||||||
|
@current-change="handleCurrentChanges"/>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getMaterialPurchaseProgress } from '@/api/PurchasingManagement/MaterialPurchaseProgress'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
orderNo: '',
|
||||||
|
materialName: '',
|
||||||
|
drawingNo: '',
|
||||||
|
loading: false,
|
||||||
|
tableData: [],
|
||||||
|
total: 0,
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 50
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.fetchData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetchData() {
|
||||||
|
this.loading = true
|
||||||
|
var param = []
|
||||||
|
param[0] = ['订单号', this.orderNo]
|
||||||
|
param[1] = ['物料名称', this.materialName]
|
||||||
|
param[2] = ['图号', this.drawingNo]
|
||||||
|
var requestData = this.CreateData('11', '物料_采购进度_查询', param, this.pageSize, this.pageCurrent)
|
||||||
|
this.ExecDatabase(requestData).then(response => {
|
||||||
|
this.tableData = response.data.rows || []
|
||||||
|
this.total = response.data.total || 0
|
||||||
|
this.loading = false
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
search() {
|
||||||
|
this.pageCurrent = 1
|
||||||
|
this.fetchData()
|
||||||
|
},
|
||||||
|
handleSizeChanges(val) {
|
||||||
|
this.pageSize = val
|
||||||
|
this.pageCurrent = 1
|
||||||
|
this.fetchData()
|
||||||
|
},
|
||||||
|
handleCurrentChanges(val) {
|
||||||
|
this.pageCurrent = val
|
||||||
|
this.fetchData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -88,17 +88,25 @@
|
|||||||
<el-input :disabled="scope.row.加工状态 === 1 || Number(scope.row.是否选进外协单中) === 1" v-model="scope.row.工艺要求" size="mini" style="margin: 0;width: 100%" @change="updateProcess(scope.row)"/>
|
<el-input :disabled="scope.row.加工状态 === 1 || Number(scope.row.是否选进外协单中) === 1" v-model="scope.row.工艺要求" size="mini" style="margin: 0;width: 100%" @change="updateProcess(scope.row)"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="130px" label="定额工时" align="center" prop="" show-overflow-tooltip>
|
<el-table-column width="90px" label="定额工时" align="center" prop="" show-overflow-tooltip>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input :disabled="scope.row.加工状态 === 1 || Number(scope.row.是否选进外协单中) === 1" v-model="scope.row.定额工时" size="mini" style="margin: 0;width: 100%" @change="updateProcess(scope.row)"/>
|
<el-input :disabled="scope.row.加工状态 === 1 || Number(scope.row.是否选进外协单中) === 1" v-model="scope.row.定额工时" size="mini" style="margin: 0;width: 100%" @change="updateProcess(scope.row)"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="130px" label="准结工时" align="center" prop="" show-overflow-tooltip>
|
<el-table-column width="90px" label="准结工时" align="center" prop="" show-overflow-tooltip>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input :disabled="scope.row.加工状态 === 1 || Number(scope.row.是否选进外协单中) === 1" v-model="scope.row.准结工时" size="mini" style="margin: 0;width: 100%" @change="updateProcess(scope.row)"/>
|
<el-input :disabled="scope.row.加工状态 === 1 || Number(scope.row.是否选进外协单中) === 1" v-model="scope.row.准结工时" size="mini" style="margin: 0;width: 100%" @change="updateProcess(scope.row)"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" width="230px">
|
<el-table-column label="是否变更" align="center" width="100px">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-select v-model="scope.row.是否变更" size="mini" style="width: 80px" @change="changeAllow(scope.row)">
|
||||||
|
<el-option label="允许" :value="1"/>
|
||||||
|
<el-option label="不许" :value="0"/>
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" align="center" width="200px">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tooltip :open-delay="700" effect="dark" content="下移工序" placement="top">
|
<el-tooltip :open-delay="700" effect="dark" content="下移工序" placement="top">
|
||||||
<el-button :disabled="scope.row.加工状态 === 1 || Number(scope.row.是否选进外协单中) === 1" type="text" icon="el-icon-bottom" size="mini" style="margin-right: 5px" @click="downOne(scope.row)"/>
|
<el-button :disabled="scope.row.加工状态 === 1 || Number(scope.row.是否选进外协单中) === 1" type="text" icon="el-icon-bottom" size="mini" style="margin-right: 5px" @click="downOne(scope.row)"/>
|
||||||
@@ -145,6 +153,14 @@
|
|||||||
<el-input v-model="scope.row.准结工时" size="mini" style="margin: 0;width: 100%" @change="updateProcess(scope.row)"/>
|
<el-input v-model="scope.row.准结工时" size="mini" style="margin: 0;width: 100%" @change="updateProcess(scope.row)"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="是否变更" align="center" width="100px">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-select v-model="scope.row.是否变更" size="mini" style="width: 80px" @change="changeAllow(scope.row)">
|
||||||
|
<el-option label="允许" :value="1"/>
|
||||||
|
<el-option label="不许" :value="0"/>
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" width="230px">
|
<el-table-column label="操作" align="center" width="230px">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tooltip :open-delay="700" effect="dark" content="下移工序" placement="top">
|
<el-tooltip :open-delay="700" effect="dark" content="下移工序" placement="top">
|
||||||
@@ -834,6 +850,14 @@ export default {
|
|||||||
}
|
}
|
||||||
this.searchTable()
|
this.searchTable()
|
||||||
},
|
},
|
||||||
|
changeAllow(row) {
|
||||||
|
var param = []
|
||||||
|
param[0] = ['工艺计划流水号', row.工艺计划流水号]
|
||||||
|
param[1] = ['工序顺序', row.工序顺序]
|
||||||
|
param[2] = ['是否变更', row.是否变更]
|
||||||
|
var Data = this.CreateData('12', '车间生产管理工艺_零件工序_变更允许', param)
|
||||||
|
this.ExecDatabase(Data)
|
||||||
|
},
|
||||||
updateProcess(row) {
|
updateProcess(row) {
|
||||||
if (!this.checked) {
|
if (!this.checked) {
|
||||||
var param = []
|
var param = []
|
||||||
|
|||||||
Reference in New Issue
Block a user