两条 Bug 都实测复现,合并成一单,因为根因相同:契约只传钟点、日期不在 契约里,后端按钟点大小猜哪端跨日。 BUG-983 是静默算错盘:_candidate_datetimes() 把起始钟点无条件绑在申报 日期上,前端零补偿。实测申报 00:10 / 申报日 2000-06-15,申报分钟本身 落到 06-16 00:10,整套盘算在错误日期上。late_night 更重:其 00:00–03:59 共 240 分钟全部落在用户没有申报过的日期上。983 不修,BUG-981 的候选级 日期修复在这批人身上等于没上线。 BUG-982 影响面比原记录大:同缺陷在 _cluster_span、unionStillValidRange、 indistinguishableWidthMinutes 三处出现,原记录只写了 Python 两处。实测 跨午夜三分钟簇被报成 1440 分钟,且该链直达交付卡的「范围 X 分钟」。 三个待决点:late_night 的语义(按出生证明口径两段都在同一日,现行实现 一半落在次日)、申报贴近午夜时允不允许窗口跨到前一天、日期怎么进契约。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0199rbQDTsUbCVw84wc8BTFe