fix: заявка на оплату под реальный API справочников и OCR
Tests / frontend-test (pull_request) Successful in 1m32s
Tests / frontend-test (pull_request) Successful in 1m32s
Сверено с api-tnsu-portal (DictionaryController, DocumentController): - статьи ДДС — CashFlowItems?id=<группа> (было groupId, сервер отвечал 400); - OCR — Document/extractPDFText, текст в file_content пишется до ответа, поэтому колонка читается сразу, без опроса; - договоры и банковские счета — постраничные, поиск на сервере (search), иначе находились только первые 50 записей; фильтра по компании у договоров нет; - счета по проекту с откатом на фильтр только по компании: совпадение Id проекта из /Project с bank_accounts.project_id не гарантировано; - Id-фильтры передаются только в формате GUID, иначе API отвечает 400; - подписи записей по реальным полям (account_number, bank, valuta, counterparty_name); разбор вынесен в oneCRecords.ts с тестами; - код позиции потребности — lineNumber; - пустой ответ Gemini (200 с error) считается ошибкой. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -28,5 +28,10 @@ export async function askGemini<T>(context: WebPartContext, prompt: string, resp
|
||||
if (!response.ok) {
|
||||
throw new Error(`Proxy/Gemini: ${response.status} ${response.statusText}`);
|
||||
}
|
||||
return (await response.json()) as T;
|
||||
const body = (await response.json()) as T & { error?: unknown };
|
||||
// Пустой ответ модели прокси отдаёт как 200 с { error } — это сбой, а не данные.
|
||||
if (body && typeof body.error === 'string') {
|
||||
throw new Error(`Proxy/Gemini: ${body.error}`);
|
||||
}
|
||||
return body;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user