fix: 修复 rollback --since 日期字符串解析报错

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-08 16:26:19 +08:00
parent c464c31140
commit 627eeeb29b
2 changed files with 24 additions and 3 deletions

View File

@@ -17,7 +17,7 @@ import hashlib
import logging
import random
import string
from datetime import timedelta
from datetime import datetime, timedelta
from decimal import Decimal
import defusedxml.ElementTree as ET
@@ -696,6 +696,24 @@ def order_purchase_days_locked(order, club_id=None):
return max(int(days or 0), 1)
def _parse_since_option(since):
"""管理命令 --since 字符串 → 可比较的 datetime。"""
from django.utils.dateparse import parse_date, parse_datetime
from jituan.services.huiyuan_bundle import _normalize_datetime_for_compare
if not since:
return None
if not isinstance(since, str):
return _normalize_datetime_for_compare(since)
dt = parse_datetime(since)
if dt is None:
d = parse_date(since)
if d is None:
return None
dt = datetime.combine(d, datetime.min.time())
return _normalize_datetime_for_compare(dt)
def is_suspected_bug_repair_restore(rec, since=None):
"""
Bug repair 指纹UpdateTime 时将 daoqi 设为 UpdateTime+days
@@ -705,7 +723,8 @@ def is_suspected_bug_repair_restore(rec, since=None):
from jituan.services.huiyuan_bundle import _normalize_datetime_for_compare
updated = _normalize_datetime_for_compare(rec.UpdateTime)
if since and updated < _normalize_datetime_for_compare(since):
since_dt = _parse_since_option(since)
if since_dt and updated < since_dt:
return None
daoqi = _normalize_datetime_for_compare(rec.daoqi_time)
gap_days = (daoqi - updated).days