fix(sync): backfill address_mismatch for orders missing blue dot

Orders synced before address_mismatch was deployed had stale 0 values,
causing missing blue dots in the dashboard. Adds startup backfill from
stored address JSON + recomputes on each sync for ALREADY_IMPORTED orders.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-04-06 16:05:32 +00:00
parent 9977ec28cf
commit 86e8d54d5e
3 changed files with 112 additions and 0 deletions

View File

@@ -1172,6 +1172,48 @@ async def update_order_partner_data(order_number: str, partner_data: dict):
await db.close()
async def update_gomag_addresses_batch(updates: list[dict]):
"""Update GoMag addresses and recompute address_mismatch for a batch of orders.
Each dict: {order_number, adresa_livrare_gomag, adresa_facturare_gomag}
"""
if not updates:
return
from ..services.sync_service import _addr_match
db = await get_sqlite()
try:
for u in updates:
order_number = u["order_number"]
livr_gomag = u.get("adresa_livrare_gomag")
fact_gomag = u.get("adresa_facturare_gomag")
# Update GoMag addresses
await db.execute("""
UPDATE orders SET
adresa_livrare_gomag = COALESCE(?, adresa_livrare_gomag),
adresa_facturare_gomag = COALESCE(?, adresa_facturare_gomag),
updated_at = datetime('now')
WHERE order_number = ?
""", (livr_gomag, fact_gomag, order_number))
# Recompute address_mismatch from stored addresses
cursor = await db.execute(
"SELECT adresa_livrare_gomag, adresa_livrare_roa, "
"adresa_facturare_gomag, adresa_facturare_roa FROM orders WHERE order_number = ?",
(order_number,)
)
row = await cursor.fetchone()
if row and (row[1] or row[3]): # has at least one ROA address
livr_ok = _addr_match(row[0], row[1])
fact_ok = _addr_match(row[2], row[3])
new_val = 1 if (not livr_ok or not fact_ok) else 0
await db.execute(
"UPDATE orders SET address_mismatch = ? WHERE order_number = ?",
(new_val, order_number)
)
await db.commit()
finally:
await db.close()
async def get_orders_missing_anaf() -> list[dict]:
"""Get orders with cod_fiscal_roa set but no ANAF data (for backfill)."""
db = await get_sqlite()