← back to Bertha

src/app/api/workers/route.js

32 lines

import { NextResponse } from 'next/server';

export const dynamic = 'force-dynamic';

export async function POST(req) {
  const body = await req.json();
  const baseUrl = 'http://127.0.0.1:7800';

  const workerMap = {
    market_ingest: { url: `${baseUrl}/api/markets`, body: { action: 'ingest' } },
    weather_fetch: { url: `${baseUrl}/api/weather`, body: { action: 'fetch_all' } },
    run_predictions: { url: `${baseUrl}/api/models`, body: { action: 'run_predictions' } },
    risk_scan: { url: `${baseUrl}/api/risk`, body: { action: 'evaluate', pYes: 0.5, marketMid: 0.5, spread: 0.05, liquidity: 1000 } },
    paper_trade: { url: `${baseUrl}/api/trades`, body: { action: 'paper_cycle' } },
  };

  const worker = workerMap[body.worker];
  if (!worker) return NextResponse.json({ error: `Unknown worker: ${body.worker}` }, { status: 400 });

  try {
    const res = await fetch(worker.url, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(worker.body),
    });
    const data = await res.json();
    return NextResponse.json({ message: `Worker ${body.worker} completed`, result: data });
  } catch (err) {
    return NextResponse.json({ error: err.message }, { status: 500 });
  }
}