Files
bj_power/bj_power_mes/frontend/src/help.js
T
SunYF f274da044c feat: 重构BOM架构,新增基础设置与虚拟工位管理功能
本次重构删除原有BOM物料清单表,改用工单工艺组合×工艺物料清单作为唯一用料来源;新增系统基础设置表支持WMS地址、日志保留天数等配置,新增虚拟工位作业管理后台接口与前端页签控制功能,同时优化工位号校验逻辑、事件日志自动清理与工单用料查询能力。
2026-09-23 11:41:28 +08:00

543 lines
65 KiB
JavaScript
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 管理后台 页面级操作说明:整体流程 + 各字段 数据来源/用途/怎么填
// 由 components/PageHelp.vue 在左下角 "?" 按钮弹出展示。
// 说明:这里的"数据来源"特指该字段的数据由谁产生、从哪个系统/页面来,帮助跑通真实流程。
export const helpProductType = {
title: '物料档案(档案维护)',
overview:
'物料档案 = 本页是 WMS「基础数据(物料主数据)」中"成品"品类在本系统的视图,与 WMS 指向同一份主数据(以 WMS 为准,实时拉取、不双录)。本页承载的是"要生产哪些成品",是整条产线的源头基础数据。\n\n品类来源(与 WMS 一致):原材料=进货来的(外购);半成品、成品=自己生产的;其他=辅料/工装/试验设备等。成品还可以作为零部件,放进另一个成品的物料清单(BOM)里被再次加工成新的成品。\n\n主数据链条:物料档案(成品) → 工单(选成品+物料清单) → 物料清单(给该产品编号配料) → 日排产 → 备料单 → 库房出库 → 产线生产 → 完工成品自动回流 WMS 入库。\n\n关系说明(几对几):\n· 成品 ↔ 工单:1 对 N。一个成品可以建多个工单(同一型号今天做一批、明天做一批,工单号不同、产品编号相同)。\n· 成品 ↔ 物料清单:1 对多(选用制)。同一成品可并存多份物料清单(不同厂家供货/含半成品结构),用「物料清单名称」区分,工单建单时选定一份,备料/装机都按工单锁定的那份算。\n· 成品 ↔ 备料单:间接。备料单由「日排产 × 工单锁定的物料清单」算出,与成品无直接约束。\n· 强约束:工单/物料清单都挂在产品编号下,成品编码变了,下游关联会断,建议建好后不要改。\n· 与 WMS 的关系:两套系统解耦。物料/图号主数据以 WMS 为单一来源,MES 实时拉取(WMS 不可达时降级为本地只读缓存);成品完工后由系统自动生成 SN 回流 WMS 入库,无需人工对账。',
fields: [
{ name: '名称', source: '手工填写(必填)。用户自定义,无上游来源。', purpose: '成品的中文名,用于识别与下拉展示', fill: '如:智能电表、断路器、配电柜' },
{
name: '编码',
source: '系统自动生成 + 可手动修改。新建时会自动带出(格式 PROD-YYYYMMDD-序号),你可直接使用或改为自定义编码;编辑时保留已存值。一个产品编号可对应多个工单(同一型号今天做一批、明天做一批,工单号不同,产品编号相同)。',
purpose: '产品唯一编码。它是 MES 内部识别该产品的标识,决定该产品的物料清单内容,也是工单、备料、拧紧、追溯的挂靠键。',
fill: '建议用有意义的编码,如 METER-01。要点:①编码主数据以 WMS(库房) 为单一来源,本系统实时从 WMS 拉取物料/成品档案;WMS 不可达时降级为本地只读缓存;②成品完工后系统自动生成 SN 并回流 WMS 入库,无需人工对账;③如产品编号就是成品编码,则直接沿用该编码即可;④建好后不要随意改,否则下游工单/追溯的关联会断。'
},
{ name: '规格', source: '手工填写(必填)。与 WMS 物料档案必填口径一致。', purpose: '成品的规格型号,用于识别与打印', fill: '如:500×300×200' },
{ name: '单位', source: '手工填写(必填)。与 WMS 物料档案必填口径一致。', purpose: '计量单位', fill: '如:台 / 套' },
{ name: '类别', source: '手工填写。可选,无上游来源。', purpose: '产品所属大类,便于分类统计', fill: '如:计量表 / 开关柜;可空' },
{ name: '启用', source: '开关选择。默认开启。', purpose: '启用后才允许在新建工单/备料的下拉里被选到', fill: '默认开启;暂时停产的可关闭(不删除,保留档案)' }
]
}
export const helpWorkOrder = {
title: '工单管理(新建 / 编辑 / 删除工单)',
overview:
'工单 = 一个"合同/生产批次"的唯一载体,是生产执行和仓库出库挂靠的核心对象。\n\n全流程:先有产品型号(在「物料档案」里建档) → 建工单(选产品型号、选定物料清单、定数量、勾选工艺组合) → 进"工艺"给工艺维护工艺步骤与物料清单 → 到"日排产"排哪天产多少 → 仓库按排产备料出库 → 产线装配/拧紧/报工 → 完工(成品 SN 系统自动生成,并自动回流 WMS 入库为"成品"品类)。\n工单号会贯穿 备料单、拧紧查询、工件追溯、操作日志 全链路。\n\n工程编号:一个合同对应一个工程编号,一个工程编号下对应各个产品的产品序号——即「合同号 → 工程编号 → 产品序号」三级归属,用于按合同/工程项目归集与追溯。\n\n查询:支持按 工单号 / 产品编号 / 产品名称(模糊) / 合同号 / 工程编号 / 状态 组合筛选;删除:仅「已创建 / 待排产 / 已发布」且无排产、备料、生产数据的工单可删除(操作列「删除」),生产中或已完成的工单不可删除。',
sections: [
{
title: '工单基本信息',
fields: [
{ name: '工单号', source: '系统自动生成(WO+时间戳),可手工改。新建时自动带出。', purpose: '唯一标识一个工单,备料/出库/报工/追溯都挂在此号下', fill: '一般不用改;如改动须保证唯一' },
{ name: '产品型号', source: '下拉选择。数据来自「物料档案」页面已启用的记录。', purpose: '说明这批生产的是什么产品,并决定物料清单内容', fill: '先到「物料档案」页面建好记录再选择' },
{ name: '合同号', source: '手工填写。', purpose: '标记本工单所属的合同(一个合同对应一个工程编号)', fill: '如 HT-2026-001(可空)' },
{ name: '工程编号', source: '手工填写。', purpose: '标记本工单所属的工程编号(一个工程编号下挂多个产品序号)', fill: '如 GC-2026-001(可空)' },
{ name: '产品序号', source: '手工填写。', purpose: '本产品在该工程编号下的序号,用于区分同工程下的不同产品', fill: '如 01、02(可空)' },
{ name: '产品编号', source: '手工填写。通常与所选产品型号的编码一致。', purpose: '产品唯一编码,用于展示与追溯', fill: '如 METER-01,与产品型号编码对齐' },
{ name: '产品名称', source: '手工填写。通常与产品型号名称一致。', purpose: '产品中文名,用于展示', fill: '如 智能电表' },
{ name: '数量', source: '手工填写整数。', purpose: '本工单生产总数量(合同台数),决定需求量与排产上限', fill: '整数 ≥1,如 100' },
{ name: '工艺组合', source: '按工艺分组勾选工位(数据来自「工位绑定」页的工位↔工艺绑定)。保存为 [{flowId,stationNo}]。', purpose: '本工单的执行路线;自动排产/备料拆分/产线下发均按此组合派生', fill: '默认每个已绑定工艺的工位全选;至少选一道工艺;全不选某工艺则该工艺不进入组合;执行顺序=工位号升序,可跳过未选工位' },
{ name: '状态', source: '新建时选"已创建",后续由流程推进。', purpose: '工单生命周期:创建→发布→生产→完成', fill: '新建时选"已创建";也可在列表操作列点「状态」快捷流转(发布/开工/完工)' },
{ name: '完成日期', source: '手工填写,完工时必填。', purpose: '记录工单实际完成日期,用于交付与绩效统计', fill: '完工流转时选择日期,必填' },
{ name: '创建人', source: '系统自动记录(当前登录账号)。', purpose: '追溯工单由谁创建', fill: '只读,自动带入' }
]
},
{
title: '工艺组合(路线)',
overview: '新建/编辑工单时勾选「工艺组合」:按工艺分组,每组勾选该工艺要执行的工位。\n组合结果按工位号升序只读展示为路线条(如 2→5→6→8)——执行顺序=工位号升序,可跳过未选工位。\n「自动排产」要求工单已配置工艺组合:组合为空时按钮置灰,提示"请先选择工艺组合"。\n半成品再上线:编辑工单,只勾剩余要走的工位即可。',
fields: [
{ name: '工艺组合', source: '按工艺分组勾选工位。', purpose: '本工单经过的工位与其工艺,产线设备按组合下发', fill: '勾选即可,按工位号升序执行;至少选一道' }
]
},
{
title: '自动排产(引导式)',
overview: '列表页「自动排产」按钮:选工单 + 日期区间 + 排产方式,一键把工单未开工数量分摊到多天日排产。',
fields: [
{ name: '日期区间', source: '日历选择起止日期。', purpose: '在哪段时间内排产', fill: '选开始/结束日期' },
{ name: '排产方式', source: '二选一:平均分摊 / 固定日产。', purpose: '决定每天排多少', fill: '平均分摊=总量÷天数自动均分;固定日产=每天排指定数量,排满为止' },
{ name: '每日数量', source: '固定日产方式下手工填写。', purpose: '固定每天的生产量', fill: '选固定日产时填写,如每天 20' },
{ name: '生成', source: '一键生成日排产记录。', purpose: '批量创建该工单的日排产,合计不超过工单未开工数量', fill: '确认后生成,可到「日排产」页查看/调整' }
]
}
]
}
export const helpDailyPlan = {
title: '日排产(生产计划)',
overview:
'日排产 = 安排"哪个工单、在哪天、生产多少",是备料和出库的触发依据。\n\n数据链路:工单(总数) → 日排产(按天拆分量,合计不得超过工单总数) → 仓库按日排产备料出库 → 产线按日生产。\n可以按 工单号 / 排产日期 两个维度查询,也可直接新增/编辑/删除排产。',
fields: [
{ name: '工单号', source: '下拉选择。来自"工单管理"已建的工单。', purpose: '该排产对应哪个生产工单', fill: '选择工单号;也可手动输入未列出的工单号' },
{ name: '排产日期', source: '日历选择。', purpose: '计划在哪一天生产', fill: '选具体日期,如 2026-08-29' },
{ name: '计划数量', source: '手工填写整数。', purpose: '这一天计划生产多少件', fill: '整数≥1;注意:该工单所有日排产的数量合计不能超过工单总数量' },
{ name: '送达接驳台', source: '由工单「工艺组合」派生(工位号→接驳台编码去重),此处无需手填。', purpose: '该工单物料经 AGV 送到哪些接驳台(DOCK n↔工位n),备料单据此填 target_dock', fill: '随工艺组合自动展示;如需调整路线,到「工单管理」编辑工单的工艺组合' },
{ name: '各工位分产量', source: '启用后点「编辑」,按工单工艺组合的工位逐个填写。', purpose: '各工位分产量决定备料拆分;未配置则同工艺工位平均分;备料需求 = 分产量 × 单台用量 × (1+损耗率%)', fill: '留空或 0 的工位不分担产量;建议合计=计划数量' },
{ name: '停单/恢复', source: '工人在工位终端自主停单/恢复,管理端同步展示当日停单状态。', purpose: '现场异常(缺料/设备故障)时暂停该工位当日出产', fill: '管理端只读展示;恢复由工人或授权人员在工位终端操作' },
{ name: '已完成', source: '系统自动累计。只读。', purpose: '该排产已实际完成多少件', fill: '无需填写' },
{ name: '状态', source: '系统维护。只读。', purpose: '排产执行状态(待排产/已确认)', fill: '无需填写' },
{ name: '启用/停用', source: '行内开关。', purpose: '停用后该条排产不参与备料/生产,可临时挂起某天计划', fill: '拨动开关切换;停用的排产不计入备料' }
]
}
export const helpMaterial = {
title: '备料单(按日排产自动算料)',
overview:
'备料单 = 仓库备料的依据:某天要生产的所有工单,各需要哪些物料、各要多少。\n\n操作方式:① 先到「日排产」排好某天的计划数量;② 回到本页选该「日期」;③ 点「按日排产生成备料」,系统按各产品物料清单自动计算(计划数量 × 单台用量 × (1+损耗率))并生成备料单明细;④ 生成的同时系统按 FIFO 从 WMS 合格库存自动出库(平时无需人工领料),出库达标的备料单转为「已备料」,由 AGV 配送到各工位。\n\n库存不足怎么办:已出的部分照常记账,差额保持「待备料」并触发「备料未齐套」预警;补货后点「一键自动出库」即可补出(不会超领,重复执行安全)。\n\n超领规则:实际用量超出物料清单需求(损耗/报废/返修)时,系统不硬卡——WMS 出库时填写超领原因即放行并留痕,可统计、可预警;不填原因仍会被拦截。\n\n来源说明:「排产备料」= 按日排产自动生成;「工位补料」= 工位叫料/数量不符补发生成,仓库应优先发补料单。\n\n数据链路:日排产 → 本页按日期自动算料生成备料单 → 自动出库(WMS 扣账)→ AGV 配送 → 工位接料。',
sections: [
{
title: '生成备料',
overview: '按所选日期,取当天所有排产工单,依据各自产品的物料清单自动汇总所需物料。',
fields: [
{ name: '日期', source: '手动选择。', purpose: '按哪个排产日期生成备料', fill: '先选择排产日期,再点「按日排产生成备料」' }
]
},
{
title: '自动出库',
overview: '生成备料单时自动执行;也可在库存补齐后按排产日/工单一键补出。规则:结构件按批次号升序(FIFO)逐批出库,电气件按可用 SN 逐件出库,仅取 WMS「合格」在库库存;超出物料清单需求的领用必须填写超领原因(损耗/报废/返修),自动出库不擅自超领,超领部分会留在「未出齐」清单里等人工处理。',
fields: [
{ name: '一键自动出库', source: '人工在本页操作(生成时已自动执行一次)。', purpose: '把当前排产日/工单下未出齐的备料单补齐', fill: '选好日期或工单号后点「一键自动出库」,结果会列出仍未出齐的明细' }
]
},
{
title: '物料去向对账',
overview:
'点「物料去向对账」查看工单物料的完整去向(只读汇总,不新增账本):需求总量、已发出(仓库已出库)、已退回、已消耗(报工核销)、在途(已发出−已接料)、工位余(已接料−已消耗−已退回)、待发缺口。可展开行看接料明细(每张备料单的实收与确认人),并可导出 CSV。\n\n对账状态只标三类硬异常,其余一律「正常」:① 超领 = 净领用(已发出−已退回)超过需求,超领原因在 WMS「出库管理」留痕可查;② 完结剩料 = 台账已领料完结但工位仍压料(没耗也没退),请催报工或发起退料;③ 在途等待 = 已发出未接料(含已送达未扫码),请看 WMS 出库单是否已送达或催工位扫码。生产中的待发缺口属正常状态,不标色。\n\n消耗明细与出库明细不跨系统重复展示:消耗按工位合计的留痕在 WMS 操作日志按工单号查询;出库明细与超领原因在 WMS「出库管理」按工单号查询。',
fields: [
{ name: '物料去向对账', source: 'WMS 台账 + 本系统已接料量实时合成,前端现算异常。', purpose: '一眼看清料到哪一步了、账对不对', fill: '按当前筛选条件查询,弹窗展示;行可展开看接料明细,右下角可导出 CSV' }
]
},
{
title: '查询字段',
fields: [
{ name: '工单号', source: '手动输入。筛选条件。', purpose: '只查看指定工单的备料', fill: '可空,空=看全部工单' },
{ name: '来源', source: '系统标记。排产备料=日排产自动生成;工位补料=工位叫料/差异补发。', purpose: '区分正常备料与补料,补料优先发', fill: '可空=全部' },
{ name: '状态', source: '下拉。待备料 / 已备料(已出库) / 配送中 / 已接料完结。', purpose: '按备料进度筛选', fill: '可空' }
]
}
]
}
export const helpQtyReport = {
title: '数量不符处理(差异闭环)',
overview:
'工位接料时发现「实收 ≠ 应发」,操作工在工位终端上报后,差异记录进入本页等待处理——这是差异闭环的唯一处理入口。\n\n处理方式三选一:\n· 补发:系统生成一张「工位补料」备料单(来源=工位补料),走既有自动出库链路补齐差额,补发量计入工单消耗;\n· 退库:系统生成 WMS 退库单(多发/错发的料退回仓库),仓库确认收货后库存加回、台账缺口自动回补;\n· 调整:双方确认差异、填写说明后直接关闭(不补不退)。\n\n处理完成后差异置为已处理并记录处理单据号,关联预警可在「预警中心」看到同一件事的提醒。补发/退库的单据流转状态请到「备料单」或 WMS「退库单」页查看。',
sections: [
{
title: '查询字段',
fields: [
{ name: '状态', source: '系统维护。待处理/已处理。', purpose: '只看待处理的差异', fill: '默认待处理' },
{ name: '工位 / 工单号 / 图号', source: '工位终端上报时写入。', purpose: '定位差异来源', fill: '可空=全部,不区分大小写' }
]
},
{
title: '处理操作',
fields: [
{ name: '补发', source: '人工在本页操作。', purpose: '少发时补齐差额(生成工位补料单)', fill: '点「补发」→ 确认' },
{ name: '退库', source: '人工在本页操作。', purpose: '多发/错发时退回仓库(生成退库单)', fill: '点「退库」→ 确认' },
{ name: '调整', source: '人工在本页操作(需填处理说明)。', purpose: '少量差异双方确认后关闭', fill: '点「调整」→ 填说明 → 确认' }
]
}
]
}
export const helpPlc = {
title: '工位组合下发(下发录入 / 下发记录)',
overview:
'这个菜单做什么用:把某工单/工件的「工位组合」写入产线设备(如 PLC 控制器),产线传送带据此只停靠勾选的工位,其余工位不加工。\n\n页面分两个页签:「下发录入」(默认打开)、「下发记录」(点击才加载,可按工单号/状态筛选)。\n\n操作流程:选工单号 → 下拉选出该工单已上线未完工的工件 SN(也可扫码/手输) → 系统按工件实际进度自动带出「当前工位」(只读) → 工位组合由工单「工艺组合」按工位号升序自动派生 → 下发。\n\n为什么单独一个菜单:产线偶尔需要人工干预——比如本该走 3 号工位却做成了半成品,可到「工单管理」编辑工单的工艺组合(只勾剩余工位)后重上线,完成闭环。\n\n核心约束:系统遵循「上一条未收到完成信号,不下发下一条」,确保产线不串序。\n\n数据链路:工单(含工艺组合) → 本页下发到产线设备 → 产线设备驱动传送带/工位 → 收到完成信号再下发下一条。',
fields: [
{ name: '工单号', source: '下拉选择/输入。来自工单。', purpose: '当前生产的工单,选中后带出该工单可下发的工件 SN', fill: '选择或输入工单号' },
{ name: '工件SN', source: '下拉选择(该工单已上线未完工的 SN,可搜索),也可扫码枪扫入手输。', purpose: '当前流经的工件唯一序列号', fill: '优先下拉选已上线 SN;扫码手输时须是已上线的工件才能带出当前工位' },
{ name: '当前工位', source: '自动带出(只读)。按所选工件的实际生产进度识别。', purpose: '从哪一站开始继续下发', fill: '无需填写;未带出说明工件未上线或 SN 有误' },
{ name: '工位组合', source: '由工单「工艺组合」按工位号升序自动派生,无需手选。', purpose: '该工件要经过的工位,产线设备控制停靠', fill: '如需调整路线,到「工单管理」编辑工单的工艺组合' }
]
}
export const helpTorque = {
title: '拧紧数据(查询 / 统计 / 审核签字)',
overview:
'接收丹尼科尔拧紧工具的采集结果(扭矩/角度/时间/结果/操作人),用于质量追溯。\n\n数据接入(TCP 抽象):拧紧枪数据由工位终端采集后自动上报 MES;内置模拟数据源供联调(正式丹尼科尔协议接入后直接插入同一链路,无需改页面)。本页不提供后台手工补录。\n\n一级按「工单号 + SN + 工位」汇总,并按工艺文件自动判定「应拧 vs 实拧」是否满足;点「拧紧结果」进二级明细,逐颗查看并审核签字。',
sections: [
{
title: '查询条件',
overview: '四条件复合取交集,SN / 工单号 不区分大小写。',
fields: [
{ name: 'SN / 工单号', source: '手工填写。', purpose: '按工件或工单缩小范围', fill: '可空=全部;不区分大小写' },
{ name: '工位', source: '手工填写。', purpose: '只看某道工位的拧紧汇总', fill: '如 3,可空' },
{ name: '日期区间', source: '日期选择器。', purpose: '按采集时间筛选', fill: '选开始/结束日期,含当天' }
]
},
{
title: '一级汇总与统计',
overview: '每行代表一个工件在某工位的拧紧总体情况。',
fields: [
{ name: '拧紧数量(应拧/实拧)', source: '应拧数来自工艺 isTorque 步骤数;实拧数来自拧紧记录。', purpose: '对比工艺要求与实际拧紧颗数', fill: '只读;应拧显示「未配置」表示该工位未绑定含扭矩步骤的工艺' },
{ name: '合格/不合格', source: '拧紧记录统计。', purpose: '看该工件合格与不合格颗数', fill: '只读;不合格>0 会标红' },
{ name: '拧紧结果', source: '系统判定:应拧>0 且 实拧>=应拧 且 无不合格 = 满足。', purpose: '一眼判定该工件拧紧是否达标', fill: '点「满足/不满足」链接进入二级明细' },
{ name: '审核状态', source: '系统统计。分组内全部记录已审核才计已审核。', purpose: '提示检验员是否已完成签字', fill: '只读' }
]
},
{
title: '二级明细与审核签字',
overview: '抽屉顶部展示应拧/实拧/合格/不合格统计,下方逐颗列出拧紧记录。',
fields: [
{ name: '螺丝号/扭矩/角度/结果', source: '拧紧枪自动采集上报。', purpose: '每颗螺丝的具体拧紧参数与判定', fill: '只读' },
{ name: '审核签字', source: '检验员操作,写入审核人/时间。', purpose: '两人签字:操作人(采集自动带入) + 审核人(当前登录账号)', fill: '点「审核签字」→ 填审核意见 → 确认;已审核不可重复' },
{ name: '留痕', source: '系统自动记录 torque_audit_log。', purpose: '展示该记录的审核/修改历史时间线', fill: '点「留痕」查看操作人/动作/改前改后/备注' }
]
}
]
}
export const helpStation = {
title: '工位绑定(工位总览)',
overview:
'工位数以数据库为准。本页可新增工位与改名;每个工位在下方下拉选择启用的工艺即完成绑定;一个工位只能绑定一个工艺;内置工位不允许删除。\n\n工位分「内置」与「自定义」两类:内置工位由种子/初始化数据产生(数据库 is_builtin=true),对应实体产线位置,需与 PLC 通讯并按工位号顺序流转,不允许修改工位类型、不允许删除;自定义工位是在本页点击「新增工位」创建的,可修改类型、可删除。\n\n绑定关系即本页下拉:选择「启用」的工艺即完成绑定(工位号即顺序号);工单的执行路线由工单的「工艺组合」决定,本页只维护工位↔工艺绑定,不再有按日派工。\n\n停单/恢复:工人在工位终端自主停单/恢复,管理端在本页/日排产侧同步展示当日停单状态(只读)。\n\n数据链路:本页绑定工艺 → 工单勾选工艺组合 → 工位终端按绑定工艺的工艺步骤采集 → 报工按考核标准自动判 合格/不合格。',
fields: [
{ name: '工位号', source: '内置工位由系统预置;自定义工位由本页「新增工位」填写。', purpose: '产线物理工位编号,工位号即顺序号', fill: '新增时自定义,可与现有工位不连续(如 14、15…)' },
{ name: '工位名称', source: '可编辑。默认如 装配工位1。', purpose: '工位的显示名称', fill: '如 一号装配工位' },
{ name: '类型', source: '内置工位由系统给定且不可修改;自定义工位可改。', purpose: '线上位(连 PLC)/线下位(虚拟,不连 PLC)', fill: '内置工位只读;自定义工位可在改名弹窗切换' },
{ name: '来源', source: '系统标识(数据库 is_builtin)。', purpose: '区分内置工位与自定义工位', fill: '只读' },
{ name: '接驳台', source: '内置数据给定(对应实体位置),不可手动更改。', purpose: '该工位位置是否有接驳台', fill: '只读' },
{ name: '接驳台编码', source: '系统预置(种子初始化),与工位 1:1。', purpose: '该工位绑定的接驳台唯一标识', fill: '只读;由种子初始化,页面不可更改' },
{ name: '绑定工艺', source: '本页下拉选择「启用」的工艺即完成绑定。', purpose: '该工位执行的工艺(决定工艺步骤/考核标准/PDF/物料清单);一个工位只能绑定一个工艺', fill: '在本页下拉为该工位选择启用工艺;工单执行路线由工单工艺组合决定' },
{ name: '终端可见页签', source: '本页「页签」按钮配置(station.visibleTabs)。', purpose: '该工位终端允许显示哪些功能页签(上线建档/作业/物料/移料/工艺文件/巡检/下线完工),按工位差异化界面', fill: '点「页签」勾选;全部不勾 = 显示全部页签,保存后终端下次拉取任务生效' },
{ name: '删除', source: '本页操作。', purpose: '删除自定义工位', fill: '仅自定义工位可删除;内置工位不允许删除' },
{ name: '虚拟工位 0 / 13', source: '系统预置。工位号 0=上线位、13=下线位。', purpose: '产线进线口建档上线、出料口完工入库,由 PAD 操作,不连 PLC/拧紧枪', fill: '只读;上线位/下线位在工位终端(PAD)用「上线建档」「下线完工」面板操作' }
]
}
export const helpVirtualStation = {
title: '虚拟工位作业(MES 后台人工报工)',
overview:
'虚拟工位 = 没有终端硬件(无屏、无 PLC、无拧紧枪)的工位(如包装等辅助工序,线下位类型)。这类工位无法用工位终端,由操作人用自己的手机/电脑登录 MES 后台,在本页完成作业:选择自己的虚拟工位 → 选工单、扫/输工件SN → 查看当前工艺步骤与应绑配料 → 逐项录入 → 点「完成报工」。\n\n与工位终端走同一套接口与校验(/station/task、/station/report):齐套校验、检测确认校验、不可倒序报工等规则完全一致;拧紧步骤因无硬件不在本页采集(由物理工位拧紧枪采集)。\n\n权限:菜单「虚拟工位作业」按账号开通(角色管理勾选 produce.virtualstation),不给普通账号开「工位绑定」等管理菜单即可。',
fields: [
{ name: '选择虚拟工位', source: '下拉来自「工位绑定」页维护的工位(建议给虚拟工序建线下位类型工位)。', purpose: '报工落在哪个工位(报工校验工位必须在工单工艺组合中)', fill: '选择自己负责的虚拟工位' },
{ name: '工单', source: '今日已启用日排产且工单已下发/在制(与终端口径一致)。', purpose: '本工位今天该干哪些工单', fill: '选择当前作业的工单' },
{ name: '工件SN', source: '上线建档时系统生成的工件唯一码(标签/二维码)。', purpose: '定位工件与所属工单,报工/绑定都挂在 SN 下', fill: '扫码或手输后回车载入' },
{ name: '工艺步骤', source: '工位绑定工艺的步骤模板(工艺页维护)。', purpose: '本工位要做什么、考核标准是什么', fill: '手填步骤逐项录入数值/结果;「检测确认」步骤需勾选;拧紧步骤由物理工位采集,本页只读' },
{ name: '配料', source: '工艺物料清单(flow_material)中该工艺要求装配的物料 + 已绑记录(bind-panel 接口)。', purpose: '装机绑定强校验:电气件需绑满单台用量 SN、结构件至少绑一个批次号,缺料不允许报工', fill: '在录入框填批次号/SN(多个用逗号分隔),随报工一次性提交' },
{ name: '完成报工', source: 'POST /station/report(与终端同一接口)。', purpose: '写实绩 + 步骤考核 + 装机绑定,原子提交', fill: '全部录入后点「完成报工」;报错按提示补齐' }
]
}
export const helpSettings = {
title: '基础设置(系统管理员)',
overview:
'运行参数集中配置页,保存即生效(无需重启服务)。库存查询、缺料补货、可生产套数、排产支撑均为实时计算:库存实时来自 WMS,需求按「日排产 × 工单工艺组合」现场汇总,MES 不落库存/需求表,所以改配置立刻影响下一次计算。\n\n可配置项:\n· WMS 地址(IP:端口):保存后热切换,所有库存查询/扣账/台账同步即刻走新地址;「测试连通」只试测不保存,失败不影响当前配置。\n· 需求窗口天数:缺料补货/未来需求按日排产取未来 N 天(默认 5),WMS 备料四态「预警」数据源。\n· 外推均值窗口 / 外推封顶:排产支撑在排产日耗尽仍有余量时,按近 N 天平均日需求外推,封顶防死循环。\n· 事件日志保留天数:超过保留期的操作日志每小时自动清理,0=不清理。\n\n本机基础信息(只读):主机名/内网 IP、服务监听地址、数据库、当前生效 WMS 地址、Go 版本、启动时间。\n\n安全边界:JWT 密钥、WMS Token、数据库密码等敏感信息一律留在 etc/bj_power_mes-api.yaml,不进本页(不在库里明文存密)。',
fields: [
{ name: 'WMS 地址', source: '手工填写(sys_config: wms.base_url),留空=用 YAML 配置/默认 127.0.0.1:9091。', purpose: '库存查询/扣账/半成品流转/台账同步的 WMS 服务地址,保存即热切换', fill: '如 http://192.168.1.100:9091;先用「测试连通」验证再保存' },
{ name: '需求窗口天数', source: '数字(sys_config: demand.days,默认 5)。', purpose: '缺料补货/未来需求 = 未来 N 天日排产 × 工单单台含损耗用量', fill: '1~60 天;改大可提前看到更远期备料需求' },
{ name: '外推均值窗口', source: '数字(sys_config: producible.extrap.window,默认 3)。', purpose: '排产支撑外推取最近 N 天平均日需求', fill: '1~30 天' },
{ name: '外推封顶', source: '数字(sys_config: producible.extrap.cap,默认 365)。', purpose: '排产支撑外推最多算 N 天,防死循环', fill: '30~3650 天' },
{ name: '事件日志保留天数', source: '数字(sys_config: eventlog.retention.days,默认 0=不清理)。', purpose: '操作日志超期自动清理(每小时检查一次)', fill: '如 180 = 保留半年;0 = 永不清理' }
]
}
export const helpDock = {
title: '接驳台维护(只读主数据)',
overview:
'接驳台是产线与库房之间供 AGV 取送货的物理停靠位,真源在 MES2026-09-21 自 WMS 迁入)。共 21 个固定编码:DOCK01~DOCK20(产线,DOCKn↔工位n+ DOCK21(库房收货)。\n\n接驳台为系统预置只读主数据,由种子初始化,本页不提供新增/修改/删除,仅供查看;工位维护、排产推荐、AGV 通讯均以本表为真源查询接驳台。\n\n「占用状态/托盘关联」反映该接驳台当前是否有托盘及托盘对应的出库/备料单,供现场调度参考。',
fields: [
{ name: '接驳台编码', source: '系统预置(种子)。', purpose: '接驳台唯一标识 DOCK01..21', fill: '只读' },
{ name: '接驳台名称', source: '系统预置。', purpose: '接驳台显示名称', fill: '只读' },
{ name: '类型', source: '系统预置。line=产线 / store=库房 / other=其他。', purpose: '区分接驳台所在位置', fill: '只读' },
{ name: '绑定工位', source: '系统预置(产线接驳台与工位 1:1)。', purpose: '该接驳台服务的产线工位号', fill: '只读;库房/其他接驳台不绑工位' },
{ name: '占用状态', source: 'PLC 托盘传感器 / AGV 到位卸货自动维护。', purpose: '当前是否有托盘', fill: '只读' },
{ name: '托盘关联', source: '有托盘时记录对应出库单号/备料单号。', purpose: '查这个托盘是哪批料、要送到哪', fill: '只读' },
{ name: '启用状态', source: '系统预置 ENABLED/DISABLED。', purpose: '停用后不在下拉出现', fill: '只读' }
]
}
export const helpTrace = {
title: '工件追溯',
overview:
'输入工件 SN,查它的完整履历:进线/完工时间、各工位时间线、步骤考核数据(扭矩/角度)、拧紧记录、以及它用了哪些批次/电气件。\n\n数据来源:全部由前端各环节自动写入(扫码报工、拧紧采集、产线设备下发、工位完成),本页只读查询。',
fields: [
{ name: '工件SN', source: '扫码枪/手输。来自工件条码。', purpose: '要追溯的工件唯一序列号', fill: '扫 SN 或手动输入后点查询' },
{ name: '工单号', source: '手动输入。筛选条件。', purpose: '按工单号列出该工单下全部工件,再点行内「追溯」查看单个工件履历', fill: '可空;支持模糊匹配,回车即查' }
]
}
export const helpAccount = {
title: '账号管理',
overview:
'管理可登录 MES 的账号:新建、编辑、停用,并为其分配角色(角色决定菜单与按钮权限)。\n建议只给操作员分配其工位所需菜单权限。系统内置 admin 账号不可修改/删除。',
sections: [
{
title: '列表',
fields: [
{ name: '状态', source: '行内开关。', purpose: '停用后该账号无法登录', fill: '直接拨动开关;内置账号(admin)已锁定' },
{ name: '工位终端/允许工位', source: '账号设置。', purpose: '是否允许登录工位终端及各终端允许的工位号', fill: '未开通=不能登录工位终端;允许工位留空=全部' }
]
},
{
title: '新建 / 编辑',
fields: [
{ name: '用户名', source: '手工填写。', purpose: '登录账号,唯一;创建后不可改', fill: '如 operator1' },
{ name: '密码', source: '手工填写,保存时加密存储。', purpose: '登录密码', fill: '≥6位且不能纯数字;编辑时留空=不修改' },
{ name: '姓名', source: '手工填写。', purpose: '真实姓名,操作日志追溯用', fill: '如 张三' },
{ name: '角色', source: '下拉选择。来自"角色管理"页。', purpose: '决定该账号的菜单与功能权限', fill: '选择已建角色' },
{ name: '状态', source: '下拉选择。', purpose: '停用后无法登录', fill: '启用 / 停用' }
]
}
]
}
export const helpRole = {
title: '角色管理',
overview:
'角色决定账号能看哪些菜单(勾选菜单)与能用哪些功能(勾选其下按钮),勾选互不影响。\n内置角色:超级管理员(全部权限)、生产操作员、质检员——不可删除;超级管理员权限不可编辑。',
sections: [
{
title: '新增 / 编辑权限',
fields: [
{ name: '角色名称', source: '手工填写。', purpose: '角色中文名', fill: '如 库房管理员' },
{ name: '角色编码', source: '手工填写。', purpose: '角色唯一编码,创建后不可改', fill: '如 intro-manager' },
{ name: '权限树', source: '勾选。来自系统预置的权限菜单与按钮。', purpose: '决定该角色可见菜单与可用按钮', fill: '勾选菜单=可见;勾选按钮=可用(两者独立)' }
]
}
]
}
export const helpEventLog = {
title: '操作日志',
overview:
'审计查看关键业务操作(工单/日排产/物料清单/备料/下发/拧紧/扫码报工/完工等),由系统自动写入,本页只读。\n支持按业务域类型、工单号、操作人、时间范围筛选,分页查看。',
sections: [
{
title: '查询区',
fields: [
{ name: '事件类型', source: '下拉。', purpose: '按业务域过滤(工单/日排产/报工…)', fill: '选一族或留空=全部' },
{ name: '工单号', source: '输入。', purpose: '只看某工单的全部操作', fill: '可空=全部' },
{ name: '操作人', source: '输入。', purpose: '只看某人的操作', fill: '可空=全部' },
{ name: '时间范围', source: '日历选择。', purpose: '限定发生时间区间', fill: '不选=全部时间' }
]
}
]
}
export const helpProcessFlow = {
title: '工艺(作业指导,含工艺步骤与物料清单)',
overview:
'页面分「工艺列表」「工艺配置」两个页签:列表查看全部工艺并做启用/停用/删除;配置页维护工艺基本信息、工艺步骤与物料清单(新增与编辑共用,不再弹窗套弹窗)。\n\n工艺 = 一份「菜谱」:只描述某个产品该怎么装配(工艺步骤名、采集方式、考核标准、所需物料),可被多个工位绑定,不隶属某个工位。\n\n概念统一说明:\n· 工位:产线上的物理工位(工位数以数据库为准),工位号即顺序号,相当于「灶台」。\n· 工艺:一份作业指导(PDF + 工艺步骤 + 物料清单);其启用状态决定是否参与生产。\n· 工艺步骤:工艺内包含多个步骤(如:装配完成、拧紧扭矩、测试)。\n· 物料清单:该工艺装配所需物料(物料编号/名称/规格/单位/管控方式/单台用量/损耗率),整表覆盖保存。\n\n绑定关系在「工位绑定」页维护:为某工位选择启用的工艺即绑定;一个工位只能绑定一个工艺。工单在「工单管理」勾选「工艺组合」确定执行路线(工位号升序)。\n\n数据链路:本页维护工艺+工艺步骤+物料清单+考核标准 → 工位绑定页绑定 → 工单勾选工艺组合 → 工位终端按工艺步骤采集 → 报工按考核标准自动判 合格/不合格 → 工件追溯/绩效报表可见。',
sections: [
{
title: '工艺基本信息',
fields: [
{ name: '工艺名称', source: '手工填写。人为定义。', purpose: '工艺名,用于区分与绑定展示', fill: '如 总装工艺 / 总装工艺_2026版' },
{ name: '状态', source: '下拉选择 启用/停用。也可在列表操作列点「启用/停用」快捷切换。', purpose: '启用=该工艺可被「工位绑定」页绑定到工位并参与生产;停用=不可绑定、不参与生产', fill: '启用后可在「工位绑定」页绑定到工位;停用后不可绑定' },
{ name: '作业指导PDF', source: '本页上传。文件由 MES 服务器保存。', purpose: '该工艺的作业指导图,工位终端打开预览', fill: '选择 PDF 上传,成功后显示文件名可预览' },
{ name: '工艺步骤', source: '本页维护(步骤名/采集方式/是否拧紧/考核标准)。', purpose: '工位终端报工时按此动态渲染参数输入', fill: '一个工艺可含多个工艺步骤,按序号顺序执行' },
{ name: '步骤附件/图纸', source: '每个工艺步骤单独上传(绑定式)。文件由 MES 服务器保存。', purpose: '把图纸精确绑定到具体步骤,工位终端按当前步骤自动展示对应图纸', fill: '在步骤行上传该步骤图纸/附件(可多个);随步骤自动分发到工位终端' },
{ name: '物料清单', source: '本页维护:物料编号(下拉选择,取自物料档案)/名称/规格/单位/管控方式/单台用量/损耗率%,整表覆盖保存。', purpose: '该工艺装配所需物料;备料需求 = 各工位分产量 × 单台用量 × (1+损耗率%)', fill: '物料编号取自物料档案编码(结构件通常即图号),选中后名称/规格/单位/管控方式自动带出、不可改;管控方式:批次=1、序列号=2' }
]
},
{
title: '采集方式(每个工艺步骤三选一)',
overview: '决定该步骤的数值从哪里来。',
fields: [
{ name: '拧紧枪自动', source: '拧紧枪设备自动回传。', purpose: '扭矩/角度等由拧紧枪采集,工人无需手输', fill: '选「拧紧枪自动」,并在「是否拧紧」打开开关' },
{ name: '手填', source: '工人在工位终端手动输入数值。', purpose: '无法自动采集的参数(如尺寸、电压)由人工录入', fill: '选「手填」' },
{ name: '仅记录', source: '无数据,只做操作步骤确认(如"装配完成")。', purpose: '记录该步骤已执行,不采集数值、不判定', fill: '选「仅记录」' }
]
},
{
title: '考核标准(每个步骤可设多条)',
overview: '用于报工时自动判定该步骤「合格/不合格」。在哪用:工位终端提交该步骤数值时,系统按此标准判 合格/不合格,结果进入工件追溯与流程卡。如何收集:数值来自上面的采集方式(拧紧枪自动或手填)。',
fields: [
{ name: '指标名', source: '人为定义。', purpose: '标准叫什么(如 扭矩/角度/尺寸)', fill: '如 扭矩' },
{ name: '单位', source: '人为填写。', purpose: '数值单位', fill: '如 N·m、°、mm' },
{ name: '逻辑', source: '下拉选择 ≥/≤/>/</区间/=。', purpose: '判定关系', fill: '区间需填上下限;其余填目标值' },
{ name: '目标值/下限/上限', source: '人为填写。', purpose: '合格范围', fill: '如 扭矩区间 [35,45] N·m' }
]
}
]
}
export const helpPerformance = {
title: '绩效报表(工人工作量统计)',
overview:
'按 操作人 × 日期 × 工位 汇总每个工人的完成/合格/NG 数量,用于工作量与绩效统计。\n\n页面提供「按人 / 按工位 / 明细」三个页签:按人看每人汇总,按工位看每工位汇总,明细看逐条记录(含工序名);三个视图各自独立分页,均受上方筛选条件约束。\n\n筛选与导出:支持 操作人 / 工位 / 日期范围 组合筛选(默认近 90 天);顶部汇总卡随查询刷新;「导出 xlsx」一次导出三个 sheet(按人/按工位/明细),导出遵循统一时间硬规则(时间范围为空默认近 3 个月、只传一端报错、跨度超 1 年报错)。\n\n数据来源:全部由工位终端的「工位完成上报」自动写入报工实绩(workpiece_process),本页只读统计,不手工录入。',
fields: [
{ name: '操作人', source: '筛选条件。来自报工实绩的 operator 字段(工位终端登录人)。', purpose: '只看某个工人的工作量', fill: '输入姓名/账号,可空=全部' },
{ name: '工位', source: '下拉选择(工位数以数据库为准)。', purpose: '只看某个工位的报工情况', fill: '可空=全部工位' },
{ name: '工单号', source: '手动输入。筛选条件,取自报工实绩所属工单。', purpose: '只看某个工单的作业量与效率', fill: '可空=全部工单;支持模糊匹配,导出同样生效' },
{ name: '日期范围', source: '筛选条件。来自报工实绩的产生时间,默认近 90 天。', purpose: '按时间段统计', fill: '选择起止日期;导出时同一范围' },
{ name: '完成数', source: '自动汇总。该 操作人×日期×工位 的报工次数。', purpose: '工作量核心指标', fill: '只读' },
{ name: '合格数/不合格数', source: '自动汇总。按报工实绩 result 字段(合格/不合格)分类计数。', purpose: '质量指标,OK+NG=完成数', fill: '只读' },
{ name: '合格率', source: '自动计算 = 合格数/完成数。', purpose: '质量表现', fill: '只读' },
{ name: '平均作业时长', source: '自动计算 = 累计作业时长 ÷ 完成数(取自报工实绩 duration_sec)。', purpose: '衡量单件平均耗时', fill: '只读' },
{ name: '效率(件/小时)', source: '自动计算 = 完成数 ÷ (累计作业时长/3600)。', purpose: '衡量单位时间产出', fill: '只读' }
]
}
export const helpInspect = {
title: '巡检终端(PAD / PC 通用)',
overview:
'检验员/线长用手持平板(PAD)或电脑浏览器做巡检与检验确认,PC 与 PAD 访问同一地址、前端自适应。\n\n数据来源:全部记录提交后写入 MES 巡检记录表(inspection_record),用于追溯和流程卡输出,也可在看板触发报警。\n\n权限:菜单「巡检终端」+ 各功能独立按钮权限码(sys.inspect:checkin/point/process/done/alarm/view),由【角色权限管理】统一分配。操作工通常无此菜单。',
sections: [
{
title: '打开方式(PAD / 手机独立访问)',
overview:
'电脑端:左侧菜单「巡检终端」打开。\n\nPAD / 手机独立打开:在浏览器地址栏输入\n' +
window.location.origin + '/inspect\n' +
'(如上所示即本机当前访问地址,例如 http://192.168.1.100:8888/inspect)。\n\n' +
'首次打开会跳转登录页,登录一次后(浏览器记住登录态)再次打开将直接进入巡检页;PAD 与电脑需在同一局域网。\n\n' +
'功能按权限显示:无「巡检终端」菜单或按钮权限的账号无法使用。',
fields: []
},
{
title: '开工签到',
fields: [
{ name: '班次', source: '手动选择(早/中/晚)。', purpose: '记录开工班次', fill: '选早/中/晚' },
{ name: '拍照', source: '调用浏览器相册/摄像头(input file capture)。照片上传到 MES 服务器。', purpose: '留证现场开工状态', fill: '点击拍照并上传' },
{ name: '提交', source: '提交时自动记录:时间、拍照人(登录账号)、工位号。', purpose: '形成签到记录,供追溯', fill: '选班次+拍照后提交' }
]
},
{
title: '工位点检',
fields: [
{ name: '工位号', source: '手动选择(工位数以数据库为准)。', purpose: '点检哪个工位', fill: '选 1~12' },
{ name: '点检项', source: '手动多选(设备运行正常/安全防护到位/工具齐全/工位清洁)。', purpose: '点检的项目清单', fill: '勾选已完成的项目' },
{ name: '拍照', source: '浏览器相册/摄像头上传。', purpose: '留证', fill: '拍照上传' }
]
},
{
title: '过程巡检(按步骤逐条提交)',
overview:
'选择工单后,系统自动拉出该工单「工艺组合」里每个工位对应工艺的工艺步骤,逐步骤填报巡检结果——与工位终端的执行顺序一致,确保每一步都有检验留痕。\n\n全部步骤提交完成后,点「一键生成《工序间检验记录》」,系统把该工单的 PROCESS 类巡检按步骤汇总成一张可核对/打印的记录表。',
fields: [
{ name: '工单号', source: '手动选择/搜索。来自【工单管理】已建工单。', purpose: '对哪个工单巡检', fill: '搜索选择工单号' },
{ name: '步骤列表', source: '自动带出:该工单工艺组合 → 各工位绑定工艺的工艺步骤。', purpose: '逐步骤填报,避免漏检', fill: '只读,系统自动展开' },
{ name: '实测值', source: '手动填写该步骤的实测数据。', purpose: '留存检验实测量', fill: '按步骤要求填写' },
{ name: '合格/不合格', source: '手动选择。', purpose: '该步骤的巡检结论', fill: '选择合格或不合格' },
{ name: '签字', source: '输入检验人姓名。', purpose: '检验人签字留证', fill: '输入签字内容' },
{ name: '生成《工序间检验记录》', source: '一键汇总。', purpose: '输出该工单的工序间检验汇总记录', fill: '全部步骤提交后点击' }
]
},
{
title: '完工确认',
fields: [
{ name: '工单号', source: '手动选择/搜索。来自【工单管理】。', purpose: '确认哪个工单全部工位完成', fill: '搜索选择工单号' },
{ name: '确认全部工位完成', source: '手动勾选。', purpose: '声明该工单全部工位已完成', fill: '勾选确认' },
{ name: '签字', source: '手写/输入。', purpose: '确认人签字留证', fill: '输入签字内容' }
]
},
{
title: '异常上报',
fields: [
{ name: '工位号', source: '手动选择(工位数以数据库为准)。', purpose: '异常发生在哪个工位', fill: '选 1~12' },
{ name: '异常类型', source: '手动多选(设备故障/物料异常/工艺偏差/安全隐患/其他)。', purpose: '异常分类', fill: '勾选异常类型' },
{ name: '拍照', source: '浏览器相册/摄像头上传。', purpose: '留证异常现场', fill: '拍照上传' },
{ name: '文字描述', source: '手动填写。', purpose: '异常详细说明', fill: '描述异常情况' }
]
},
{
title: '记录查看',
fields: [
{ name: '类型/操作人/日期', source: '筛选条件。来自巡检记录表各字段。', purpose: '过滤历史巡检记录', fill: '可空=全部' },
{ name: '图片', source: '提交时上传的照片,MES 服务器存储。', purpose: '点击缩略图放大查看留证照片', fill: '只读' }
]
}
]
}
export const helpProcessCard = {
title: '生产流程卡(产品型号级全景流程卡)',
overview:
'这个菜单做什么用:按**产品型号**全方位展示该型号的完整制造定义,用于工艺交底、审核与客户查阅;与「工件追溯」页里按单个 SN 打印的流程卡互补——后者记的是“这一件实际怎么做的”,本页讲的是“这个型号应该怎么做”。\n\n内容构成(页面按页签展示,打印时全部输出):①工位流程总览——工艺组合、每工位绑定的工艺、工艺状态、步骤数、检验点数、拧紧步骤数、工艺图纸、该型号的历史作业时间;②工艺与步骤——逐工位列出每条步骤的采集方式(手工录入/自动采集/无需采集)、是否需检测确认、是否拧紧采集、考核标准(含上下限);③物料清单——该型号的物料清单明细,按物料清单名称分组,含图号/名称/规格/单位/管理方式/单台用量/损耗率/需求总量;④检验卡项——把所有「需要检测确认」的步骤汇总成检验项清单,含判定标准。\n\n工艺组合从哪来:优先取该产品编号最近一张工单的「工艺组合」;若该型号还没有工单,则按全产线工位顺序(升序)展示,页面顶部会标注来源。\n\n打印/导出:点「打印 / 导出 PDF」,系统会在新窗口打开排版好的 A4 卡片版式,用浏览器打印即可(选择“另存为 PDF”即导出电子档)。',
fields: [
{ name: '产品型号', source: '下拉选择,来自「物料档案」页。', purpose: '要查看哪个型号的全景流程', fill: '选定后自动带出产品编号' },
{ name: '产品编号', source: '自动带出(也可手工填写,直接按编号生成)。', purpose: '匹配工单、物料清单的关键字', fill: '一般无需手填' },
{ name: '工艺组合', source: '只读,自动带出。', purpose: '该型号要走哪些工位、按什么顺序', fill: '-' },
{ name: '工位流程总览-工艺图纸', source: '来自「工艺」页上传的图纸文件名。', purpose: '该工位是否有可查阅的工艺图', fill: '-' },
{ name: '工位流程总览-作业时间', source: '按本型号历史报工实绩聚合的首末作业时间。', purpose: '了解各环节实际耗时', fill: '无实绩时显示“暂无实绩”' },
{ name: '检验卡项', source: '自动汇总所有「检测确认」步骤。', purpose: '作为检验清单使用', fill: '-' }
]
}
export const helpQuality = {
title: '质量检验(过程检 / 完工检)',
overview:
'质量检验 = 对物料/产品做检验判定并留痕,分「过程检」与「完工检」两个 Tab。来料检在 WMS 库房侧完成,本页不重复。\n\n录入流程:选图号(输入图号或名称远程检索 WMS 物料档案,自动带出物料名称)→ 填报检单号/生产厂家/检验单号 → 上传附件 → 判定合格/不合格 → 保存。\n\n不合格闭环:结论为「不合格」时可当场选择处置方式(退货/返修/退换)并写处置说明;也可在列表操作列「处置」补录,或点「不合格单」一键导出《不合格单.xlsx》(预填本次检验数据)。\n\n查询:图号 / 物料名称 / 报检单号 / 记录日期范围组合筛选,每个框内模糊匹配、多框取交集;记录按时间倒序,后端真分页。',
fields: [
{ name: '图号', source: '远程检索 WMS 物料档案(/materials 代理接口,WMS 是物料主数据源),也可手填。', purpose: '被检物料的图号(即 WMS 物料档案的图号)', fill: '输入图号或名称关键字选择' },
{ name: '物料名称', source: '选图号后自动带出,可手改。', purpose: '被检物料名称', fill: '一般无需手填' },
{ name: '报检单号', source: '系统自动生成(RQ+时间戳),可改。', purpose: '本次报检的唯一编号,也是附件挂靠键', fill: '一般无需改,须唯一' },
{ name: '生产厂家', source: '手工填写。', purpose: '该物料的生产/供货厂家', fill: '如 XX电气有限公司' },
{ name: '检验单号', source: '手工填写。', purpose: '对应的检验单据编号', fill: '如 INS-2026-001' },
{ name: '附件', source: '上传登记(bizType=qualitybizId=报检单号)。', purpose: '检验报告/照片等佐证材料', fill: '选择文件上传,可多个' },
{ name: '检验结论', source: '人工判定。', purpose: '合格(OK)/不合格(NG)', fill: '单选' },
{ name: '处置方式', source: '不合格时选择。', purpose: '退货/返修/退换', fill: '仅不合格需填' },
{ name: '处置说明', source: '手工填写。', purpose: '补充处置细节', fill: '可空' }
]
}
export const helpWip = {
title: '在制品(跨天在制视图)',
overview:
'在制品 = 已进线但尚未完工的工件(状态 已上线/在制/返修),跨天继续停留在此列表中。\n\n数据来源:MES 工件实时状态(GET /workpieces/in-process)。当前工位支持 0=上线位(虚拟)、1~12=物理工位、13=下线位(虚拟),工位数以数据库为准。\n\n与日排产的关系:已进线未完工的工件跨天继续,日排产仅排「未开工数量」,不会重复排产。停留时长自进线起算,便于发现滞留件。',
fields: [
{ name: '工单号', source: '手动输入。筛选条件。', purpose: '只看某个工单的在制品', fill: '可空=全部;支持模糊匹配,回车即查' },
{ name: '当前工位', source: '按工件状态与工位组合推算。', purpose: '工件此刻停在哪一工位', fill: '只读,可筛选' },
{ name: '状态', source: '系统维护。', purpose: '已上线/在制/返修', fill: '只读,可筛选' },
{ name: '进度', source: '已完成步骤数 / 工艺组合总步骤数。', purpose: '看该件走到第几步', fill: '只读' },
{ name: '停留时长', source: '自上线时间起算。', purpose: '发现长时间滞留的在制品', fill: '只读' }
]
}
export const helpAlertCenter = {
title: '预警中心(系统自动触发)',
overview:
'预警中心汇集全系统自动产生的异常/提醒消息,人工无需配置规则——全部由内置触发源自动落库并推送。顶部铃铛角标显示未读数,点击进入本页处理。\n\n八类内置触发源:\n· 扭紧不合格(torque_ng):拧紧扭矩/角度超考核标准时自动告警;\n· 检验不合格(inspection_ng):质量检验判定 NG 时告警;\n· 备料未齐套(material_shortage):工单装机绑定物料未齐套时告警;\n· 库存偏低(inventory_low):可用量低于安全库存时告警;\n· 工单超时(task_overdue):工单超过完成日期未完工时告警;\n· 缓存位满(cache_full):产线缓存/接驳台占满时告警;\n· 数量不符(qty_diff):工位收料实收≠应发时告警(MES 仅预警,明细由 WMS 处理);\n· 应急呼叫(emergency_call):工位终端现场发起的紧急呼叫。\n\n应急呼叫闭环:操作工在工位终端点「应急呼叫」(设备故障/质量异常/缺料/安全等紧急情形)→ 系统即时落一条 type=emergency_call 的未读预警并通过 SSE 推到大屏/看板 → 线长、维修、仓库等相关人员在本页看到未读告警并到场处置 → 处置完点「标记已读」闭环。\n\n处理流程:按 状态(全部/未读/已读)、预警类型、开始时间(默认当天)、结束时间(默认不限)筛选并分页浏览,核实后点行末「标记已读」;已读记录留存备查。',
fields: [
{ name: '状态', source: '系统维护(未读/已读)。', purpose: '区分待处理与已处理预警', fill: '筛选项单选:全部/未读/已读' },
{ name: '预警类型', source: '内置触发源自动写入。', purpose: '只关注某一类异常', fill: '下拉选择八类之一,留空=全部' },
{ name: '工单号', source: '触发预警时自动关联(如拧紧不合格按其 SN 反查所属工单)。', purpose: '按工单号排查该工单相关的所有预警', fill: '可空=全部;支持模糊匹配' },
{ name: '开始时间 / 结束时间', source: '系统记录触发时刻。', purpose: '按时间范围缩小排查范围', fill: '开始时间默认当天;结束时间留空=不限' },
{ name: '类型', source: '内置触发源自动写入。', purpose: '区分八类预警(含应急呼叫)', fill: '只读' },
{ name: '标题 / 内容', source: '触发时系统自动生成。', purpose: '说明预警的具体对象与原因', fill: '只读' },
{ name: '关联ID', source: '系统写入(工单号/SN/工位等业务键)。', purpose: '定位预警来源的具体业务对象', fill: '只读' },
{ name: '时间', source: '系统记录触发时刻。', purpose: '追溯预警发生时间', fill: '只读' },
{ name: '标记已读', source: '人工在本页操作。', purpose: '处置完成后闭环该预警', fill: '核对处置后点「标记已读」' }
]
}
export const helpAttachment = {
title: '附件中心(统一存储与查阅)',
overview:
'附件中心集中登记并查阅全系统附件(图纸、检验照片、检验报告、工艺、流程卡、包装照片、Excel 导入等),新增在各业务页面内完成,本页负责查阅、下载、删除与归档清理。\n\n统一存储规则:所有附件按「附件根目录/年/月/日/文件类型/文件」分层存放,文件类型目录全部大写(PROCESS_PDF、INSPECTION_PHOTO、INSPECTION_PDF、DRAWING、PROCESS_CARD、PACKAGE_PHOTO、EXCEL_IMPORT、OTHER);文件名统一用 UUID,扩展名小写,不含中文与特殊字符;数据库只存相对路径(如 2026/09/19/INSPECTION_PHOTO/xxx.jpg),不存绝对路径。附件根目录由配置文件 Upload.Dir 指定,不硬编码。\n\n上传为流式写入(边写边算 MD5),同业务对象同 MD5 自动秒传不重复占空间;单文件大小按文件类型配置上限(默认 20MB)。\n\n删除为逻辑删除:库内标记「已删除」并记录删除人/时间,物理文件保留,勾选「含已删除」可追溯。\n\n归档清理:本地只保留最近「配置的年数」(默认 1 年),更早的附件可一键归档到外部备份目录并标记「已归档」,释放本地磁盘。\n\n磁盘空间监控:系统每天早上 7 点自动检测磁盘剩余空间,剩余低于 20% 告警、低于 10% 提示执行备份归档清理(本页顶部同步横幅提示,critical 时可直接点「立即归档清理」)。',
fields: [
{ name: '文件类型', source: '上传时由业务场景指定或按扩展名推断(大写枚举)。', purpose: '决定存储目录分层,也是查阅时的主要筛选维度', fill: '下拉单选八类之一,留空=全部' },
{ name: '业务类型', source: '上传时随附件记录写入(工单/物料/工艺/检验/入库 等)。', purpose: '区分附件挂在哪种业务单据上', fill: '下拉单选,留空=全部' },
{ name: '业务ID', source: '上传时写入的业务键(工单号/图号/SN)。', purpose: '定位某个具体单据的全部附件', fill: '支持模糊匹配,如输入工单号' },
{ name: '文件名', source: '上传时的原始文件名。', purpose: '按名称模糊查找', fill: '支持模糊匹配' },
{ name: '上传时间', source: '系统记录上传时刻。', purpose: '按时间区间缩小范围', fill: '可选起止日期,留空=不限' },
{ name: '含已删除', source: '勾选后包含逻辑删除的记录。', purpose: '追溯已删除附件', fill: '默认不勾选' },
{ name: '相对路径', source: '系统按统一规则生成(年/月/日/类型/UUID.ext)。', purpose: '直观看到物理存放位置;点击即在线预览', fill: '只读' },
{ name: '大小', source: '系统统计上传达字节数。', purpose: '评估占用空间', fill: '只读' },
{ name: '状态', source: '系统维护(有效/已归档/已删除)。', purpose: '区分当前可用的与已归档/已删除的附件', fill: '只读' },
{ name: '预览 / 下载', source: '预览走免鉴权直链(PDF/图片浏览器内联打开);下载走鉴权路由并带回中文文件名。', purpose: '查看或另存附件', fill: '点击对应按钮' },
{ name: '删除', source: '行末按钮(权限 sys.attachment:manage,需二次确认)。', purpose: '逻辑删除无效附件(保留可追溯索引)', fill: '点「删除」并确认;无权限时该按钮不显示' },
{ name: '归档清理', source: '按钮(权限 sys.attachment:manage;先预览数量再确认执行)。', purpose: '把早于本地保留年数的附件移到外部备份目录并标记已归档,释放磁盘', fill: '点「归档清理」→确认;无权限时该按钮不显示' }
]
}
export const helpProducible = {
title: '排产支撑',
overview:
'把「库存还能撑多久」算清楚,给计划员排产/叫料决策用。数据来源:日排产(daily_plan,按排产日期窗口、剔除已取消排产)× 工单(work_order)× 工单工艺组合 × 工艺物料清单(flow_material)得到需求量,库存可用量实时来自 WMS/api/internal/stock/check)。注意:物料需求跟着工单走(同成品不同工单可用不同工艺),且一律按日排产口径计算,工单起止日期仅作参考。\n\n本页两块:\n· 各成品可生产套数:只统计有未取消日排产的工单;按该工单工艺组合的物料单台含损耗用量 ÷ 对应物料 WMS 可用量取最小值,即当前库存最多还能装出多少台;短板说明列出限制它的物料(可用量 ÷ 单台用量 = 套数)。\n· 整体支撑:用 WMS 可用量对日排产做逐日消耗模拟,直到某物料不足,得出「还能满产多少天」「库存可支撑到哪天」「最先告罄的短板物料」;排产只排到 N 天时,第 N+1 天起用近3天平均日需求外推(封顶365天防死循环)。\n\n无排产计划时短板物料栏显示「无排产计划」;排产日全部满足且外推无有效需求时显示「充足」。本页只读,不落库。',
fields: [
{ name: '还能满产(天)', source: '逐日消耗模拟算得(/api/v1/production/producible-support)。', purpose: '一眼看出按当前排产节奏库存能撑几天', fill: '=0 表示今天/近期排产即缺料,需立即补料' },
{ name: '库存可支撑到', source: '支撑天数 + 今日日期推算。', purpose: '给出最晚需要到货的日期', fill: '只读;格式 YYYY-MM-DD' },
{ name: '最先告罄短板物料', source: '模拟中第一个被耗尽的物料(名称+编码)。', purpose: '指出最该优先补货的物料', fill: '「无排产计划」/「充足」表示暂无瓶颈' },
{ name: '可生产套数', source: '逐工单计算(只算有未取消日排产的工单):min(各物料可用量 ÷ 单台含损耗用量)。', purpose: '该工单当前库存能装出的最多台数', fill: '=0 表示关键物料已缺,无法开线' },
{ name: '短板说明', source: '限制该成品可生产套数的物料明细(可用量÷单台用量=套数)。', purpose: '定位缺哪料、缺多少', fill: '只读;多短板时最多列前3个' }
]
}