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

209 lines
8.1 KiB
Markdown
Raw Normal View History

# 柔性排产 · 数据采集模板
> **用途**:填这张模板即可让「能力池 + 虚拟产线」排产跑起来。
> **口径**:字段能对上即可(Excel/CSV 皆可),编码自定但**全表一致**。
> **当前**:仓库已按本模板合成一版高压线束/PDU 演示数据(`server/state/seed.py` 的 `flex*` 键);你用真实数据替换同名字段即可切换。
---
## 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)。