PageSourceSearch

https://chaosuangeo.com/_nuxt/DjbLEJLX.js

js chaosuangeo.com collected 2026-10-02 01:26:01 UTC 15,178 bytes, 2 lines download raw bytes

1import{a as me,d as fe,u as xe,q as we,o as Z,X as Ce,Y as Le,c as l,e as t,x as ee,y as E,t as o,f as n,F as v,h as u,g as A,i as c,n as Te,r as R,j as f,l as V,N as Be,G as qe,k as D,m as Ae,b as i,v as te,L as j,z,K as se,A as Re,_ as Se}from"./B_m38SBB.js";import{u as Pe}from"./DClefU4d.js";import{s as Ue}from"./c4tBL0at.js";function Ee(){const x=me();return{execute:(_,y)=>x(`/batch/plans/${_}/execute/`,{method:"POST",body:{items:y}}),reviewQueue:_=>x(`/batch/plans/${_}/review-queue/`,{method:"GET"}),review:(_,y,p="")=>x(`/batch/articles/${_}/review/`,{method:"POST",body:{action:y,note:p}}),publish:(_,y)=>x(`/batch/plans/${_}/publish/`,{method:"POST",body:{articles:y}}),mediaList:(_={})=>x("/media_db/media/",{method:"GET",query:{channel:"",page_size:50,..._}})}}const Ve={class:"page-shell"},$e={class:"breadcrumb","aria-label":"面包屑"},Me={class:"breadcrumb-current"},Ne={key:0,class:"dl-empty"},Ie={class:"page-head"},Oe={class:"page-head-main"},De={class:"page-head-title"},je={class:"page-head-sub"},ze={key:0,class:"card-panel gate-panel"},Fe={class:"gate-fee"},Ge={key:0},He={key:0,class:"kb-runner-warn"},Ke=["disabled"],Qe={class:"gate-actions"},Xe=["disabled"],Ye=["disabled"],Je={key:1,class:"card-panel"},We={class:"progress-bar"},Ze={class:"hint-text"},et={class:"buckets"},tt={class:"bucket-count"},st={class:"bi-kw"},nt={class:"bi-reason"},at={key:0,class:"bi-quote"},it={class:"bi-actions"},lt=["href"],ot={key:0,class:"bucket-empty"},dt={key:3,class:"card-panel exec-start"},rt={class:"exec-pick-label"},ut=["onUpdate:modelValue"],ct=["onUpdate:modelValue","disabled"],pt={key:0,class:"hint-text"},_t={key:1,class:"error-text"},bt=["disabled"],ht={key:4},vt={class:"card-panel"},yt={class:"exec-stats"},kt={class:"art-head"},gt={class:"art-kw"},mt={class:"art-tags"},ft={key:2,class:"art-tag"},xt={key:0,class:"art-review"},wt={class:"art-title"},Ct={key:0,class:"art-adlaw-hint"},Lt=["innerHTML"],Tt={class:"art-actions"},Bt=["disabled","onClick"],qt=["disabled","onClick"],At={key:1,class:"art-publish"},Rt={class:"art-media"},St=["value","onUpdate:modelValue"],Pt={class:"art-media-price"},Ut={key:0,class:"hint-text"},Et={key:0,class:"art-media-total","data-test":"pub-total"},Vt=["disabled","onClick"],$t={key:2,class:"hint-text"},Mt={key:3,class:"hint-text"},Nt={key:4,class:"hint-text"},It={key:5,class:"hint-text"},Ot={key:6,class:"hint-text"},Dt={key:7,class:"hint-text"},jt={key:0,class:"dl-empty"},zt=fe({__name:"[id]",setup(x){const _=xe(),y=we(),p=Ae(),{isDesktopClient:ne,hasLocalRunner:F,isRunnerReady:$,refreshRunnerStatus:G,pluginLoading:ae,startRunnerPolling:ie}=Pe();Z(()=>ie(4e3));const M=Ce(),w=Ee(),k=_.params.id,d=f(null),C=f(!1);let L=null;const g=f([]),T=f([]),B=D({}),N=D({}),b=D({}),S=f(!1),m=f(!1),q=f(""),le=[{key:"A",label:"已获推荐 · 保持监测"},{key:"B",label:"建议优化"},{key:"C",label:"暂不建议投放"},{key:"D",label:"待重新检测"}],oe={draft:"草稿",auditing:"体检中",triaged:"已分诊",quoted:"已报价",executing:"执行中",completed:"已完成",closed:"已结案",cancelled:"已取消"};function de(a){return oe[a]||a}const P=V(()=>(d.value?.items||[]).filter(a=>a.triage_bucket==="B")),re=V(()=>Object.values(B).some(Boolean));function H(a){return g.value.filter(e=>e.review_status===a&&e.gen_status==="generated")}function ue(a){return{pending:"待生成",generating:"生成中",generated:"已生成",failed:"生成失败"}[a]||a}function ce(a){return{pending:"待审阅",approved:"已通过",rejected:"已驳回"}[a]||a}function pe(a){return{not_started:"未发布",publishing:"发布中",published:"已发布",failed:"发布失败"}[a]||a}async function U(){try{g.value=await w.reviewQueue(k)}catch{}for(const a of g.value)Array.isArray(b[a.id])||(b[a.id]=[])}async function K(){if(!T.value.length)try{const a=await w.mediaList({channel:"C",page_size:30}),e=Array.isArray(a)?a:a?.items||a?.results||[];T.value=e.slice(0,30)}catch{}}async function _e(){q.value="";const a=P.value.filter(e=>B[e.id]).map(e=>({plan_item_id:e.id,article_count:N[e.id]||1}));if(!a.length){q.value="请至少勾选一个词";return}S.value=!0;try{await w.execute(k,a),p.success("已开工,系统开始批量生成稿件"),await O(),await U(),await K()}catch(e){q.value=e?.message||"开工失败"}finally{S.value=!1}}async function Q(a,e){m.value=!0;try{await w.review(a.id,e),p.success(e==="approve"?"已通过":"已驳回"),await U()}catch(h){p.error(h?.message||"操作失败")}finally{m.value=!1}}function be(a){return(Number(a?.price_market)||0).toFixed(2)}function X(a){return(b[a.id]||[]).reduce((h,s)=>h+(Number(T.value.find(r=>r.media_id===s)?.price_market)||0),0)}async function he(a){const e=b[a.id]||[];
1if(e.length&&confirm(`确认把「${a.keyword}」这篇稿件发布到已选的 ${e.length} 家媒体?
2合计 ¥${X(a).toFixed(2)},将从账户余额扣除。`)){m.value=!0;try{const s=((await w.publish(k,[{article_id:a.id,media_ids:e}]))?.results||[])[0];s&&s.ok===!1?p.error(s.msg||"发布失败"):p.success("已提交发布"),await U()}catch(h){p.error(h?.message||"发布失败")}finally{m.value=!1}}}const Y=V(()=>(d.value?.items||[]).filter(a=>["done","reusing","failed"].includes(a.audit_status)).length),ve=V(()=>{const a=d.value?.items.length||0;return a?Math.round(Y.value/a*100):0});function I(a){return(d.value?.items||[]).filter(e=>e.triage_bucket===a)}async function O(){try{d.value=await M.get(k),d.value&&(d.value.status==="executing"||d.value.status==="completed")&&(await U(),await K()),J()}catch{}}function J(){const a=d.value?.status;a==="auditing"||a==="executing"?L||(L=Be(O,3e4)):W()}function W(){L&&(clearInterval(L),L=null)}async function ye(){if(d.value?.execution_mode==="extension"&&!$.value){p.error(F.value?"检测工具已连接,但没开「自动接单 · 检测」,请先打开该开关":"没检测到可用的检测工具,无法开始「客户端/插件体检」");return}C.value=!0;try{d.value=await M.startAudit(k),p.success("已开始体检,系统将逐词推进"),J()}catch(a){p.error(a?.message||"开始失败")}finally{C.value=!1}}async function ke(){if(confirm("确认取消该批次?"))try{await M.cancel(k),p.success("批次已取消"),y.push("/keyword-batch")}catch(a){p.error(a?.message||"取消失败")}}return Z(O),Le(W),Ue({title:"批次详情 — 超算GEO",description:"批量优化批次进度与报价。",noindex:!0}),(a,e)=>{const h=qe;return i(),l("div",Ve,[t("nav",$e,[ee(h,{to:"/"},{default:E(()=>[...e[4]||(e[4]=[u("首页",-1)])]),_:1}),e[6]||(e[6]=t("span",{class:"breadcrumb-sep"},"›",-1)),ee(h,{to:"/keyword-batch"},{default:E(()=>[...e[5]||(e[5]=[u("批量优化",-1)])]),_:1}),e[7]||(e[7]=t("span",{class:"breadcrumb-sep"},"›",-1)),t("span",Me,"批次 #"+o(n(k)),1)]),n(d)?(i(),l(v,{key:1},[t("div",Ie,[t("div",Oe,[t("h1",De,o(n(d).name||"批次 #"+n(d).id),1),t("p",je,[u(o(n(d).items.length)+" 个关键词 · "+o(n(d).execution_mode==="extension"?"插件体检":"云端体检")+" · ",1),t("span",{class:A(["batch-status","st-"+n(d).status])},o(de(n(d).status)),3)])])]),e[27]||(e[27]=t("div",{class:"ai-gen-remind"},[t("i",{class:"ri-information-2-line"}),t("span",null,[u("本批次稿件均由人工智能生成。对外发布时应依据《人工智能生成合成内容标识办法》进行"),t("strong",null,"显著标识"),u(",且不得删除、篡改、伪造或隐匿标识。")])],-1)),n(d).status==="draft"?(i(),l("div",ze,[e[15]||(e[15]=t("h2",{class:"panel-title"},"开始体检",-1)),t("p",Fe,[e[8]||(e[8]=u(" 预估体检费 ",-1)),t("strong",null,"¥"+o(n(d).audit_fee_estimate),1),n(d).execution_mode==="extension"?(i(),l("span",Ge,"(插件模式免费)")):c("",!0)]),e[16]||(e[16]=t("p",{class:"hint-text"},"点【开始体检】后,系统按产能限额逐词发起检测并计费;泛词无信源不计费。",-1)),n(d).execution_mode==="extension"&&!n($)?(i(),l("p",He,[n(F)?(i(),l(v,{key:1},[e[14]||(e[14]=u(" 工具已连接,但没开「自动接单 · 检测」,任务发出去无人接收。 ",-1)),n(ne)?(i(),l(v,{key:0},[e[11]||(e[11]=u(" 打开 ",-1)),e[12]||(e[12]=t("b",null,"GEO Connector",-1)),e[13]||(e[13]=u(" 客户端 → 左侧栏最下方「自动接单」→ 把「检测」拨到打开。 ",-1))],64)):(i(),l(v,{key:1},[u(" 点浏览器右上角扩展图标 → DeepseekConnector → 打开「自动接单」。 ")],64))],64)):(i(),l(v,{key:0},[e[9]||(e[9]=u(" 没检测到可用的检测工具,这个批次是「客户端/插件体检」,现在开跑会全部挂起无人执行。 ",-1)),e[10]||(e[10]=t("a",{href:"/download",target:"_blank"},"去安装 →",-1))],64)),t("button",{class:"kb-runner-refresh",type:"button",onClick:e[0]||(e[0]=(...s)=>n(G)&&n(G)(...s)),disabled:n(ae)},"刷新状态",8,Ke)])):c("",!0),t("div",Qe,[t("button",{class:"btn-v2 btn-v2-primary",disabled:n(C)||n(d).execution_mode==="extension"&&!n($),onClick:ye},o(n(C)?"开始中…":"开始体检"),9,Xe),t("button",{class:"btn-v2 btn-v2-ghost",disabled:n(C),onClick:ke},"取消批次",8,Ye)])])):c("",!0),n(d).status==="auditing"?(i(),l("div",Je,[e[17]||(e[17]=t("h2",{class:"panel-title"},"体检进度",-1)),t("div",We,[t("div",{class:"progress-fill",style:Te({width:n(ve)+"%"})},null,4)]),t("p",Ze,o(n(Y))+" / "+o(n(d).items.length)+" 已完成 · 每 2 分钟自动推进,本页 30 秒刷新。",1)])):c("",!0),n(d).status==="quoted"?(i(),l(v,{key:2},[e[20]||(e[20]=t("div",{class:"quoted-note"},[t("i",{class:"ri-guide-line"}),t("span",null,[u(" 报价单已生成,逐词给出下一步:"),t("b",null,"建议优化"),u(" → 点「去生成内容」开始;"),t("b",null,"已获推荐"),u(" → 保持监测;"),t("b",null,"暂不建议"),u(" → 优先其他词;"),t("b",null,"待重测"),u(" → 重新检测。 "),t("span",{class:"soon-tag"},"一键批量托管(生成→发布→复测)下一版上线")])],-1)),t("div",et,[(i(),l(v,null,R(le,s=>t("div",{key:s.key,class:"bucket-card"},[t("div",{class:A(["bucket-head","bk-"+s.key])},[u(o(s.label)+" ",1),t("span",tt,o(I(s.key).length),1)],2),(i(!0),l(v,null,R(I(s.key),r=>(i(),l("div",{key:r.id,class:"bucket-item"},[t("div",st,o(r.keyword),1),t("div",nt,o(r.triage_reason),1),s.key==="B"&&r.quote&&r.quote.total_low!=null?(i(),l("div",at," 建议 "+o(r.quote.articles)+" 篇 · 预估 ¥"+o(r.quote.total_low)+"~"+o(r.quote.total_high),1)):c("",!0),t("div",it,[s.key==="B"?(i(),te(h,{key:0,to:"/generator?keyword="+encodeURIComponent(r.keyword),class:"bi-btn bi-btn-primary",onClick:e[1]||(e[1]=j(()=>{},["stop"]))},{default:E(()=>[...e[18]||(e[18]=[u("去生成内容",-1)])]),_:1},8,["to"])):c("",!0),s.key==="D"?(i(),te(h,{key:1,to:"/check-new?keyword="+encodeURIComponent(r.keyword),class:"bi-btn",onClick:e[2]||(e[2]=j(()=>{},["stop"]))},{default:E(()=>[...e[19]||(e[19]=[u("重新检测",-1)])]),_:1},8,["to"])):c("",!0),r.report_id?(i(),l("a",{key:2,href:"/report?id="+r.report_id,class:"bi-btn",onClick:e[3]||(e[3]=j(()=>{},["stop"]))},"看报告",8,lt)):c("",!0)])]))),128)),I(s.key).length===0?(i(),l("div",ot,"—")):c("",!0)])),64))])],64)):c("",!0),n(d).status==="quoted"?(i(),l("div",dt,[e[22]||(e[22]=t("h2",{class:"panel-title"},"批量优化执行",-1)),e[23]||(e[23]=t("p",{class:"hint-text"},"勾选「建议优化」的词、设定生成篇数,开工后系统批量生成稿件,供你逐篇审阅后发布。",-1)),(i(!0),l(v,null,R(n(P),s=>(i(),l("div",{key:s.id,class:"exec-pick"},[t("label",rt,[z(t("input",{type:"checkbox","onUpdate:modelValue":r=>n(B)[s.id]=r},null,8,ut),[[se,n(B)[s.id]]]),u(" "+o(s.keyword),1)]),z(t("input",{type:"number",min:"1",max:"20","onUpdate:modelValue":r=>n(N)[s.id]=r,class:"exec-count",disabled:!n(B)[s.id]},null,8,ct),[[Re,n(N)[s.id],void 0,{number:!0}]]),e[21]||(e[21]=t("span",{class:"exec-count-unit"},"篇",-1))]))),128)),n(P).length===0?(i(),l("p",pt,"本批次暂无「建议优化」的词。")):c("",!0),n(q)?(i(),l("p",_t,o(n(q)),1)):c("",!0),n(P).length?(i(),l("button",{key:2,class:"btn-v2 btn-v2-primary",disabled:n(S)||!n(re),onClick:_e},o(n(S)?"开工中…":"开始批量优化"),9,bt)):c("",!0)])):c("",!0),n(d).status==="executing"||n(d).status==="completed"?(i(),l("div",ht,[t("div",vt,[e[24]||(e[24]=t("h2",{class:"panel-title"},"执行进度",-1)),e[25]||(e[25]=t("p",{class:"hint-text"},[u("生成 → "),t("b",null,"审阅(逐篇确认)"),u(" → 发布 → 复测。本页 30 秒自动刷新。")],-1)),t("div",yt,[t("span",null,"共 "+o(n(g).length)+" 篇",1),t("span",null,"待审阅 "+o(H("pending").length),1),t("span",null,"已通过 "+o(H("approved").length),1),t("span",null,"已发布 "+o(n(g).filter(s=>s.publish_status==="published").length),1)])]),(i(!0),l(v,null,R(n(g),s=>(i(),l("div",{key:s.id,class:"art-card"},[t("div",kt,[t("span",gt,o(s.keyword),1),t("span",mt,[t("span",{class:A(["art-tag","g-"+s.gen_status])},o(ue(s.gen_status)),3),s.review_status!=="pending"?(i(),l("span",{key:0,class:A(["art-tag","r-"+s.review_status])},o(ce(s.review_status)),3)):c("",!0),s.publish_status!=="not_started"?(i(),l("span",{key:1,class:A(["art-tag","p-"+s.publish_status])},o(pe(s.publish_status)),3)):c("",!0),s.recheck_status!=="not_started"?(i(),l("span",ft,o(s.recheck_status==="done"?"复测完成":"复测中"),1)):c("",!0)])]),s.gen_status==="generated"&&s.review_status==="pending"?(i(),l("div",xt,[t("div",wt,o(s.content_title),1),s.adlaw_flags&&s.adlaw_flags.length?(i(),l("p",Ct,"⚠️ 机审提示 "+o(s.adlaw_flags.length)+" 处用语需留意,请结合上下文判断",1)):c("",!0),t("div",{class:"art-body",innerHTML:s.content_body},null,8,Lt),t("div",Tt,[t("button",{class:"bi-btn bi-btn-primary",disabled:n(m),onClick:r=>Q(s,"approve")},"通过",8,Bt),t("button",{class:"bi-btn",disabled:n(m),onClick:r=>Q(s,"reject")},"驳回",8,qt)])])):s.review_status==="approved"&&s.publish_status==="not_started"?(i(),l("div",At,[t("div",Rt,[e[26]||(e[26]=t("span",{class:"art-media-label"},"选媒体:",-1)),(i(!0),l(v,null,R(n(T),r=>(i(),l("label",{key:r.media_id,class:"art-media-opt"},[z(t("input",{type:"checkbox",value:r.media_id,"onUpdate:modelValue":ge=>n(b)[s.id]=ge},null,8,St),[[se,n(b)[s.id]]]),u(" "+o(r.media_name)+" ",1),t("span",Pt,"¥"+o(be(r)),1)]))),128)),n(T).length===0?(i(),l("span",Ut,"媒体加载中…")):c("",!0)]),n(b)[s.id]&&n(b)[s.id].length?(i(),l("div",Et,[u("已选 "+o(n(b)[s.id].length)+" 家 · 合计 ",1),t("b",null,"¥"+o(X(s).toFixed(2)),1)])):c("",!0),t("button",{class:"bi-btn bi-btn-primary",disabled:n(m)||!(n(b)[s.id]&&n(b)[s.id].length),onClick:r=>he(s)},"发布",8,Vt)])):s.gen_status==="generating"?(i(),l("div",$t,"稿件生成中…")):s.gen_status==="failed"?(i(),l("div",Mt,"生成失败。")):s.review_status==="rejected"?(i(),l("div",Nt,"已驳回,不发布。")):s.publish_status==="publishing"?(i(),l("div",It,"发布中…")):s.publish_status==="published"?(i(),l("div",Ot,"已发布"+o(s.recheck_status==="done"?",复测完成":",复测中")+"。",1)):s.publish_status==="failed"?(i(),l("div",Dt,"发布失败。")):c("",!0)]))),128)),n(g).length===0?(i(),l("div",jt,"暂无稿件")):c("",!0)])):c("",!0)],64)):(i(),l("div",Ne,"加载中…"))])}}}),Kt=Se(zt,[["__scopeId","data-v-6840c3ec"]]);export{Kt as default};

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.