feat: log failures, validate env at startup, load .env (findings 3, 4, 7)
Finding 3: fetch_error, not_found, mail_error and de onverwachte-fout branch loggen nu naam/url plus reden naar stderr; runCheck logt na elke run een regel met de tellingen per status, zodat een cron-run zichtbaar is in de container-logs. De recordCheckSuccess/recordCheckFailure-condities en alle return-waarden zijn ongewijzigd. Finding 4: server.js controleert bij het opstarten dat BASIC_AUTH_USER, BASIC_AUTH_PASS, SMTP_FROM en NOTIFY_EMAIL gezet zijn en stopt anders met exit code 1 in plaats van later opake 500's te geven. Finding 7: dotenv toegevoegd en als eerste regel in server.js geladen, zodat het gedocumenteerde `cp .env.example .env && npm start` echt werkt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013gwc3aCiyQxmCWQke8RvEz
This commit is contained in:
@@ -3,10 +3,12 @@ async function checkProduct(product, deps) {
|
||||
const result = await fetchAndExtractPrice(product.url);
|
||||
|
||||
if (result.error) {
|
||||
console.error(`[check] fetch_error "${product.name}" (${product.url}): ${result.error.message}`);
|
||||
recordCheckFailure(product.id, 'fetch_error');
|
||||
return { status: 'fetch_error' };
|
||||
}
|
||||
if (result.price == null) {
|
||||
console.error(`[check] not_found "${product.name}" (${product.url}): geen prijs gevonden op de pagina`);
|
||||
recordCheckFailure(product.id, 'not_found');
|
||||
return { status: 'not_found' };
|
||||
}
|
||||
@@ -22,7 +24,8 @@ async function checkProduct(product, deps) {
|
||||
oldPrice: product.last_price,
|
||||
newPrice: result.price,
|
||||
});
|
||||
} catch {
|
||||
} catch (err) {
|
||||
console.error(`[check] mail_error "${product.name}" (${product.url}): ${err && err.message}`);
|
||||
recordCheckFailure(product.id, 'mail_error');
|
||||
return { status: 'mail_error' };
|
||||
}
|
||||
@@ -39,6 +42,7 @@ async function checkAllProducts(products, deps) {
|
||||
const result = await checkProduct(product, deps);
|
||||
results.push({ productId: product.id, ...result });
|
||||
} catch (err) {
|
||||
console.error(`[check] error "${product.name}" (${product.url}): ${err && err.message}`);
|
||||
results.push({ productId: product.id, status: 'error', error: err });
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user