work on qm filings
This commit is contained in:
parent
710577eb3d
commit
960daf4cad
17 changed files with 2319 additions and 32 deletions
66
apps/stock/data-ingestion/scripts/check-intraday-status.ts
Normal file
66
apps/stock/data-ingestion/scripts/check-intraday-status.ts
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
#!/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);
|
||||
Loading…
Add table
Add a link
Reference in a new issue