feat(parcel-sync): add LIMITE_UAT to sync package everywhere
All sync paths now include both admin layers (LIMITE_INTRAV_DYNAMIC + LIMITE_UAT) as best-effort alongside terenuri + cladiri: - export-bundle (hero buttons) - sync-background (fire-and-forget) - auto-refresh scheduler (weekday nights) - weekend deep sync (weekend nights) - freshness check (export tab badge) LIMITE_UAT rarely changes so incremental sync will skip it almost every time, but it stays fresh in the DB freshness check. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -250,6 +250,20 @@ export async function POST(req: Request) {
|
||||
pushProgress();
|
||||
updatePhaseProgress(2, 2);
|
||||
}
|
||||
// Sync admin layers (lightweight, non-fatal)
|
||||
for (const adminLayer of ["LIMITE_INTRAV_DYNAMIC", "LIMITE_UAT"]) {
|
||||
try {
|
||||
await syncLayer(
|
||||
validated.username,
|
||||
validated.password,
|
||||
validated.siruta,
|
||||
adminLayer,
|
||||
{ jobId, isSubStep: true },
|
||||
);
|
||||
} catch {
|
||||
// admin layers are best-effort
|
||||
}
|
||||
}
|
||||
finishPhase();
|
||||
|
||||
/* ══════════════════════════════════════════════════════════ */
|
||||
|
||||
@@ -221,19 +221,21 @@ async function runBackground(params: {
|
||||
throw new Error(r.error ?? "Sync clădiri failed");
|
||||
}
|
||||
|
||||
// Sync intravilan limits (always, lightweight layer)
|
||||
phase = "Sincronizare limite intravilan";
|
||||
push({});
|
||||
try {
|
||||
await syncLayer(username, password, siruta, "LIMITE_INTRAV_DYNAMIC", {
|
||||
forceFullSync: forceSync,
|
||||
jobId,
|
||||
isSubStep: true,
|
||||
});
|
||||
} catch {
|
||||
// Non-critical — don't fail the whole job
|
||||
note = "Avertisment: limite intravilan nu s-au sincronizat";
|
||||
// Sync admin layers (always, lightweight)
|
||||
for (const adminLayer of ["LIMITE_INTRAV_DYNAMIC", "LIMITE_UAT"]) {
|
||||
phase = `Sincronizare ${adminLayer === "LIMITE_UAT" ? "limite UAT" : "limite intravilan"}`;
|
||||
push({});
|
||||
try {
|
||||
await syncLayer(username, password, siruta, adminLayer, {
|
||||
forceFullSync: forceSync,
|
||||
jobId,
|
||||
isSubStep: true,
|
||||
});
|
||||
} catch {
|
||||
// Non-critical — don't fail the whole job
|
||||
note = `Avertisment: ${adminLayer} nu s-a sincronizat`;
|
||||
push({});
|
||||
}
|
||||
}
|
||||
|
||||
if (!terenuriNeedsSync && !cladiriNeedsSync) {
|
||||
|
||||
@@ -144,7 +144,7 @@ export function ExportTab({
|
||||
const dbTotalFeatures = dbLayersSummary.reduce((sum, l) => sum + l.count, 0);
|
||||
|
||||
// Primary layers synced by background jobs — these determine freshness
|
||||
const PRIMARY_LAYERS = ["TERENURI_ACTIVE", "CLADIRI_ACTIVE", "LIMITE_INTRAV_DYNAMIC"];
|
||||
const PRIMARY_LAYERS = ["TERENURI_ACTIVE", "CLADIRI_ACTIVE", "LIMITE_INTRAV_DYNAMIC", "LIMITE_UAT"];
|
||||
const primaryLayers = dbLayersSummary.filter((l) =>
|
||||
PRIMARY_LAYERS.includes(l.id),
|
||||
);
|
||||
|
||||
@@ -172,17 +172,15 @@ async function runAutoRefresh() {
|
||||
"CLADIRI_ACTIVE",
|
||||
{ uatName: uat.name },
|
||||
);
|
||||
// Intravilan — lightweight, non-fatal
|
||||
try {
|
||||
await syncLayer(
|
||||
username,
|
||||
password,
|
||||
uat.siruta,
|
||||
"LIMITE_INTRAV_DYNAMIC",
|
||||
{ uatName: uat.name },
|
||||
);
|
||||
} catch {
|
||||
// intravilan is best-effort
|
||||
// Admin layers — lightweight, non-fatal
|
||||
for (const adminLayer of ["LIMITE_INTRAV_DYNAMIC", "LIMITE_UAT"]) {
|
||||
try {
|
||||
await syncLayer(username, password, uat.siruta, adminLayer, {
|
||||
uatName: uat.name,
|
||||
});
|
||||
} catch {
|
||||
// admin layers are best-effort
|
||||
}
|
||||
}
|
||||
const dur = ((Date.now() - start) / 1000).toFixed(1);
|
||||
console.log(
|
||||
|
||||
@@ -186,17 +186,19 @@ async function executeStep(
|
||||
"TERENURI_ACTIVE",
|
||||
{ uatName: city.name, forceFullSync: true },
|
||||
);
|
||||
// Also sync intravilan limits (lightweight, non-fatal)
|
||||
try {
|
||||
await syncLayer(
|
||||
process.env.ETERRA_USERNAME!,
|
||||
process.env.ETERRA_PASSWORD!,
|
||||
city.siruta,
|
||||
"LIMITE_INTRAV_DYNAMIC",
|
||||
{ uatName: city.name },
|
||||
);
|
||||
} catch {
|
||||
// intravilan is best-effort
|
||||
// Also sync admin layers (lightweight, non-fatal)
|
||||
for (const adminLayer of ["LIMITE_INTRAV_DYNAMIC", "LIMITE_UAT"]) {
|
||||
try {
|
||||
await syncLayer(
|
||||
process.env.ETERRA_USERNAME!,
|
||||
process.env.ETERRA_PASSWORD!,
|
||||
city.siruta,
|
||||
adminLayer,
|
||||
{ uatName: city.name },
|
||||
);
|
||||
} catch {
|
||||
// admin layers are best-effort
|
||||
}
|
||||
}
|
||||
const dur = ((Date.now() - start) / 1000).toFixed(1);
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user