diff --git a/docs/JY1.0-AI助手知识库与DeepSeek对接设计文档.md b/docs/JY1.0-AI助手知识库与DeepSeek对接设计文档.md new file mode 100644 index 00000000..38413abe --- /dev/null +++ b/docs/JY1.0-AI助手知识库与DeepSeek对接设计文档.md @@ -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/ diff --git a/docs/JY1.0-MCP服务设计文档.md b/docs/JY1.0-MCP服务设计文档.md new file mode 100644 index 00000000..34298f38 --- /dev/null +++ b/docs/JY1.0-MCP服务设计文档.md @@ -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 建模和复用。 diff --git a/docs/JY1.0-功能矩阵与知识库覆盖清单.md b/docs/JY1.0-功能矩阵与知识库覆盖清单.md new file mode 100644 index 00000000..8193c0f8 --- /dev/null +++ b/docs/JY1.0-功能矩阵与知识库覆盖清单.md @@ -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。 +- 每次发布后增量更新知识库。 diff --git a/docs/工艺接口设计文档.md b/docs/工艺接口设计文档.md new file mode 100644 index 00000000..d05cddb3 --- /dev/null +++ b/docs/工艺接口设计文档.md @@ -0,0 +1,120 @@ +# 存储过程:工艺数据\_PLM导入 - 运行流程图 + +## 流程图示 + +```mermaid +flowchart TD + Start([开始]) --> Validate1{产品流水号
是否为空?} + Validate1 -->|是| Fail1[导入类型=0
返回:产品流水号不能为空] + Fail1 --> End1([结束]) + + Validate1 -->|否| CheckProduct[查询产品信息表
获取产品名称] + CheckProduct --> Validate2{产品是否存在?} + Validate2 -->|否| Fail2[导入类型=0
返回:产品流水号不存在] + Fail2 --> End2([结束]) + + Validate2 -->|是| SetName[设置产品名称
若为空则使用查询到的名称] + SetName --> Validate3{必填字段验证:
图号/名称/工序号/
工艺名称/工艺要求} + + Validate3 -->|任一为空| Fail3[导入类型=3
返回:对应字段不能为空] + Fail3 --> End3([结束]) + + Validate3 -->|全部非空| FindMaterial1{物料编码是否存在
且非空?} + + FindMaterial1 -->|是| FindByCode[通过物料编码
查询物料主文件] + FindByCode --> FindMaterial2{是否找到物料?} + + FindMaterial1 -->|否| FindByDrawing[通过图号+名称
查询物料主文件] + FindByDrawing --> FindMaterial2 + + FindMaterial2 -->|否| Fail4[导入类型=0
返回:物料不存在提示] + Fail4 --> End4([结束]) + + FindMaterial2 -->|是| GetProcessPlan[订单流水号
存在且>0?] + GetProcessPlan --> CheckExist{获取工艺计划流水号
从零件工艺计划视图通过订单号,零件名称,图号查询} + + CheckExist --> CheckDuplicate[检查工艺数据是否已存在
查询零件工序表] + + + CheckDuplicate -->|是-更新| UpdateOrder[更新订单工艺数据
SET 工艺计划流水号/
工序顺序/工艺编号/工艺要求] + UpdateOrder --> CheckUpdate{更新成功?
ROWCOUNT>0} + + CheckDuplicate -->|否-新增| InsertOrder[插入订单工艺数据] + InsertOrder --> CheckInsert{插入成功?
ROWCOUNT>0} + + + CheckUpdate -->|是| Success2[导入类型=2
返回:更新成功] + CheckUpdate -->|否| Fail6[导入类型=0
返回:工艺数据更新失败] + + CheckInsert -->|是| Success1[导入类型=1
返回:新增成功] + CheckInsert -->|否| Fail7[导入类型=0
返回:工艺数据导入失败] + + 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 | 工艺名称错误(工艺编号不存在) | + diff --git a/src/api/PurchasingManagement/MaterialPurchaseProgress.js b/src/api/PurchasingManagement/MaterialPurchaseProgress.js new file mode 100644 index 00000000..5ce52745 --- /dev/null +++ b/src/api/PurchasingManagement/MaterialPurchaseProgress.js @@ -0,0 +1,13 @@ +import request from '@/utils/request' + +export function getMaterialPurchaseProgress(query) { + return request({ + url: '', + method: 'post', + data: { + type: '1', + name: '采购管理_物料采购进度_查询', + param: query + } + }) +} diff --git a/src/views/DeviceManagement/RepairRecord/index.vue b/src/views/DeviceManagement/RepairRecord/index.vue index d0b622cf..059b7e29 100644 --- a/src/views/DeviceManagement/RepairRecord/index.vue +++ b/src/views/DeviceManagement/RepairRecord/index.vue @@ -32,6 +32,7 @@ +
+
+ +
+ + + + 查询 +
+ + + + + + + + + + + +
+ +
+
+
+ + + diff --git a/src/views/SeikoWorkshop/DevelopProcess/index.vue b/src/views/SeikoWorkshop/DevelopProcess/index.vue index 20762c13..1fdf9149 100644 --- a/src/views/SeikoWorkshop/DevelopProcess/index.vue +++ b/src/views/SeikoWorkshop/DevelopProcess/index.vue @@ -88,17 +88,25 @@ - + - + - + + + + + + +