feat: форма «Заявка на оплату» (СТ/потребность, счёт через OCR и ИИ)
Tests / frontend-test (pull_request) Successful in 2m12s
Tests / frontend-test (pull_request) Successful in 2m12s
Новая форма acc-payment-request в категории «Бухгалтерия»: основание — согласованная СТ (сайт СТ) или потребность; из основания подставляются получатель, раздел, вид работ, условия, общая сумма и позиции. Счёт (PDF) сохраняется в библиотеку, уходит на OCR, ИИ достаёт реквизиты, суммы и позиции и сверяет их с СТ. Подсвечиваются чужой получатель в счёте и превышение общей суммы СТ всеми оплатами. Справочники 1С — общий DictionaryPicker. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { AadHttpClient, HttpClientResponse } from '@microsoft/sp-http';
|
||||
import { WebPartContext } from '@microsoft/sp-webpart-base';
|
||||
import { APPROVAL_API_CLIENT_ID, DICTIONARY_API_BASE_URL } from '../config';
|
||||
|
||||
/** JSON-схема ответа в формате, который принимает прокси Gemini (как в СТ). */
|
||||
export interface IGeminiSchema {
|
||||
type: 'object' | 'array' | 'string' | 'number' | 'integer' | 'boolean';
|
||||
properties?: Record<string, IGeminiSchema>;
|
||||
items?: IGeminiSchema;
|
||||
required?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /Proxy/Gemini { prompt, responseSchema } → объект, подогнанный под схему.
|
||||
* Тот же вызов делает СТ (CtService.scorePaymentTerms); ответ прокси — уже
|
||||
* разобранный JSON, без обёртки.
|
||||
*/
|
||||
export async function askGemini<T>(context: WebPartContext, prompt: string, responseSchema: IGeminiSchema): Promise<T> {
|
||||
const client = await context.aadHttpClientFactory.getClient(APPROVAL_API_CLIENT_ID);
|
||||
const response: HttpClientResponse = await client.post(
|
||||
`${DICTIONARY_API_BASE_URL}/Proxy/Gemini`,
|
||||
AadHttpClient.configurations.v1,
|
||||
{
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ prompt, responseSchema })
|
||||
}
|
||||
);
|
||||
if (!response.ok) {
|
||||
throw new Error(`Proxy/Gemini: ${response.status} ${response.statusText}`);
|
||||
}
|
||||
return (await response.json()) as T;
|
||||
}
|
||||
Reference in New Issue
Block a user