1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1688],{1688:(e,a,t)=>{t.r(a),t.d(a,{default:()=>b});var s=t(85047),r=t(31615),n=t(73521),l=t(41178),c=t(21410),i=t(82520),d=t(96968),o=t(21582),u=t(866),m=t(10892),h=t(62557);let x=[{code:"201",name:"èºé人壽"},{code:"202",name:"å°ç£äººå£½"},{code:"203",name:"ä¿èª 人壽"},{code:"204",name:"åæ³°äººå£½"},{code:"205",name:"å±åºäººå£½"},{code:"206",name:"å山人壽"},{code:"207",name:"åè¯äººå£½"},{code:"208",name:"æ°å
人壽"},{code:"209",name:"å¯é¦äººå£½"},{code:"210",name:"å寶人壽"},{code:"211",name:"ä¸åç¾é¦äººå£½"},{code:"212",name:"æé½äººå£½"},{code:"215",name:"幸ç¦äººå£½"},{code:"216",name:"é é人壽"},{code:"217",name:"宿³°äººå£½"},{code:"218",name:"å®è¯äººå£½"},{code:"220",name:"ä¸è¯éµæ¿"},{code:"221",name:"第ä¸é人壽"},{code:"222",name:"åä½é庫人壽"},{code:"252",name:"宿³°äººå£½"},{code:"254",name:"ä¸åä¿¡è¨äººå£½"},{code:"255",name:"å°æ°äººå£½"},{code:"256",name:"å®éåé人壽"},{code:"257",name:"åé¦äººå£½"},{code:"258",name:"å®å©äººå£½"},{code:"261",name:"å
大人壽"},{code:"262",name:"ç°ççæ³°äººå£½"},{code:"264",name:"å
¨ç人壽"},{code:"267",name:"æ³åå·´é»äººå£½"},{code:"269",name:"å®éä¿éª"},{code:"270",name:"å®é人壽"},{code:"271",name:"å¯è±äººå£½"},{code:"272",name:"èé»ä¸åé人壽"}];x.map(e=>e.code);let j=[{value:"å³çµ±å壽éª",label:"å³çµ±å壽éª"},{value:"æè³åä¿éª",label:"æè³åä¿éª"},{value:"å¥åº·ä¿éª",label:"å¥åº·ä¿éª"},{value:"å·å®³ä¿éª",label:"å·å®³ä¿éª"},{value:"å¹´éä¿éª",label:"å¹´éä¿éª"}];var p=t(11787);async function g(){let{auth:e}=await Promise.resolve().then(t.bind(t,76458)),a=e?.currentUser;if(!a)throw Error("æªç»å
¥");let s=await a.getIdToken(!0);return{Authorization:`Bearer ${s}`}}let f="admin:tiiCrawlJobId";function v(e){return Array.from(new Set(e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e.length>0)))}function b({pendingAppendKeyword:e=null}={}){let{user:a}=(0,n.A)(),{toast:t}=(0,l.dj)(),[N,y]=(0,r.useState)(""),[w,S]=(0,r.useState)(""),[C,k]=(0,r.useState)(114),[T,I]=(0,r.useState)(3),[E,F]=(0,r.useState)(""),[A,J]=(0,r.useState)(!1),[R,q]=(0,r.useState)("å³çµ±å壽éª"),[B,D]=(0,r.useState)(!1),[P,V]=(0,r.useState)(null),[$,Z]=(0,r.useState)(null),[_,O]=(0,r.useState)(!1),[U,W]=(0,r.useState)(!1),z=(0,r.useCallback)(async e=>{try{let a=await g(),t=await fetch(`/api/admin/tii-crawl/jobs/${e}`,{headers:a});if(!t.ok)return null;return await t.json()}catch{return null}},[]);(0,r.useEffect)(()=>{if(P)return;let e=localStorage.getItem(f);e&&V(e)},[P]);let M=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!e)return;let a=e.trim();a&&M.current!==a&&(M.current=a,S(e=>{let t=v(e);return t.includes(a)?e:[...t,a].join("\n")}),t({title:"å·²å å
¥ééµå",description:a}))},[e,t]),(0,r.useEffect)(()=>{if(!P||!(!$||"pending"===$.status||"running"===$.status))return;let e=setInterval(async()=>{let e=await z(P);e&&Z(e)},2500);return()=>clearInterval(e)},[P,$?.status,z,$]),(0,r.useEffect)(()=>{!a||P&&localStorage.setItem(f,P)},[a,P]),(0,r.useEffect)(()=>{P&&($?.status==="completed"||$?.status==="failed"||$?.status==="cancelled")&&localStorage.removeItem(f)},[P,$?.status]);let G=async()=>{if(P&&!U){W(!0);try{let e=await g(),a=await fetch(`/api/admin/tii-crawl/jobs/${P}/cancel`,{method:"POST",headers:{...e,"Content-Type":"application/json"}}),s=await a.json().catch(()=>({}));if(!a.ok)return void t({variant:"destructive",title:"忢失æ",description:s.error||a.statusText});Z(e=>e?{...e,status:"cancelled"}:e),t({title:"已忢",description:"å·²éåºåæ¢è«æ±ï¼è¥æ£å¨ä¸è¼ä¸æå¨çæéå
§ä¸æ¢ã"})}catch(e){t({variant:"destructive",title:"忢失æ",description:e instanceof Error?e.message:String(e)})}finally{W(!1)}}},H=async e=>{if(e.preventDefault(),!a||_)return;let s=v(w),r=s.length>0;if(r||C&&T){O(!0),Z(null);try{let e=await g(),a={company:N,insurance:R||void 0,notDiscontinued:B};r?a.keywords=s:(a.year=Number(C),a.monthFrom=Number(T),A&&(a.monthTo=""!==E?Number(E):Number(T)));let n=await fetch(r?"/api/admin/tii-crawl/run-batch":"/api/admin/tii-crawl/run",{method:"POST",headers:{...e,"Content-Type":"application/json"},body:JSON.stringify(a)}),l=await n.json().catch(()=>({}));if(!n.ok)return void t({variant:"destructive",title:"åå失æ",description:l.error||n.statusText});
1V(l.jobId),Z({status:"running",mode:r?"batch":"single",params:a,summary:r?{total:s.length,succeeded:0,failed:0,currentIndex:0}:void 0}),t({title:"å·²éå§ç¬å",description:r?"å·²ååç¬åï¼ç³»çµ±æéçå·è¡ä¸¦ä¸å³è³ Cloudflare R2ï¼tii-product-documents/ï¼ãä½ å¯åæå°å
¶ä»é ï¼åä¾ä»å¯ç¨åä¸ jobId çºçé²åº¦ã":"å·²ååç¬åï¼æ¥ææ¨¡å¼ï¼ãä½ å¯åæå°å
¶ä»é ï¼åä¾ä»å¯ç¨åä¸ jobId çºçé²åº¦ãPDF æä¸å³è³ Cloudflare R2ï¼tii-product-documents/ï¼ã"})}catch(e){t({variant:"destructive",title:"è«æ±å¤±æ",description:e instanceof Error?e.message:String(e)})}finally{O(!1)}}};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(i.Zp,{children:[(0,s.jsxs)(i.aR,{children:[(0,s.jsx)(i.ZB,{children:"ä¿ç¼ä¸å¿ç¬å"}),(0,s.jsx)(i.BT,{children:"å¯ä¾ééµåæ¥è©¢ï¼ä¸éè¨å®é·å®æ¥åéï¼æä¾æ°åå¹´ï¼æä»½æ¥è©¢ãééµåè«ä½¿ç¨ãæ¯è¡ä¸çã輸å
¥ï¼åªæ 1 è¡ä¹å¯ä»¥ãè¥ééµåç空ï¼åææ¹ç¨æ¥ææ¥è©¢ãå
ä¸è¼æ¢æ¬¾èè²»çï¼-A / -Cï¼PDFï¼ä¸¦ä¸å³è³ Cloudflare R2ï¼tii-product-documents/ï¼ã"})]}),(0,s.jsx)(i.Wu,{children:(0,s.jsxs)("form",{onSubmit:H,className:"space-y-4",children:[(0,s.jsxs)("div",{className:"grid gap-2",children:[(0,s.jsx)(d.J,{children:"å
¬å¸"}),(0,s.jsxs)(o.l6,{value:N,onValueChange:y,required:!0,children:[(0,s.jsx)(o.bq,{children:(0,s.jsx)(o.yv,{placeholder:"è«é¸æå£½éªå
¬å¸"})}),(0,s.jsx)(o.gC,{children:x.map(e=>(0,s.jsxs)(o.eb,{value:e.code,children:[e.name," (",e.code,")"]},e.code))})]})]}),(0,s.jsxs)("div",{className:"grid gap-2",children:[(0,s.jsx)(d.J,{children:"ééµåï¼æ¯è¡ä¸çï¼"}),(0,s.jsx)(m.T,{value:w,onChange:e=>S(e.target.value),placeholder:"ä¾å¦ï¼\nç¾åº·æ»¿å©\n好婿º...",rows:6}),(0,s.jsxs)("p",{className:"text-xs text-muted-foreground",children:["ç®åææééµåï¼",v(w).length," çï¼æèªåå»é¤ç©ºç½èéè¤ï¼ãæ¯è¡å¯çºåè¡¨å®æ´åååï¼æåååï¼åç¶´ï¼ä¸éå°é½å
¬å¸å稱ï¼ãçç©ºåæ¹ç¨æ¥ææ¥è©¢ã"]})]}),0===v(w).length&&(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,s.jsxs)("div",{className:"grid gap-2",children:[(0,s.jsx)(d.J,{children:"æ°åå¹´"}),(0,s.jsx)(u.p,{type:"number",min:100,max:200,value:C,onChange:e=>k(Number(e.target.value)||114)})]}),(0,s.jsxs)("div",{className:"grid gap-2",children:[(0,s.jsx)(d.J,{children:"æä»½"}),(0,s.jsxs)("div",{className:"flex gap-2 items-center flex-wrap",children:[(0,s.jsxs)(o.l6,{value:A?"range":"single",onValueChange:e=>J("range"===e),children:[(0,s.jsx)(o.bq,{className:"w-[100px]",children:(0,s.jsx)(o.yv,{})}),(0,s.jsxs)(o.gC,{children:[(0,s.jsx)(o.eb,{value:"single",children:"宿"}),(0,s.jsx)(o.eb,{value:"range",children:"åé"})]})]}),(0,s.jsxs)(o.l6,{value:String(T),onValueChange:e=>I(Number(e)),children:[(0,s.jsx)(o.bq,{className:"w-[80px]",children:(0,s.jsx)(o.yv,{})}),(0,s.jsx)(o.gC,{children:Array.from({length:12},(e,a)=>a+1).map(e=>(0,s.jsxs)(o.eb,{value:String(e),children:[e," æ"]},e))})]}),A&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"text-muted-foreground",children:"ï½"}),(0,s.jsxs)(o.l6,{value:""===E?String(T):String(E),onValueChange:e=>F(Number(e)),children:[(0,s.jsx)(o.bq,{className:"w-[80px]",children:(0,s.jsx)(o.yv,{placeholder:"è¿"})}),(0,s.jsx)(o.gC,{children:Array.from({length:12},(e,a)=>a+1).map(e=>(0,s.jsxs)(o.eb,{value:String(e),disabled:e<T,children:[e," æ"]},e))})]})]})]})]})]}),(0,s.jsxs)("div",{className:"grid gap-2",children:[(0,s.jsx)(d.J,{children:"éªç¨®"}),(0,s.jsxs)(o.l6,{value:R,onValueChange:q,children:[(0,s.jsx)(o.bq,{children:(0,s.jsx)(o.yv,{})}),(0,s.jsx)(o.gC,{children:j.map(e=>(0,s.jsx)(o.eb,{value:e.value,children:e.label},e.value))})]})]}),(0,s.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,s.jsx)(h.S,{id:"notDiscontinued",checked:B,onCheckedChange:e=>D(!0===e)}),(0,s.jsx)(d.J,{htmlFor:"notDiscontinued",className:"cursor-pointer font-normal",children:"æ¥è©¢æªåå®"})]}),(0,s.jsx)(c.$,{type:"submit",disabled:_||!N||0===v(w).length&&(!C||!T),children:_?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(p.A,{className:"mr-2 h-4 w-4 animate-spin"}),"ååä¸â¦"]}):"éå§ç¬å"})]})})]}),P&&(0,s.jsxs)(i.Zp,{children:[(0,s.jsxs)(i.aR,{children:[(0,s.jsx)(i.ZB,{children:"å·è¡çæ
"}),(0,s.jsxs)(i.BT,{children:[!$&&"ï¼å¯åæå°å
¶ä»é ï¼åä¾ä»å¯çºçé²åº¦ï¼",$?.status==="running"&&"ç¬åé²è¡ä¸ï¼å¯åæå°å
¶ä»é ï¼åä¾ä»å¯çºçé²åº¦ï¼ã",$?.
1status==="completed"&&"ç¬å已宿ã",$?.status==="failed"&&"ç¬å失æï¼è«æ¥ç䏿¹æ¥èªã",$?.status==="cancelled"&&"已忢ï¼åæ¶ç¬åï¼ã"]})]}),(0,s.jsxs)(i.Wu,{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3 flex-wrap",children:[$?.status==="running"&&(0,s.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,s.jsx)(p.A,{className:"h-4 w-4 animate-spin"}),(0,s.jsx)("span",{children:"å·è¡ä¸â¦"})]}),($?.status==="running"||$?.status==="pending")&&(0,s.jsx)(c.$,{variant:"destructive",type:"button",onClick:G,disabled:U,children:U?"忢ä¸â¦":"忢"})]}),$?.summary&&(0,s.jsxs)("p",{className:"text-sm text-muted-foreground",children:["é²åº¦ï¼",$.summary.currentIndex,"/",$.summary.total,"ï¼æå ",$.summary.succeeded,"ï¼å¤±æ ",$.summary.failed]}),$?.status==="completed"&&(0,s.jsx)(s.Fragment,{children:$.summary&&$.summary.failed>0?(0,s.jsxs)("p",{className:"text-amber-600 dark:text-amber-400",children:["æ¹æ¬¡å·²è·å®ï¼ä½æ ",$.summary.failed," çééµå失æï¼è«ç䏿¹æç´°ï¼ãæ´é« exit code: ",$.exitCode??1]}):(0,s.jsxs)("p",{className:"text-green-600 dark:text-green-400",children:["已宿ï¼exit code: ",$.exitCode??0,"ï¼"]})}),$?.status==="failed"&&(0,s.jsxs)(s.Fragment,{children:[$.error&&(0,s.jsx)("p",{className:"text-destructive text-sm",children:$.error}),$.logTail&&(0,s.jsx)("pre",{className:"text-xs bg-muted p-3 rounded overflow-auto max-h-48 whitespace-pre-wrap",children:$.logTail})]}),$?.status==="cancelled"&&(0,s.jsx)("p",{className:"text-muted-foreground text-sm",children:"已忢ãè¥éè¦å¯éæ°éå§ç¬åã"}),($?.items?.length??0)>0&&(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("p",{className:"text-sm font-medium",children:"æ¹æ¬¡æç´°"}),(0,s.jsx)("div",{className:"max-h-56 overflow-auto rounded border",children:(0,s.jsxs)("table",{className:"w-full text-xs",children:[(0,s.jsx)("thead",{className:"bg-muted",children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{className:"text-left p-2",children:"ééµå"}),(0,s.jsx)("th",{className:"text-left p-2",children:"çæ
"}),(0,s.jsx)("th",{className:"text-right p-2",children:"R2 ä¸å³"}),(0,s.jsx)("th",{className:"text-left p-2",children:"é¯èª¤"})]})}),(0,s.jsx)("tbody",{children:$?.items?.map(e=>(0,s.jsxs)("tr",{className:"border-t",children:[(0,s.jsx)("td",{className:"p-2",children:e.keyword}),(0,s.jsx)("td",{className:"p-2",children:e.status}),(0,s.jsx)("td",{className:"p-2 text-right",children:e.r2Uploaded??0}),(0,s.jsx)("td",{className:"p-2 text-destructive",children:e.errorMessage??"-"})]},e.keyword))})]})})]})]})]})]})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.