← 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 });
}