"""跨午夜与迟到记录的合成演练，只在内存里运行。"""
from datetime import datetime

def moment(text):
    return datetime.fromisoformat(text)

records = [
    {"record_id": "r1", "occurred": "2026-10-22T23:59:59+08:00", "arrived": "2026-10-22T23:59:59+08:00"},
    {"record_id": "r2", "occurred": "2026-10-23T00:00:00+08:00", "arrived": "2026-10-23T00:00:02+08:00"},
    {"record_id": "r3", "occurred": "2026-10-23T00:00:01+08:00", "arrived": "2026-10-23T00:05:00+08:00"},
]
def export(start, end, asof):
    return [r for r in records if moment(start) <= moment(r["occurred"]) < moment(end) and moment(r["arrived"]) <= moment(asof)]

previous = export("2026-10-22T00:00:00+08:00", "2026-10-23T00:00:00+08:00", "2026-10-23T00:06:00+08:00")
first = export("2026-10-23T00:00:00+08:00", "2026-10-24T00:00:00+08:00", "2026-10-23T00:03:00+08:00")
second = export("2026-10-23T00:00:00+08:00", "2026-10-24T00:00:00+08:00", "2026-10-23T00:06:00+08:00")
merged = {r["record_id"]: r for r in previous + first + second}
assert [r["record_id"] for r in previous] == ["r1"]
assert [r["record_id"] for r in first] == ["r2"]
assert [r["record_id"] for r in second] == ["r2", "r3"]
assert len(merged) == 3
print("首日=r1; 次日=r2,r3; 合并唯一记录=3")
