# 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/2019,64722 在 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`,网络调用次数为 0;B1/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 修改;将来若生产问题必须修改核心逻辑,需要取得源码或采用经过专项验证的替代构建流程。