nn-ui-v2 / build /server /chunks /FullTextSearchService-uxuytyJu.js
muryshev's picture
update
2ab515e
import fetch from 'node-fetch';
import { D as DEFAULT_SEARCH_INPUT_PARAMS } from './constants-PEBBwOxo.js';
import { d as private_env } from './shared-server-49TKSBDM.js';
import dns from 'node:dns';
function createSearchInputParams(overrides = {}) {
return {
...DEFAULT_SEARCH_INPUT_PARAMS,
...overrides,
categories: {
...DEFAULT_SEARCH_INPUT_PARAMS.categories,
...overrides.categories || {}
}
};
}
dns.setDefaultResultOrder("ipv4first");
class FullTextSearchService {
url = "";
constructor(url) {
this.url = url;
}
async health() {
try {
const r = await fetch(`${this.url}/health`, {
method: "GET",
headers: {
"Content-Type": "application/json"
}
});
const data = await r.json();
if (data.status === "ok") {
return data.status;
}
} catch (error) {
console.log(JSON.parse(JSON.stringify(error)));
}
return "unavailable";
}
async search(params, abortController) {
const timeoutId = setTimeout(() => {
abortController.abort();
}, 6e4 * Number(private_env.SEARCH_API_REQUEST_TIMEOUT));
const startTime = Date.now();
const data = createSearchInputParams(params);
console.info("Search request sent with parameters:");
console.info(data);
try {
const r = await fetch(`${this.url}/search`, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(data),
signal: abortController.signal
});
if (!r.ok) {
console.error(`Failed to load search results: ${await r.text()}`);
throw new Error(`Не удалось загрузить результаты поиска. Возможно, поиск ещё не запустился. Попробуйте отправить запрос ещё раз.`);
}
const response = await r.json();
if (params.find_transaction_maps_by_question || params.find_transaction_maps_by_operation) {
return {
transactionMapResults: response.transaction_maps_results,
results: null,
explanations: response.explanations || null,
consultations: null,
metrics: response.metrics
};
} else {
return {
transactionMapResults: null,
results: response.results,
explanations: response.explanations || null,
consultations: response.consultations,
query: response.query,
metrics: response.metrics,
llmResponses: response.llm_responses
};
}
} catch (error) {
if (abortController.signal.aborted || error.name === "AbortError") {
throw new Error(`Сервис поиска не отвечает. Попробуйте изменить и повторить запрос ${JSON.stringify(error)}`);
}
console.log(JSON.parse(JSON.stringify(error)));
throw error;
} finally {
const endTime = Date.now();
const difference = Math.abs(endTime - startTime) / 1e3;
console.log("Search response time:", difference);
clearTimeout(timeoutId);
}
}
}
export { FullTextSearchService as F };
//# sourceMappingURL=FullTextSearchService-uxuytyJu.js.map