phase-10.5: test case fixes and updated postman collection
This commit is contained in:
@@ -35,12 +35,14 @@ export class ScreenerEngine {
|
||||
private static readonly BATCH_DELAY_MS = 1000;
|
||||
|
||||
private logger: Logger;
|
||||
private readonly batchDelayMs: number;
|
||||
|
||||
constructor(
|
||||
private readonly client: YahooFinanceClient,
|
||||
private readonly benchmarkProvider: BenchmarkProvider,
|
||||
{ logger }: ScreenerEngineOptions = {},
|
||||
{ logger, batchDelayMs }: ScreenerEngineOptions = {},
|
||||
) {
|
||||
this.batchDelayMs = batchDelayMs ?? ScreenerEngine.BATCH_DELAY_MS;
|
||||
// eslint-disable-next-line no-console
|
||||
this.logger = logger ?? {
|
||||
write: (msg: string) => process.stdout.write(msg),
|
||||
@@ -65,11 +67,12 @@ export class ScreenerEngine {
|
||||
const chunks = chunkArray(tickers, ScreenerEngine.BATCH_SIZE);
|
||||
let processed = 0;
|
||||
|
||||
for (const chunk of chunks) {
|
||||
await this.processBatch(chunk, marketContext, results);
|
||||
processed += chunk.length;
|
||||
for (let i = 0; i < chunks.length; i++) {
|
||||
await this.processBatch(chunks[i], marketContext, results);
|
||||
processed += chunks[i].length;
|
||||
this.logProgress(showProgress, processed, tickers.length);
|
||||
await this.rateLimitDelay();
|
||||
// Rate-limit pause between batches — never after the last one
|
||||
if (i < chunks.length - 1) await this.rateLimitDelay();
|
||||
}
|
||||
|
||||
if (showProgress) {
|
||||
@@ -110,7 +113,8 @@ export class ScreenerEngine {
|
||||
}
|
||||
|
||||
private async rateLimitDelay(): Promise<void> {
|
||||
await new Promise<void>((r) => setTimeout(r, ScreenerEngine.BATCH_DELAY_MS));
|
||||
if (this.batchDelayMs <= 0) return;
|
||||
await new Promise<void>((r) => setTimeout(r, this.batchDelayMs));
|
||||
}
|
||||
|
||||
private async fetch(ticker: string): Promise<MappedData | ErrorResult> {
|
||||
|
||||
Reference in New Issue
Block a user