critical: Add maGap to TypeScript interfaces for v9 compatibility
- Added maGap field to RiskCheckRequest interface - Added maGap field to ExecuteTradeRequest interface - Health check already enhanced with database connectivity check - Fixes TypeScript build errors blocking deployment
This commit is contained in:
@@ -1,16 +1,52 @@
|
|||||||
import { NextResponse } from 'next/server'
|
import { NextResponse } from 'next/server'
|
||||||
|
import { getPrismaClient } from '@/lib/database/trades'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Health check endpoint for Docker HEALTHCHECK
|
* Health check endpoint for DNS failover monitoring
|
||||||
* Returns 200 OK if the server is running
|
* Returns 200 OK only if server AND database are healthy
|
||||||
|
*
|
||||||
|
* CRITICAL: If database is down, this returns 503
|
||||||
|
* This triggers DNS failover to backup server
|
||||||
*/
|
*/
|
||||||
export async function GET() {
|
export async function GET() {
|
||||||
return NextResponse.json(
|
const startTime = Date.now()
|
||||||
{
|
|
||||||
status: 'healthy',
|
try {
|
||||||
timestamp: new Date().toISOString(),
|
// Check database connectivity with 5-second timeout
|
||||||
uptime: process.uptime(),
|
const prisma = getPrismaClient()
|
||||||
},
|
const dbCheck = await Promise.race([
|
||||||
{ status: 200 }
|
prisma.$queryRaw`SELECT 1 as health_check`,
|
||||||
)
|
new Promise((_, reject) =>
|
||||||
|
setTimeout(() => reject(new Error('Database timeout')), 5000)
|
||||||
|
)
|
||||||
|
])
|
||||||
|
|
||||||
|
const responseTime = Date.now() - startTime
|
||||||
|
|
||||||
|
return NextResponse.json(
|
||||||
|
{
|
||||||
|
status: 'healthy',
|
||||||
|
timestamp: new Date().toISOString(),
|
||||||
|
uptime: process.uptime(),
|
||||||
|
database: 'connected',
|
||||||
|
responseTime: `${responseTime}ms`
|
||||||
|
},
|
||||||
|
{ status: 200 }
|
||||||
|
)
|
||||||
|
} catch (error: any) {
|
||||||
|
// Database failure - return 503 to trigger failover
|
||||||
|
console.error('❌ Health check failed - Database unavailable:', error.message)
|
||||||
|
|
||||||
|
return NextResponse.json(
|
||||||
|
{
|
||||||
|
status: 'unhealthy',
|
||||||
|
timestamp: new Date().toISOString(),
|
||||||
|
uptime: process.uptime(),
|
||||||
|
database: 'disconnected',
|
||||||
|
error: error.message,
|
||||||
|
responseTime: `${Date.now() - startTime}ms`
|
||||||
|
},
|
||||||
|
{ status: 503 } // Service Unavailable - triggers DNS failover
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ export interface RiskCheckRequest {
|
|||||||
rsi?: number
|
rsi?: number
|
||||||
volumeRatio?: number
|
volumeRatio?: number
|
||||||
pricePosition?: number
|
pricePosition?: number
|
||||||
|
maGap?: number // V9: MA gap convergence metric
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RiskCheckResponse {
|
export interface RiskCheckResponse {
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ export interface ExecuteTradeRequest {
|
|||||||
rsi?: number
|
rsi?: number
|
||||||
volumeRatio?: number
|
volumeRatio?: number
|
||||||
pricePosition?: number
|
pricePosition?: number
|
||||||
|
maGap?: number // V9: MA gap convergence metric
|
||||||
indicatorVersion?: string // Pine Script version (v5, v6, etc.)
|
indicatorVersion?: string // Pine Script version (v5, v6, etc.)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user