nn-ui-v2 / build /client /_app /immutable /chunks /SearchUtils.dqpKCG0P.js
muryshev's picture
update
2ab515e
import"./index.7IiDzEZn.js";import"./ProgressBar.svelte_svelte_type_style_lang.7yc35pDe.js";globalThis.__sveltekit_smfpmf.env;class i{static findDateInText(e){const s=/\b\d{1,2}\.\d{1,2}\.\d{4}\b/g,t=e.match(s);if(t&&t.length>0){const n=t[0],[o,r,a]=n.split(".").map(Number);return new Date(a,r-1,o)}return null}static sortByRelevanceAndDate(e){return e.sort((s,t)=>{const n=t.relevance-s.relevance;if(n!==0)return n;const o=i.findDateInText(s.title),r=i.findDateInText(t.title);return o&&r?r.getTime()-o.getTime():o?-1:r?1:0})}static sortByDate(e){const s=e.filter(a=>i.findDateInText(a.title)),t=e.filter(a=>!i.findDateInText(a.title)),n=s.sort((a,l)=>{const p=i.findDateInText(a.title),f=i.findDateInText(l.title);return p&&f?f.getTime()-p.getTime():p?-1:f?1:0}),o=[];let r=0;for(const a of e)if(i.findDateInText(a.title)){let l=n.shift();l&&o.push(l)}else o.push(t[r]),r++;return o}static sortByRelevance(e){return e.sort((s,t)=>s.relevance&&t.relevance?t.relevance-s.relevance:s.relevance?-1:t.relevance?1:0)}static identifyDocumentType(e){const s=[{regexp:/(ФАС |АС |КС |ВС |[Сс]удебн|[Сс]уд)|(\(Судебный документ\))/,docType:"Решение суда"},{regexp:/[Пп]исьмо [Мм]инфина/,docType:"Письмо Минфина"},{regexp:/[Пп]исьмо (ФНС|фнс)/,docType:"Письмо ФНС"},{regexp:/(НКРФ)|(НК РФ)/,docType:"Налоговый кодекс"},{regexp:/(ГКРФ)|(ГК РФ)/,docType:"Гражданский кодекс"},{regexp:/(ТКРФ)|(ТК РФ)/,docType:"Трудовой кодекс"},{regexp:/Приказ ФНС РФ/,docType:"Приказ ФНС РФ"},{regexp:/Постановление Правительства РФ/,docType:"Постановление Правительства РФ"},{regexp:/Решение Коллегии Евразийской экономической комиссии/,docType:"Решение Коллегии ЕЭК"},{regexp:/Федеральный закон/,docType:"Федеральные законы"},{regexp:/\(Внутренний документ\)|\(ВНД\)/,docType:"Внутренние документы"}];return e.map(t=>{for(const{regexp:n,docType:o}of s)if(n.test(t.title))return t.docType=o,t;return t.docType="Другие документы",t})}static mergeResultsByTitle(e){const s=/(ст\.\d+)\s(НКРФ|НК РФ|ГКРФ|ГК РФ|ТКРФ|ТК РФ)$/,t={},n=[],o=r=>{const a=r.match(s);return a?a[0]:null};return e.forEach(r=>{const a=o(r.title);if(a)if(t[a]){t[a].relevance=Math.max(t[a].relevance,r.relevance);const l=t[a].title.match(/п[\w\.]+/g)||[],p=r.title.match(/п[\w\.]+/g)||[],f=[...new Set([...l,...p])].join(", ");t[a].title=`${f} ст.${a.split(" ")[0].split(".")[1]} ${a.split(" ")[1]}`,t[a].text+=`
${r.title}
${r.text}`,r.text_for_llm&&(t[a].text_for_llm+=`
${r.title}
${r.text_for_llm}`)}else t[a]={...r};else n.push(r)}),Object.keys(t).forEach(r=>{n.push(t[r])}),n}}var P=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function y(c){return c&&c.__esModule&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c}const d={query:"",use_qe:!1,use_olympic:!1,find_transaction_maps_by_question:!1,find_transaction_maps_by_operation:!1,categories:{НКРФ:!1,ГКРФ:!1,ТКРФ:!1,"Федеральный закон":!1,"Письмо Минфина":!1,"Письмо ФНС":!1,"Приказ ФНС":!1,"Постановление Правительства":!1,"Судебный документ":!1,ВНД:!1,"Бухгалтерский документ":!1}};function h(c={}){return{...d,...c,categories:{...d.categories,...c.categories||{}}}}class u{abbreviationDict;data;dataPreProcessed;allRefs;patterns;refCollections;constructor(){this.data={},this.dataPreProcessed={},this.allRefs={},this.abbreviationDict=this.createAbbreviationDict(),this.refCollections=this.createRefCollections(),this.patterns=this.createPatterns()}createAbbreviationDict(){return{"Министерством Финансов":"Минфина","Министерство Финансов":"Минфина","Министерства Финансов":"Минфина","Министерству Финансов":"Минфина","Министерстве Финансов":"Минфина","Налоговый кодекс":"НК","Налоговому кодексу":"НК","Налоговым кодексом":"НК","Налоговом кодексе":"НК","Налогового кодекса":"НК","Трудовой кодекс":"ТК","Трудовым кодексом":"ТК","Трудового кодекса":"ТК","Трудовому кодексу":"ТК","Трудовом кодексе":"ТК","Гражданский кодекс":"ГК","Гражданским кодексом":"ГК","Гражданского кодекса":"ГК","Гражданскому кодексу":"ГК","Гражданском кодексе":"ГК","Российская Федерация":"РФ","Российской Федерацией":"РФ","Российской Федерации":"РФ","Российскую Федерацию":"РФ","Федеральная налоговая служба":"ФНС","Федеральной налоговой службы":"ФНС","Федеральной налоговой службе":"ФНС","Федеральную налоговую службу":"ФНС","Федеральной налоговой службой":"ФНС",N:"№",Статьей:"ст.",Статьёй:"ст.",статьей:"ст.",статьёй:"ст.",Статья:"ст.",Статьи:"ст.",Статье:"ст.",Статью:"ст.",статья:"ст.",статьи:"ст.",статье:"ст.",статью:"ст.",Подпунктом:"пп.",подпунктом:"пп.",Подпункта:"пп.",подпункта:"пп.",Подпункту:"пп.",подпункту:"пп.",Подпункте:"пп.",подпункте:"пп.",Подпункт:"пп.",подпункт:"пп.",Пунктом:"п.",пунктом:"п.",Пункта:"п.",пункта:"п.",Пункту:"п.",пункту:"п.",Пункте:"п.",пункте:"п.",Пункт:"п.",пункт:"п.",Приказа:"Приказ",Приказом:"Приказ",Приказу:"Приказ",Приказе:"Приказ",приказа:"Приказ",приказом:"Приказ",приказу:"Приказ",приказе:"Приказ",приказ:"Приказ",Письмом:"Письмо",Письму:"Письмо",Письма:"Письмо",Письме:"Письмо",письмом:"Письмо",письмо:"Письмо",письму:"Письмо",письма:"Письмо",письме:"Письмо",Постановлением:"Постановление",Постановления:"Постановление",Постановлению:"Постановление",Постановлении:"Постановление",постановлением:"Постановление",постановление:"Постановление",постановления:"Постановление",постановлению:"Постановление",постановлении:"Постановление",абзацем:"абз.",абзацу:"абз.",абзацами:"абз.",абзацы:"абз.",Положения:"Положение",Положению:"Положение"}}createRefCollections(){return{"НК РФ":{},"ГК РФ":{},"ТК РФ":{},"Федеральные законы":{},"Письма Минфина":{},"Приказы Минфина":{},"Письма ФНС":{},"Приказы ФНС":{},"Постановления Правительства":{}}}createPatterns(){return{"НК РФ":{pattern:/(?:[Пп]п\.\s*(?:\d+(?:\.\d+)*)\s*)?(?:[Пп]\.\s*(?:\d+(?:\.\д+)*)\s*)?[Сс]т\.\с*(?:\д+(?:\.\д+)*) НК\s*РФ/g,postProcess:this.postReplace},"ГК РФ":{pattern:/(?:[Пп]п\.\с*(?:\д+(?:\.\д+)*)\с*)?(?:[Пп]\.\с*(?:\д+(?:\.\д+)*)\с*)?[Сс]т\.\с*(?:\д+(?:\.\д+)*) ГК\s*РФ/g,postProcess:this.postReplace},"ТК РФ":{pattern:/(?:[Пп]п\.\с*(?:\д+(?:\.\д+)*)\с*)?(?:[Пп]\.\с*(?:\д+(?:\.\д+)*)\с*)?[Сс]т\.\с*(?:\д+(?:\.\д+)*) ТК\s*РФ/g,postProcess:this.postReplace},"Федеральные законы":{pattern:/от (?:\д{2}\.\д{2}\.\д{4}|\д{1,2} \в+ \д{4} г\.) № \д+-ФЗ/g,postProcess:this.postProcessLaw},"Письма Минфина":{pattern:/от (?:\д{2}\.\д{2}\.\д{4}|\д{1,2} \в+ \д{4} г\.) № \д{2}-\д{2}-\д{2}\/\д+/g,postProcess:this.postProcessMinfinLetter},"Приказы Минфина":{pattern:/Приказ Минфина (?:РФ|России) от (?:\д{2}\.\д{2}\.\д{4}|\д{1,2} \в+ \д{4} г\.) № [а-я0-9]+/g,postProcess:e=>e},"Письма ФНС":{pattern:/Письмо ФНС (?:РФ|России) от (?:\д{2}\.\д{2}\.\д{4}|\д{1,2} \в+ \д{4} г\.) № [А-Яа-яA-Za-z0-9-]+\/\д+/g,postProcess:e=>e},"Приказы ФНС":{pattern:/Приказ ФНС (?:РФ|России) от (?:\д{2}\.\д{2}\.\д{4}|\д{1,2} \в+ \д{4} г\.) № [А-Яа-яA-Za-z0-9-]+\/\д+/g,postProcess:this.postProcessFNSOrder},"Постановления Правительства":{pattern:/Постановление Правительства (?:РФ|России) от (?:\д{2}\.\д{2}\.\д{4}|\д{1,2} \в+ \д{4} г\.) № \д+/g,postProcess:e=>e},ВНД:{pattern:/п\.\d+\s*(?=.*\(ВНД\))/g,postProcess:this.postReplace}}}postProcessFNSOrder(e){const s=e.split(" ");return s[0]="Приказ",s[1]="ФНС",s[2]="РФ",s.join(" ")}postProcessLaw(e){return`Федеральный закон ${e}`}postProcessMinfinLetter(e){return`Письмо Минфина ${e}`}preprocessData(){Object.entries(this.data).forEach(([e,s])=>{this.dataPreProcessed[e]=this.replaceWithAbbreviations(s.expert_answer)})}replaceWithAbbreviations(e){return Object.entries(this.abbreviationDict).forEach(([s,t])=>{const n=new RegExp(s.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1"),"g");e=e.replace(n,t)}),e}postReplace(e){return e=e.replaceAll("НК РФ","НКРФ"),e=e.replaceAll("ТК РФ","ТКРФ"),e=e.replaceAll("ГК РФ","ГКРФ"),e=e.replaceAll("п. ","п."),e=e.replaceAll("пп. ","пп."),e=e.replaceAll("ст. ","ст."),e=e.replaceAll("абз. ","абз."),e}addKeyToDict(e,s,t){e[s]?e[s]=[...e[s],...t]:e[s]=t}processMatches(e,s,t,n,o){const r=o.match(e);if(r&&r.length>0){const a=r.map(t),l=[...new Set(a)];this.addKeyToDict(s,n,l)}}processAllMatches(){Object.entries(this.dataPreProcessed).forEach(([e,s])=>{Object.entries(this.patterns).forEach(([t,{pattern:n,postProcess:o}])=>{this.processMatches(n,this.refCollections[t],o,e,s)})})}printResults(){}mergeAllRefs(){Object.values(this.refCollections).forEach(e=>{Object.entries(e).forEach(([s,t])=>{this.allRefs[s]?this.allRefs[s]=[...this.allRefs[s],...t]:this.allRefs[s]=t})})}getProcessedData(){const e={};return Object.entries(this.data).forEach(([s,t])=>{e[s]={title:t.title,question:t.question,expert_answer:t.expert_answer,refs:this.allRefs[s]?this.allRefs[s]:[]}}),e}}const g=async(c,e)=>{const s=h(c),t=await fetch("/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s),signal:e.signal});if(!t.ok)throw new Error(`Failed to fetch search results: ${t.statusText}`);const n=await t.json();let o=null;return n.results!=null?(o=n.results,o=i.identifyDocumentType(o),o.map(r=>r.teaser=r.text_for_llm||r.teaser)):o=[],{searchResults:o,relevantConsultations:n.consultations||[],explanations:n.explanations,transactionMaps:n.transactionMapResults,modifiedQuery:n?.query,metrics:n?.metrics}},T=async(c,e)=>{let s=c;const t=new u;s=t.replaceWithAbbreviations(s),s=t.postReplace(s);function n(r){return r=r.replace(/пп\.(\d+(\.\d+)?)/,"п.$1"),r.replace(/([Пп]\.?\s?\d+(\.\d+)?)\s[Пп]\.\d+/g,"$1")}let o=e.filter(r=>{const a=n(r.title);return s.indexOf(a)>-1});return{modifiedText:s,searchResults:o}},D={doRequest:g,extractUsedSearchResults:T};export{d as D,D as S,h as a,i as b,P as c,y as g};