# 计划时间与阶段日历工时 适用于【交付】/【分析】/【设计】统一口径。 ## 用途 | 对象 | 计划开始→计划完成 | |---|---| | 【交付】 | 需求开工→上线全周期(本 Skill **不**写交付计划完成;上线由后续段) | | 【分析】 | 分析阶段时长 | | 【设计】 | 设计阶段时长 | ## 计划开始(不可篡改) | 对象 | 首次写入 | 之后 | |---|---|---| | 【交付】 | 首次进入分析中且字段为空 → 当日 | **禁止覆盖** | | 【分析】 | 首次创建且为空 → 当日 | **禁止覆盖** | | 【设计】 | 首次创建且为空 → 当日 | **禁止覆盖** | 日期写入形态:中国时区正午 epoch ms 字符串,见 [../assets/runtime-ids.json](../assets/runtime-ids.json) `fields.plan_start`。 ## 计划完成 | 环节 | 写计划完成的对象 | |---|---| | 推进到设计中 | 【分析】= 状态更新日 | | 推进到设计完成 | 【设计】= 状态更新日 | | 无单快轨建设计 | 【设计】= 当日(同轮收口) | | 编号直推收口 | 口令涉及的分析/设计若计划完成为空 → 当日 | | 上线/关闭 | 【交付】计划完成(**本 Skill 暂不写**) | ## 预计工时 = 阶段日历工时(Lead Time) 有计划完成且已有计划开始时,写入该对象云效「预计工时」: ```text workdays = 0 从计划开始日到计划完成日(含首尾)逐日: 周六或周日 → 跳过(除非该日是调休补班) 法定放假日 → 跳过 调休补班日(含周末上班)→ 计入 其余周一~周五 → 计入 预计工时(小时) = workdays × 8 ``` **禁止**用「(结束日 − 开始日 + 1)× 8」日历天数算法。 ### 语义与脚注(强制) - 正式名称:**阶段日历工时**,**不是**投入人天/排期负荷。 - 任务描述末尾固定脚注: `【系统】预计工时=阶段日历工时(工作日×8),非人力投入预估` - 回报写「阶段日历工时 Hh」,**禁止**写「需投入 Hh」。 - 本 Skill **不自动写**「人力投入预估」。 ### 日历数据源 - 使用 [../assets/cn-workday-calendar.json](../assets/cn-workday-calendar.json)(按自然年;跨年须覆盖起止两侧年份)。 - 缺当年日历 → **停下**提示补日历;**禁止**静默按「仅去周末」算完并报成功。 - 计算脚本:[../scripts/workday_hours.py](../scripts/workday_hours.py) ```bash python3 scripts/workday_hours.py 2026-03-06 2026-03-09 ``` 缺计划开始则只写结束、不推工时,回报提示。 ## 示例 - 开始=周五、结束=下周一(无节假日)→ 五+一 → 16h - 区间全在法定放假内 → 0h - 某周日为调休补班且落在区间内 → 该日计入 8h