新鲜度只管「今天该用哪份」:显式指定日期是复盘取历史那份,不受今天的界约束

This commit is contained in:
zlt 2026-09-10 09:31:19 +08:00
parent 79b3616162
commit 3ec99a5462
2 changed files with 15 additions and 3 deletions

View File

@ -946,9 +946,10 @@ def from_snapshot(date: str | None = None, top: int = 20, obs_top: int = 10,
full_main, full_obs = snap.get("main"), snap.get("observe")
if not isinstance(full_main, list) or not isinstance(full_obs, list):
raise RuntimeError(f"快照缺全量主榜或观察档: {path}")
ok, why = snapshot_fresh_enough(snap)
if not ok:
raise StaleSnapshot(why)
if not date: # 只有「要今天该用的那份」才谈新鲜度
ok, why = snapshot_fresh_enough(snap)
if not ok:
raise StaleSnapshot(why)
data = {k: v for k, v in snap.items()
# 前三个是落盘那次的裁剪结果与参数,与本次请求无关;

View File

@ -148,6 +148,17 @@ def test_freshness_guard():
t("守卫用的是专门的异常类型,调用方接得住", issubclass(plan.StaleSnapshot, RuntimeError))
# 新鲜度只管「今天该用哪份」。复盘要看 09-08 那天的计划,拿的就该是那天那份旧快照
import glob as _g, os as _o
fs = sorted(_g.glob(_o.path.join(config.PLAN_SNAPSHOT_DIR, "plan_*.json")))
if fs:
ds = _o.path.basename(fs[-1])[len("plan_"):-len(".json")]
try:
plan.from_snapshot(ds, 5, 3, 2)
t("显式指定日期不受今天的新鲜度约束(复盘要拿历史那份)", True)
except plan.StaleSnapshot as e:
t("显式指定日期不受今天的新鲜度约束(复盘要拿历史那份)", False, e)
def test_api_falls_back():
print("[接口回落:读不到快照不能让接口挂掉]")