Files
html/api/weval-batch.php
2026-04-12 22:57:03 +02:00

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']]);
}