動作
Feature #268
進行中
SC
SC
ARCH-1-6/1-7 門票排序與 advisory 呈現編排設計管線落地(ARCH-1 全八子任務設計收尾)
Feature #268:
ARCH-1-6/1-7 門票排序與 advisory 呈現編排設計管線落地(ARCH-1 全八子任務設計收尾)
開始日期:
2026-06-07
完成日期:
2026-06-07 (逾期 55 天)
完成比例:
100%
預估工時:
1:00 小時
概述
ARCH-1-6/1-7 門票排序 + advisory 呈現編排設計管線落地(ARCH-1 全八子任務設計收尾)¶
背景¶
ARCH-1 編排引擎共八個子任務。本批前 ARCH-1-1~1-5 + 1-8 皆已完成四棒設計管線、達「架構已設計 」,僅剩最後兩個子任務仍 待設計:
- ARCH-1-6:門票/訂位/排隊的行前提醒與排序影響(R9~R12)
- ARCH-1-7:天氣/治安 advisory 的編排呈現規則(R26~R29,ARCH-1↔ARCH-5 交界)
兩者同批走完四棒設計管線(領域設計 → devil-advocate 挑戰 → qa 測試計畫 → system-architect 落地 specs)。完成後 ARCH-1 全八子任務(1-1~1-8)全達「架構已設計 」、設計階段收尾。
關鍵裁決¶
-
O-1-6-a PreTripAlertFlag 落點 → 加結構化 [P] 欄位(封閉 enum,§6.t),非 ARCH-5 即時衍生。理由:qa 可對封閉 enum 做確定性存在性斷言;devil C3 證實「即時衍生」在
adapter_status==unavailable場景觸發範圍不可確定性斷言。ARCH-5 掃描旗標彙整行前待辦清單(G3 選項 a,不在 Trip 層加彙整欄位)。 -
O-1-7-a WeatherAdvisoryHint → transient 即時重算(不 persist)+ RAIN_THRESHOLD 強制單一常量來源
planning_config(ARCH-1/ARCH-5 共讀)。與 reconfirm_strength 同型權衡但結論相反:hint 輸入全在 trip 內已 persist、為純函數衍生不雙存;devil C6 真正風險在常量來源不一致破壞純檢視冪等。 -
devil C4(一針見血)timed-entry 升 Band 1 三角加固:(a) Stage D 停車插入後可行性回驗(
arrival + parking_walking > booking_slot_start→spillover_risk);(b) 同 Day 多 Band 1 most-constrained-first(早窗先解)+ 無解降 Band 1 警告非靜默 dropped;(c)booking_slot_start.date == Day.date跨日校驗,不一致拒升硬窗退軌道 B。 -
devil C8 排隊緩衝退化 → 與票務 API 解耦:
(rating≥4.5 AND has_product) OR (rating≥超高評分門檻),且adapter_status==unavailable退純評分判定,防 Tiqets 不採用時排隊緩衝全滅 → Stage E spillover 連鎖。 -
devil C5 reconfirm_strength → 改 ARCH-5 渲染時
today()vsstart_date即時算,不在 Stage A 固化(欄位保留記錄初始判定);明文「依 today() 即時算非冪等違反、是正確時效語義」。Stage A 對治安僅做跨國日 Day.safety_ref 覆寫識別。 -
devil C1 補強 → TicketSignal 補
query_attempted: bool解 silent fail;has_product==False && query_attempted==True節點層必輸出「查過且無 product、不代表免票」降級語(防使用者反向誤推「沒提醒=不需票」)。
變更內容¶
docs/specs/data-model.md
- §6 TicketSignal 補 4 欄:
adapter_status(三態)/query_attempted/booking_slot_start/booking_slot_end(向後相容 loader 保守缺省) - §6.t 新增 PreTripAlertFlag(五態 alert_type + alert_strength + lead_days_suggestion,O-1-6-a 裁定)
- §6 weather 新增 WeatherAdvisoryHint(transient 計算層過渡物件,O-1-7-a 裁定)
- §6 safety 補 advisory 不改行程(含 Level 4)註
- DM-S3 reconfirm_strength 基準由 planning_date 改
today()即時算(devil C5) - 向後相容 #13(+ARCH-1-6 欄位)、§9 qa 斷言 38(ARCH-1-6)+ 39(ARCH-1-7)
docs/specs/architecture.md
- ARCH-1-6 落地段 + ARCH-1-7 落地段(比照 ARCH-1-3/1-4/1-5/1-8 格式)
- ARCH-1 列成熟度敘述更新(1-6/1-7 架構已設計 )
- ARCH-1 整體成熟度裁定:全八子任務設計階段收尾里程碑 + 升 完整條件(設計收尾【已達】+ 演算法實作通過 qa 端到端負載測試 + ≥1 輪校準批落地)
docs/specs/constraints.md
- C-2 加 ARCH-1-6 延伸 + ARCH-1-7 延伸標註(不新增獨立 constraint——C8 退化屬 ADR-006 決策 7 細化、Level 4 已被 C-2 涵蓋、C4 沿用既有 spillover_risk fixture)
docs/research/open-questions.md
- Q10-followup-j 增 (11)~(14):RAIN_THRESHOLD 70% / 排隊緩衝 +30min / 熱門景點門檻 / 熱門餐廳門檻+lead_days
- 新增 ARCH-1-7-followup-weather-hint-ipc(P1)
- Q9-followup-d 計算時機更新(today() 即時算)
- 新增業主項 O-1-6(timed-entry 軌道 A 語義)/ O-1-7-c(Level 4 治安行為邊界)
- Q4-1 / Q17 ARCH-1-6 連動標註
新增 research 文件 3 份
- 領域設計
2026-06-07_ARCH-1-6-7_ticket-advisory-presentation_domain-model.md - devil 挑戰
2026-06-07_ARCH-1-6-7-ticket-advisory-challenge.md(成立 6 / 升級業主 2 / 不成立 0) - qa 測試計畫
2026-06-07_ARCH-1-6-7_test-plan.md(73 條:ARCH-1-6 41 + ARCH-1-7 32)
升級業主(不阻擋落地)¶
- O-1-6 timed-entry 軌道 A 語義:票務 API 可選時段 ≠ 使用者已確認預約 → 未決前軌道 A 自動觸發凍結、僅走軌道 B。
- O-1-7-c 治安 Level 4 行為邊界:是否提供「拒絕產出行程」選項 vs 僅顯著標記 → 本棒維持不拒絕產出(C-2 硬邊界內),ARCH-5 Level 4 渲染 BLOCKED。
驗收標準¶
- ARCH-1-6/1-7 四棒設計管線文件齊備(領域/devil/qa/architect 落地)
- data-model.md / architecture.md / constraints.md 三檔變更連貫、沿用前棒慣例
- 不新增 constraint、無新 ADR(ADR-006 框架內細化,比照 ARCH-1-4)
- advisory 絕不自動改行程(含治安 Level 4)硬邊界明文,無任何路徑改 order/time_slot
- 「未命中票務 ≠ 輸出免票」降級語落地(devil C1 query_attempted)
- timed-entry 升 Band 1 三角交互(停車後回驗 / 多 Band 1 優先序 / 跨日校驗)框架內加固
- 衍生 followups + 業主項已寫回 open-questions.md
- ARCH-1 全八子任務設計收尾里程碑 + 升 完整條件已記錄;ARCH-1 整體維持
後續¶
- ARCH-1 升 須:五階段管線 + Stage C 求解器演算法實作 + 通過 qa 端到端負載測試(ADR-002 1~3 分鐘)+ ≥1 輪 Q10-followup-j/Q9-followup-d 校準批
- ARCH-5 輸出層子規格():行前待辦彙整、票務降級語渲染、Level 4 措辭、WeatherHint/attribution 顯名
- 業主決議 O-1-6 / O-1-7-c / O-1(Tiqets 採用)
- 實測:Q17 票務命中率(亞洲冷門必測)、ARCH-1-7-followup-weather-hint-ipc IPC 契約
動作