diff --git a/web-admin/nutrition/doc/缓存中转服务器功能架构与数据流转方案.md b/web-admin/nutrition/doc/缓存中转服务器功能架构与数据流转方案.md new file mode 100644 index 0000000..905f0bb --- /dev/null +++ b/web-admin/nutrition/doc/缓存中转服务器功能架构与数据流转方案.md @@ -0,0 +1,1174 @@ +# 缓存中转服务器产品设计方案 + +> 版本:v0.2 产品设计初稿 +> 日期:2026-06-23 +> 范围:营养管理服务云端主服务 + 食堂边缘节点服务 +> 参考:老系统《食堂本地服务单功能点清单20260622(1).docx》、营养管理原型 `web-admin/nutrition` + +## 1. 业务背景 + +营养管理服务后续会部署到多个食堂现场。不同食堂的网络环境、设备数量、设备类型、业务高峰和现场运维能力差异较大。如果所有现场设备都直接依赖云端服务,会带来几个明显问题: + +- 网络不稳定时,称重、就餐、净菜组配、按单烹制、上餐等关键流程会被中断。 +- 很多食堂现场设备处于内网环境,云端服务无法直接主动访问设备。 +- 现场设备数量增加后,高频称重、识别、就餐流水会对云端形成集中写入压力。 +- 人脸、菜品、物料、生产任务、升级包等资料需要提前下发到现场,不能完全依赖实时访问云端。 +- 一旦网络中断,现场仍然需要完成当天供餐和数据补传,不能影响食堂正常运营。 + +因此,本方案建议采用“云端主服务 + 多个食堂边缘节点服务”的产品形态。每个食堂现场部署一台缓存中转服务器,现场设备优先连接本地边缘节点;边缘节点负责本地缓存、业务接入、断网续用和云端同步。 + +## 2. 产品定位 + +缓存中转服务器的产品定位是“食堂现场业务连续性保障服务”,不是一个独立的食堂管理系统,也不是云端营养管理服务的完整复制。 + +它的核心价值是: + +1. **保现场**:保证设备在弱网或断网时仍能完成现场作业。 +2. **保数据**:保证现场产生的数据先本地保存,网络恢复后可补传云端。 +3. **保下发**:保证云端配置、任务、人脸、菜品、物料、升级包能可靠到达食堂。 +4. **保监管**:云端能看到每个食堂节点、设备、同步和异常状态。 + +一句话概括:云端负责全局管理,边缘节点负责本食堂现场运行,设备负责具体作业执行。 + +## 3. 产品目标 + +| 目标 | 说明 | +|---|---| +| 现场业务不中断 | 网络异常时,设备仍可从边缘节点获取基础资料和待办任务,并继续上报数据 | +| 数据不丢失 | 现场数据先写入边缘节点,再异步同步云端 | +| 下发可追踪 | 云端下发的数据和任务需要有状态、有结果、有失败原因 | +| 异常可处理 | 同步失败、任务冲突、升级失败、数据积压需要有产品化处理入口 | +| 边界清晰 | 云端、边缘节点、设备的职责边界明确,避免后续系统职责混乱 | + +## 4. 用户角色与关注点 + +| 角色 | 使用场景 | 关注点 | +|----------|---|---| +| 系统管理员 | 在管理端维护食堂、菜品、物料、用户、人脸、设备、任务和升级策略 | 资料是否下发成功、食堂是否在线、异常是否可处理 | +| 食堂现场工作人员 | 管理本食堂当天供餐、设备运行、任务执行和异常处理 | 断网时能不能继续营业、设备能不能正常拿到任务 | +| 设备操作员 | 在营养秤、组配秤、结算终端等设备上完成现场操作 | 操作是否顺畅、任务是否准确、数据是否能保存 | +| 运维人员 | 负责节点部署、网络排障、升级和故障恢复 | 节点是否在线、数据是否积压、服务是否异常 | +| 现场设备 | 通过接口获取任务、资料并上报业务数据 | 接口稳定、响应快、弱网时可用 | + +## 5. 总体业务架构 + +系统分为云端主服务、食堂边缘节点、现场设备三层。云端是业务权威中心,边缘节点是现场业务缓存和中转中心,现场设备是业务执行和数据采集终端。 + +```mermaid +flowchart LR + subgraph Cloud["云端主服务"] + C1["营养管理业务服务"] + C2["设备与食堂管理"] + C3["同步编排服务"] + C4["MQ Broker"] + C5["对象存储/升级包/图片"] + CDB["云端数据库"] + end + + subgraph Edge["食堂边缘节点服务"] + E1["设备接入网关"] + E2["本地业务 API"] + E3["本地缓存数据库"] + E4["上行 Outbox"] + E5["下行 Inbox"] + E6["同步引擎"] + E7["任务调度/本地规则引擎"] + E8["文件缓存/升级包缓存"] + E9["运维监控 Agent"] + end + + subgraph Devices["现场设备"] + D1["餐线营养秤"] + D2["净菜/配比/组配秤"] + D3["结算终端/餐盘 RFID"] + D4["人脸识别设备"] + D5["大屏/落地屏"] + D6["其他 IoT 设备"] + end + + Devices --> E1 + E1 --> E2 + E2 --> E3 + E2 --> E4 + E6 --> E4 + E6 --> E5 + E6 <--> C4 + C4 --> C3 + C3 --> CDB + C3 --> C5 + E5 --> E3 + E7 --> E2 + E8 <--> C5 + E9 --> C2 +``` + +### 5.1 三层职责分工 + +| 层级 | 产品职责 | 典型功能 | +|---|-----------------------------|---| +| 云端主服务 | 全局权威、统一管理、策略配置、统计分析、数据最终一致性 | 主数据维护、食谱计划、生产任务、用户人脸、设备升级、跨食堂统计 | +| 食堂边缘节点 | 现场缓存、设备接入、断网续用、同步中转站 | 本地任务缓存、现场数据接收、基础资料查询、同步状态维护、异常告警 | +| 现场设备 | 现场作业、数据采集、人机交互 | 称重、组配、识别、结算、上餐、打印、展示、设备日志 | + +## 6. 功能边界 + +### 6.1 云端主服务负责 + +- 维护食堂、档口、餐线、餐次等组织和场景资料。 +- 维护用户、部门、权限、餐盘、人脸等人员资料。 +- 维护菜品、餐品规格、食材、物料、净菜类型、包装规格等营养业务主数据。 +- 生成和管理生产任务,例如净菜订单、净菜组配、按单烹制、上餐任务。 +- 配置设备升级策略、升级包、下发范围和升级批次。 +- 接收边缘节点上报的现场流水和任务状态。 +- 提供跨食堂查询、统计分析、异常监管和追溯能力。 + +### 6.2 食堂边缘节点负责 + +- 接入本食堂现场设备。 +- 缓存云端下发的基础资料、任务、人脸、升级包。 +- 在弱网或断网时,为现场设备提供本地查询和数据写入能力。 +- 记录现场称重、组配、就餐、余量、设备日志等数据。 +- 维护本食堂任务状态,例如待组配、组配中、已完成。 +- 将现场产生的数据异步同步到云端。 +- 接收云端下发内容并反馈处理结果。 +- 上报节点健康状态、设备在线状态和同步积压情况。 + +### 6.3 现场设备负责 + +- 从边缘节点获取登录配置、基础资料和任务。 +- 执行称重、识别、组配、取餐、结算、上餐、打印等现场动作。 +- 将操作过程、称重结果、就餐流水、设备日志上报给边缘节点。 +- 接收边缘节点分发的升级任务和升级包。 + +### 6.4 不建议放到边缘节点的功能 + +- 跨食堂统计分析。 +- 全局主数据的最终编辑权。 +- 复杂审批流。 +- 大模型推理和长期历史分析。 +- 与云端规则冲突的独立业务规则。 +- 需要强一致全局判断的业务,例如跨食堂库存统一调拨审批。 + +## 7. 边缘节点功能清单 + +### 7.1 设备接入与状态管理 + +| 功能 | 说明 | +|---|---| +| 设备认证 | 支持设备获取本地访问凭证 | +| 设备心跳 | 周期性接收设备在线状态、版本、IP、最后活跃时间 | +| 设备绑定 | 支持设备与食堂、档口、餐线、岗位或业务场景绑定 | +| 设备时间同步 | 为现场设备提供统一服务器时间 | +| 设备日志接收 | 接收设备运行日志、异常日志和升级日志 | + +### 7.2 基础资料缓存 + +边缘节点需要缓存本食堂业务所需的基础资料: + +- 食堂、档口、餐线、餐次、开餐设置。 +- 设备档案、设备类型、设备绑定关系。 +- 用户、部门、餐盘 RFID、员工登录方式。 +- 人脸特征、人脸图片元数据、人脸删除标记。 +- 菜品、餐品规格、菜品分类、食谱详情。 +- 食材、净菜类型、物料、包装规格、供应商。 +- 菜品规则、配方规则、营养成分规则。 + +### 7.3 人脸与用户数据缓存 + +| 功能 | 说明 | +|---|---| +| 人脸全量初始化 | 新部署或重建节点时,从云端拉取本食堂人脸数据 | +| 人脸增量更新 | 云端新增、修改、删除人脸后,下发到对应食堂节点 | +| 本地人脸查询 | 支持设备在本地进行人脸相关查询或特征同步 | +| 人脸图片上传 | 现场采集的人脸图片先传边缘节点,再同步云端 | +| 用户认证缓存 | 支持断网时使用本地缓存完成必要的身份校验 | + +### 7.4 生产任务缓存与执行 + +边缘节点需要支持营养管理生产链路中的现场任务: + +- 食谱计划。 +- 净菜订单。 +- 净菜进柜。 +- 净菜组配。 +- 按单烹制。 +- 上餐监控。 +- 余量处置。 +- 生产统计。 + +其中,净菜组配和按单烹制通常存在强关联。云端生成按单烹制任务时,应同步生成或关联净菜组配任务,并下发到对应食堂边缘节点。 + +### 7.5 就餐与称重数据采集 + +边缘节点需要接收以下现场数据: + +- 普通就餐流水。 +- 人脸跟踪就餐流水。 +- 餐线模式数据。 +- 档口模式数据。 +- 餐盘 RFID 相关数据。 +- 员工食堂记录。 +- 菜品取餐、补餐、余量和处置数据。 + +### 7.6 文件与升级包缓存 + +边缘节点需要缓存或中转: + +- 设备升级包。 +- 人脸图片。 +- 宣传图片。 +- 设备日志文件。 +- 现场视频或过程图片。 +- 组配、烹制、上餐相关附件。 + +## 8. 核心业务规则 + +### 8.1 云端主数据权威规则 + +1. 食堂、档口、菜品、食材、物料、用户、人脸、设备等主数据以云端为权威来源。 +2. 边缘节点只缓存和使用云端下发的主数据,默认不作为最终编辑源。 +3. 云端下发的数据必须带版本号或更新时间。 +4. 边缘节点收到旧版本数据时,不得覆盖本地较新版本。 + +### 8.2 本地优先写入规则 + +1. 现场设备产生的数据必须优先写入边缘节点本地。 +2. 本地写入成功后,设备即可得到成功反馈。 +3. 云端同步失败不能阻塞现场继续作业。 +4. 未同步数据必须保留同步状态和失败原因。 + +### 8.3 断网可用规则 + +1. 云端与边缘节点断连时,现场设备仍应可以访问边缘节点。 +2. 已下发到边缘节点的任务可以继续执行。 +3. 已缓存的人脸、菜品、食材、物料可以继续使用。 +4. 新增现场流水继续本地保存,网络恢复后补传云端。 +5. 断网期间不建议允许现场修改全局主数据,避免恢复后冲突。 + +### 8.4 任务状态流转规则 + +边缘节点承载的现场任务,建议采用统一的任务状态流转模型: + +```mermaid +stateDiagram-v2 + [*] --> 待下发 + 待下发 --> 待执行: 云端下发到边缘节点 + 待执行 --> 执行中: 设备领取或操作员开始 + 执行中 --> 已完成: 设备上报完成 + 待执行 --> 已取消: 云端取消 + 执行中 --> 异常: 设备异常/数据异常/人工终止 + 异常 --> 执行中: 继续处理 + 异常 --> 已取消: 取消任务 + 已完成 --> [*] + 已取消 --> [*] +``` + +规则说明: + +1. 任务未下发到边缘节点前,设备不可见。 +2. 任务下发成功后,设备可在边缘节点查询到任务。 +3. 任务开始后进入“执行中”,应记录开始时间、设备、操作员。 +4. 任务完成后进入“已完成”,应记录完成时间、执行结果、设备编号和过程记录。 +5. 任务已完成后,云端原则上不能直接修改任务核心内容,只能发起纠错或补录流程。 + +### 8.5 数据补传规则 + +1. 边缘节点需要持续记录哪些数据未同步、同步中、已同步、同步失败。 +2. 网络恢复后,未同步数据应按业务发生时间顺序补传。 +3. 同一条业务数据重复补传时,云端只能入库一次。 +4. 补传失败达到阈值后,应进入异常队列,等待人工处理或系统重试。 + +### 8.6 冲突处理规则 + +| 场景 | 处理建议 | +|---|---| +| 云端下发旧版本基础资料 | 边缘节点忽略,并记录处理结果 | +| 任务已开始后云端修改任务 | 不直接覆盖现场任务,生成变更提醒或新版本任务 | +| 任务已完成后云端取消任务 | 不允许直接取消,需走异常纠错 | +| 边缘节点断网期间产生数据,云端已有同业务数据 | 以业务唯一键去重,保留最早现场发生时间 | +| 人脸删除和现场识别同时发生 | 删除命令优先生效,但已发生识别流水仍需保留 | + +### 8.7 文件同步规则 + +1. 文件类数据不建议直接通过 MQ 传输。 +2. MQ 或同步消息中只传文件元数据,例如文件地址、hash、大小、版本、过期时间。 +3. 边缘节点负责下载、校验、缓存和分发文件。 +4. 现场设备从边缘节点获取升级包、图片或附件。 +5. 文件上传失败不应影响业务流水保存,但需要保留待上传状态。 + +## 9. 边缘节点适用业务场景设计 + +### 9.1 业务说明 + +边缘节点不是为某一个单独业务场景设计,而是为整个营养管理后台在“多食堂、多设备、弱网、断网、现场连续作业”条件下提供统一现场支撑能力。它应覆盖后台原型目录中多个业务模块涉及的现场执行、数据缓存和结果回传需求。 + +从产品视角看,边缘节点主要承接以下四类业务: + +1. 基础资料类:用户、人脸、菜品、食材、物料、设备、餐次等云端资料下发到现场。 +2. 现场作业类:称重、识别、生产任务执行、取餐、上餐、余量处置等现场过程。 +3. 结果回传类:就餐流水、称重结果、任务状态、设备日志、异常记录回传云端。 +4. 运维支撑类:升级包分发、节点状态监控、设备在线监控、同步补偿和告警处理。 + +### 9.2 典型业务场景 + +| 场景 | 云端主服务负责 | 边缘节点负责 | 现场设备负责 | +|---|---|---|---| +| 基础资料下发 | 维护和发布主数据 | 接收、缓存、版本校验 | 拉取和使用本地缓存 | +| 人脸与用户支撑 | 维护用户、人脸、权限 | 缓存人脸和认证数据 | 识别、登录、查询 | +| 现场任务执行 | 生成任务、维护全局进度 | 缓存任务、维护本地状态 | 领取任务、执行任务、回传结果 | +| 就餐与称重流水 | 接收并汇总现场结果 | 本地落库、待同步管理 | 采集并上报数据 | +| 余量与异常处理 | 汇总分析、追踪异常 | 本地记录过程和状态 | 产生余量、处置、上报 | +| 设备升级与运维 | 下发升级策略、查看结果 | 缓存升级包、分发、回传结果 | 下载升级、执行升级、回传日志 | + +### 9.3 通用业务对象建议 + +为了支撑整个营养管理后台目录中的现场能力,边缘节点建议统一维护以下业务对象: + +| 业务对象 | 说明 | +|---|---| +| 基础资料对象 | 食堂、档口、餐次、菜品、食材、物料、设备、用户、人脸等 | +| 现场任务对象 | 由云端生成并下发到现场执行的任务集合 | +| 现场流水对象 | 就餐记录、称重记录、操作记录、余量记录、异常记录等 | +| 文件对象 | 升级包、人脸图片、过程图片、日志文件、视频索引等 | +| 同步对象 | 待上行、待下行、失败补偿、同步回执等 | + +### 9.4 边缘节点支撑范围 + +从业务模块角度,边缘节点建议重点支撑以下范围: + +- 档案与人员:用户、人脸、设备、食堂、餐次等基础资料下发与缓存。 +- 卫生供应:与现场验收、入库、包装、标签、余量等相关的过程数据接入。 +- 健康生产:与现场任务执行、过程记录、结果上报相关的生产链路支撑。 +- 营养用餐:与取餐、结算、就餐流水、营养结果回传相关的现场数据支撑。 +- 终端与设备:与设备登录、心跳、配置同步、升级包分发、日志回传相关的运维能力。 + +## 10. 重点业务流程 + +### 10.1 云端下发基础资料 + +适用场景:菜品、食材、物料、人脸、设备升级策略、生产任务等由云端更新后,需要同步到一个或多个食堂边缘节点。 + +```mermaid +sequenceDiagram + participant Cloud as 云端主服务 + participant MQ as MQ Broker + participant Edge as 边缘节点同步引擎 + participant DB as 边缘本地库 + participant Device as 现场设备 + + Cloud->>MQ: 发布下行消息
人脸/菜品/物料/任务/升级包 + Edge->>MQ: 订阅本食堂 Topic + MQ-->>Edge: 推送下行消息 + Edge->>Edge: 校验签名、版本、幂等键 + Edge->>DB: 写入 Inbox + Edge->>DB: 应用到本地业务表 + Edge-->>MQ: 发送处理 ACK + Device->>Edge: 请求最新任务/资料 + Edge-->>Device: 返回本地缓存数据 +``` + +产品规则: + +1. 云端下发后,管理端应能看到“待下发、下发中、已下发、下发失败”的状态。 +2. 边缘节点处理失败时,应返回失败原因。 +3. 设备只从边缘节点获取本食堂可用数据,不直接感知云端下发过程。 + +### 10.2 现场数据上报 + +适用场景:就餐、入库、组配、余量、操作日志等现场数据由设备产生,需要保存并同步云端。 + +```mermaid +sequenceDiagram + participant Device as 现场设备 + participant EdgeAPI as 边缘本地 API + participant DB as 边缘本地库 + participant Sync as 同步引擎 + participant MQ as MQ Broker + participant Cloud as 云端主服务 + + Device->>EdgeAPI: 上报就餐/组配/入库/余量数据 + EdgeAPI->>DB: 写业务表 + EdgeAPI->>DB: 写 Outbox 事件 + EdgeAPI-->>Device: 返回成功 + + Sync->>DB: 拉取未同步事件 + Sync->>MQ: 发布上行消息 + MQ->>Cloud: 云端消费消息 + Cloud->>Cloud: 幂等校验并入库 + Cloud-->>MQ: 返回同步回执 + MQ-->>Sync: 推送回执 + Sync->>DB: 标记事件已同步 +``` + +产品规则: + +1. 设备只要成功写入边缘节点,就视为现场操作成功。 +2. 云端同步失败不影响设备继续操作。 +3. 管理端需要展示“未同步数据量”和“最后同步时间”。 + +### 10.3 净菜组配任务执行 + +适用场景:云端生成净菜组配任务后,食堂现场通过组配秤或终端设备执行任务。 + +```mermaid +sequenceDiagram + participant Admin as 云端管理端 + participant Cloud as 云端生产服务 + participant MQ as MQ + participant Edge as 食堂边缘节点 + participant Scale as 组配秤/终端设备 + + Admin->>Cloud: 创建或生成净菜组配任务 + Cloud->>Cloud: 根据餐品规则计算食材明细 + Cloud->>MQ: 下发组配任务 + MQ-->>Edge: 推送任务到指定食堂 + Edge->>Edge: 入库任务、食材配方、溯源码要求 + Scale->>Edge: 拉取待组配任务 + Edge-->>Scale: 返回任务与食材明细 + Scale->>Edge: 上报开始组配 + Edge->>Edge: 更新状态为组配中 + Scale->>Edge: 上报称重明细、设备编号、视频/图片索引 + Edge->>Edge: 本地保存过程数据 + Scale->>Edge: 上报完成组配 + Edge->>Edge: 更新状态为已完成 + Edge->>MQ: 异步上报任务完成事件 + MQ-->>Cloud: 云端入库并更新生产进度 +``` + +产品规则: + +1. 组配任务必须明确目标餐品、份数、截止时间和食材明细。 +2. 设备领取任务后,应记录设备编号和操作人员。 +3. 实际称重量与标准用量差异超过阈值时,应产生异常提示。 +4. 已完成任务需要支持云端查看过程记录和溯源链路。 + +### 10.4 人脸特征增量下发 + +适用场景:云端新增、修改、删除用户人脸后,需要下发到对应食堂,保证现场识别设备可用。 + +```mermaid +sequenceDiagram + participant Cloud as 云端人员/人脸服务 + participant MQ as MQ + participant Edge as 边缘节点 + participant Face as 人脸识别设备 + + Cloud->>MQ: 发布人脸增量批次消息 + MQ-->>Edge: 推送到指定食堂边缘节点 + Edge->>Edge: 校验批次号和版本 + Edge->>Edge: 写入人脸特征缓存 + Edge-->>MQ: 返回批次处理结果 + Face->>Edge: 拉取或刷新本地人脸特征 + Edge-->>Face: 返回特征数据或变更列表 +``` + +产品规则: + +1. 人脸数据应支持全量初始化和增量更新。 +2. 人脸删除需要优先生效。 +3. 下发失败时,云端管理端应提示对应食堂人脸数据不同步。 + +### 10.5 设备升级 + +适用场景:云端为一个或多个食堂设备下发版本升级任务,边缘节点缓存升级包并分发给现场设备。 + +```mermaid +sequenceDiagram + participant Cloud as 云端设备管理 + participant Store as 对象存储 + participant MQ as MQ + participant Edge as 边缘节点 + participant Device as 现场设备 + + Cloud->>Store: 上传升级包 + Cloud->>MQ: 下发升级任务和升级包元数据 + MQ-->>Edge: 推送升级任务 + Edge->>Store: 下载升级包 + Edge->>Edge: 校验 hash 和版本 + Device->>Edge: 查询是否有升级任务 + Edge-->>Device: 返回升级包下载地址 + Device->>Edge: 下载升级包并执行升级 + Device->>Edge: 上报升级结果 + Edge->>MQ: 异步回传升级结果 + MQ-->>Cloud: 云端更新设备版本和升级状态 +``` + +产品规则: + +1. 升级包应先到边缘节点,再由设备从边缘节点下载。 +2. 设备升级结果需要回传云端。 +3. 升级失败需要保留失败原因和日志。 +4. 是否支持自动回滚需要在设备能力确认后单独定义。 + +## 11. 异常场景与处理策略 + +| 异常场景 | 业务影响 | 产品处理策略 | +|---|---|---| +| 云端与边缘节点断连 | 云端无法实时收到现场数据,云端下发延迟 | 现场继续使用本地缓存;云端标记节点离线;恢复后自动补传 | +| 设备与边缘节点断连 | 单台或多台设备无法获取任务或上报数据 | 设备提示本地连接异常;边缘节点记录设备离线;运维端告警 | +| 云端重复下发同一任务 | 可能导致重复任务 | 边缘节点按任务编号和版本去重 | +| 任务已开始后云端修改 | 现场执行内容可能与云端不一致 | 不直接覆盖,生成变更提示或新版本任务 | +| 边缘节点同步积压 | 云端数据滞后 | 管理端展示积压数量、最早积压时间、手动重试入口 | +| 人脸数据未同步 | 现场识别可能失败或不准确 | 管理端提示指定食堂人脸版本落后,支持重新下发 | +| 文件下载失败 | 升级包、图片、视频不可用 | 边缘节点保留待下载状态,支持重试 | +| 设备升级失败 | 设备版本不一致或不可用 | 云端展示失败状态,支持重新下发或人工处理 | +| 边缘节点磁盘不足 | 现场数据可能无法继续保存 | 运维告警,限制大文件缓存,优先保障业务流水 | + +## 12. 管理端需要补充的产品能力 + +为了让边缘节点真正可运营,云端管理端建议增加以下能力。 + +### 12.0 模块定位 + +边缘节点管理模块不是单纯的“设备监控页”,而是云端针对“食堂现场运行状态”的统一运营入口。它承接的是边缘节点相关的日常管理、异常发现、同步补偿和升级跟踪需求。 + +该模块需要解决四类产品问题: + +1. 食堂节点是否在线、是否健康、是否还能承接现场业务。 +2. 云端下发的数据和任务是否真正到达食堂并生效。 +3. 现场产生的数据是否已经成功回传云端,是否存在积压和失败。 +4. 节点、设备、升级、文件、人脸等异常发生后,管理端是否有明确的处理入口。 + +典型使用对象: + +- 云端管理员:关注全部食堂的节点健康和同步状态。 +- 业务运营人员:关注任务是否下发成功、现场是否按计划执行。 +- 运维人员:关注节点、设备、升级、磁盘、服务异常。 + +### 12.1 边缘节点列表 + +#### 12.1.1 页面用途 + +用于按食堂维度集中查看所有边缘节点的在线情况、运行健康度、同步状态和基础资源情况,是进入节点详情和异常处理的总入口。 + +#### 12.1.2 筛选项建议 + +- 所属区域 +- 所属食堂 +- 节点状态 +- 同步状态 +- 服务版本 +- 是否存在告警 +- 最近心跳时间区间 + +#### 12.1.3 列表字段建议 + +| 字段 | 说明 | +|---|---| +| 节点名称 | 便于运营识别的节点名称 | +| 节点编号 | 系统内唯一编号 | +| 所属食堂 | 节点归属食堂 | +| 部署位置 | 机房、后厨、配餐间等,可选 | +| 在线状态 | 在线、离线、异常 | +| 健康状态 | 正常、告警、严重 | +| 最后心跳时间 | 最近一次成功心跳时间 | +| 服务版本 | 边缘节点当前服务版本 | +| 本地数据库状态 | 正常、告警、不可用 | +| 磁盘剩余空间 | 用于判断缓存和日志是否存在风险 | +| 绑定设备数 | 当前节点关联的设备总数 | +| 在线设备数 | 当前在线设备数 | +| 未同步数据量 | 本地待上行同步的数据量 | +| 下发失败数 | 最近周期内下行失败条数 | +| 最后成功同步时间 | 最近一次完整成功同步时间 | +| 当前告警数 | 当前未恢复告警数量 | + +#### 12.1.4 列表操作建议 + +- 查看详情 +- 查看设备 +- 查看同步记录 +- 查看告警 +- 手动重连检测 +- 重新下发基础资料 +- 导出节点状态 + +#### 12.1.5 状态规则建议 + +| 状态 | 说明 | +|---|---| +| 在线 | 最近心跳正常,关键服务可用 | +| 离线 | 超过阈值未收到心跳 | +| 异常 | 节点在线,但存在数据库异常、MQ 异常、磁盘不足等问题 | + +健康状态建议与在线状态分离:节点可能在线,但已出现同步积压、磁盘不足或服务异常,此时应展示为“告警”或“严重”。 + +#### 12.1.6 页面布局建议 + +边缘节点列表页建议采用典型的“统计区 + 筛选区 + 列表区”三段式布局。 + +页面自上而下建议为: + +1. 页面标题区:展示“边缘节点管理”标题、页面说明、数据更新时间。 +2. 顶部统计区:展示当前节点运行总览。 +3. 筛选区:支持按食堂、状态、版本、告警等条件筛选。 +4. 列表区:展示节点清单和行级操作。 +5. 详情入口区:点击节点名称或“查看详情”进入节点详情页。 + +#### 12.1.7 顶部统计区建议 + +建议顶部使用 6 个统计卡,优先展示最能反映全局风险的指标: + +| 统计项 | 说明 | +|---|---| +| 节点总数 | 当前纳入管理的边缘节点数量 | +| 在线节点数 | 最近心跳正常的节点数量 | +| 离线节点数 | 超过阈值未心跳的节点数量 | +| 异常节点数 | 在线但存在告警或服务异常的节点数量 | +| 积压节点数 | 存在未同步积压的节点数量 | +| 严重告警节点数 | 存在严重告警且未恢复的节点数量 | + +统计卡交互建议: + +- 点击“在线节点数”自动筛选在线节点。 +- 点击“离线节点数”自动筛选离线节点。 +- 点击“积压节点数”自动筛选存在同步积压的节点。 + +#### 12.1.8 筛选区布局建议 + +筛选区建议分为两行: + +- 第一行放高频筛选项:所属食堂、节点状态、同步状态、是否有告警。 +- 第二行放辅助筛选项:服务版本、心跳时间区间、关键字搜索。 + +按钮建议: + +- 查询 +- 重置 +- 导出 + +关键字搜索建议支持: + +- 节点名称 +- 节点编号 +- 食堂名称 + +#### 12.1.9 列表区布局建议 + +列表区建议采用表格形式,字段顺序建议如下: + +1. 节点名称 +2. 所属食堂 +3. 在线状态 +4. 健康状态 +5. 服务版本 +6. 在线设备数 / 绑定设备数 +7. 未同步数据量 +8. 下发失败数 +9. 最近心跳时间 +10. 最后成功同步时间 +11. 当前告警数 +12. 操作 + +展示规则建议: + +- 在线状态使用强识别色标,例如绿色、灰色、红色。 +- 健康状态使用标签区分正常、告警、严重。 +- “在线设备数 / 绑定设备数”建议显示为 `12 / 18` 形式,方便快速判断设备在线率。 +- 未同步数据量和当前告警数大于 0 时,应支持点击进入对应记录页。 + +#### 12.1.10 行级操作建议 + +列表行级操作建议分为主操作和更多操作: + +主操作: + +- 查看详情 +- 查看同步 + +更多操作: + +- 查看设备 +- 查看告警 +- 手动重连检测 +- 重新下发基础资料 +- 导出节点状态 + +交互规则建议: + +1. “查看详情”为默认主入口,点击节点名称也进入详情页。 +2. “手动重连检测”只对离线或异常节点开放。 +3. “重新下发基础资料”应二次确认,并明确影响范围。 + +#### 12.1.11 页面状态说明 + +需要明确以下页面状态: + +| 状态 | 展示建议 | +|---|---| +| 首次加载中 | 显示骨架屏或表格 loading | +| 无数据 | 提示当前暂无边缘节点数据,可配合引导说明 | +| 无筛选结果 | 提示未找到符合条件的节点,支持一键重置筛选 | +| 部分异常 | 列表正常展示,同时突出异常节点 | +| 接口失败 | 展示错误提示和重试按钮 | + +#### 12.1.12 权限建议 + +边缘节点列表页建议按角色控制操作权限: + +| 操作 | 云端管理员 | 业务运营 | 运维人员 | +|---|---|---|---| +| 查看列表 | 是 | 是 | 是 | +| 查看详情 | 是 | 是 | 是 | +| 查看同步记录 | 是 | 是 | 是 | +| 重新下发基础资料 | 是 | 否 | 是 | +| 手动重连检测 | 否 | 否 | 是 | +| 导出节点状态 | 是 | 是 | 是 | + +### 12.2 节点详情 + +#### 12.2.1 页面用途 + +用于查看单个边缘节点的完整运行画像,是故障排查、同步补偿和升级追踪的主要工作台。 + +#### 12.2.2 页面结构建议 + +建议采用 Tab 结构,至少包括以下视图: + +- 基本信息 +- 设备列表 +- 同步记录 +- 下发记录 +- 文件缓存 +- 升级记录 +- 告警记录 + +#### 12.2.3 基本信息 + +建议展示: + +- 节点名称、节点编号、所属食堂、部署位置 +- 节点 IP、安装时间、最近启动时间 +- 服务版本、配置版本 +- 最近心跳时间 +- 本地数据库状态 +- MQ 或同步连接状态 +- CPU、内存、磁盘占用 +- 本地缓存大小 +- 未同步数据量 +- 最近同步成功时间 + +#### 12.2.4 设备列表 + +建议字段: + +- 设备名称 +- 设备编号 +- 设备类型 +- 所属业务场景 +- 绑定位置 +- 在线状态 +- 最近活跃时间 +- 当前版本 +- 最近升级结果 + +建议操作: + +- 查看设备详情 +- 查看设备日志 +- 触发重新拉取配置 +- 触发重新下发升级任务 + +#### 12.2.5 同步记录 + +建议按“上行同步”和“下行同步”分开展示。 + +上行同步建议字段: + +- 业务类型 +- 业务编号 +- 发生时间 +- 同步状态 +- 失败次数 +- 最后失败原因 +- 最近处理时间 + +下行同步建议字段: + +- 下发类型 +- 下发批次号 +- 下发时间 +- 应用状态 +- 失败原因 +- 处理完成时间 + +#### 12.2.6 文件缓存 + +建议展示: + +- 文件类型 +- 文件名称 +- 文件版本 +- 文件大小 +- 下载状态 +- 校验状态 +- 最近下载时间 +- 来源任务 + +#### 12.2.7 升级记录 + +建议展示: + +- 升级任务编号 +- 升级对象 +- 目标版本 +- 下发时间 +- 当前状态 +- 完成时间 +- 失败原因 + +#### 12.2.8 告警记录 + +建议展示: + +- 告警类型 +- 告警等级 +- 首次发生时间 +- 最近发生时间 +- 当前状态 +- 处理人 +- 处理说明 + +### 12.3 同步监控 + +#### 12.3.1 页面用途 + +用于从“数据同步”视角观察整个云边体系的运行情况,重点关注数据是否积压、哪些业务同步失败、失败是否已处理。 + +#### 12.3.2 页面结构建议 + +建议至少分为三个视图: + +- 总览看板 +- 上行同步记录 +- 下行同步记录 + +#### 12.3.3 总览看板 + +建议展示: + +- 在线节点数 / 离线节点数 +- 存在同步异常的食堂数 +- 上行待同步总量 +- 下行失败总量 +- 超过阈值积压的节点数 +- 最近 24 小时失败趋势 + +#### 12.3.4 上行同步记录 + +页面用途:查看现场到云端的数据回传情况。 + +筛选项建议: + +- 食堂 +- 节点 +- 业务类型 +- 同步状态 +- 发生时间 +- 是否多次失败 + +字段建议: + +- 食堂 +- 节点 +- 业务类型 +- 业务编号 +- 发生时间 +- 当前状态 +- 失败次数 +- 最后处理时间 +- 失败原因 + +操作建议: + +- 查看详情 +- 手动重试 +- 导出记录 + +#### 12.3.5 下行同步记录 + +页面用途:查看云端数据、任务、升级包等下发到边缘节点的情况。 + +筛选项建议: + +- 食堂 +- 节点 +- 下发类型 +- 批次号 +- 应用状态 +- 下发时间 + +字段建议: + +- 食堂 +- 节点 +- 下发类型 +- 批次号 +- 下发时间 +- 当前状态 +- 完成时间 +- 失败原因 + +操作建议: + +- 查看详情 +- 重新下发 +- 标记忽略 + +#### 12.3.6 业务规则 + +| 操作 | 规则建议 | +|---|---| +| 手动重试 | 仅针对上行失败或待处理记录,不允许对成功记录重复重试 | +| 重新下发 | 仅针对下行失败、旧版本无效或人工确认需重推的记录 | +| 标记忽略 | 仅针对确认无需再处理的失败记录,需记录操作人和原因 | +| 查看详情 | 需要展示完整业务上下文、失败原因和最近处理轨迹 | + +### 12.4 下发记录与补偿记录 + +#### 12.4.1 页面用途 + +该页面用于补充“同步监控”偏数据状态的不足,更聚焦于“业务下发是否真正落地”和“失败后如何补偿”。 + +适合跟踪的下发对象包括: + +- 基础资料下发 +- 人脸批次下发 +- 生产任务下发 +- 升级任务下发 +- 文件缓存下发 + +#### 12.4.2 下发记录字段建议 + +- 下发单号或批次号 +- 下发类型 +- 目标食堂 +- 目标节点 +- 关联业务对象 +- 发起人 +- 发起时间 +- 当前状态 +- 失败节点数 +- 完成节点数 + +#### 12.4.3 补偿记录字段建议 + +- 补偿单号 +- 原始失败记录 +- 补偿方式 +- 补偿发起人 +- 补偿时间 +- 补偿结果 +- 备注 + +#### 12.4.4 补偿操作建议 + +- 单节点重新下发 +- 批量重新下发 +- 跳过单个失败节点 +- 重新生成下发批次 +- 终止补偿 + +#### 12.4.5 业务规则 + +1. 重新下发应避免对已成功节点重复覆盖,除非用户明确选择“强制覆盖”。 +2. 人脸、菜品、物料等基础资料重新下发时,应支持按食堂或按节点粒度操作。 +3. 生产任务重新下发时,应校验任务是否已开始或已完成。 +4. 升级任务补偿时,应区分“重新通知设备”和“重新分发升级包”。 + +### 12.5 告警中心 + +#### 12.5.1 页面用途 + +告警中心用于集中承接边缘节点和设备运行中的所有异常,让运营和运维人员明确知道“出了什么问题、影响哪些食堂、应该由谁处理、当前处理到哪一步”。 + +#### 12.5.2 告警分类建议 + +- 节点类告警:节点离线、服务异常、数据库异常、磁盘不足 +- 连接类告警:MQ 连接异常、网络断连 +- 设备类告警:设备离线、设备异常、设备版本异常 +- 同步类告警:上行积压、下行失败、多次重试失败 +- 数据类告警:人脸版本落后、主数据应用失败、任务状态冲突 +- 升级类告警:升级失败、升级包校验失败、设备未执行升级 + +#### 12.5.3 告警字段建议 + +| 字段 | 说明 | +|---|---| +| 告警编号 | 唯一标识 | +| 告警类型 | 节点类、设备类、同步类等 | +| 告警名称 | 例如“节点离线”“上行积压超 30 分钟” | +| 告警等级 | 提醒、警告、严重 | +| 所属食堂 | 受影响食堂 | +| 所属节点 | 受影响节点 | +| 受影响对象 | 设备、业务批次、升级任务等 | +| 首次发生时间 | 首次触发时间 | +| 最近发生时间 | 最近一次出现时间 | +| 持续时长 | 当前已持续多久 | +| 当前状态 | 待处理、处理中、已恢复、已忽略 | +| 处理人 | 当前负责人 | +| 处理说明 | 处理结果或备注 | + +#### 12.5.4 告警操作建议 + +- 查看详情 +- 指派处理人 +- 标记处理中 +- 标记已恢复 +- 标记忽略 +- 发起关联补偿 +- 导出告警 + +#### 12.5.5 告警规则建议 + +1. 同一节点同一类型短时间内重复触发时,应合并告警,避免刷屏。 +2. 告警恢复后,应保留恢复时间和恢复方式。 +3. “已忽略”不代表问题已解决,只代表本次不再继续处理,需记录原因。 +4. 严重告警应支持通知策略,例如站内通知、短信、企业微信等。 + +### 12.6 页面间联动建议 + +### 12.7 管理端页面结构建议 + +为了便于后续落地为原型页面,建议在云端管理端中单独建设“边缘节点管理”一级菜单,下设以下二级页面: + +- 边缘节点列表 +- 同步监控 +- 下发与补偿记录 +- 告警中心 + +页面结构建议如下: + +| 页面 | 定位 | 进入方式 | 典型动作 | +|---|---|---|---| +| 边缘节点列表 | 看节点总体运行情况 | 一级菜单进入 | 查看详情、筛选节点、查看异常 | +| 节点详情 | 看单个食堂节点全貌 | 从列表进入 | 看设备、看同步、看告警、看升级 | +| 同步监控 | 看全局同步运行情况 | 一级菜单进入 | 查失败记录、重试、重下发 | +| 下发与补偿记录 | 看批次落地和补偿闭环 | 一级菜单进入或从同步失败进入 | 重新下发、生成补偿 | +| 告警中心 | 看异常处理闭环 | 一级菜单进入或从节点/同步记录跳转 | 指派、处理、恢复、忽略 | + +建议交互关系: + +1. 运营人员通常从“边缘节点列表”进入,先看是哪个食堂有问题,再进入“节点详情”。 +2. 如果问题是数据没有上下行,则进入“同步监控”或“下发与补偿记录”。 +3. 如果问题已经触发告警,则从“告警中心”统一分派和跟踪。 +4. 节点详情页应作为多个页面的汇聚页,承接设备、升级、同步、告警的下钻查看。 + +为了提升管理端的处理效率,建议页面之间保持明确联动: + +- 边缘节点列表可跳转到节点详情、同步记录、告警记录。 +- 同步监控中的失败记录可直接跳转补偿记录。 +- 告警中心中的同步类告警可直接关联到同步记录。 +- 升级失败告警可直接关联到升级记录和设备详情。 +- 人脸版本落后告警可直接进入对应食堂的人脸重新下发入口。 + +## 13. 数据范围与保留策略 + +| 数据类型 | 边缘节点保留建议 | 云端保留建议 | +|---|---|---| +| 基础资料 | 保留最新有效版本 | 长期保留 | +| 人脸特征 | 保留本食堂有效数据 | 长期保留 | +| 当日生产任务 | 保留完整任务和状态 | 长期保留 | +| 近期现场流水 | 保留 7 到 30 天,可配置 | 长期保留或归档 | +| 设备日志 | 保留 7 到 30 天,可配置 | 按需上传 | +| 视频/图片过程记录 | 按容量和业务规则保留 | 按合规和存储策略保留 | +| 升级包 | 保留当前版本和上一版本 | 长期保留可用版本 | + +## 14. 产品验收标准 + +| 验收项 | 验收标准 | +|---|---| +| 基础资料下发 | 云端更新菜品、食材、人脸、设备资料后,指定食堂边缘节点可收到并应用 | +| 断网作业 | 云端断连后,现场设备仍可查询已缓存任务并上报业务数据 | +| 网络恢复补传 | 网络恢复后,断网期间产生的数据可自动同步云端 | +| 任务状态同步 | 组配任务从待组配到已完成的状态可在云端追踪 | +| 异常可见 | 同步失败、节点离线、设备离线、升级失败可在管理端查看 | +| 数据不重复 | 重复上报或重复下发不会生成重复业务数据 | +| 文件可分发 | 升级包可由边缘节点缓存并分发给现场设备 | + +## 15. 待确认问题 + +1. 边缘节点是否允许现场管理员在断网时新增或修改临时菜品、临时用户、临时任务。 +2. 一个大型食堂是否可能部署多台边缘节点,如果可能,需要定义主备或分片规则。 +3. 现场设备当前支持的通信方式是 HTTP、WebSocket、MQTT 还是厂商私有协议。 +4. 人脸识别是在设备本地完成,还是由边缘节点提供统一识别能力。 +5. 视频、图片等过程文件是否必须同步云端,保留周期和合规要求是什么。 +6. 设备升级失败后是否要求自动回滚。 +7. 云端对边缘节点实时状态的要求是秒级、分钟级还是仅异常告警即可。 +8. 就餐营养分析哪些结果必须本地实时计算,哪些可以等待云端汇总计算。 + +## 16. 技术实现附录 + +以下内容用于辅助研发理解产品方案,不作为产品功能主线。 + +### 16.1 MQ 与 HTTP 通信方案 + +主链路建议采用 MQ。边缘节点主动连接云端 Broker,可以规避云端无法直接访问食堂内网的问题。 + +可选方式: + +| 方式 | 可行性 | 说明 | +|---|---|---| +| MQTT / AMQP / NATS | 推荐 | 支持订阅、ACK、重试、离线消息,适合边缘节点场景 | +| WebSocket | 推荐备选 | 边缘主动连接云端,云端可通过连接推送 | +| HTTP 短轮询 | 可用 | 实现简单,但实时性较差 | +| HTTP 长轮询 | 可用 | 实时性较好,但连接管理复杂 | +| SSE | 可用但偏单向 | 适合云端到边缘推送,上行仍需 HTTP | + +建议采用“MQ 主链路 + HTTP Pull 兜底”: + +- MQ 正常时,实时收发消息。 +- MQ 不可用时,边缘节点周期性调用云端 `/sync/pull` 拉取下行消息。 +- 边缘上行积压时,调用云端 `/sync/push` 批量补传。 +- 文件下载优先走 HTTP 或对象存储,不走 MQ。 + +### 16.2 同步对象分层 + +| 层级 | 数据类型 | 同步方向 | 特点 | +|---|---|---|---| +| 基础主数据 | 食堂、档口、菜品、食材、物料、用户、设备 | 云端下发为主 | 版本号控制,支持全量初始化和增量更新 | +| 任务数据 | 净菜、组配、烹制、上餐、升级任务 | 云端下发 + 边缘回写状态 | 有生命周期、状态机、截止时间 | +| 现场流水 | 就餐、称重、余量、设备日志、操作记录 | 边缘上行为主 | 高频写入,必须本地优先保存 | +| 文件数据 | 人脸图、日志、视频、升级包 | 双向 | MQ 只传元数据,文件走对象存储或分片下载 | +| 统计数据 | 营养摄入、余量统计、生产统计 | 边缘可算 + 云端汇总 | 本地用于实时展示,云端用于全局分析 | + +### 16.3 通用消息 Envelope + +```json +{ + "messageId": "msg-20260623-000001", + "direction": "UP", + "canteenId": "canteen-001", + "edgeNodeId": "edge-canteen-001", + "bizType": "CLEAN_COMBO_TASK_FINISHED", + "bizId": "CMB-001", + "version": 3, + "occurredAt": "2026-06-23T10:30:00+08:00", + "sentAt": "2026-06-23T10:30:03+08:00", + "traceId": "trace-20260623-000001", + "payload": {}, + "signature": "签名值" +} +``` + +### 16.4 同步状态 + +| 状态 | 说明 | +|---|---| +| PENDING | 待同步 | +| SENDING | 同步中 | +| SUCCESS | 已同步 | +| FAILED | 同步失败,可重试 | +| DEAD | 多次失败进入死信 | +| IGNORED | 已忽略,例如旧版本消息 | + +### 16.5 边缘节点本地数据表方向 + +| 表类型 | 示例 | +|---|---| +| 节点与设备 | edge_node、device、device_heartbeat、device_token | +| 基础资料 | canteen、stall、meal_session、user、department、dish、ingredient、material | +| 人脸数据 | face_feature、face_image_ref、face_sync_batch | +| 生产任务 | recipe_plan、clean_order、combo_task、combo_task_item、cook_task、serve_task | +| 现场流水 | meal_record、weigh_record、surplus_record、operation_log | +| 文件缓存 | file_cache、upgrade_package、media_ref | +| 同步控制 | sync_outbox、sync_inbox、sync_checkpoint、sync_dead_letter | diff --git a/web-admin/nutrition/edge-alarm-center.html b/web-admin/nutrition/edge-alarm-center.html new file mode 100644 index 0000000..dd106a2 --- /dev/null +++ b/web-admin/nutrition/edge-alarm-center.html @@ -0,0 +1,242 @@ + + + + + +营养管理 - 上报故障告警中心 | 健康CQ原型 + + + +
+ + +
← 返回首页
系统管理员 ▾
+
+ + + +
+ + +
+
6
故障食堂数
+
3
数据断流食堂
+
8
严重故障
+
19
待处理故障
+
7
待指派
+
36
今日已恢复
+
+ +
+
+
故障分类
未恢复
+
+
+
服务器类
7
+
上报连接类
5
+
设备类
9
+
上报同步类
13
+
上报数据类
4
+
升级类
4
+
+
+
+
+
处理状态分布
当前周期
+
+
+
待处理
19
+
处理中
14
+
已恢复
36
+
已忽略
5
+
+
+
+
+ +
+
+
+
+
+
+ + +
+ +
+
告警列表
+
+ + + + + + + + + +
告警编号告警类型故障现象等级所属食堂所属服务器受影响业务首次发生最近发生持续时长当前状态处理人操作
ALM-20260623-081服务器类服务器离线严重炼化中心食堂炼化中心餐线服务器全部现场设备2026-06-23 13:54:092026-06-23 14:32:0038 分钟待处理未指派详情 查看链路 服务器详情
ALM-20260623-078同步类上行积压超 30 分钟警告采气一厂食堂采气一厂后厨服务器就餐流水 / 称重记录2026-06-23 13:45:002026-06-23 14:28:0047 分钟处理中运维张工详情 查看链路 标记恢复
ALM-20260623-072数据类人脸版本落后警告采气一厂食堂采气一厂后厨服务器FACE-BATCH-0623-042026-06-23 10:12:002026-06-23 14:20:004 小时待处理未指派详情 发起补偿 忽略
ALM-20260623-066升级类设备未执行升级严重炼化中心食堂炼化中心餐线服务器餐线营养秤 022026-06-23 11:10:002026-06-23 14:00:002 小时 50 分钟待处理未指派详情 关联补偿
ALM-20260623-049设备类设备离线警告输气站小食堂输气站小食堂服务器结算终端 012026-06-23 09:28:002026-06-23 09:48:0020 分钟已恢复运维李工详情
+
+
+
+ +
+
+
告警详情
+
+
+
基础信息
+
+
告警编号
ALM-20260623-081
+
告警等级
严重
+
所属食堂
炼化中心食堂
+
所属服务器
炼化中心餐线服务器
+
受影响对象
全部现场设备
+
当前状态
待处理
+
+
+
+
处理轨迹
+
+
2026-06-23 14:32:00
系统合并同类告警,持续时间更新为 38 分钟。
+
2026-06-23 14:10:00
自动重连检测失败,等待人工介入。
+
2026-06-23 13:54:09
服务器心跳超阈值未上报,触发严重告警。
+
+
+
+
处理操作
+
+ + + + +
+
+
+
+
+ +
操作已完成
+ + + + diff --git a/web-admin/nutrition/edge-dispatch-compensation.html b/web-admin/nutrition/edge-dispatch-compensation.html new file mode 100644 index 0000000..31deeee --- /dev/null +++ b/web-admin/nutrition/edge-dispatch-compensation.html @@ -0,0 +1,199 @@ + + + + + +营养管理 - 故障恢复与补偿 | 健康CQ原型 + + + +
+ + +
← 返回首页
系统管理员 ▾
+
+ + + +
+ + +
+
126
今日恢复任务
+
118
恢复成功批次
+
6
部分恢复成功
+
2
恢复失败批次
+
14
补偿处理中
+
+ +
+
恢复下发记录
+
补偿处理记录
+
+ +
+
+
+
+
+
+ + +
+
+ + + + + + + + +
批次号下发类型目标食堂目标服务器关联业务对象发起人发起时间恢复状态失败服务器数完成服务器数操作
FACE-BATCH-0623-04人脸批次采气一厂食堂采气一厂后厨服务器人脸增量 326 人系统自动2026-06-23 10:00:00下发失败10查看故障 单服务器重发
UPG-20260623-002升级任务炼化中心食堂炼化中心餐线服务器餐线营养秤 v1.8.2运维李工2026-06-23 11:00:00部分失败214查看故障 重新通知设备
TASK-20260623-021生产任务总部一号食堂总部一号食堂服务器净菜组配任务 18 条营养运营2026-06-23 09:12:00已完成01查看回执
BASE-20260623-003基础资料全部食堂28 个服务器菜品/食材/物料更新系统自动2026-06-23 09:30:00已完成028查看回执
+
+
+
+
恢复失败明细 示例选中:UPG-20260623-002
+
+ + + +
服务器设备失败原因最近处理操作
炼化中心餐线服务器餐线营养秤 02设备离线2026-06-23 14:00:00重新通知
炼化中心餐线服务器结算终端 01升级包校验失败2026-06-23 13:58:21重新分发包
+
+
+
+
恢复补偿规则
+
+
+
1
避免覆盖成功服务器
默认只对失败服务器重新下发,强制覆盖需单独确认。
+
2
校验任务状态
生产任务已开始或已完成时,进入异常纠错而非直接覆盖。
+
3
区分升级补偿
升级失败可选择重新通知设备或重新分发升级包。
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+ + + + + + + +
补偿单号原始失败记录补偿方式补偿发起人补偿时间补偿结果备注操作
CMP-20260623-009FACE-BATCH-0623-04单服务器重新下发运维张工2026-06-23 14:20:00处理中等待服务器恢复 MQ 连接查看链路 终止补偿
CMP-20260623-006UPG-20260623-002重新通知设备运维李工2026-06-23 13:10:00失败设备仍离线重新生成批次
CMP-20260622-018BASE-20260622-011批量重新下发系统管理员2026-06-22 18:20:00成功3 个服务器补偿完成查看回执
+
+
+
+ +
操作已完成
+ + + + diff --git a/web-admin/nutrition/edge-node-detail.html b/web-admin/nutrition/edge-node-detail.html new file mode 100644 index 0000000..6c0f31b --- /dev/null +++ b/web-admin/nutrition/edge-node-detail.html @@ -0,0 +1,243 @@ + + + + + +营养管理 - 服务器故障详情 | 健康CQ原型 + + + +
+ + +
← 返回首页
系统管理员 ▾
+
+ + + +
+ + + +
+
+
基本信息
健康告警
+
+
+
服务器名称
采气一厂后厨服务器
+
服务器编号
EDGE-CQ-017
+
服务器 IP
10.18.32.17
+
部署位置
后厨机房
+
服务版本
v2.3.0
+
配置版本
CFG-20260623-04
+
安装时间
2026-05-12 09:20
+
最近启动
2026-06-23 08:11
+
本地数据库
正常
+
MQ 连接
间歇断连
+
未同步数据
486 条
+
最后上报成功
2026-06-23 13:42:11
+
+
+
+
+
资源状态
磁盘预警
+
+
+
CPU
46%
+
内存
68%
+
磁盘
82%
+
缓存
61%
+
+
+
+
+ +
+
基本信息
+
设备列表
+
同步记录
+
下发记录
+
文件缓存
+
升级记录
+
告警记录
+
+ +
+
+
12 / 18
在线设备 / 绑定设备
+
486
上行待同步数据
+
6
下发失败记录
+
3
当前未恢复告警
+
+
+ + + + + + + +
检查项当前状态最近更新时间说明操作
设备接入服务可用2026-06-23 14:31:58营养秤、组配秤、结算终端可正常访问本地 API查看日志
同步引擎重试中2026-06-23 14:30:21MQ 连接抖动,上行数据存在积压查看同步
文件缓存可用2026-06-23 14:20:12升级包、人脸图、过程图片缓存正常清理策略
+
+
+ +
+
+ + + +
设备名称设备编号设备类型业务场景绑定位置在线状态最近活跃当前版本最近升级结果操作
智能组配秤 01CMB-SCALE-001净菜组配秤净菜组配后厨组配区在线2026-06-23 14:31:42v1.8.2成功设备详情 设备日志
餐线营养秤 02LINE-SCALE-002餐线营养秤上餐监控一号餐线离线2026-06-23 14:02:18v1.7.6未升级重新拉取配置 下发升级
人脸识别终端 03FACE-TERM-003人脸识别设备就餐识别入口闸机在线2026-06-23 14:31:55v3.2.0成功设备详情 设备日志
+
+ +
+
+ + +
方向业务类型业务编号发生/下发时间当前状态失败次数失败原因最近处理时间操作
上行就餐流水MEAL-20260623-01782026-06-23 12:11:04待重试3MQ 连接超时2026-06-23 14:28:33查看详情 手动重试
下行人脸增量FACE-BATCH-0623-042026-06-23 10:00:00应用失败2本地特征库写入失败2026-06-23 13:57:22发起补偿
+
+ +
+
+ + +
下发类型批次号下发时间应用状态失败原因处理完成时间操作
基础资料BASE-20260623-0032026-06-23 09:30:00已应用2026-06-23 09:31:28查看回执
升级任务UPG-20260623-0022026-06-23 11:00:00部分失败设备离线 2 台补偿处理
+
+ +
+
+ + +
文件类型文件名称文件版本文件大小下载状态校验状态最近下载时间来源任务操作
升级包line-scale-v1.8.2.binv1.8.286 MB已下载通过2026-06-23 10:42:00UPG-20260623-002重新校验
人脸图片face-batch-0623-04.zip20260623.04312 MB下载中待校验2026-06-23 14:20:00FACE-BATCH-0623-04查看任务
+
+ +
+
+ + +
升级任务编号升级对象目标版本下发时间当前状态完成时间失败原因操作
UPG-20260623-002餐线营养秤 02v1.8.22026-06-23 11:00:00失败设备离线,未接收升级通知重新通知设备
UPG-20260621-009智能组配秤 01v1.8.22026-06-21 20:00:00成功2026-06-21 20:16:28查看日志
+
+ +
+
+ + +
告警类型告警等级首次发生时间最近发生时间当前状态处理人处理说明操作
同步类 · 上行积压警告2026-06-23 13:45:002026-06-23 14:28:00处理中运维张工正在排查 MQ 连接抖动告警详情
升级类 · 设备未执行升级严重2026-06-23 11:10:002026-06-23 14:00:00待处理未指派餐线营养秤离线发起补偿
+
+
+ +
操作已完成
+ + + + diff --git a/web-admin/nutrition/edge-node-list.html b/web-admin/nutrition/edge-node-list.html new file mode 100644 index 0000000..3628036 --- /dev/null +++ b/web-admin/nutrition/edge-node-list.html @@ -0,0 +1,210 @@ + + + + + +营养管理 - 食堂上报风险总览 | 健康CQ原型 + + + +
+ + +
+ ← 返回首页 +
+ 系统管理员 ▾ +
+
+ + + +
+ + +
+ +
28
接入服务器数
覆盖 16 个食堂
+
23
正常上报服务器
最近 3 分钟有心跳且有上报
+
2
上报中断服务器
超过 10 分钟未心跳或无上报
+
3
异常食堂服务器
在线但已出现故障告警
+
5
上报积压服务器
存在待上报数据积压
+
4
严重故障服务器
需运维立即处理
+
+ +
+
+
+
+
+
+
+
+
+ + +
+ +
+
+
食堂风险清单
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
服务器名称所属食堂在线状态风险状态服务版本设备在线上报积压量下发失败数最近心跳时间最后上报成功当前故障告警操作
总部一号食堂服务器
EDGE-CQ-001
总部一号食堂在线正常v2.3.118 / 20002026-06-23 14:32:102026-06-23 14:30:020查看详情 查看同步
采气一厂后厨服务器
EDGE-CQ-017
采气一厂食堂异常告警v2.3.012 / 1848662026-06-23 14:31:582026-06-23 13:42:113查看告警 查看同步 查看详情
炼化中心餐线服务器
EDGE-CQ-024
炼化中心食堂离线严重v2.2.80 / 161,284212026-06-23 13:54:092026-06-23 12:40:188查看告警 查看同步 查看详情
输气站小食堂服务器
EDGE-CQ-032
输气站小食堂在线告警v2.3.17 / 89402026-06-23 14:32:022026-06-23 14:10:331查看告警 查看同步 恢复补偿
培训中心食堂服务器
EDGE-CQ-041
培训中心食堂在线正常v2.3.110 / 10002026-06-23 14:32:142026-06-23 14:28:410查看详情 查看同步
+
+ +
+
+ +
操作已完成
+ + + + diff --git a/web-admin/nutrition/edge-sync-monitor.html b/web-admin/nutrition/edge-sync-monitor.html new file mode 100644 index 0000000..d334c51 --- /dev/null +++ b/web-admin/nutrition/edge-sync-monitor.html @@ -0,0 +1,210 @@ + + + + + +营养管理 - 食堂上报同步监控 | 健康CQ原型 + + + +
+ + +
← 返回首页
系统管理员 ▾
+
+ + + +
+ + +
+
23 / 2
正常上报 / 中断服务器
5 分钟心跳与上报口径
+
5
上报异常食堂
较昨日 +2
+
1,864
待上报数据条数
主要来自就餐流水
+
38
恢复下发失败
含人脸/升级包
+
4
积压超阈值服务器
积压超过 30 分钟
+
96.8%
24小时上报成功率
午间链路波动明显
+
+ +
+
+
最近 24 小时上报失败趋势
按小时统计
+
+
+
+
+
+
+
+
+
+
+
+
+
+
上报高风险服务器
查看故障
+
+
+
炼化中心餐线服务器
上行积压 1,284 条,下发失败 21 条
严重
+
采气一厂后厨服务器
MQ 间歇断连,失败重试中
告警
+
输气站小食堂服务器
上行待同步 94 条
积压
+
+
+
+
+ +
+
食堂上报记录
+
恢复下发记录
+
+ +
+
+
+
+
+
+
+ + +
+
+ + + + + + + +
食堂服务器业务类型业务编号上报产生时间上报状态失败次数最近处理时间失败原因操作
炼化中心食堂炼化中心餐线服务器就餐流水MEAL-20260623-07812026-06-23 12:21:18同步失败82026-06-23 14:31:20服务器离线,等待恢复查看故障 恢复补偿
采气一厂食堂采气一厂后厨服务器称重记录WEIGH-20260623-01482026-06-23 11:42:03待重试32026-06-23 14:28:33MQ 连接超时查看故障 手动重试
总部一号食堂总部一号食堂服务器设备日志LOG-20260623-03112026-06-23 13:05:48已同步02026-06-23 13:06:03服务器详情
+
+
+ +
+
+
+
+
+
+
+ +
+
+ + + + + + + +
食堂服务器下发类型批次号下发时间当前状态完成时间失败原因操作
采气一厂食堂采气一厂后厨服务器人脸批次FACE-BATCH-0623-042026-06-23 10:00:00应用失败本地特征库写入失败恢复补偿 查看故障
炼化中心食堂炼化中心餐线服务器升级包UPG-20260623-0022026-06-23 11:00:00部分失败2 台设备未执行升级恢复补偿 查看故障
总部一号食堂总部一号食堂服务器基础资料BASE-20260623-0032026-06-23 09:30:00已应用2026-06-23 09:31:28服务器详情
+
+
+
+ +
操作已完成
+ + + +