diff --git a/changelogs/2026-04/2026-04-20_mp-schedules-filter-expired.md b/changelogs/2026-04/2026-04-20_mp-schedules-filter-expired.md new file mode 100644 index 0000000..e0808bb --- /dev/null +++ b/changelogs/2026-04/2026-04-20_mp-schedules-filter-expired.md @@ -0,0 +1,25 @@ +# mp 班期接口过滤过期 + 出发前 1 天自动报名结束 + +**日期**: 2026-04-20 +**PR**: #999 +**接口**: `GET /mp/product/{id}/schedules` + +## 改动 + +1. **过滤过期班期**:响应中不再包含 `departureDate < 今天` 的班期 +2. **出发前 1 天自动报名结束**:保留班期中,若 `departureDate <= today + 1 天`(含当天和前一天),后端将 `batchStatus` 覆盖为 `"FINISHED"` + +## 业务语义 +- 出发前 1 天停止报名(行业通用规则) +- 避免前端展示已发团或即将发团(<1天)的班期为"可报名"状态 + +## 验证 +测试产品 `2044306857534636034`: +- DB 有 6 条班期(含 1 条 `2026-04-19` 已过期) +- 接口返 5 条,过期班期已过滤 +- 其余班期 `departureDate=2026-07-xx` 距今 74+ 天,保持原状态 `ENROLLING` + +## 前端注意 +- 不再需要自己在列表上按 departureDate 过滤 +- 判断"是否可报名"继续用 `batchStatus === 'ENROLLING'`(或 NEARLY_FULL),**无需再判日期** +- 5 分钟 Redis 缓存,部署后按 TTL 自然过期