feat(api): add unified request utility with type definitions

Implement a centralized API request utility with proper TypeScript interfaces
for bid items, AI recommendations, and crawl statistics. The utility handles
base URL configuration, request/response typing, and error handling.
This commit is contained in:
dmy
2026-01-15 14:28:04 +08:00
parent 20c7c0da0c
commit 36cbb6fda1
13 changed files with 117 additions and 12 deletions

View File

@@ -337,7 +337,7 @@ export const CdtCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Failed to crawl ${this.name}: ${errorMessage}`);
return allResults;
throw error;
} finally {
await page.close();
}

View File

@@ -242,7 +242,7 @@ export const CeicCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Crawl failed: ${errorMessage}`);
return allResults;
throw error;
} finally {
if (page) await page.close();
}

View File

@@ -229,7 +229,7 @@ export const CgnpcCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Failed to crawl ${this.name}: ${errorMessage}`);
return allResults;
throw error;
} finally {
await page.close();
}

View File

@@ -159,7 +159,7 @@ export const ChdtpCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Failed to crawl ${this.name}: ${errorMessage}`);
return allResults; // Return what we have so far
throw error;
} finally {
await page.close();
}

View File

@@ -366,7 +366,7 @@ export const ChngCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Crawl failed: ${errorMessage}`);
return allResults;
throw error;
} finally {
if (page) await page.close();
}

View File

@@ -228,7 +228,7 @@ export const CnncecpCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Failed to crawl ${this.name}: ${errorMessage}`);
return allResults;
throw error;
} finally {
await page.close();
}

View File

@@ -229,7 +229,7 @@ export const CnoocCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Failed to crawl ${this.name}: ${errorMessage}`);
return allResults;
throw error;
} finally {
await page.close();
}

View File

@@ -229,7 +229,7 @@ export const EpsCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Failed to crawl ${this.name}: ${errorMessage}`);
return allResults;
throw error;
} finally {
await page.close();
}

View File

@@ -269,7 +269,7 @@ export const EspicCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Failed to crawl ${this.name}: ${errorMessage}`);
return allResults;
throw error;
} finally {
await page.close();
}

View File

@@ -229,7 +229,7 @@ export const PowerbeijingCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Failed to crawl ${this.name}: ${errorMessage}`);
return allResults;
throw error;
} finally {
await page.close();
}

View File

@@ -239,7 +239,7 @@ export const SdiccCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Failed to crawl ${this.name}: ${errorMessage}`);
return allResults;
throw error;
} finally {
await page.close();
}

View File

@@ -248,7 +248,7 @@ export const SzecpCrawler = {
const errorMessage =
error instanceof Error ? error.message : String(error);
logger.error(`Crawl failed: ${errorMessage}`);
return allResults;
throw error;
} finally {
if (page) await page.close();
}