專案

一般

配置概況

動作

Feature #389

進行中
SC

用餐時段修正批:餐廳 Band 1 聯集窗+訂位對稱保護+day_end 延伸+上一批 _preserve_priority 反向 bug 回溯修復(801 測試綠)

Feature #389: 用餐時段修正批:餐廳 Band 1 聯集窗+訂位對稱保護+day_end 延伸+上一批 _preserve_priority 反向 bug 回溯修復(801 測試綠)

是由 Sashiba Chou3 天 前加入.

狀態:
New
優先權:
Normal
被分派者:
-
開始日期:
2026-07-29
完成日期:
完成比例:

0%

預估工時:

概述

用餐時段修正批:餐廳 Band 1 聯集窗+訂位對稱保護+day_end 延伸(801 測試綠)

背景

業主 2026-07-29 結構化拍板(AskUserQuestion 三選一)本批=用餐時段修正批,一批解 tps 上批判定「第一版行程最快讓使用者失去信任」的三個缺口:午餐可被排在 15:20、已訂位餐廳超載時無保護、夜市行程被 21:00 截斷。PM 分解+architect 施工前介面確認(ADR-006 決策 2 Band 1 既有清單項 R6+D-1b 使用者手動輸入介面模式框架內細化,無新 ADR、不新增 constraint)。

三項落地

  1. 餐廳用餐時段 Band 1 聯集窗(零 persist 變更):MEAL_WINDOWS(午 11-14/晚 17-21【低信心】)∩ opening_hours 三情境組裝(不可得→純聯集窗不冒充公休/交集非空→交集/零交集→新 reason no_meal_window_overlap 不混用 closed_today);兩趟插入(band-exclusive 優先、permissive 退回+annotations 可觀測);窗釘選防 band 漂移(無釘選時已放置餐廳會被後續插入悄悄從午窗推到晚窗——qa 停用重現證實機制必要)。
  2. 訂位對稱方案RestaurantNode.reservation_confirmed_start/end[P](僅使用者手動輸入,D-1b 同構);升窗取代語義;四衝突情境定死(訂位 vs 營業時間衝突→照排+must_reconfirm 不否決使用者第一手輸入);_preserve_priority 對稱擴充。
  3. day_end 延伸Day.day_end_override_minute[P](手動標記「今晚待晚一點」,不自動偵測);單一來源純函式 resolve_day_time_bounds 強制時鐘/容量同步(None 時 capacity 逐位元零回歸);跨午夜表示(>1440 合法至 29:00【低信心】);晚餐窗連動延伸;DEFAULT_DAY_START/END_MINUTE 具名化收口既有硬編文件債(O-1-7-a)。

揪出上一批已 ship 的阻擋級 bug(治理回溯)

工程實作訂位保護時自測發現:上一批(#383)ship 的 _preserve_priority 排序方向反向——timed-entry/票務節點在超載時反而最先被犧牲(與 I-3「後移=保留」相反),因當時零測試覆蓋而漏網(devil C1-C8 亦未發現)。本批修正+qa git show 逐行獨立確認波及範圍+補 attraction 分支方向測試(C5)+architect 於上一批註記段補 C4 回溯註記(不觸降級條款:該批全 、無 依賴此實作)。

devil C1~C7 挑戰+裁決(qa 獨立重現兩項屬實)

  • C2(阻擋級,已修):跨午夜訂位校驗不對稱——延伸至隔日 01:00 的 Day,替 00:30 宵夜輸入正確訂位(date=隔日)被誤判 cross_day_mismatch、失去保護、警告文字事實錯誤。修復:與 _format_time_slot divmod(m,1440) 對稱的歸屬判準。
  • C3(已修,裁定 (a) 值域收緊):override 縮短值(如 10:00)原合法但 capacity 不縮=時鐘/容量脫鉤反向重現。修復:下界收緊至 DEFAULT_DAY_END_MINUTE,縮短值視為 None+WARN 不 clamp。
  • C1(措辭收斂+負向測試):窗釘選「結構性保證」範圍限定於被插入節點自身;釘選順序依賴的跨節點副作用列已知簡化(顯式 UnschedulableNode 非靜默),devil 反例入測試釘住現狀。
  • C6/C7 通過挑戰(夜市端到端公式無時段變數失準;三新欄位 serializer round-trip 保真)。

tps 領域複核

上一批三風險逐項判定:用餐硬窗已解、訂位保護已解且比設想更完整、夜市延伸部分解(殘餘=深夜 advisory 掛勾,入校準批)。亮點:午晚窗間隔恰對齊日本「中休み」慣例。追加校準項 (23)~(26) 入 open-questions(含 29:00 上限建議收斂至凌晨 2-3 點、permanently_closed 資料源缺口)。

驗收標準(全數通過)

  • python -m pytest tests/ -q801 passed, exit code 0(基準 728 → 780 → 790 → 801;主協調者每階段獨立複跑)
  • 契約九條硬不變式全覆蓋(含「午餐不再能排 15:20」負向、「override=None capacity 逐位元零回歸」、夜市端到端含「無延伸將誤判超載」對照組)
  • qa 有條件通過→條件三項(C2 修/C3 裁定/C4 回溯註記)全數落地收口
  • devil 7 項全裁決;上一批回溯註記完成(誠實揭露已 ship 缺陷,不靜默修正)
  • 治理紀律:全 封頂、無新 ADR、無新 constraint、S1 警示逐行核驗全屬誤中(否定敘述/訂位領域詞彙)、全程離線 fixture

遺留(已入 open-questions,不阻擋)

  • ARCH-1-CDE-followup-a (4)(5):住宿↔首末節點通勤(待 ARCH-3 承載)、簇真值診斷
  • ARCH-1-CDE-followup-b (23)~(26):用餐窗校準、29:00 上限收斂、深夜 advisory 掛勾、permanently_closed 缺口
  • tree/adr 兩節點本批已由 architect 驗證轉 verified(含 adr-008 業主拍板出處追溯補錄 owner-tracking)

沒有任何資料可供顯示

動作

匯出至 PDF Atom