phase-10.5: test case fixes and updated postman collection

This commit is contained in:
saikiranvella
2026-06-12 00:47:41 -04:00
parent 65907a9b8d
commit 6cb4c93a0e
8 changed files with 524 additions and 668 deletions
+10 -6
View File
@@ -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> {