aps-agent/docs/product/demand-data-intake.md

211 lines
8.6 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.

# 柔性排产 · 数据采集模板
> **用途**:填这张模板即可让「能力池 + 虚拟产线」排产跑起来。
> **口径**:字段能对上即可(Excel/CSV 皆可),编码自定但**全表一致**。
> **当前**:仓库已按本模板合成一版高压线束/PDU 演示数据(`server/state/seed.py` 的 `flex*` 键);你用真实数据替换同名字段即可切换。
> **权威来源(2026-09-14 起)**:导入物理表与列名以工作簿配置 `server/importers/profiles/workbooks/default-planning.json` 为准,本文的角色说明仅作业务解释。可直接下载与配置逐字一致的采集模板:`GET /api/import/template`(主数据页「下载采集模板」),模板第一张表 `数据采集说明` 会列出角色、工作表、字段顺序、必填与映射摘要。排产导出的工作表/表头/行号合同见 [主数据配置与数据来源约定](masterdata-configuration.md) 的「采集模板与排产导出模板」。
---
## 0. 填写顺序与最小集
优先级 P0 的 5 张表不填就排不了;P1 决定质量;P2 可先用默认。
| 顺序 | 表 | 优先级 | 不填的后果 |
| --- | --- | --- | --- |
| 1 | 区域/布局 | P0 | 无法算设备移动耗时 |
| 2 | 设备(能力+移动+适配模具) | P0 | 无资源可选,排不了 |
| 3 | 工序(含瓶颈标记) | P0 | 无法归池/算瓶颈 |
| 4 | 工装/模具 | P0 | 压接类工序无法占用 |
| 5 | 产品工艺路线 | P0 | 订单无法展开工序 |
| 6 | BOM | P1 | 无齐套/缺料判断 |
| 7 | 物料 | P1 | 同上 |
| 8 | 班组/人力 | P1 | 无人力约束(先按设备排) |
| 9 | 班次日历 | P1 | 用默认双班 |
| 10 | 订单 | P1 | 用演示订单 |
| 11 | 排产参数 | P2 | 用默认 |
---
## 1. 区域/布局 zones
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| code | 区域编码 | ZONE-A |
| name | 名称 | 线束区 |
移动耗时:MVP 先用**每台设备一个 `moveTimeMin`**(见设备表),不必给两两矩阵;若有精确矩阵可另附「fromZone,toZone,minutes」。
---
## 2. 设备 flexEquipment(核心表)
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| code | 设备编码 | PRESS-001 |
| name | 名称 | 气动压接机#1 |
| capabilities | **可执行工序编码(多值,逗号)** | OP-CRIMP |
| opStdTime | 各工序单件工时(分钟),`工序:分钟` 多值 | OP-CRIMP:1 |
| movable | 是否可移动 | 是/否 |
| moveTimeMin | 单次移动耗时(分钟) | 30 |
| zone | 当前区域编码 | ZONE-A |
| adaptableMolds | 可适配模具编码(多值,逗号;无则空) | MOLD-HV-01,MOLD-HV-02 |
| availabilityRate | 可动率 0~1 | 0.95 |
| status | RUNNING/MAINTENANCE | RUNNING |
> 一台设备可挂多道工序(能力集);这是「产能池」的来源——**池 = 拥有某工序能力的设备集合**,无需单独维护池表。
>
> 康尼现场可直接用 `设备能力映射模板.xlsx`(设备编号/能力工序/单件工时/可动率/可移动/适配模具)填写,导入时优先读取;缺表回退合成共享装配工位。
---
## 3. 工序 flexOperations
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| code | 工序编码 | OP-CRIMP |
| name | 名称 | 压接端子 |
| isBottleneck | 是否瓶颈工序(瓶颈锚排/产能法用) | 是/否 |
| changeoverMin | 标准换型时间(分钟) | 20 |
---
## 4. 工装/模具 flexMolds
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| code | 模具编码 | MOLD-HV-01 |
| name | 名称 | 高压端子模具 |
| operationCode | 适用工序 | OP-CRIMP |
| adaptableEquipment | 可装到哪些设备(多值,逗号) | PRESS-001,PRESS-002 |
| lifeTotal | 寿命上限(次/件) | 50000 |
| lifeUsed | 已用 | 12000 |
| zone | 当前区域 | ZONE-A |
| changeoverMin | 换该模具耗时(分钟) | 20 |
| status | AVAILABLE/LOCKED | AVAILABLE |
> 康尼现场可用 `模具适配映射模板.xlsx`(模具编号/适用工序/适配设备/寿命/换型耗时)填写,对应工序自动 `requireMold=true` 并占用模具槽;缺表时不占模具槽。
---
## 5. 产品工艺路线 flexRoutings
一个产品多行,按 `seq` 排序。
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| productCode | 产品编码 | HV-HARNESS |
| productName | 产品名 | 高压线束总成 |
| seq | 工序序号 | 30 |
| operationCode | 工序编码 | OP-CRIMP |
| requireMold | 该工序是否必须模具(是→从模具表按工序取适配) | 是/否 |
| stdTimePerUnit | 单件工时(分钟)(覆盖设备默认,可空) | 1 |
---
## 6. BOM flexBom
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| productCode | 成品编码 | HV-HARNESS |
| materialCode | 物料编码 | WIRE-HV |
| quantity | 单件用量 | 2 |
| consumeOp | 消耗工序编码 | OP-CUT |
| isKey | 是否关键料 | 是/否 |
---
## 7. 物料 flexMaterials
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| code / name / unit | 编码/名称/单位 | WIRE-HV / 高压线 / 米 |
| type | FINISHED_PRODUCT / RAW_MATERIAL | RAW_MATERIAL |
| stock / inTransit / safetyStock | 库存/在途/安全库存 | 5000 / 0 / 1000 |
| procurementLeadTime | 采购前置期(天) | 7 |
---
## 8. 班组/人力 flexTeams
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| code / name | 班组编码/名称 | T-CRIMP / 压接班组 |
| memberCount | 人数 | 6 |
| supportOps | 可支持工序(多值) | OP-CRIMP,OP-ASSY |
| skillLevel | 技能等级 | L3 |
---
## 9. 班次日历 flexCalendar
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| shiftCode | 班次 | D |
| startTime / endTime | 起止 | 08:00 / 17:00 |
| breaks | 休息段 `start-end` 多值 | 12:00-13:00 |
| workdays | 工作日(1-7 或“除周末”) | 1,2,3,4,5 |
---
## 10. 订单 flexOrders
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| orderNo | 订单号 | WO-20260716-010 |
| productCode | 产品编码 | HV-HARNESS |
| quantity | 数量 | 100 |
| dueDate | 交期 YYYY-MM-DD | +7 天 |
| priority | 优先级(小=高) | 1 |
| wbs | WBS 分组(同组协同,可空) | WBS-A |
| productionController | 生产控制者(同组隔离,可空) | 张三 |
| status | CREATED/RELEASED | RELEASED |
---
## 11. 排产参数 flexParams(可用默认)
| 参数 | 默认 | 说明 |
| --- | --- | --- |
| sortMode | BOTTLENECK | ASC 正排 / DESC 倒排 / BOTTLENECK 瓶颈锚 |
| beforeDays / afterDays | 0 / 30 | 时间窗扩展 |
| rollingWindows | 周=7d / 中期=2d / 短期=2h | 滚动时域分层 |
| mrpControllerDays | 3 | 同 WBS 末端约束天数 |
| weights | 交期0.4/成本0.3/利用0.2/均衡0.1 | 目标权重 |
---
## 附:合成演示数据映射(当前仓库)
已按本模板在 `seed_world()` 追加 `flex*` 键:区域(线束区/PDU区/公共)、可移动压接机×4、下线机/激光焊接/测试台/检漏仪等、高压端子模具族、产品 `HV-HARNESS`/`PDU-UNIT` 及其路线与订单。真实数据到位后**逐表替换**即可,引擎与视图不用改。
---
## 附:现场「完整生产路线」导入(康尼样例)
> **目的**:用现场真实订单表替换演示 `flex*`,跑通 PoolEngine。
> **不要**把厂名写进默认种子或意图正则的产品绑定;用显式导入动作。
| 项 | 说明 |
| --- | --- |
| 入口脚本 | `python scripts/load_kangni.py`(可加 `--route` / `--data-dir` / `--no-siblings`) |
| 领域模块 | `server/aps_domain/kangni_intake.py` |
| API | `POST /api/flex/site/load`(默认 P2 确认卡;`applyNow=true` 联调直写) |
| 口令 | 「加载现场订单路线」「导入完整生产路线」「替换柔性演示」 |
| 主文件 | `订单XXXX_完整生产路线.xlsx`(订单头 + 10 道工序 + BOM) |
| 同源补强 | `康尼/数据/` 下订单 / 工艺路线 / BOM(自动识别;设备台账无能力字段暂不直连) |
**已知现场缺口(源表自述「不可做有限产能排产」)→ 导入时显式推断并写入 `flexParams.siteInferences`:**
| 缺口 | 推断策略 |
| --- | --- |
| 标准工时=待维护 | 优先读 `工时.xlsx` 对应订单 sheet 的 `标准工时/分钟` 真实值回填;无值时才按部装 45 分/件、装配 30 分/件推断 |
| 设备/工位=待维护 | 有 `设备能力映射模板.xlsx` 时按真实设备/能力/工时排产;缺表才合成 N 台共享装配工位(默认 4),能力=全部工序 |
| 模具未匹配 | 有 `模具适配映射模板.xlsx` 时按模具寿命/适配设备占用模具槽;缺表才 `requireMold=false` |
| 备料已完成 | 原料库存按需求放大,避免齐套假冲突 |
有真实工时/工位表后,改 Excel 再跑导入即可覆盖推断;`工时.xlsx` 已自动识别并优先回填,来源写入 `stdTimeSource=工时表`。
变更登记见 [`../CHANGELOG.md`](../CHANGELOG.md)。