49 lines
2.3 KiB
PHP
49 lines
2.3 KiB
PHP
<?php
|
|
/**
|
|
* WEVAL Batch API v1.0 — Queue non-urgent tasks for Batch API (-50% cost)
|
|
* Uses Claude Batch API for bulk processing
|
|
*/
|
|
header('Content-Type: application/json');
|
|
$input = json_decode(file_get_contents("php://input"), true);
|
|
$action = $_GET['action'] ?? $input['action'] ?? 'status';
|
|
|
|
$queue_file = '/var/www/html/api/batch-queue.json';
|
|
|
|
switch ($action) {
|
|
case 'status':
|
|
$queue = json_decode(@file_get_contents($queue_file) ?: '[]', true);
|
|
echo json_encode(['queue_size' => count($queue), 'status' => 'ready',
|
|
'savings' => 'Batch API = -50% vs real-time. Prompt caching = -90% on system prompts.']);
|
|
break;
|
|
case 'add':
|
|
$task = $input['task'] ?? '';
|
|
if (!$task) { echo json_encode(['error' => 'task required']); exit; }
|
|
$queue = json_decode(@file_get_contents($queue_file) ?: '[]', true);
|
|
$queue[] = ['task' => $task, 'added' => date('Y-m-d H:i'), 'status' => 'pending'];
|
|
file_put_contents($queue_file, json_encode($queue, JSON_PRETTY_PRINT));
|
|
echo json_encode(['queued' => true, 'queue_size' => count($queue)]);
|
|
break;
|
|
case 'process':
|
|
$queue = json_decode(@file_get_contents($queue_file) ?: '[]', true);
|
|
// Process via WEVIA Master (0€) instead of Claude API
|
|
$processed = 0;
|
|
foreach ($queue as &$item) {
|
|
if ($item['status'] === 'pending') {
|
|
// Route to WEVIA Master
|
|
$ctx = stream_context_create(['http' => ['method' => 'POST', 'header' => 'Content-Type: application/json',
|
|
'content' => json_encode(['message' => $item['task']]), 'timeout' => 20]]);
|
|
$r = @file_get_contents("http://127.0.0.1/api/weval-ia-fast.php", false, $ctx);
|
|
if ($r) { $item['status'] = 'done'; $item['response'] = substr($r, 0, 500); $processed++; }
|
|
}
|
|
}
|
|
file_put_contents($queue_file, json_encode($queue, JSON_PRETTY_PRINT));
|
|
echo json_encode(['processed' => $processed, 'remaining' => count(array_filter($queue, fn($i) => $i['status'] === 'pending'))]);
|
|
break;
|
|
case 'clear':
|
|
file_put_contents($queue_file, '[]');
|
|
echo json_encode(['cleared' => true]);
|
|
break;
|
|
default:
|
|
echo json_encode(['actions' => ['status', 'add', 'process', 'clear']]);
|
|
}
|