← back to Ken
src/app/api/risk/route.js
53 lines
import { NextResponse } from 'next/server';
const { query } = require('../../../lib/db');
const { getRiskState, updateRiskState, evaluateTrade, activateKillSwitch, deactivateKillSwitch } = require('../../../lib/risk');
export const dynamic = 'force-dynamic';
export async function GET() {
try {
const state = await getRiskState();
return NextResponse.json({ state });
} catch (err) {
return NextResponse.json({ error: err.message }, { status: 500 });
}
}
export async function POST(req) {
const body = await req.json();
if (body.action === 'kill_switch_activate') {
const result = await activateKillSwitch(body.reason || 'Manual activation');
await query(`INSERT INTO alerts_log (alert_type, severity, message, details) VALUES ($1, $2, $3, $4)`,
['kill_switch', 'critical', `Kill switch ACTIVATED: ${body.reason}`, result]);
return NextResponse.json(result);
}
if (body.action === 'kill_switch_deactivate') {
const result = await deactivateKillSwitch();
await query(`INSERT INTO alerts_log (alert_type, severity, message, details) VALUES ($1, $2, $3, $4)`,
['kill_switch', 'warning', 'Kill switch deactivated', result]);
return NextResponse.json(result);
}
if (body.action === 'evaluate') {
const evaluation = await evaluateTrade({
pYes: body.pYes,
marketMid: body.marketMid,
spread: body.spread,
liquidity: body.liquidity,
conditionId: body.conditionId || 'simulation',
});
return NextResponse.json({ evaluation });
}
if (body.action === 'update_config') {
const state = await getRiskState();
const newConfig = { ...state.config, ...body.config };
await query('UPDATE risk_state SET config = $1, updated_at = NOW() WHERE id = $2', [newConfig, state.id]);
return NextResponse.json({ updated: true, config: newConfig });
}
return NextResponse.json({ error: 'Unknown action' }, { status: 400 });
}