# 三个标准模板的画像与分类判别

`classify_form.py` 用 `templates_schema.json` 里每个模板的 `classify_keywords`（strong/weak/negative）+ 横向日期列数量打分。本文给**人/agent** 复核用——当置信度 medium/low 时对照判别。

---

## 1. `demand_schedule`｜客户需求排产表

**一句话**：客户/计划侧发来的「**谁、要什么、各天要多少**」的横向需求表。**最常见**，绝大多数客户来表属此类。

**列形态**：标识列（生产工厂/客户/客户料号或模块编码或整机编码/规格型号）+ **一长串横向日期列**（按天，常按周分组）+ 合计 + 备注。

**强信号**：`横向表` `需排产` `真单` `预排` `滚动计划` `T+2` `周生产计划` `客户料号` `模块编码` `整机编码` `交付` `预报` `Forecast`；**结构上**横向日期列 ≥ 3。

**典型源文件**：
- `2026年3月横向表…` —— 整机编码 + 周/日产能需求（多 sheet，主表常叫「3月」「交付227」）
- `马佳佩T+2周真单` / `T+2 Week Forecast List` —— 园区/模块编码 + `0227(周五)` 日期列
- `W11周生产计划…下发` —— 工厂/物料号/1088编码 + `2026.02.26` 日期列
- `4.17号真单` / `4.23号预排` / `4.24号真单需求` —— 物料号/物料名称/厂家 + 按日数量
- `洗衣机滚动计划` / `5-7月最终` —— 物料 + **月**需求（月粒度，见 workflow 月度处理）

---

## 2. `plan_tracking`｜计划跟踪跟单表

**一句话**：跟单员按**成品料号**盯「**库存够不够、交了多少、欠不欠料、后两月预测**」的跟踪表。

**列形态**：1088号/客户/客户号/描述 + 库存类（代理库存/工厂库存/库存合计）+ 交付类（月计划/已交/未交/结余/在制/总结余）+ 欠料提示/首天欠料数量 + 月度预测 + 末尾交付日期列。

**强信号**：`代理库存` `工厂库存` `库存合计` `迷你图` `欠料日提示` `首天欠料` `月计划` `总结余` `跟单` `计划跟踪`。

**与 demand 的区别**：demand 是「**要多少**」（纯需求量横向铺开）；tracking 是「**够不够、交没交、欠不欠**」（库存/交付/欠料状态）。出现 `库存` `已交` `未交` `欠料` `在制` 成组 → tracking。

**典型源文件**：`计划跟踪--跟单个人表`；`5月份计划更新…（到货进度+汇总明细）` 偏此类但也可能按 demand 处理（看重点是「需求」还是「库存交付」，低置信度时问用户）。

---

## 3. `dip_schedule`｜工厂DIP排产计划表

**一句话**：工厂内部把工单排到**线体 + 每天白班/夜班**的生产排程表。

**列形态**：工序 + 成品编码 + 整机工单号/新系统工单号 + 物料描述 + 工单数量/剩余数量/拼板数/上线时间/UPH/人力 + **每天白班/夜班**列 + 已排/未排 + 定稿工单 + 客户/类型。常带「配料明细」「返工工单」副表。

**强信号**：`整机工单号` `新系统工单号` `UPH` `拼板数` `上线时间` `定稿工单` `DIP` `工序` `开工线体` `生产时长` `返工工单` `配料明细`。

**与前两类的区别**：唯一带**工单号 + UPH + 线体/白夜班**的，是工厂执行侧文档。出现 `工单号` `UPH` `上线时间` → 几乎必是 DIP。

**典型源文件**：`DIP计划-…工厂计划排产表`（DIP计划/配料明细/返工工单 三 sheet）。

---

## 判不准时怎么办

- **置信度 low / 两名次得分接近**：打开文件看实际列名再敲定；拿不准就问用户「这张表你当它是『需求』『库存跟踪』还是『工厂工单排程』？」。
- **一个文件其实是混合**（如既有需求又有库存）：以**主用途**归类；其余列在 extract 时会落到对应 scalar 列或被丢弃，按需 `--mapping` 救回。
- **完全不属于三类**（如「大盘规划」「线体产能」这种纯分析表）：不强行套模板，告诉用户它不在三个模板范围内。
