66 lines
No EOL
2.4 KiB
TypeScript
66 lines
No EOL
2.4 KiB
TypeScript
#!/usr/bin/env bun
|
|
|
|
/**
|
|
* Script to check intraday crawl status
|
|
*/
|
|
|
|
import { createTestContext } from '../src/test-utils';
|
|
import { QMHandler } from '../src/handlers/qm/qm.handler';
|
|
|
|
async function checkIntradayStatus() {
|
|
const context = await createTestContext();
|
|
const handler = new QMHandler(context.services);
|
|
|
|
// Wait for operation registry to initialize
|
|
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
|
|
try {
|
|
const tracker = handler.operationRegistry.getTracker('qm');
|
|
|
|
// Get operation stats
|
|
const stats = await tracker.getOperationStats('intraday_bars');
|
|
console.log('Intraday Bars Operation Stats:');
|
|
console.log('------------------------------');
|
|
console.log(`Total symbols: ${stats.totalSymbols}`);
|
|
console.log(`Processed symbols: ${stats.processedSymbols}`);
|
|
console.log(`Successful symbols: ${stats.successfulSymbols}`);
|
|
console.log(`Failed symbols: ${stats.failedSymbols}`);
|
|
console.log(`Stale symbols: ${stats.staleSymbols}`);
|
|
console.log(`Finished crawls: ${stats.finishedCrawls || 0}`);
|
|
console.log('');
|
|
|
|
// Get symbols needing crawl
|
|
console.log('Symbols needing crawl (top 10):');
|
|
console.log('--------------------------------');
|
|
const needsCrawl = await tracker.getSymbolsForIntradayCrawl('intraday_bars', {
|
|
limit: 10,
|
|
targetOldestDate: new Date('2020-01-01')
|
|
});
|
|
|
|
for (const symbol of needsCrawl) {
|
|
const crawlState = symbol.operationStatus?.crawlState;
|
|
console.log(`\n${symbol.symbol}:`);
|
|
console.log(` Status: ${symbol.operationStatus?.status || 'never run'}`);
|
|
console.log(` Last run: ${symbol.operationStatus?.lastRunAt || 'never'}`);
|
|
|
|
if (crawlState) {
|
|
console.log(` Finished: ${crawlState.finished}`);
|
|
console.log(` Oldest date: ${crawlState.oldestDateReached || 'none'}`);
|
|
console.log(` Newest date: ${crawlState.newestDateReached || 'none'}`);
|
|
console.log(` Days processed: ${crawlState.totalDaysProcessed || 0}`);
|
|
}
|
|
|
|
if (symbol.gaps) {
|
|
console.log(` Gaps: ${symbol.gaps.forward ? 'new data' : ''} ${symbol.gaps.backward ? 'historical' : ''}`);
|
|
}
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('Failed to check status:', error);
|
|
} finally {
|
|
await context.cleanup();
|
|
}
|
|
}
|
|
|
|
// Run the check
|
|
checkIntradayStatus().catch(console.error); |