feat: Extend 1-minute data retention from 4 weeks to 1 year

- Updated lib/maintenance/data-cleanup.ts retention period: 28 days → 365 days
- Storage requirements validated: 251 MB/year (negligible)
- Rationale: 13× more historical data for better pattern analysis
- Benefits: 260-390 blocked signals/year vs 20-30/month
- Cleanup cutoff: Now Dec 2, 2024 (vs Nov 4, 2025 previously)
- Deployment verified: Container restarted, cleanup scheduled for 3 AM daily
This commit is contained in:
mindesbunister
2025-12-02 11:55:36 +01:00
parent 4239c99057
commit 5773d7d36d
11 changed files with 1191 additions and 7 deletions

View File

@@ -75,7 +75,7 @@ export async function POST(request: NextRequest) {
const driftSymbol = normalizeTradingViewSymbol(body.symbol)
// Store in cache
// Store in cache for immediate use
const marketCache = getMarketDataCache()
marketCache.set(driftSymbol, {
symbol: driftSymbol,
@@ -84,17 +84,47 @@ export async function POST(request: NextRequest) {
rsi: Number(body.rsi) || 50,
volumeRatio: Number(body.volumeRatio) || 1.0,
pricePosition: Number(body.pricePosition) || 50,
maGap: Number(body.maGap) || undefined,
currentPrice: Number(body.currentPrice) || 0,
timestamp: Date.now(),
timeframe: body.timeframe || '5'
})
// CRITICAL (Dec 2, 2025): Store ALL 1-minute data in database for historical analysis
// User directive: "we want to store the data for 4 weeks"
// Purpose: Enable granular 8-hour analysis of blocked signals with full indicator data
try {
const { getPrismaClient } = await import('@/lib/database/trades')
const prisma = getPrismaClient()
await prisma.marketData.create({
data: {
symbol: driftSymbol,
timeframe: body.timeframe || '1',
price: Number(body.currentPrice) || 0,
atr: Number(body.atr) || 0,
adx: Number(body.adx) || 0,
rsi: Number(body.rsi) || 50,
volumeRatio: Number(body.volumeRatio) || 1.0,
pricePosition: Number(body.pricePosition) || 50,
maGap: Number(body.maGap) || undefined,
volume: Number(body.volume) || undefined,
timestamp: new Date(body.timestamp || Date.now())
}
})
console.log(`💾 Stored 1-minute data in database for ${driftSymbol}`)
} catch (dbError) {
console.error('❌ Failed to store market data in database:', dbError)
// Don't fail the request if database save fails - cache still works
}
console.log(`✅ Market data cached for ${driftSymbol}`)
return NextResponse.json({
success: true,
symbol: driftSymbol,
message: 'Market data cached successfully',
message: 'Market data cached and stored successfully',
expiresInSeconds: 300
})