Files
MES_Manage_View_V20/doc/MES测试环境接管基线_20260725.md

497 lines
27 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MES 测试环境接管基线
文档版本V1.3
基线日期2026-07-25
适用项目:`MES_Manage_View_V20`
接管环境:测试环境
文档状态:已建立,后续按验证进度持续更新
## 1. 基线结论
当前测试环境已完成前端、MES 接口、数据库、只读外部集成和恢复演练的受控接管,可作为后续生产接管的演练环境。核心后端按现有发布物维护,不把缺少原始源码列为当前接管阻断项;涉及 DLL 逻辑修改时仍需单独评估。
| 领域 | 状态 | 结论 |
| --- | --- | --- |
| 前端代码/部署 | 已接管 | 构建通过,测试前端已部署到 IIS `10012` |
| MES 通用接口 | 已验证 | HTTPS 接口可访问,登录、菜单和只读过程调用成功 |
| 测试数据库 | 已验证 | SQL Server 可连接,`YL_MESDB` 在线且对象可读 |
| MES 应用账号 | 已验证 | 测试超级管理员账号可登录,角色和菜单加载成功 |
| B1 集成 | 只读接管 | 通过管理机 VPN 访问现场代理,登录代理与语义 GET 可用POST/PATCH 被测试前端阻止 |
| TM 集成 | 受限只读 | 现场代理端口可达;当前前端只有库存任务 POST 调用,测试环境全部阻止,尚无明确 GET 验收端点 |
| 数据库版本一致性 | 关键项已同步 | 装配任务查询、索引、合同工时和预算进度相关变更已同步,完整对象差异仍需持续维护 |
| 测试账号权限 | 部分整改 | 已创建 `meswork_readonly` 只读账号,原 `meswork` 仍为 `dbo/sysadmin` |
| 配置隔离 | 已验证 | 测试 `dist/static/config.js` 独立指向测试 MES并启用 B1/TM 只读保护 |
| 接口服务源码/部署 | 发布物接管 | IIS、部署目录、配置和脱敏快照已归档按约定不修改核心 DLL无原始源码不阻断当前运维接管 |
接管判定:**有条件接管**。
- 可以开展代码分析、只读诊断、菜单与权限核对、MES 查询流程测试、SQL 修复脚本编写、测试环境受控变更。
- 暂不可开展B1/TM 真实联调、生产等价验收、未经审批的数据库写入、完整灾备恢复演练。
V1.2 增量状态WinRM HTTPS 已接通并完成 IIS/后端只读盘点;部署快照已脱敏归档,数据库备份历史已核对,但核心 DLL 原始源码和恢复演练仍未完成。
## 2. 基线范围
本基线覆盖:
- Vue 主系统代码、构建配置和运行时配置。
- MES 统一接口 `MESCommonBase.ashx`
- 测试服务器 IIS 站点、应用池、证书、日志和接口部署目录。
- 测试 SQL Server 中的 `YL_MESDB`
- MES 应用登录、角色菜单和通用存储过程查询。
- B1/TM 网络可用性及前端依赖范围。
- 正式库与测试库部分关键对象的定义一致性。
- 接管安全规则、变更规则、已知限制和后续任务。
本基线不包含明文密码、数据库连接口令、Token 或生产业务数据。
## 3. 代码基线
### 3.1 版本信息
| 项目 | 当前值 |
| --- | --- |
| 仓库目录 | `C:\WorkYuanLy\MES_Manage_View_V20` |
| 当前分支 | `snapshot/local-save-20260625-154806` |
| 当前提交 | `62f7632fc6708a8dcb25934c463d18520d9619de` |
| 提交时间 | 2026-07-24 14:59:37 +08:00 |
| 提交说明 | `feat: 完善设计报工与研发工时功能` |
| Node.js | v20.14.0 |
| npm | 10.7.0 |
| 应用版本 | 1.1.0 |
当前工作区存在未提交文档、数据库脚本和工作目录。接管期间不得清理或覆盖来源不明的现有变更;正式发布前应建立明确的发布分支和提交边界。
### 3.2 技术栈
| 层级 | 技术 |
| --- | --- |
| 前端框架 | Vue 2.7.16 |
| 路由 | Vue Router 3.6.5,数据库菜单动态生成路由 |
| 状态管理 | Vuex 3.6.2 |
| UI | Element UI 2.15.14 |
| HTTP | Axios 0.21.4 |
| 构建 | Webpack 5.103.0 |
| 数据库 | SQL Server 2019 |
| 业务接口 | ASP.NET `.ashx` 统一存储过程网关 |
| 外部集成 | SAP B1 代理、TM/OpenAPI、文件服务、设备/MQTT |
### 3.3 前端规模
| 指标 | 数量 |
| --- | ---: |
| `src/views` 下 Vue 文件 | 99 |
| `src` 下 JavaScript 文件 | 77 |
| `CreateData` 调用 | 770 |
| 可静态识别的字面量过程调用 | 724 |
| 可静态识别的唯一过程名 | 219 |
业务模块页面分布:
| 模块 | Vue 文件数 |
| --- | ---: |
| 生产管理 | 36 |
| 质量管理 | 15 |
| 计划排产 | 13 |
| 工艺管理 | 9 |
| 系统管理 | 6 |
| 异常管理 | 4 |
| 设备管理 | 4 |
| 其他布局、登录、看板、销售、基础模块 | 12 |
## 4. 环境清单
### 4.1 地址规则
| 环境 | MES 通用接口 | 基础地址 | 说明 |
| --- | --- | --- | --- |
| 正式 | `https://192.168.2.92:10101/submit/MESCommonBase.ashx` | `https://192.168.2.92:10101` | 正式业务环境,默认只读诊断 |
| 测试 | `https://124.220.15.242:10101/submit/MESCommonBase.ashx` | `https://124.220.15.242:10101` | 当前接管验证环境 |
| 本地 | `http://127.0.0.1:10101/submit/MESCommonBase.ashx` | `http://127.0.0.1:10101` | 本地接口服务 |
测试 B1/TM 通过管理机 VPN 访问现场代理:
- B1`https://192.168.2.92:9996/b1s`
- TM`https://192.168.2.92:9996/openapi`
测试运行配置必须设置 `externalReadOnly: true`。B1/TM 的语义 POST/PATCH 在前端请求发出前被阻止;语义 GET 仍由代理通过 HTTP POST 传输,判定写保护时以请求体 `func` 为准。
### 4.2 配置加载机制
`index.html` 在应用脚本前加载 `./static/config.js`。MES、文件服务、B1 和 TM 地址均从 `window.dt_Config` 读取。
`npm run build` 完成后会删除 `dist/static/config.js`,因此运行时配置应由部署环境单独注入。推荐维护正式、测试、本地三套模板,并通过脚本选择目标配置,禁止人工切换注释。
当前风险:源码中的 `static/config.js` 默认指向正式环境。启动测试前端前必须先完成环境隔离。
## 5. 系统架构与调用链
```text
浏览器 / Vue 页面
|
| CreateData + ExecDatabase
v
MESCommonBase.ashx 统一接口
|
| 过程名 + 参数 + 用户/模块信息
v
SQL Server / YL_MESDB
|
+-- 存储过程、视图、业务表
+-- SAP 跨库视图或 B1 代理
+-- TM 领料/收料/退料接口
+-- 文件上传下载服务
```
关键实现:
- `src/utils/request.js`:主 Axios 实例,读取 `serverAddress`
- `src/utils/curd.js`:构造统一过程请求并执行接口调用。
- `src/api/login.js`:登录和角色菜单查询。
- `src/router/getTreeData.js`:将数据库菜单转换为动态路由。
- `src/api/b1s.js`B1 GET/POST/PATCH 代理封装。
- `src/api/tm.js`TM/OpenAPI 代理封装。
## 6. 测试数据库基线
### 6.1 数据库信息
| 项目 | 当前值 |
| --- | --- |
| SQL Server | Microsoft SQL Server 2019 Enterprise |
| 服务器实例 | `10_0_4_16\MSSQLSERVER2019` |
| 数据库 | `YL_MESDB` |
| 状态 | ONLINE |
| 兼容级别 | 150 |
| 排序规则 | Chinese_PRC_CI_AS |
| 恢复模式 | SIMPLE |
| 数据库总容量 | 1234.69 MB |
| 数据文件 | 1226.69 MB |
| 日志文件 | 8.00 MB |
### 6.2 对象规模
| 对象类型 | 数量 |
| --- | ---: |
| 用户表 | 61 |
| 视图 | 27 |
| 存储过程 | 425 |
| 标量函数 | 2 |
| 主键约束 | 47 |
| 外键约束 | 8 |
| 默认约束 | 45 |
| 唯一约束 | 5 |
正式库和测试库的上述对象数量一致,但对象定义并不完全一致。
### 6.3 账号权限
原测试数据库账号在 `YL_MESDB` 中映射为 `dbo`,并具有 `CONTROL``ALTER``CREATE``INSERT``UPDATE``DELETE``EXECUTE` 等完整权限。
已创建日常诊断账号 `meswork_readonly`,映射到 `YL_MESDB` 后仅加入 `db_datareader` 并授予 `VIEW DEFINITION`。验证结果为:数据库 `SELECT=1``VIEW DEFINITION=1``INSERT=0``UPDATE=0``DELETE=0`。该账号不授予全库 `EXECUTE`,避免通过未知写过程间接修改数据。
该账号只应作为临时受控部署账号,不应作为日常诊断账号。需要新增:
- 只读诊断账号:仅允许连接、查看定义、查询数据和查看执行计划。
- 受控部署账号:按变更窗口启用,发布完成后收回或禁用。
## 7. 正式库与测试库漂移
抽查 6 个近期关键过程,结果如下:
| 存储过程 | 测试/正式定义 | 结论 |
| --- | --- | --- |
| `MES_OrderPlanned_Query` | 不一致 | 测试库为 2026-06-09 版本,正式库为 2026-07-24 版本 |
| `计划排产_系统类任务查询` | 不一致 | 正式库已包含 2026-07-25 合同工时修复,测试库未同步 |
| `计划排产_阀类任务查询` | 不一致 | 正式库已包含 2026-07-25 合同工时修复,测试库未同步 |
| `车间生产管理工艺_零件工序_保存为标准工艺` | 一致 | 修改时间不同,但定义哈希一致 |
| `生产管理_及时齐套跟踪结果_查询` | 一致 | 定义哈希一致 |
| `设计报工_研发财务工时_查询` | 一致 | 定义哈希一致 |
禁止直接用正式库覆盖测试库。应按数据库变更脚本逐项同步,并在同步前记录测试库对象哈希和回滚定义。
## 8. 已完成验证
### 8.1 网络与数据库
| 验证项 | 结果 |
| --- | --- |
| 测试 SQL Server 端口 | 通过 |
| 测试数据库登录 | 通过 |
| `YL_MESDB` 对象读取 | 通过 |
| 测试 MES 接口端口 | 通过 |
| 测试 B1/TM 代理端口 | 失败,当前不可达 |
### 8.2 应用接口
| 验证项 | 结果 | 证据 |
| --- | --- | --- |
| MES 测试账号登录 | 通过 | HTTP 200返回超级管理员角色 |
| 角色菜单查询 | 通过 | HTTP 200返回 84 条菜单/权限数据 |
| 通用只读过程查询 | 通过 | HTTP 200返回 33 条工位数据 |
| B1 查询/写入 | 未执行 | 代理端口不可达 |
| TM 领料/收料/退料 | 未执行 | 代理端口不可达 |
### 8.3 前端构建
执行命令:`npm run build`
结果构建成功Webpack 5.103.0 用时约 79 秒,出现 2 类既有警告:
- 字体、登录图片和主要 JavaScript 包超过推荐体积。
- Browserslist/caniuse-lite 与 baseline-browser-mapping 数据过期。
入口资源约 6.85 MiB存在前端首屏性能优化空间。构建完成后 `dist/static/config.js` 按脚本设计被删除,部署前必须注入目标环境配置。
## 9. 已知限制与未验证范围
以下项目尚不能视为已接管完成:
- B1 生产订单、资源、工艺路线、发料和库存单据联调。
- TM 领料任务、收料任务和退料任务联调。
- 文件上传、下载、图纸和附件完整链路。
- 设备采集、MQTT、PLC、AGV 和定时任务。
- 排产、报工、送检、收检、退库等写入流程。
- 核心 DLL 原始源码、可重复构建流程、接口发布和回滚演练。
- 数据库完整备份恢复和灾备演练。
- 页面级全量浏览器回归、并发和性能测试。
## 10. 安全与运行风险
| 编号 | 级别 | 风险 | 处理要求 |
| --- | --- | --- | --- |
| SEC-01 | P1 | 原测试数据库账号为 `dbo` | 只读账号已建立;切换完成后再限制或停用原 `dbo/sysadmin` 账号 |
| SEC-02 | P1 | 登录接口返回明文 `password` 字段 | 后端查询和序列化结果移除密码 |
| SEC-03 | P1 | 登录页“记住密码”将密码保存到 Cookie 7 天 | 改为仅记住账号,不在浏览器保存明文密码 |
| SEC-04 | P1 | 10100/10101 复用名称不匹配的自签名 WMSvc 证书 | 换用与测试域名匹配、受信任且独立的业务 HTTPS 证书 |
| SEC-05 | P2 | `submit/web.config` 开启目录浏览 | 验证无业务依赖后关闭目录浏览 |
| ENV-01 | P1 | 源码运行时配置默认指向正式环境 | 建立三套配置模板和环境防误连校验 |
| ENV-02 | P1 | 测试库与正式库过程版本漂移 | 建立对象哈希清单和脚本化同步流程 |
| INT-01 | P2 | B1/TM 测试代理不可用 | 恢复测试代理或提供模拟服务 |
| OPS-01 | P2 | 发布包已归档但 `DataLinkMesWork.dll` 原始源码缺失 | 获取原始项目仓库,建立可重复构建和版本标记 |
| OPS-02 | P2 | 服务器 C 盘仅余约 13.5 GB | 建立容量告警并清理经确认可删除的历史备份/发布包 |
| PERF-01 | P3 | 前端入口和字体资源体积较大 | 按页面拆包、裁剪字体、压缩静态资源 |
## 11. 接管操作规则
1. 生产环境默认只读;任何生产写操作需要用户明确批准。
2. 测试环境写操作也必须先给出测试数据、预期结果和回滚方法。
3. 数据库变更必须包含前置结构校验、事务、验证 SQL 和回滚脚本。
4. 不直接覆盖正式/测试数据库,不使用数据库整体覆盖代替版本迁移。
5. 不在仓库、文档或日志中保存密码和 Token。
6. 发布前记录 Git 提交、数据库对象哈希、配置目标和构建结果。
7. 发布后执行页面、接口和数据库三层验证。
8. 每次执行过程和结论追加到 `gptlog-process/gpdlog.md`
9. B1/TM 不可用时,相关页面只能验证错误处理和模拟结果,不能判定业务联调通过。
10. 发现正式环境与测试环境漂移时,先评估差异来源,再决定同步方向。
## 12. 接管任务清单
### P0接管前置
- [x] 验证测试 SQL Server 和 `YL_MESDB`
- [x] 验证 MES 测试账号登录。
- [x] 验证菜单权限查询。
- [x] 验证通用只读存储过程调用。
- [x] 验证前端生产构建。
- [x] 确认 B1/TM 测试端口不可用。
- [ ] 建立正式、测试、本地配置模板和自动切换命令。
- [x] 建立只读数据库账号 `meswork_readonly`
- [ ] 完成业务服务账号切换后,限制或停用原 `meswork``dbo/sysadmin` 权限。
- [x] 获取后端 `.ashx`、IIS 站点、部署目录和程序集发布快照。
- [ ] 获取 `DataLinkMesWork.dll` 等核心程序集的原始项目源码。
### P1版本与安全
- [ ] 输出完整正式/测试数据库对象哈希差异清单。
- [ ] 审批并同步 `MES_OrderPlanned_Query` 等确认差异。
- [ ] 将合同工时修复同步到测试库并回归。
- [ ] 移除登录接口返回的密码字段。
- [ ] 移除浏览器 Cookie 中的明文密码。
- [ ] 建立数据库备份、恢复和回滚演练记录。
### P2业务接管
- [ ] 登录、菜单、角色和权限全量回归。
- [ ] 工艺、计划、生产、质量、设备和异常模块只读冒烟测试。
- [ ] 建立页面到过程、视图和表的可检索映射。
- [ ] 为关键写流程准备隔离测试数据和回滚脚本。
- [ ] 恢复或模拟 B1/TM 后完成外部集成验收。
- [ ] 建立发布清单、问题台账和定期巡检机制。
## 13. 接管完成标准
满足以下条件后,测试环境可从“有条件接管”升级为“完整接管”:
1. 三套环境配置完全隔离,测试前端不能连接正式接口。
2. 后端接口源码、部署目录、连接配置和回滚方法已归档。
3. 测试库与正式库的结构差异全部有明确原因和同步记录。
4. 日常诊断使用最小权限账号,高权限账号仅用于受控发布。
5. 登录密码泄露和 Cookie 明文密码问题已修复。
6. 核心 MES 模块的查询与写入流程均完成测试环境回归。
7. B1/TM 已恢复测试连接或具备可验收的模拟服务。
8. 数据库备份恢复、前端发布和接口回滚均完成至少一次演练。
9. 每个关键模块都有负责人、验收口径和故障升级路径。
## 14. 参考资产
- `doc/大连元利流体技术有限公司MES系统标准技术文档_V1.1_2026-07-24.docx`
- `doc/大连元利流体技术有限公司MES系统标准设计文档_V1.1_2026-07-24.docx`
- `doc/大连元利流体技术有限公司MES系统用户操作手册_V1.1_2026-07-23.docx`
- `doc/工时模块全流程技术说明_20260721.html`
- `db_backups/` 数据库变更与回滚脚本目录
- `server_baseline/MES_ManageV20250916_20260725/` 脱敏后端部署快照与 SHA-256 清单
- `gptlog-process/gpdlog.md` GPT/Codex 执行过程日志
---
基线维护原则:每次环境地址、数据库结构、接口版本、权限或外部集成状态发生变化后,应更新本文件的版本、日期、验证结果和任务清单。
## 15. V1.2 增量验证记录
### 数据库账号
- 创建对象:服务器登录 `meswork_readonly`,数据库用户 `YL_MESDB.meswork_readonly`
- 权限:`db_datareader``VIEW DEFINITION`
- 验证:能够登录、查询表、读取对象定义;数据库级 `INSERT``UPDATE``DELETE` 均无权限。
- 原账号:`meswork` 仍为 `dbo` 且属于 `sysadmin`,未在未确认服务依赖前删除或降权。
### 远程服务器
- RDP 自定义端口 `124.220.15.242:12920`TCP 可达。
- 标准 RDP `3389`:不可达。
- WinRM HTTPS `5986`:外部 TCP 可达,使用受控引导会话已成功认证到 Windows Server 2019 Datacenter。
- IIS Management Service `8172`WMSVC 已运行,服务器本机监听成功;公网未列为当前接管前置条件。
- 远程盘点仅执行读取和文件拉取,没有停止站点、回收应用池或修改接口部署文件。
### IIS 与后端部署
- IIS 站点:`元利流体MES_Manage`,状态 Started站点 ID 29。
- 绑定HTTPS 10100、10101物理目录 `C:\ProjectShow\元利流体\MES_ManageV20250916`
- 应用池:同名,`.NET v4.0`、Integrated、ApplicationPoolIdentity、按需启动、空闲 20 分钟、周期回收 29 小时。
- 认证IIS 匿名认证开启Windows/Basic 认证关闭;应用认证由接口业务逻辑承担。
- 证书10100/10101 共用自签名 `CN=WMSvc-SHA2-10_0_4_16`,与公网 IP 不匹配。
- 日志:`C:\inetpub\logs\LogFiles\W3SVC29`;当前抽样 11 次 `MESCommonBase.ashx` 请求均为 HTTP 200近两天未发现 ASP.NET/.NET/IIS 错误事件。
- 部署规模274 个文件、约 91.31 MB包含 32 个内联 C# `.ashx`、50 个 DLL 和 PDB没有独立 `.cs` 项目文件。
- 本地快照163 个文件、约 75.44 MB排除了根 `Web.config`、PDF、上传文件、业务数据和 `.vs`
- 核心逻辑:`MESCommonBase.ashx` 将默认调用转交 `DataLinkMesWork.DataLink.SqlWebCall`PDB 记录了原始构建源码路径,但该路径和项目源码在测试服务器不存在。
- 恢复源码:使用 ILSpy 9.1.0.7988 生成 76 个 C# 文件和 `net48` 项目,本地构建为 0 错误、102 警告;重建 DLL 与发布 DLL 哈希不一致,严禁直接替换发布件。
### 后端连接与备份
-`Web.config` 的实际 `ConnectionString` 指向 `124.220.15.242,64722 / YL_MESDB`SQL 凭据未复制或写入文档。
- 配置仍保留旧字段 `.\MSSQLSERVER2016 / MESBasicDB_PZ126`,实际接口使用上述 `ConnectionString`
- 服务器同时运行 SQL Server 2016/201964722 在 IPv4/IPv6 全地址监听;`YL_MESDB` 数据文件位于 SQL Server 2019 实例目录。
- 最新完整备份 `C:\YL_MESDB_202607240000.bak` 已确认存在,大小 1,278,302,720 字节,时间 2026-07-24 14:40:52。
- 2026-05-09 的完整备份文件也存在;历史记录中的 `C:\123.bak` 已不存在。尚未执行 `RESTORE VERIFYONLY` 或隔离恢复演练。
- 服务器 C 盘剩余空间约 13.5 GB。
### 下一步
1. 获取 `DataLinkMesWork` 等核心程序集的原始源码仓库和构建说明;在此之前只能维护内联 `.ashx` 或以发布包方式回滚。
2. 创建后端专用最小权限 SQL 服务账号并回归接口,再限制原 `meswork` 的高权限。
3. 建立测试/正式/本地运行时配置模板,阻止测试前端误连正式环境。
4. 在隔离位置执行数据库备份校验、恢复演练和接口发布回滚演练。
5. 更换业务 HTTPS 证书、关闭目录浏览,并修复接口/浏览器明文密码风险。
## 16. 装配任务正式变更同步记录
### 同步日期与范围
- 同步日期2026-07-25
- 测试数据库:`124.220.15.242,64722 / YL_MESDB`
- 测试接口:`https://124.220.15.242:10101/submit/MESCommonBase.ashx`
- 同步范围系统类和阀类装配任务合同工时修复、共享查询优化、5 个辅助索引、预算工时保存及预算进度返回、前端首屏渲染优化。
### 数据库对象
- 新增共享核心过程 `dbo.计划排产_装配任务查询_核心`
- 原入口过程 `计划排产_系统类任务查询``计划排产_阀类任务查询` 保留名称和参数,定义哈希与正式库对应入口完全一致。
- 保留测试库原过程备份:`计划排产_系统类任务查询_优化前_20260725``计划排产_阀类任务查询_优化前_20260725`
- 新增 `计划排产_装配任务预算``计划排产_装配合同预算``计划排产_装配任务预算_保存`
- 新增 5 个查询辅助索引,名称和结构与正式库一致。
### 测试环境 SAP 适配
测试 SQL 链接服务器 `[SAP]` 无法连接现场 SAP单独读取超过 39 秒仍未返回。装配任务查询原本每次等待该链接,系统类约 44 秒、阀类约 22 秒,并导致接口不能正常返回分页结构。
仅在测试核心过程中跳过远程交货日期读取,使用空日期保留 `交货日期理论齐套日期` 字段结构。订单、合同工时、预算字段和其他业务条件不变。现场 SAP 恢复后可执行:
- 部署脚本:`db_backups/test_disable_install_task_sap_delivery_20260725.sql`
- 回滚脚本:`db_backups/rollback_test_disable_install_task_sap_delivery_20260725.sql`
- 过程备份:`dbo.计划排产_装配任务查询_核心_测试跳过SAP前_20260725`
### 回归结果
| 查询 | 测试接口耗时 | 返回结果 |
| --- | ---: | --- |
| 系统类装配任务 | 818-1089 ms | 20/55 行4 个预算字段齐全 |
| 阀类装配任务 | 931-1136 ms | 20/263 行4 个预算字段齐全 |
预算接口写入和读取回归通过:测试订单 5598、合同 `HT260597` 临时保存任务预算 `123.45` 小时和合同预算 `67.89` 小时,查询返回进度 `2.48%``10.04%`。回归记录已按专用编辑标记精确删除,两张预算表最终均为 0 行。
### 前端交付
根目录 `dist` 已使用包含 20 行默认分页、预算进度功能、登录安全修复和外部系统只读保护的 `app.83b8251a.js`。服务器已创建 IIS 站点 `元利流体MES_View`,物理目录为 `C:\ProjectShow\元利流体\MES_Manage_View\dist`HTTP 绑定为 `*:10012:`。本地和远程文件共 84 个、95,691,424 字节,`index.html``config.js` 的 SHA-256 一致。本次直接复制 `dist`,未生成 zip。
## 17. V1.3 接管落地与验收记录
### 17.1 当前可执行的工作
-`http://124.220.15.242:10012/` 部署和回归测试前端,独立维护测试运行配置。
- 通过 `10101` 完成登录、菜单、权限和 MES 存储过程的查询/受控变更验证。
- 使用数据库只读账号开展结构、数据、执行计划和性能诊断;数据库变更使用部署/回滚脚本受控执行。
- 维护系统类、阀类装配任务查询、预算工时和进度功能,并在测试环境做接口回归。
- 通过 VPN 对 B1 做登录代理和 GET 联调B1/TM 的 POST/PATCH 在测试前端强制阻止。
- 执行数据库备份校验、隔离恢复、完整性检查和清理演练。
- 盘点 IIS、部署目录、配置、日志、证书和防火墙为生产接管准备操作清单。
### 17.2 前端与外部集成保护
- 构建结果Webpack 成功,入口 `app.83b8251a.js`;仅有既有的大资源和浏览器数据过期警告。
- IIS 验证:服务器本机和管理端访问 `10012` 均返回 HTTP 200运行配置返回 HTTP 200 且 `externalReadOnly=true`
- 隔离测试B1/TM 四个语义写入口均返回 `blocked=true`,网络调用次数为 0B1/TM GET 包装仍正常发出 `func=GET`
- B1 实际 GET`ProductionOrders` 最小查询返回 HTTP 200约 252 ms`value` 集合且无 B1 错误。
- TM端口可达但代码中没有可确认无副作用的登录/GET 端点,因此未调用库存任务接口。
### 17.3 数据库恢复演练
- 备份:`C:\YL_MESDB_202607240000.bak`,备份完成时间 2026-07-24 14:40:52大小 1,278,302,720 字节。
- `RESTORE VERIFYONLY` 通过;该备份未包含 SQL Server checksum`CHECKSUM` 的校验无法执行,后续备份任务应启用 checksum。
- 隔离恢复库:`YL_MESDB_RestoreDrill_20260725`,恢复约 9.4 秒并正常 ONLINE。
- `DBCC CHECKDB(..., PHYSICAL_ONLY)` 通过,约 5.9 秒。
- 备份对象为 61 表/27 视图/425 过程;当前测试库为 63/27/432增加项来自 7 月 25 日已部署变更。
- 演练结束后数据库、MDF 和 LDF 均已删除,磁盘空间恢复。
### 17.4 安全整改
- 登录过程已保留回滚备份并改为显式返回字段,仍校验密码但不返回 `password`;公网接口实测登录成功且响应无密码属性。
- 登录页只记住账号,不再写入密码 Cookie并会删除旧 `password` Cookie。
- 后端根目录和 `submit` 目录浏览已从 `True` 改为 `False`,原配置已在服务器同目录备份;目录访问返回 HTTP 403接口仍为 HTTP 200。
- 仓库内两个历史注释中的口令和执行日志中的口令特征已脱敏。
- WinRM 5986 和 IIS Management 8172 仅允许管理端公网 IP测试前端 10012 当前允许任意来源访问。
### 17.5 核心模块只读冒烟
| 模块 | 查询入口 | 结果 | 耗时 |
| --- | --- | --- | ---: |
| 系统 | `人员管理_人员信息查询` | 200 / 135 行 | 385 ms |
| 工艺 | `MES_ProcessManagement_ProcessGet` | 200 / 合法 JSON | 113 ms |
| 计划 | `计划排产_生产订单_工艺查询` | 200 / 9878 行 | 2619 ms |
| 生产 | `生产管理_班次管理_班次列表查询` | 200 / 4 行 | 128 ms |
| 质量 | `质量管理_测试装配任务_查询2` | 200 / 0 行 | 200 ms |
| 设备 | `设备管理_设备数据_工位信息_查询` | 200 / 21 行 | 140 ms |
| 异常 | `加急订单_加急明细查询` | 200 / 合法 JSON | 117 ms |
| 销售 | `销售管理_销售订单状态` | 200 / 200 行 | 430 ms |
| 首页看板 | `看板_主页六个关键数据_查询` | 200 / 25 行 | 1099 ms |
登录账号角色菜单查询另返回 84 条,覆盖工艺、计划、生产、质量、设备和异常等主模块。
### 17.6 仍保留的生产接管前风险
1. 测试后端业务 HTTPS 证书为名称不匹配的自签名证书,需要替换为受信任且与访问域名匹配的证书。
2. 测试前端 `10012` 当前使用 HTTP 且防火墙来源为 Any正式接管前应使用 HTTPS并按实际测试人员/网络范围限制入口。
3. 后端仍使用高权限数据库账号。已有只读诊断账号,但应用服务账号降权需要覆盖全部写流程和 SQL 链接服务器场景后再切换。
4. 本轮全模块验收为只读冒烟MES 报工、送检、入库等写流程未执行B1/TM 写流程按要求明确禁止。
5. 核心 DLL 没有原始源码,按当前约定不做 DLL 修改;将来若生产问题必须修改核心逻辑,需要取得源码或采用经过专项验证的替代构建流程。