# DAY17 任務契約:報表製作開始時間 ## 任務目標 新增可獨立測試的時間計算元件。輸入含時區的報表指定發送時間,回傳提前一小時的製作開始時間。 ## 必要背景 - 既有日報服務的排程與報表產製邏輯互相耦合;報表產製與寄信邏輯寫在同一個服務類別。 - 新需求要求系統在指定發送時間前一小時開始製作。 - 本次只建立可測試的時間計算,不接入既有排程。 ## 允許修改 - 新增 `ReportProductionWindow`。 - 新增對應的 JUnit 5 單元測試。 - 新增本任務的說明與驗證紀錄。 ## 禁止修改 - 不修改既有排程、寄信、PDF 產製、資料庫與公開 API。 - 不實作日、週、雙週、月頻率。 - 不實作 Word 或 Excel 格式。 - 不處理既有套件的安全性通知。 ## 驗收條件 1. 輸入 `2026-08-17T08:00+08:00[Asia/Taipei]`,結果為同日 `07:00`。 2. 結果保留輸入的時區。 3. 輸入為空值時明確拒絕,不產生不完整結果。 4. `mvn clean test` 全數通過。 ## 必跑測試 ```text mvn clean test ``` ## 未知與待確認 - 同一客戶能否同時訂閱多種頻率。 - 製作超過一小時時的處理方式。 - Word、Excel 與 PDF 的內容是否一致。 - 既有客戶設定的移轉策略。 - 套件安全性通知是否納入本次需求。 - 其他技術債是否另立維運任務。 ## 完成回報格式 - 修改檔案。 - 執行命令與結果。 - 每項驗收條件的證據。 - 未執行項目與殘留風險。