feat(laws,opendata): add local law storage and migrate OpenData persistence to smartdb-backed local storage

This commit is contained in:
2026-04-17 11:51:02 +00:00
parent 79e74a34ed
commit 73801f785a
40 changed files with 8514 additions and 7266 deletions
+9 -7
View File
@@ -45,7 +45,7 @@ export class MarketstackProvider implements IStockProvider {
public priority = 90; // Increased from 80 - now supports real-time intraday data during market hours
public readonly requiresAuth = true;
public readonly rateLimit = {
requestsPerMinute: undefined, // No per-minute limit specified
requestsPerMinute: 0, // No per-minute limit specified
requestsPerDay: undefined // Varies by plan
};
@@ -99,8 +99,9 @@ export class MarketstackProvider implements IStockProvider {
}
} catch (error) {
// If intraday fails, fallback to EOD with warning
if (error.message?.includes('intraday') || error.message?.includes('Marketstack API error')) {
this.logger.warn(`Intraday endpoint failed for ${request.ticker}, falling back to EOD:`, error.message);
const errorMessage = plugins.getErrorMessage(error);
if (errorMessage.includes('intraday') || errorMessage.includes('Marketstack API error')) {
this.logger.warn(`Intraday endpoint failed for ${request.ticker}, falling back to EOD:`, errorMessage);
try {
return await this.fetchCurrentPriceEod(request);
} catch (eodError) {
@@ -245,7 +246,7 @@ export class MarketstackProvider implements IStockProvider {
return allPrices;
} catch (error) {
this.logger.error(`Failed to fetch historical prices for ${request.ticker}:`, error);
throw new Error(`Marketstack: Failed to fetch historical prices for ${request.ticker}: ${error.message}`);
throw new Error(`Marketstack: Failed to fetch historical prices for ${request.ticker}: ${plugins.getErrorMessage(error)}`);
}
}
@@ -337,7 +338,7 @@ export class MarketstackProvider implements IStockProvider {
return allPrices;
} catch (error) {
this.logger.error(`Failed to fetch intraday prices for ${request.ticker}:`, error);
throw new Error(`Marketstack: Failed to fetch intraday prices for ${request.ticker}: ${error.message}`);
throw new Error(`Marketstack: Failed to fetch intraday prices for ${request.ticker}: ${plugins.getErrorMessage(error)}`);
}
}
@@ -359,8 +360,9 @@ export class MarketstackProvider implements IStockProvider {
}
} catch (error) {
// Fallback to EOD if intraday fails
if (error.message?.includes('intraday') || error.message?.includes('Marketstack API error')) {
this.logger.warn(`Intraday batch endpoint failed, falling back to EOD:`, error.message);
const errorMessage = plugins.getErrorMessage(error);
if (errorMessage.includes('intraday') || errorMessage.includes('Marketstack API error')) {
this.logger.warn(`Intraday batch endpoint failed, falling back to EOD:`, errorMessage);
try {
return await this.fetchBatchCurrentPricesEod(request);
} catch (eodError) {