Add chunked timeline routing

This commit is contained in:
2026-05-25 12:34:41 +02:00
parent 75b19f1dcf
commit 17ad54cf36
7 changed files with 521 additions and 31 deletions
+12 -2
View File
@@ -9,7 +9,7 @@ dbnToolsRequireAuth();
// Parse input and run credit pre-check BEFORE emitting SSE headers so that
// auth/credit errors can still return JSON (dbnToolsError / dbnToolsAbort).
$input = dbnToolsJsonInput(400000);
$input = dbnToolsJsonInput(1500000);
$language = dbnToolsNormalizeLanguage($input['language'] ?? 'en');
$_validEngines = ['nova_lite', 'azure_mini', 'azure_full'];
@@ -17,7 +17,7 @@ $_requestedEngine = in_array((string)($input['engine'] ?? ''), $_validEngines, t
? (string)$input['engine'] : 'azure_mini';
try {
$text = dbnToolsInjectDocContent($input, dbnToolsString($input, 'text', 128000, false));
$text = dbnToolsInjectDocContent($input, dbnToolsString($input, 'text', ToolModels::TIMELINE_DEEP_MAX_CHARS, false));
if (mb_strlen(trim($text), 'UTF-8') < 10) {
dbnToolsError('Paste text, upload a file, or select a document before running.', 422, 'empty_text');
}
@@ -33,6 +33,7 @@ try {
}
$timelineRoute = ToolModels::timelineRoute($ftUid, $_requestedEngine, $text);
ToolModels::assertTimelineQuoteAccepted($timelineRoute, $input);
$ftUid = dbnToolsFreeTierCheckAmount('timeline', (int)$timelineRoute['credits']);
} catch (DbnToolsHttpException $e) {
dbnToolsError($e->getMessage(), $e->status, $e->errorCode, $e->extra);
@@ -69,6 +70,11 @@ try {
'msg' => 'This input is ' . number_format((int)$timelineRoute['input_char_count']) . " characters, so Timeline is using {$label} for reliability.",
]);
}
if (!empty($timelineRoute['chunked_timeline'])) {
sseEmit('status', [
'msg' => 'Processing ' . (int)$timelineRoute['timeline_chunk_count'] . ' timeline chunk(s).',
]);
}
$validFocus = ['all', 'deadlines', 'hearings', 'cps'];
$focus = in_array((string)($input['focus'] ?? ''), $validFocus, true)
@@ -110,6 +116,10 @@ try {
'auto_upgraded_engine' => $timelineRoute['auto_upgraded_engine'],
'input_char_count' => $timelineRoute['input_char_count'],
'engine_limit_chars' => $timelineRoute['engine_limit_chars'],
'max_char_limit' => $timelineRoute['max_char_limit'],
'chunked_timeline' => $timelineRoute['chunked_timeline'],
'timeline_chunk_count' => $timelineRoute['timeline_chunk_count'],
'estimated_credits' => $timelineRoute['estimated_credits'],
'credits_charged' => $timelineRoute['credits'],
]);