Follow-up from #311. The original problem (import processed inside the HTTP request) is fixed: mode=commit returns 202 { runId } and mode=dry_run is a sync preview.
Still missing vs the original AC:
- Live imported/skipped/error counts while a run is in progress (totals are written at completion only)
- Cancel:
cancelled status + POST /api/import/runs/{id}/cancel with a cooperative check between batches
- Failed rows as a CSV (original row + message), not a JSON download capped at 100
import.completed / import.failed audit events
- Rollback only if we store per-run created IDs — the shared daily batch tag is not a safe undo key
Do not retry the whole commit job (import-queue.ts documents that as unsafe). Re-import via source_id instead of resume.
Follow-up from #311. The original problem (import processed inside the HTTP request) is fixed:
mode=commitreturns 202{ runId }andmode=dry_runis a sync preview.Still missing vs the original AC:
cancelledstatus +POST /api/import/runs/{id}/cancelwith a cooperative check between batchesimport.completed/import.failedaudit eventsDo not retry the whole commit job (
import-queue.tsdocuments that as unsafe). Re-import viasource_idinstead of resume.