26 lines
1.5 KiB
JavaScript
26 lines
1.5 KiB
JavaScript
const { resolveAddressIntent } = require('../dist/services/addressIntentResolver.js');
|
|
const { extractAddressFilters } = require('../dist/services/addressFilterExtractor.js');
|
|
const { selectAddressRecipe, buildAddressRecipePlan } = require('../dist/services/addressRecipeCatalog.js');
|
|
const { executeAddressMcpQuery } = require('../dist/services/addressMcpClient.js');
|
|
|
|
(async () => {
|
|
const q = 'Покажи документы по договору 15/24';
|
|
const intentObj = resolveAddressIntent(q);
|
|
const filtersObj = extractAddressFilters(q, intentObj.intent);
|
|
const sel = selectAddressRecipe(intentObj.intent, filtersObj.extracted_filters);
|
|
console.log('intent_obj=', intentObj);
|
|
console.log('filters_obj=', filtersObj);
|
|
console.log('selection=', sel);
|
|
if (!sel.selected_recipe) return;
|
|
const plan = buildAddressRecipePlan(sel.selected_recipe, filtersObj.extracted_filters);
|
|
const mcp = await executeAddressMcpQuery({ query: plan.query, limit: plan.limit });
|
|
const rows = Array.isArray(mcp.raw_rows) ? mcp.raw_rows : [];
|
|
const contractNeedle = String(filtersObj.extracted_filters.contract || '').toLowerCase();
|
|
const byAnchor = rows.filter((r) => JSON.stringify(r).toLowerCase().includes(contractNeedle));
|
|
console.log('query_limit=', plan.limit);
|
|
console.log('raw_rows=', rows.length);
|
|
console.log('by_anchor=', byAnchor.length);
|
|
console.log('sample_registrators=', byAnchor.slice(0,10).map((r)=>String(r['Регистратор'] ?? r['Registrator'] ?? '')));
|
|
console.log('sample_rows=', byAnchor.slice(0,5));
|
|
})();
|