fix(parcel-sync): sync progress visible during GPKG/bundle export

3 bugs fixed:
- syncLayer was called without jobId -> user saw no progress duringSync
- syncLayer set status:'done' prematurely -> client stopped polling before GPKG phase
- syncLayer errors were silently ignored -> confusing 'no features in DB' error

Added isSubStep option to syncLayer: when true, keeps status as 'running'
and doesn't schedule clearProgress. Export routes now pass jobId + isSubStep
so the real sync progress (Descărcare features 50/200) is visible in the UI.
This commit is contained in:
AI Assistant
2026-03-07 11:23:36 +02:00
parent b0927ee075
commit 097d010b5d
3 changed files with 26 additions and 11 deletions
+11 -4
View File
@@ -196,13 +196,16 @@ export async function POST(req: Request) {
: "Sync inițial";
pushProgress();
await syncLayer(
const syncResult = await syncLayer(
validated.username,
validated.password,
validated.siruta,
terenuriLayerId,
{ forceFullSync: validated.forceSync },
{ forceFullSync: validated.forceSync, jobId, isSubStep: true },
);
if (syncResult.status === "error") {
throw new Error(syncResult.error ?? "Sync terenuri failed");
}
}
updatePhaseProgress(1, 2);
@@ -214,13 +217,16 @@ export async function POST(req: Request) {
: "Sync inițial";
pushProgress();
await syncLayer(
const syncResult = await syncLayer(
validated.username,
validated.password,
validated.siruta,
cladiriLayerId,
{ forceFullSync: validated.forceSync },
{ forceFullSync: validated.forceSync, jobId, isSubStep: true },
);
if (syncResult.status === "error") {
throw new Error(syncResult.error ?? "Sync clădiri failed");
}
}
updatePhaseProgress(2, 2);
} else {
@@ -233,6 +239,7 @@ export async function POST(req: Request) {
/* ══════════════════════════════════════════════════════════ */
/* Phase 2: Enrich (magic mode only) */
/* ══════════════════════════════════════════════════════════ */
// Take back progress control after syncLayer
if (validated.mode === "magic") {
setPhaseState("Verificare îmbogățire", weights.enrich, 1);