fix: deduplicate order_number collisions during Firestore orders migration

This commit is contained in:
2026-04-17 15:30:45 +03:00
parent 914027e580
commit c7d5206d0c

View File

@@ -71,6 +71,7 @@ async def run() -> None:
records = [] records = []
skipped = 0 skipped = 0
seen_order_numbers: set[str] = set()
for doc in docs: for doc in docs:
d = doc.to_dict() d = doc.to_dict()
@@ -91,6 +92,12 @@ async def run() -> None:
continue continue
order_number = d.get("order_number") or f"ORD-LEGACY-{doc.id}" order_number = d.get("order_number") or f"ORD-LEGACY-{doc.id}"
# Deduplicate: if this order_number was already seen in this batch,
# make it unique by appending the doc ID suffix.
if order_number in seen_order_numbers:
order_number = f"{order_number}-{doc.id[:8]}"
print(f" INFO: duplicate order_number — renamed to {order_number}")
seen_order_numbers.add(order_number)
created_at = _coerce_dt(d.get("created_at")) or _now_utc() created_at = _coerce_dt(d.get("created_at")) or _now_utc()
updated_at = _coerce_dt(d.get("updated_at")) or _now_utc() updated_at = _coerce_dt(d.get("updated_at")) or _now_utc()