結尾停車砍到底: 停到影片結尾不留 keep_after_stop 尾巴

- 停車一路停到影片最後(結尾即 GPS 0)時,沒有起步要留 → 移除段砍到影片結尾,不保留卡達秒數
- 結尾的停車不論長短一律砍(即使不到 STOP_SECONDS 門檻)
- 已用既有 speeds.csv 重放驗證: 最後一段由 11:59~12:09 延伸到 11:59~12:11

本次調整由 Claude Opus 4.8 (1M context) 協助處理。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-02 20:07:27 +08:00
parent d736cafafb
commit ca69c04ccb
+12 -5
View File
@@ -361,12 +361,19 @@ def find_keep_intervals(samples: List[Sample], duration: float, interval: float
run_end = min(samples[j].t + interval, duration) run_end = min(samples[j].t + interval, duration)
run_dur = run_end - run_start run_dur = run_end - run_start
# 連續停止超過門檻 → 列為移除(等紅燈) # 是否一路停到「影片結尾」(結尾就是 GPS 0)
if run_dur >= STOP_SECONDS: at_end = run_end >= duration - 1e-3
# 進入紅燈端往前多砍 CUT_BEFORE_STOP 秒(連減速進站一起砍);
# 綠燈起步端提早 KEEP_AFTER_STOP 秒結束(多留卡達起步畫面)。 # 列為移除的條件: 達到紅燈門檻,或停到影片結尾(結尾停車一律砍掉)
if run_dur >= STOP_SECONDS or at_end:
# 進入紅燈端往前多砍 CUT_BEFORE_STOP 秒(連減速進站一起砍)。
rstart = max(0.0, run_start - CUT_BEFORE_STOP) rstart = max(0.0, run_start - CUT_BEFORE_STOP)
rend = run_end - KEEP_AFTER_STOP if at_end:
# 停到影片結尾: 沒有起步要留 → 砍到底,不保留 KEEP_AFTER_STOP
rend = run_end
else:
# 一般紅燈: 綠燈起步端提早 KEEP_AFTER_STOP 秒結束(多留卡達起步)
rend = run_end - KEEP_AFTER_STOP
if rend > rstart: if rend > rstart:
removals.append((rstart, rend)) removals.append((rstart, rend))
i = j + 1 i = j + 1