fix: timeframe handling and progress tracking improvements

- Fix timeframe parameter handling in enhanced-screenshot API route
- Support both 'timeframe' (singular) and 'timeframes' (array) parameters
- Add proper sessionId propagation for real-time progress tracking
- Enhance MACD analysis prompt with detailed crossover definitions
- Add progress tracker service with Server-Sent Events support
- Fix Next.js build errors in chart components (module variable conflicts)
- Change dev environment port from 9000:3000 to 9001:3000
- Improve AI analysis layout detection logic
- Add comprehensive progress tracking through all service layers
This commit is contained in:
mindesbunister
2025-07-17 10:41:18 +02:00
parent 27df0304c6
commit ff4e9737fb
26 changed files with 1656 additions and 277 deletions

109
test-drift-funds.mjs Normal file
View File

@@ -0,0 +1,109 @@
import { Connection, PublicKey } from '@solana/web3.js';
async function testDriftAccount() {
try {
console.log('🔍 Testing Drift account access...');
const connection = new Connection('https://api.mainnet-beta.solana.com', 'confirmed');
const accountPDA = '7LonnWut5i3h36xyMA5jbwnGFbnzXUPY2dsPfNaSsrTk';
console.log('📡 Connecting to Solana...');
const accountInfo = await connection.getAccountInfo(new PublicKey(accountPDA));
if (!accountInfo) {
console.log('❌ Drift account not found');
return;
}
console.log('✅ Drift account found!');
console.log(`📊 Account data size: ${accountInfo.data.length} bytes`);
console.log(`💰 Account lamports: ${accountInfo.lamports}`);
console.log(`👤 Owner: ${accountInfo.owner.toBase58()}`);
// Try to parse balance data from multiple known offsets
const data = accountInfo.data;
console.log(`\n🔍 Scanning for USDC balance...`);
// Try multiple offsets where USDC balance might be stored
const offsets = [106, 114, 122, 130, 138, 146, 154];
for (const offset of offsets) {
try {
const balance = data.readBigInt64LE(offset);
const value = Number(balance) / 1_000_000; // USDC has 6 decimals
if (value > 0 && value < 1000000) { // Reasonable range
console.log(` Offset ${offset}: $${value.toFixed(6)}`);
}
} catch (e) {
// Skip invalid offsets
}
}
console.log(`\n🔍 Scanning for SOL position...`);
// Try multiple offsets for SOL position
const solOffsets = [432, 440, 448, 456, 464, 472];
for (const offset of solOffsets) {
try {
const position = data.readBigInt64LE(offset);
const amount = Number(position) / 1_000_000_000; // SOL has 9 decimals
if (Math.abs(amount) > 0.001 && Math.abs(amount) < 1000) { // Reasonable range
console.log(` Offset ${offset}: ${amount.toFixed(6)} SOL`);
}
} catch (e) {
// Skip invalid offsets
}
}
// Find the best USDC balance (likely the $23 you mentioned)
let bestUsdcValue = 0;
let bestSolAmount = 0;
for (const offset of offsets) {
try {
const balance = data.readBigInt64LE(offset);
const value = Number(balance) / 1_000_000; // USDC has 6 decimals
if (value > bestUsdcValue && value < 1000000) { // Take the highest reasonable value
bestUsdcValue = value;
}
} catch (e) {
// Skip invalid offsets
}
}
for (const offset of solOffsets) {
try {
const position = data.readBigInt64LE(offset);
const amount = Number(position) / 1_000_000_000; // SOL has 9 decimals
if (Math.abs(amount) > Math.abs(bestSolAmount) && Math.abs(amount) < 1000) {
bestSolAmount = amount;
}
} catch (e) {
// Skip invalid offsets
}
}
console.log(`\n💵 Best parsed balances:`);
console.log(` USDC: $${bestUsdcValue.toFixed(6)}`);
console.log(` SOL: ${bestSolAmount.toFixed(6)} SOL`);
if (bestUsdcValue > 20) {
console.log(`\n🎉 Found your $${bestUsdcValue.toFixed(2)} USDC!`);
}
if (bestUsdcValue > 1 || Math.abs(bestSolAmount) > 0.01) {
console.log('\n✅ Sufficient funds for leveraged trading!');
console.log('🎯 Ready to implement real Drift perpetual trading');
console.log(`📊 With $${bestUsdcValue.toFixed(2)} you can open positions up to $${(bestUsdcValue * 10).toFixed(2)} with 10x leverage`);
} else {
console.log('\n⚠ Limited funds detected');
}
} catch (error) {
console.error('❌ Test failed:', error.message);
}
}
testDriftAccount();