# AM516 自然日交期转换为工作日需求说明 **需求提出人**:AR51 **需求接收人**:AR836 **日期**:2026-09-02 **目的**:将 AM516 交期预测输出的自然日转换为工作日,并据此得到最终交货日期。 **当前临时处理**:因 AR836 排期较晚,AM516 飞书机器人先在 API 返回后的输出层执行同一换算;不修改 AR836 API 原始数据。待 API 正式提供工作日口径后,应移除本地临时换算,避免重复转换。 ## 一、需求背景 AM516 当前输出的是自然日交期。销售希望得到工作日口径的交期,即: 1. 预计需要多少个工作日; 2. 按这些工作日推算出的最终交货日期。 本需求只增加自然日到工作日的转换,不修改其他交期预测逻辑。 ## 二、最终实现逻辑 ### 第一步:自然日转换为工作日 设 AM516 输出的自然日交期为 `N`: ```text (q, r) = divmod(N, 7) ``` - `q`:完整的7天周期数量; - `r`:除以7后的余数; - 每个完整的7天周期按5个工作日计算。 余数按以下规则转换: | 余数 | 余数中的休息日 | 余数对应工作日 | |---|---:|---:| | `r = 0` | 0天 | 0天 | | `1 ≤ r ≤ 4` | 1天 | `MAX(r - 1, 0)` | | `5 ≤ r ≤ 6` | 2天 | `r - 2` | 最终公式: ```text 当 r = 0: W = q × 5 当 1 ≤ r ≤ 4: W = q × 5 + MAX(r - 1, 0) 当 5 ≤ r ≤ 6: W = q × 5 + r - 2 ``` 其中 `W` 为换算后的工作日交期。 本轮测试中,余数等于4时按1个休息日处理。 ### 第二步:由工作日推算最终交货日期 ```text 最终交货日期 = 从计算当天开始,向后累计 W 个国家法定工作日 ``` 计算当天不计入,从下一天开始累计。日期计算必须使用国家公布的实际工作日历: - 法定节假日不计为工作日; - 普通周六、周日不计为工作日; - 调休上班的周六、周日计为工作日。 系统最终保留和使用三个结果: - 原始自然日交期 `N`; - 换算后的工作日交期 `W`; - 按国家法定工作日历推算的最终交货日期。 ## 三、国庆例外仅用于本次验证 国庆例外不是最终系统逻辑,也不是最终输出字段,仅用于本次数据验证和对比。 本次验证起始日为2026年9月2日。为了与 ERP 原始日期进行对比,临时采用: ```text 如果 ERP 原始日期晚于2026年10月1日: ERP验证对比日期 = ERP原始日期 + 7个自然日 否则: ERP验证对比日期 = ERP原始日期 ``` 该规则不加入工作日数量 `W`,也不加入最终交货日期的正式计算逻辑。正式计算最终交货日期时,国庆假期已经由国家法定工作日历处理。 系统不需要输出 ERP 验证对比日期或日期差异。 ## 四、本次测试数据 测试口径: - 计算起始日:2026年9月2日; - 起始日当天不计; - 工作日交期按第二章规则转换; - 最终交货日期按2026年国家实际工作日历累计; - 国庆例外只用于本表验证。 2026年相关工作日历: - 9月25日至27日放假; - 10月1日至7日放假; - 9月20日、10月10日调休上班。 来源:[中国政府网|国务院办公厅关于2026年部分节假日安排的通知](https://www.gov.cn/zhengce/zhengceku/202511/content_7047091.htm) | ERP原始日期 | 原始自然日 `N` | 商与余数 | 换算工作日 `W` | 按工作日推算的交货日期 | 验证用ERP对比日期 | 验证结果 | |---|---:|---|---:|---|---|---| | 2026-09-20 | 18天 | 2周余4天 | 13天 | 2026-09-20 | 2026-09-20 | 一致 | | 2026-09-25 | 23天 | 3周余2天 | 16天 | 2026-09-23 | 2026-09-25 | 早1个工作日 | | 2026-09-28 | 26天 | 3周余5天 | 18天 | 2026-09-28 | 2026-09-28 | 一致 | | 2026-09-18 | 16天 | 2周余2天 | 11天 | 2026-09-17 | 2026-09-18 | 早1个工作日 | | 2026-10-03 | 31天 | 4周余3天 | 22天 | 2026-10-09 | 2026-10-10 | 早1个工作日 | | 2026-10-05 | 33天 | 4周余5天 | 23天 | 2026-10-10 | 2026-10-12 | 早1个工作日 | | 2026-10-08 | 36天 | 5周余1天 | 25天 | 2026-10-13 | 2026-10-15 | 早2个工作日 | | 2026-10-15 | 43天 | 6周余1天 | 30天 | 2026-10-20 | 2026-10-22 | 早2个工作日 | | 2026-10-20 | 48天 | 6周余6天 | 34天 | 2026-10-26 | 2026-10-27 | 早1个工作日 | 本次测试只用于观察换算方法与 ERP 日期的接近程度,不要求 AR836 在系统中实现或输出对比结果。 ## 五、给 AR836 的修改要求 只需实现以下两项: 1. 将 AM516 输出的自然日交期 `N` 按第二章余数规则转换为工作日交期 `W`。 2. 以计算当天为起点,按国家法定工作日历向后累计 `W` 个工作日,得到最终交货日期。 输出保留: - 原始自然日交期; - 换算后的工作日交期; - 最终交货日期。 无需实现或输出: - ERP 验证对比日期; - 工作日结果与 ERP 日期的差异; - 本次测试中的国庆临时顺延规则。