Browse Source

上传主版本

main
liwei1dao 2 months ago
parent
commit
6f7cfe3bb2
  1. 8
      CLAUDE.md
  2. 2
      apps/admin/.output/nitro.json
  3. 2
      apps/admin/.output/public/_nuxt/0C81UldQ.js
  4. 2
      apps/admin/.output/public/_nuxt/2SfDgkhQ.js
  5. 2
      apps/admin/.output/public/_nuxt/BOeuA5fk.js
  6. 2
      apps/admin/.output/public/_nuxt/BqXDZ2AY.js
  7. 2
      apps/admin/.output/public/_nuxt/Bw873H05.js
  8. 2
      apps/admin/.output/public/_nuxt/C-IO5Zsk.js
  9. 2
      apps/admin/.output/public/_nuxt/C-NJnooU.js
  10. 2
      apps/admin/.output/public/_nuxt/C0oOyOZM.js
  11. 2
      apps/admin/.output/public/_nuxt/CDbX0LeJ.js
  12. 4
      apps/admin/.output/public/_nuxt/CSjlBIfC.js
  13. 2
      apps/admin/.output/public/_nuxt/CUrW23xA.js
  14. 2
      apps/admin/.output/public/_nuxt/CX31_Ko0.js
  15. 1
      apps/admin/.output/public/_nuxt/CcYro5R2.js
  16. 2
      apps/admin/.output/public/_nuxt/CgE-6DOq.js
  17. 2
      apps/admin/.output/public/_nuxt/CmmnvhJf.js
  18. 2
      apps/admin/.output/public/_nuxt/CzMCfc-v.js
  19. 2
      apps/admin/.output/public/_nuxt/D1rGIbQk.js
  20. 1
      apps/admin/.output/public/_nuxt/DEBoYqVm.js
  21. 2
      apps/admin/.output/public/_nuxt/DSJrmuXT.js
  22. 2
      apps/admin/.output/public/_nuxt/DYuOZo9E.js
  23. 2
      apps/admin/.output/public/_nuxt/Dc2nKS93.js
  24. 2
      apps/admin/.output/public/_nuxt/Dcjzwjeu.js
  25. 2
      apps/admin/.output/public/_nuxt/DgF_fRjV.js
  26. 2
      apps/admin/.output/public/_nuxt/DlCThPMw.js
  27. 1
      apps/admin/.output/public/_nuxt/DwmKnEeH.js
  28. 2
      apps/admin/.output/public/_nuxt/IkD0WKHv.js
  29. 2
      apps/admin/.output/public/_nuxt/QmZ_XupB.js
  30. 2
      apps/admin/.output/public/_nuxt/SxV4xvpk.js
  31. 2
      apps/admin/.output/public/_nuxt/WFs8pQQC.js
  32. 2
      apps/admin/.output/public/_nuxt/a5exfo9k.js
  33. 1
      apps/admin/.output/public/_nuxt/agents.-kjpROzC.css
  34. 1
      apps/admin/.output/public/_nuxt/agents.Ba_0YWqu.css
  35. 2
      apps/admin/.output/public/_nuxt/builds/latest.json
  36. 1
      apps/admin/.output/public/_nuxt/builds/meta/1ce432df-603d-4010-810b-770972167d80.json
  37. 1
      apps/admin/.output/public/_nuxt/builds/meta/24e01d06-12c5-401a-ad62-3d0500cb591f.json
  38. 2
      apps/admin/.output/public/_nuxt/hXX2NJw2.js
  39. 1
      apps/admin/.output/public/_nuxt/hv_H8fds.js
  40. 2
      apps/admin/.output/public/_nuxt/kX8FbUD0.js
  41. 1
      apps/admin/.output/public/_nuxt/meetingsvc.Cnu-3MbB.css
  42. 1
      apps/admin/.output/public/_nuxt/meetingsvc.DgYSEQUA.css
  43. 2
      apps/admin/.output/public/_nuxt/omoEWMdu.js
  44. 2
      apps/admin/.output/public/_nuxt/r_MxzKf2.js
  45. 2
      apps/admin/.output/public/_nuxt/w2gB9CpJ.js
  46. 2
      apps/admin/.output/public/_nuxt/xcfsMt0Y.js
  47. 95
      apps/admin/.output/server/chunks/build/agents-C12ARvzr.mjs
  48. 1
      apps/admin/.output/server/chunks/build/agents-C12ARvzr.mjs.map
  49. 1
      apps/admin/.output/server/chunks/build/agents-sIgrTlD1.mjs.map
  50. 8
      apps/admin/.output/server/chunks/build/agents-styles.DrcBfQcb.mjs
  51. 1
      apps/admin/.output/server/chunks/build/agents-styles.DrcBfQcb.mjs.map
  52. 8
      apps/admin/.output/server/chunks/build/agents-styles.GXWAwNko.mjs
  53. 1
      apps/admin/.output/server/chunks/build/agents-styles.GXWAwNko.mjs.map
  54. 2
      apps/admin/.output/server/chunks/build/client.precomputed.mjs
  55. 170
      apps/admin/.output/server/chunks/build/meetingsvc-BKMj3MwH.mjs
  56. 1
      apps/admin/.output/server/chunks/build/meetingsvc-BKMj3MwH.mjs.map
  57. 1
      apps/admin/.output/server/chunks/build/meetingsvc-Dcq0cJyO.mjs.map
  58. 8
      apps/admin/.output/server/chunks/build/meetingsvc-styles.CJmYxbsV.mjs
  59. 1
      apps/admin/.output/server/chunks/build/meetingsvc-styles.CJmYxbsV.mjs.map
  60. 8
      apps/admin/.output/server/chunks/build/meetingsvc-styles.CM1HF5Dg.mjs
  61. 1
      apps/admin/.output/server/chunks/build/meetingsvc-styles.CM1HF5Dg.mjs.map
  62. 4
      apps/admin/.output/server/chunks/build/server.mjs
  63. 16
      apps/admin/.output/server/chunks/build/styles.mjs
  64. 484
      apps/admin/.output/server/chunks/nitro/nitro.mjs
  65. 39
      apps/admin/app/pages/agents.vue
  66. 82
      apps/admin/app/pages/meetingsvc.vue
  67. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/0C81UldQ.js
  68. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/2SfDgkhQ.js
  69. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BOeuA5fk.js
  70. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BqXDZ2AY.js
  71. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bw873H05.js
  72. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C-IO5Zsk.js
  73. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C-NJnooU.js
  74. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C0oOyOZM.js
  75. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CDbX0LeJ.js
  76. 4
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CSjlBIfC.js
  77. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CUrW23xA.js
  78. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CX31_Ko0.js
  79. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CcYro5R2.js
  80. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CgE-6DOq.js
  81. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CmmnvhJf.js
  82. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CzMCfc-v.js
  83. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D1rGIbQk.js
  84. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DEBoYqVm.js
  85. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DSJrmuXT.js
  86. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DYuOZo9E.js
  87. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Dc2nKS93.js
  88. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Dcjzwjeu.js
  89. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DgF_fRjV.js
  90. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DlCThPMw.js
  91. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DwmKnEeH.js
  92. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/IkD0WKHv.js
  93. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/QmZ_XupB.js
  94. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/SxV4xvpk.js
  95. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/WFs8pQQC.js
  96. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/a5exfo9k.js
  97. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/agents.-kjpROzC.css
  98. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/agents.Ba_0YWqu.css
  99. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/hXX2NJw2.js
  100. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/hv_H8fds.js

8
CLAUDE.md

@ -60,7 +60,8 @@ pnpm build # 产出 .output/(SSR)
# 测试环境发布(在 deploy/<服务>/ 下,服务 = app | console | admin)
cd deploy/console && ./dev-deploy.sh yunyan # 云雁测试环境(广州阿里云 8.138.86.223)
cd deploy/console && ./dev-deploy.sh # 不带参数 → 交互选环境:lingpu | yunyan
cd deploy/console && ./dev-deploy.sh along # 阿龙测试环境(阿里云 8.133.166.29)
cd deploy/console && ./dev-deploy.sh # 不带参数 → 交互选环境:lingpu | yunyan | along
# 生产:先构建带版本号的镜像,再部署
cd deploy/console && ./prod-build.sh 0.2.1 yunyan # 第 2 个参数选公司(yunyan|lingpu),省略则交互选
@ -70,6 +71,11 @@ cd deploy/console && ./prod-deploy.sh 0.2.1 yunyan # 第 2 个参数选生产
**镜像仓库按公司区分**,地址/账号统一在 [deploy/registry-profiles.sh](deploy/registry-profiles.sh)(换仓库只改这一处,各脚本 source 它):
- `yunyan` → `registry.voitrans.net`(仓库实体在广州机 8.138.86.223)
- `lingpu` → `registry.lingpu.net`(灵谱香港机)
- `along` → `ym-registry.voitrans.net`(仓库实体就在阿龙机 8.133.166.29 上,**账号是 `admin` 不是 `liwei`**);只用于测试环境,不在生产 `COMPANIES` 菜单里
测试环境档案在各 `dev-deploy.sh` 的 `env_profile()`:
- `along` → 8.133.166.29(阿里云,x86_64/Docker 24.0.9),目录 `/home/work/starpivot/{app,admin,console}`,密钥 `~/.ssh/along.pem`
该机已自带 postgres:16 / redis:7 / mysql / NPM / gitea / docker-registry,配 `.env` 时优先复用,别另起一套
**生产镜像名也按公司区分**,映射同在 `registry-profiles.sh` 的 `prod_image_name()`(build 与 deploy 共用一份,防漂移):
admin/console 两家都用 `starpivot-*`(与 `docker-compose.yml` 里写死的 image/container_name 一致);

2
apps/admin/.output/nitro.json

@ -1,5 +1,5 @@
{
"date": "2026-08-03T09:06:00.336Z",
"date": "2026-08-06T10:48:06.050Z",
"preset": "node-server",
"framework": {
"name": "nuxt",

2
apps/admin/.output/public/_nuxt/CyqrlMkw.js → apps/admin/.output/public/_nuxt/0C81UldQ.js

@ -1 +1 @@
import{_ as t,o,c as s,R as c}from"./mElhLwm2.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default};
import{_ as t,o,c as s,R as c}from"./CSjlBIfC.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/ncAT-iHw.js → apps/admin/.output/public/_nuxt/2SfDgkhQ.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/C-2gsgTH.js → apps/admin/.output/public/_nuxt/BOeuA5fk.js

@ -1 +1 @@
import{g as h,j as x,k as w,B as y,c as r,a as e,t as d,l as b,m as _,p as v,v as g,n as k,y as B,x as u,o as p,_ as M}from"./mElhLwm2.js";const A={class:"login-bg flex items-center justify-center px-4"},z={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=B({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",A,[e("div",z,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default};
import{g as h,j as x,k as w,B as y,c as r,a as e,t as d,l as b,m as _,p as v,v as g,n as k,y as B,x as u,o as p,_ as M}from"./CSjlBIfC.js";const A={class:"login-bg flex items-center justify-center px-4"},z={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=B({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",A,[e("div",z,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default};

2
apps/admin/.output/public/_nuxt/C_VX9uKy.js → apps/admin/.output/public/_nuxt/BqXDZ2AY.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bf3Eg9kO.js → apps/admin/.output/public/_nuxt/Bw873H05.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/C2WfoPPr.js → apps/admin/.output/public/_nuxt/C-IO5Zsk.js

@ -1 +1 @@
import{g as t,B as n,P as a,c as o,a as s,o as c}from"./mElhLwm2.js";const i={class:"py-16 text-center text-slate-400"},m=t({__name:"mcpconfig",setup(l){return n(()=>{a("/serviceconfig")}),(r,e)=>(c(),o("div",i,[...e[0]||(e[0]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1),s("p",{class:"text-sm mt-3"},"MCP 配置已并入「第三方服务配置」,正在跳转…",-1)])]))}});export{m as default};
import{g as t,B as n,P as a,c as o,a as s,o as c}from"./CSjlBIfC.js";const i={class:"py-16 text-center text-slate-400"},m=t({__name:"mcpconfig",setup(l){return n(()=>{a("/serviceconfig")}),(r,e)=>(c(),o("div",i,[...e[0]||(e[0]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1),s("p",{class:"text-sm mt-3"},"MCP 配置已并入「第三方服务配置」,正在跳转…",-1)])]))}});export{m as default};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D-lUY2ZC.js → apps/admin/.output/public/_nuxt/C-NJnooU.js

@ -1,4 +1,4 @@
import{g as G,B as K,Q as P,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Q,s as Y,t as n,x as i,z as E,o,n as F,l as I,_ as Z}from"./mElhLwm2.js";import{u as J}from"./C6twYRfy.js";import{u as W}from"./FVTAbpot.js";import"./qig5Qp6S.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=J(),{success:O,error:R}=W(),z={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?z[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function B(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function H(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function j(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
import{g as G,B as K,Q as P,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Q,s as Y,t as n,x as i,z as E,o,n as F,l as I,_ as Z}from"./CSjlBIfC.js";import{u as J}from"./CX31_Ko0.js";import{u as W}from"./QmZ_XupB.js";import"./CgE-6DOq.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=J(),{success:O,error:R}=W(),z={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?z[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function B(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function H(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function j(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
只清除本核对面板的记录,不影响已落库的统计数据。
清空后可重新触发埋点,观察是否正常进来。`))try{const r=await A("clearstatlogs",{day:l});O("已清空 "+(r&&r.cleared!=null?r.cleared:0)+" 条"),m()}catch(r){R("清空失败:"+(r?.message||"网络异常"))}}function q(){w.value?(d=X(m,15e3),y.value="· 每 15 秒自动刷新"):(d&&clearInterval(d),d=null,y.value="")}return K(()=>{v.value=p(0),m()}),P(()=>{d&&clearInterval(d)}),(l,s)=>(o(),a("div",null,[e("div",$,[s[6]||(s[6]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"统计日志"),e("p",{class:"text-xs text-slate-400 mt-0.5"},[u("console 从 NATS 收到的「当日统计快照」接收流水(最新在前,按接收时间分天存 Redis)。各业务部署每个同步周期/启动时/0点 推送一次当日绝对快照,console 收到后覆盖落库。用于核对每个部署是否在正常汇报;带 "),e("span",{class:"unreg"},"未注册"),u(" 的应用快照已收到但"),e("b",null,"不会落库"),u("(应用名需与 console 注册表完全一致)。")])],-1)),e("div",tt,[x(e("select",{"onUpdate:modelValue":s[0]||(s[0]=t=>v.value=t),class:"select select-bordered select-sm",onChange:m},[(o(!0),a(f,null,U(V.value,t=>(o(),a("option",{key:t.value,value:t.value},n(t.label),9,et))),128))],544),[[M,v.value,void 0,{number:!0}]]),x(e("select",{"onUpdate:modelValue":s[1]||(s[1]=t=>b.value=t),class:"select select-bordered select-sm"},[...s[4]||(s[4]=[e("option",{value:""},"全部级别",-1),e("option",{value:"info"},"已落库",-1),e("option",{value:"warn"},"未落库",-1),e("option",{value:"error"},"解析失败",-1)])],512),[[M,b.value]]),x(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>h.value=t),class:"input input-bordered input-sm w-44",placeholder:"筛选 应用/区域/产品"},null,512),[[Q,h.value]]),e("label",st,[x(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>w.value=t),type:"checkbox",class:"checkbox checkbox-xs",onChange:q},null,544),[[Y,w.value]]),s[5]||(s[5]=u(" 自动刷新 ",-1))]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:m},"刷新"),e("button",{class:"btn btn-outline btn-error btn-sm",title:"清空本日核对流水(不影响已落库的统计数据),清空后可重新观察埋点是否正常进来",onClick:j},"清空本日")])]),e("div",lt,[e("span",null,[s[7]||(s[7]=u("该日保留 ",-1)),e("b",nt,n(L.value),1),s[8]||(s[8]=u(" 条",-1))]),e("span",null,[s[9]||(s[9]=u("当前显示 ",-1)),e("b",at,n(T.value.length),1),s[10]||(s[10]=u(" 条",-1))]),e("span",null,[s[11]||(s[11]=u("最近接收 ",-1)),e("b",ot,n(N.value),1)]),e("span",rt,n(y.value),1)]),e("div",ut,[s[12]||(s[12]=e("div",{id:"logHead"},[e("div",null,"接收时间"),e("div",null,"级别"),e("div",null,"应用 · 区域 · 产品"),e("div",null,"统计日"),e("div",null,"指标摘要 / 说明"),e("div",null,"快照时间")],-1)),e("div",it,[_.value?(o(),a("div",ct,"加载中...")):g.value?(o(),a("div",dt,"加载失败:"+n(g.value),1)):T.value.length?(o(!0),a(f,{key:3},U(T.value,(t,r)=>(o(),a("div",{key:r,class:"logrow"},[e("div",pt,n(C(t.ts)),1),e("div",null,[e("span",{class:F(["lv",B(t.level).cls])},n(B(t.level).txt),3)]),e("div",null,[t.app?(o(),a(f,{key:0},[e("span",mt,n(t.app),1),t.registered?I("",!0):(o(),a("span",ft,"未注册"))],64)):(o(),a("span",gt,"(无应用名)")),e("span",xt," · "+n(D(t.region)),1),e("span",_t," · "+n(S(t.product_id)),1)]),e("div",yt,n(t.stat_day?k(t.stat_day):"-"),1),e("div",null,[t.msg?(o(),a(f,{key:0},[e("span",{class:F(t.level==="error"?"text-red-600":"text-amber-600")},n(t.msg),3),t.summary?(o(),a("span",bt," · "+n(t.summary),1)):I("",!0)],64)):(o(),a(f,{key:1},[u(n(t.summary||"无增量"),1)],64))]),e("div",ht,[u(n(C(t.snap_ts)),1),H(t)?(o(),a("span",wt,"迟到"+n(t.ts-t.snap_ts)+"s",1)):I("",!0)])]))),128)):(o(),a("div",vt,n(c.value.length?"无匹配记录":"该日暂无接收记录"),1))])])]))}}),Lt=Z(kt,[["__scopeId","data-v-742ee359"]]);export{Lt as default};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DG0IG_4u.js → apps/admin/.output/public/_nuxt/C0oOyOZM.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/OLpUuA7c.js → apps/admin/.output/public/_nuxt/CDbX0LeJ.js

@ -1 +1 @@
import{u as a,e as s,h as u,i as r,f as h}from"./mElhLwm2.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u};
import{u as a,e as s,h as u,i as r,f as h}from"./CSjlBIfC.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u};

4
apps/admin/.output/public/_nuxt/mElhLwm2.js → apps/admin/.output/public/_nuxt/CSjlBIfC.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BMQvQYtl.js → apps/admin/.output/public/_nuxt/CUrW23xA.js

@ -1 +1 @@
import{_ as o,o as s,c as a,a as t,t as r}from"./mElhLwm2.js";import{u as i}from"./OLpUuA7c.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default};
import{_ as o,o as s,c as a,a as t,t as r}from"./CSjlBIfC.js";import{u as i}from"./CDbX0LeJ.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default};

2
apps/admin/.output/public/_nuxt/C6twYRfy.js → apps/admin/.output/public/_nuxt/CX31_Ko0.js

@ -1 +1 @@
import{j as w,k as d}from"./mElhLwm2.js";import{u as h}from"./qig5Qp6S.js";async function f(o,i,a){const e=w(),u=d(),s={"Content-Type":"application/json"};e.token&&(s.Authorization=e.token),a&&Object.assign(s,a);const t=await fetch(o,{method:"POST",headers:s,body:JSON.stringify(i)});if(!t.ok)throw new Error(`HTTP error: ${t.status}`);const n=await t.json();if(n.code===18)throw e.logout(),u.push("/"),new Error(n.msg||"Unauthorized");if(n.code!==0)throw new Error(n.msg||"Unknown error");return n.data}const y=/^(get|list|load|query|fetch|search|count|stat|export|check)/i;function g(o){return!y.test(o)}function A(){const o=w(),{begin:i,end:a}=h();async function e(t,n){const r={};if(o.currentAppId&&(r["X-App-Id"]=String(o.currentAppId)),!g(t))return f(`/web/api/api_${t}`,n??{},r);i();try{return await f(`/web/api/api_${t}`,n??{},r)}finally{a()}}async function u(t,n){return f(`/console/api/${t}`,n??{})}async function s(t,n){const r=t.type||"application/octet-stream",c=await e("getcostoken",{path:n,filename:t.name,content_type:r}),p=c.upload_url||c.url||"";if(!p)throw new Error("未获取到上传地址:请确认已在【第三方服务配置→存储】配置并启用「阿里云 OSS」");const l=await fetch(p,{method:"PUT",headers:{"Content-Type":r},body:t});if(!l.ok)throw new Error(`Upload failed: ${l.status}`);return c.url||p.split("?")[0]}return{webApi:e,consoleApi:u,uploadFile:s}}export{A as u};
import{j as w,k as d}from"./CSjlBIfC.js";import{u as h}from"./CgE-6DOq.js";async function f(o,i,a){const e=w(),u=d(),s={"Content-Type":"application/json"};e.token&&(s.Authorization=e.token),a&&Object.assign(s,a);const t=await fetch(o,{method:"POST",headers:s,body:JSON.stringify(i)});if(!t.ok)throw new Error(`HTTP error: ${t.status}`);const n=await t.json();if(n.code===18)throw e.logout(),u.push("/"),new Error(n.msg||"Unauthorized");if(n.code!==0)throw new Error(n.msg||"Unknown error");return n.data}const y=/^(get|list|load|query|fetch|search|count|stat|export|check)/i;function g(o){return!y.test(o)}function A(){const o=w(),{begin:i,end:a}=h();async function e(t,n){const r={};if(o.currentAppId&&(r["X-App-Id"]=String(o.currentAppId)),!g(t))return f(`/web/api/api_${t}`,n??{},r);i();try{return await f(`/web/api/api_${t}`,n??{},r)}finally{a()}}async function u(t,n){return f(`/console/api/${t}`,n??{})}async function s(t,n){const r=t.type||"application/octet-stream",c=await e("getcostoken",{path:n,filename:t.name,content_type:r}),p=c.upload_url||c.url||"";if(!p)throw new Error("未获取到上传地址:请确认已在【第三方服务配置→存储】配置并启用「阿里云 OSS」");const l=await fetch(p,{method:"PUT",headers:{"Content-Type":r},body:t});if(!l.ok)throw new Error(`Upload failed: ${l.status}`);return c.url||p.split("?")[0]}return{webApi:e,consoleApi:u,uploadFile:s}}export{A as u};

1
apps/admin/.output/public/_nuxt/CcYro5R2.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/qig5Qp6S.js → apps/admin/.output/public/_nuxt/CgE-6DOq.js

@ -1 +1 @@
import{e as f,a9 as p,aa as c,z as r}from"./mElhLwm2.js";const l="$s";function y(...t){const a=typeof t[t.length-1]=="string"?t.pop():void 0;typeof t[0]!="string"&&t.unshift(a);const[n,e]=t;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(e!==void 0&&typeof e!="function")throw new Error("[nuxt] [useState] init must be a function: "+e);const i=l+n,u=f(),s=p(u.payload.state,i);if(e&&(u._state[i]??={_default:e}),s.value===void 0&&e){const o=e();if(c(o))return u.payload.state[i]=o,o;s.value=o}return s}function v(){const t=y("app:loading",()=>0),a=r(()=>t.value>0);function n(){t.value++}function e(){t.value=Math.max(0,t.value-1)}return{count:t,loading:a,begin:n,end:e}}export{y as a,v as u};
import{e as f,a9 as p,aa as c,z as r}from"./CSjlBIfC.js";const l="$s";function y(...t){const a=typeof t[t.length-1]=="string"?t.pop():void 0;typeof t[0]!="string"&&t.unshift(a);const[n,e]=t;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(e!==void 0&&typeof e!="function")throw new Error("[nuxt] [useState] init must be a function: "+e);const i=l+n,u=f(),s=p(u.payload.state,i);if(e&&(u._state[i]??={_default:e}),s.value===void 0&&e){const o=e();if(c(o))return u.payload.state[i]=o,o;s.value=o}return s}function v(){const t=y("app:loading",()=>0),a=r(()=>t.value>0);function n(){t.value++}function e(){t.value=Math.max(0,t.value-1)}return{count:t,loading:a,begin:n,end:e}}export{y as a,v as u};

2
apps/admin/.output/public/_nuxt/l8H0VyaU.js → apps/admin/.output/public/_nuxt/CmmnvhJf.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/GZG--rps.js → apps/admin/.output/public/_nuxt/CzMCfc-v.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/DuRQSWLc.js → apps/admin/.output/public/_nuxt/D1rGIbQk.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/DEBoYqVm.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/VVFxpwIU.js → apps/admin/.output/public/_nuxt/DSJrmuXT.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/BJhUngVd.js → apps/admin/.output/public/_nuxt/DYuOZo9E.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/CglQi8MB.js → apps/admin/.output/public/_nuxt/Dc2nKS93.js

@ -1 +1 @@
import{L as y,l as x}from"./ChQPCk92.js";import{g as V,c as t,F as u,a as l,n as C,r,l as g,t as o,z as h,o as s,d as B,_ as N}from"./mElhLwm2.js";const L={class:"lang-select"},O={class:"lang-chip-name"},S=["onClick"],j={key:0,class:"lang-empty"},z={key:0,class:"lang-dd"},F={class:"lang-dd-sum"},I={class:"lang-dd-panel"},T=["checked","onChange"],$={class:"lang-opt-code"},w={class:"lang-opt-name"},A=["value","disabled"],D=["value"],E=V({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(c,{emit:f}){const d=c,m=f,p=h(()=>d.options&&d.options.length?d.options:y),i=h(()=>(d.modelValue||"").split(",").map(a=>a.trim()).filter(Boolean));function v(a){return x(a)}function _(a){if(d.disabled)return;const n=i.value.slice(),e=n.indexOf(a);e>=0?n.splice(e,1):n.push(a),m("update:modelValue",n.join(","))}function b(a){m("update:modelValue",a.target.value)}return(a,n)=>(s(),t("div",L,[c.multiple?(s(),t(u,{key:0},[l("div",{class:C(["lang-chips",{"lang-disabled":c.disabled}])},[(s(!0),t(u,null,r(i.value,e=>(s(),t("span",{key:e,class:"lang-chip"},[B(o(e),1),l("span",O,o(v(e)),1),l("button",{type:"button",class:"lang-x",onClick:k=>_(e)},"×",8,S)]))),128)),i.value.length?g("",!0):(s(),t("span",j,"未选择语言"))],2),c.disabled?g("",!0):(s(),t("details",z,[l("summary",F,"+ 选择语言(已选 "+o(i.value.length)+")",1),l("div",I,[(s(!0),t(u,null,r(p.value,e=>(s(),t("label",{key:e.code,class:"lang-opt"},[l("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:i.value.includes(e.code),onChange:k=>_(e.code)},null,40,T),l("span",$,o(e.code),1),l("span",w,o(e.name),1)]))),128))])]))],64)):(s(),t("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:c.modelValue,disabled:c.disabled,onChange:b},[n[0]||(n[0]=l("option",{value:""},"(未设置)",-1)),(s(!0),t(u,null,r(p.value,e=>(s(),t("option",{key:e.code,value:e.code},o(e.code)+" · "+o(e.name),9,D))),128))],40,A))]))}}),q=Object.assign(N(E,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"});export{q as _};
import{L as y,l as x}from"./ChQPCk92.js";import{g as V,c as t,F as u,a as l,n as C,r,l as g,t as o,z as h,o as s,d as B,_ as N}from"./CSjlBIfC.js";const L={class:"lang-select"},O={class:"lang-chip-name"},S=["onClick"],j={key:0,class:"lang-empty"},z={key:0,class:"lang-dd"},F={class:"lang-dd-sum"},I={class:"lang-dd-panel"},T=["checked","onChange"],$={class:"lang-opt-code"},w={class:"lang-opt-name"},A=["value","disabled"],D=["value"],E=V({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(c,{emit:f}){const d=c,m=f,p=h(()=>d.options&&d.options.length?d.options:y),i=h(()=>(d.modelValue||"").split(",").map(a=>a.trim()).filter(Boolean));function v(a){return x(a)}function _(a){if(d.disabled)return;const n=i.value.slice(),e=n.indexOf(a);e>=0?n.splice(e,1):n.push(a),m("update:modelValue",n.join(","))}function b(a){m("update:modelValue",a.target.value)}return(a,n)=>(s(),t("div",L,[c.multiple?(s(),t(u,{key:0},[l("div",{class:C(["lang-chips",{"lang-disabled":c.disabled}])},[(s(!0),t(u,null,r(i.value,e=>(s(),t("span",{key:e,class:"lang-chip"},[B(o(e),1),l("span",O,o(v(e)),1),l("button",{type:"button",class:"lang-x",onClick:k=>_(e)},"×",8,S)]))),128)),i.value.length?g("",!0):(s(),t("span",j,"未选择语言"))],2),c.disabled?g("",!0):(s(),t("details",z,[l("summary",F,"+ 选择语言(已选 "+o(i.value.length)+")",1),l("div",I,[(s(!0),t(u,null,r(p.value,e=>(s(),t("label",{key:e.code,class:"lang-opt"},[l("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:i.value.includes(e.code),onChange:k=>_(e.code)},null,40,T),l("span",$,o(e.code),1),l("span",w,o(e.name),1)]))),128))])]))],64)):(s(),t("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:c.modelValue,disabled:c.disabled,onChange:b},[n[0]||(n[0]=l("option",{value:""},"(未设置)",-1)),(s(!0),t(u,null,r(p.value,e=>(s(),t("option",{key:e.code,value:e.code},o(e.code)+" · "+o(e.name),9,D))),128))],40,A))]))}}),q=Object.assign(N(E,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"});export{q as _};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DACw1I5K.js → apps/admin/.output/public/_nuxt/Dcjzwjeu.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/Db4U27_j.js → apps/admin/.output/public/_nuxt/DgF_fRjV.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/BRt-3vKG.js → apps/admin/.output/public/_nuxt/DlCThPMw.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/DwmKnEeH.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/CRsHkMZx.js → apps/admin/.output/public/_nuxt/IkD0WKHv.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/FVTAbpot.js → apps/admin/.output/public/_nuxt/QmZ_XupB.js

@ -1 +1 @@
import{a as u}from"./qig5Qp6S.js";let i=0;function f(){const o=u("app:toasts",()=>[]);function e(s,t="info",r=3e3){const a=++i;o.value.push({id:a,type:t,msg:s}),r>0&&setTimeout(()=>{o.value=o.value.filter(n=>n.id!==a)},r)}return{toasts:o,toast:e,success:(s,t)=>e(s,"success",t),error:(s,t)=>e(s,"error",t),info:(s,t)=>e(s,"info",t),warn:(s,t)=>e(s,"warning",t)}}export{f as u};
import{a as u}from"./CgE-6DOq.js";let i=0;function f(){const o=u("app:toasts",()=>[]);function e(s,t="info",r=3e3){const a=++i;o.value.push({id:a,type:t,msg:s}),r>0&&setTimeout(()=>{o.value=o.value.filter(n=>n.id!==a)},r)}return{toasts:o,toast:e,success:(s,t)=>e(s,"success",t),error:(s,t)=>e(s,"error",t),info:(s,t)=>e(s,"info",t),warn:(s,t)=>e(s,"warning",t)}}export{f as u};

2
apps/admin/.output/public/_nuxt/BqjD6jMG.js → apps/admin/.output/public/_nuxt/SxV4xvpk.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/G5UJCii2.js → apps/admin/.output/public/_nuxt/WFs8pQQC.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/BIXaKwU_.js → apps/admin/.output/public/_nuxt/a5exfo9k.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/agents.-kjpROzC.css

@ -1 +0,0 @@
.type-tag[data-v-463df649]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px}.agent-grid[data-v-463df649]{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.agent-card[data-v-463df649]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:14px 16px;cursor:pointer;transition:all .15s}.agent-card[data-v-463df649]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.svc-pill[data-v-463df649]{display:inline-flex;align-items:center;font-size:10px;font-weight:600;padding:2px 8px;border-radius:7px;color:#fff}.ag-overlay[data-v-463df649]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:24px}.ag-box[data-v-463df649]{background:#fff;border-radius:18px;padding:24px;width:780px;max-width:96vw;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px #0000002e}.scope-chip[data-v-463df649]{font-size:11px;font-weight:600;padding:2px 9px;border-radius:6px;background:#eef2ff;color:#4338ca}.ed-section[data-v-463df649]{padding:14px 0;border-top:1px dashed #eef2f7}.ed-section[data-v-463df649]:first-of-type{padding-top:0;border-top:none}.ed-section-title[data-v-463df649]{font-size:11px;font-weight:700;letter-spacing:.04em;color:#94a3b8;margin-bottom:10px}.ed-label[data-v-463df649]{display:block;font-size:11px;color:#64748b;margin-bottom:4px}.ed-label.inline[data-v-463df649]{display:inline-block;margin-left:6px}.ed-tip[data-v-463df649]{font-size:11px;color:#94a3b8;margin-top:8px}.req[data-v-463df649]{color:#dc2626;font-style:normal}.type-row[data-v-463df649]{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.ttab[data-v-463df649]{display:flex;flex-direction:column;gap:3px;padding:11px 12px;border-radius:10px;border:1.5px solid #e2e8f0;background:#fff;cursor:pointer;transition:all .15s;text-align:left}.ttab[data-v-463df649]:hover:not(:disabled){border-color:#c7d2fe;background:#f8fafc}.ttab.on[data-v-463df649]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.ttab.locked[data-v-463df649]{opacity:.45;cursor:not-allowed}.ttab-title[data-v-463df649]{font-weight:700;font-size:12px;color:#1e293b}.ttab-desc[data-v-463df649]{font-size:10px;color:#94a3b8}.slot-row[data-v-463df649]{display:flex;align-items:flex-end;gap:10px}.slot-item[data-v-463df649]{flex:1;min-width:0}.slot-arrow[data-v-463df649]{color:#cbd5e1;padding-bottom:8px;flex-shrink:0}.stage-tag[data-v-463df649]{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:5px;color:#fff;vertical-align:middle}.voice-row[data-v-463df649]{gap:8px;margin-bottom:6px}.ed-footer[data-v-463df649],.voice-row[data-v-463df649]{display:flex;align-items:center}.ed-footer[data-v-463df649]{justify-content:space-between;gap:12px;padding-top:14px;border-top:1px solid #eef2f7}@media(max-width:860px){.type-row[data-v-463df649]{grid-template-columns:repeat(2,1fr)}.slot-row[data-v-463df649]{flex-direction:column;align-items:stretch}.slot-arrow[data-v-463df649]{display:none}}

1
apps/admin/.output/public/_nuxt/agents.Ba_0YWqu.css

@ -0,0 +1 @@
.type-tag[data-v-4a81d81a]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px}.agent-grid[data-v-4a81d81a]{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.agent-card[data-v-4a81d81a]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:14px 16px;cursor:pointer;transition:all .15s}.agent-card[data-v-4a81d81a]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.svc-pill[data-v-4a81d81a]{display:inline-flex;align-items:center;font-size:10px;font-weight:600;padding:2px 8px;border-radius:7px;color:#fff}.ag-overlay[data-v-4a81d81a]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:24px}.ag-box[data-v-4a81d81a]{background:#fff;border-radius:18px;padding:24px;width:780px;max-width:96vw;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px #0000002e}.scope-chip[data-v-4a81d81a]{font-size:11px;font-weight:600;padding:2px 9px;border-radius:6px;background:#eef2ff;color:#4338ca}.ed-section[data-v-4a81d81a]{padding:14px 0;border-top:1px dashed #eef2f7}.ed-section[data-v-4a81d81a]:first-of-type{padding-top:0;border-top:none}.ed-section-title[data-v-4a81d81a]{font-size:11px;font-weight:700;letter-spacing:.04em;color:#94a3b8;margin-bottom:10px}.ed-label[data-v-4a81d81a]{display:block;font-size:11px;color:#64748b;margin-bottom:4px}.ed-label.inline[data-v-4a81d81a]{display:inline-block;margin-left:6px}.ed-tip[data-v-4a81d81a]{font-size:11px;color:#94a3b8;margin-top:8px}.req[data-v-4a81d81a]{color:#dc2626;font-style:normal}.type-row[data-v-4a81d81a]{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.ttab[data-v-4a81d81a]{display:flex;flex-direction:column;gap:3px;padding:11px 12px;border-radius:10px;border:1.5px solid #e2e8f0;background:#fff;cursor:pointer;transition:all .15s;text-align:left}.ttab[data-v-4a81d81a]:hover:not(:disabled){border-color:#c7d2fe;background:#f8fafc}.ttab.on[data-v-4a81d81a]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.ttab.locked[data-v-4a81d81a]{opacity:.45;cursor:not-allowed}.ttab-title[data-v-4a81d81a]{font-weight:700;font-size:12px;color:#1e293b}.ttab-desc[data-v-4a81d81a]{font-size:10px;color:#94a3b8}.slot-row[data-v-4a81d81a]{display:flex;align-items:flex-end;gap:10px}.slot-item[data-v-4a81d81a]{flex:1;min-width:0}.slot-arrow[data-v-4a81d81a]{color:#cbd5e1;padding-bottom:8px;flex-shrink:0}.stage-tag[data-v-4a81d81a]{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:5px;color:#fff;vertical-align:middle}.voice-row[data-v-4a81d81a]{gap:8px;margin-bottom:6px}.ed-footer[data-v-4a81d81a],.voice-row[data-v-4a81d81a]{display:flex;align-items:center}.ed-footer[data-v-4a81d81a]{justify-content:space-between;gap:12px;padding-top:14px;border-top:1px solid #eef2f7}@media(max-width:860px){.type-row[data-v-4a81d81a]{grid-template-columns:repeat(2,1fr)}.slot-row[data-v-4a81d81a]{flex-direction:column;align-items:stretch}.slot-arrow[data-v-4a81d81a]{display:none}}

2
apps/admin/.output/public/_nuxt/builds/latest.json

@ -1 +1 @@
{"id":"1ce432df-603d-4010-810b-770972167d80","timestamp":1785747952724}
{"id":"24e01d06-12c5-401a-ad62-3d0500cb591f","timestamp":1786013273786}

1
apps/admin/.output/public/_nuxt/builds/meta/1ce432df-603d-4010-810b-770972167d80.json

@ -1 +0,0 @@
{"id":"1ce432df-603d-4010-810b-770972167d80","timestamp":1785747952724,"prerendered":[]}

1
apps/admin/.output/public/_nuxt/builds/meta/24e01d06-12c5-401a-ad62-3d0500cb591f.json

@ -0,0 +1 @@
{"id":"24e01d06-12c5-401a-ad62-3d0500cb591f","timestamp":1786013273786,"prerendered":[]}

2
apps/admin/.output/public/_nuxt/BuCQ8FwD.js → apps/admin/.output/public/_nuxt/hXX2NJw2.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/hv_H8fds.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/B0TjgAkR.js → apps/admin/.output/public/_nuxt/kX8FbUD0.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/meetingsvc.Cnu-3MbB.css

@ -1 +0,0 @@
.scopebar[data-v-4edbf244]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#f8fafc;border:1px solid #eef2f7;border-radius:11px;padding:10px 13px;margin-bottom:16px}.card[data-v-4edbf244]{background:#fff;border:1px solid #eef2f7;border-radius:14px;box-shadow:0 1px 2px #0f172a0a;overflow:hidden}.card-head[data-v-4edbf244]{padding:15px 18px;border-bottom:1px solid #eef2f7;display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}.card-title[data-v-4edbf244]{font-size:14.5px;font-weight:700;color:#1e293b}.card-desc[data-v-4edbf244]{font-size:11.5px;color:#64748b;margin-top:3px;max-width:76ch;line-height:1.55}.probe-bar[data-v-4edbf244]{display:flex;align-items:center;gap:10px;padding:11px 16px;background:#fcfcfd;border-bottom:1px solid #eef2f7;flex-wrap:wrap}.probe-out[data-v-4edbf244]{font-size:11.5px;font-weight:600;color:#15803d;background:#dcfce7;padding:3px 9px;border-radius:6px}.probe-out.bad[data-v-4edbf244]{color:#dc2626;background:#fee2e2}.mode-bar[data-v-4edbf244]{display:flex;align-items:center;gap:14px;padding:12px 16px;background:#fcfcfd;border-bottom:1px solid #eef2f7;flex-wrap:wrap}.mode-txt[data-v-4edbf244]{font-size:12px;color:#64748b;flex:1;min-width:260px;line-height:1.6;margin:0}.mode-txt b[data-v-4edbf244]{color:#1e293b;font-weight:600}.svc[data-v-4edbf244]{display:grid;gap:12px;align-items:center;padding:11px 16px;border-bottom:1px solid #eef2f7}.svc[data-v-4edbf244]:last-child{border-bottom:0}.svc[data-v-4edbf244]:hover{background:#fcfcfd}.svc.off[data-v-4edbf244]{opacity:.55}.svc.hit[data-v-4edbf244]{background:linear-gradient(90deg,#dcfce7,transparent 42%)}.svc.isdefault[data-v-4edbf244]{background:linear-gradient(90deg,#eef2ff,transparent 42%)}.svc.asr[data-v-4edbf244]{grid-template-columns:34px 1fr 170px 110px 60px auto}.svc.mt[data-v-4edbf244]{grid-template-columns:34px 1fr 130px 60px auto}.svc.llm[data-v-4edbf244]{grid-template-columns:40px 1fr 130px 90px 60px auto}.col-h[data-v-4edbf244]{padding:8px 16px;background:#fcfcfd;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8;font-weight:700;display:grid;gap:12px}.col-h.llm-h[data-v-4edbf244]{grid-template-columns:40px 1fr 130px 90px 60px auto;border-top:1px solid #eef2f7}.svc-rank[data-v-4edbf244]{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:#f8fafc;border:1px solid #e2e8f0;color:#64748b;font-family:SF Mono,Menlo,monospace;font-size:12px;font-weight:700}.svc-rank.hit[data-v-4edbf244]{background:#16a34a;border-color:#16a34a;color:#fff}.svc-name[data-v-4edbf244]{font-weight:600;font-size:13.5px;color:#334155}.svc-name.skip[data-v-4edbf244]{text-decoration:line-through;text-decoration-color:#cbd5e1}.svc-prov[data-v-4edbf244]{font-size:11px;color:#94a3b8;margin-top:2px}.svc-cost[data-v-4edbf244],.svc-prov[data-v-4edbf244]{font-family:SF Mono,Menlo,monospace}.svc-cost[data-v-4edbf244]{font-size:12.5px;font-variant-numeric:tabular-nums;color:#334155}.svc-cost small[data-v-4edbf244]{color:#94a3b8;font-size:10px}.svc-acts[data-v-4edbf244]{display:flex;gap:3px;align-items:center;justify-content:flex-end}.svc-why[data-v-4edbf244]{grid-column:2/-1;font-size:11px;color:#64748b;margin-top:-2px}.svc-why.ok[data-v-4edbf244]{color:#15803d;font-weight:600}.svc-why.no[data-v-4edbf244]{color:#b45309}.arrow[data-v-4edbf244]{width:24px;height:24px;border-radius:6px;border:1px solid #e2e8f0;background:#fff;color:#64748b;cursor:pointer;display:grid;place-items:center;font-size:11px;padding:0}.arrow[data-v-4edbf244]:hover:not(:disabled){border-color:#4f46e5;color:#4f46e5}.arrow[data-v-4edbf244]:disabled{opacity:.25;cursor:not-allowed}.lang[data-v-4edbf244]{font-family:SF Mono,Menlo,monospace;font-size:9.5px;padding:1px 5px;border-radius:4px;background:#f8fafc;border:1px solid #eef2f7;color:#64748b}.lang.on[data-v-4edbf244]{background:#dcfce7;border-color:transparent;color:#15803d}.chip[data-v-4edbf244],.lang.on[data-v-4edbf244]{font-weight:700}.chip[data-v-4edbf244]{display:inline-flex;align-items:center;font-size:10.5px;padding:2px 7px;border-radius:5px;background:#f1f5f9;color:#64748b}.chip-app[data-v-4edbf244]{background:#eef2ff;color:#4338ca}@media(max-width:1100px){.svc.asr[data-v-4edbf244],.svc.llm[data-v-4edbf244],.svc.mt[data-v-4edbf244]{grid-template-columns:34px 1fr}.col-h[data-v-4edbf244]{display:none}.svc-acts[data-v-4edbf244]{justify-content:flex-start}.svc-acts[data-v-4edbf244],.svc-why[data-v-4edbf244]{grid-column:1/-1}}

1
apps/admin/.output/public/_nuxt/meetingsvc.DgYSEQUA.css

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/Ddg4glGj.js → apps/admin/.output/public/_nuxt/omoEWMdu.js

@ -1 +1 @@
import{_ as s}from"./DuRQSWLc.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./mElhLwm2.js";import{u as f}from"./OLpUuA7c.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default};
import{_ as s}from"./D1rGIbQk.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./CSjlBIfC.js";import{u as f}from"./CDbX0LeJ.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default};

2
apps/admin/.output/public/_nuxt/DGSd_XG-.js → apps/admin/.output/public/_nuxt/r_MxzKf2.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/Bpb__dU6.js → apps/admin/.output/public/_nuxt/w2gB9CpJ.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CvHBDjjq.js → apps/admin/.output/public/_nuxt/xcfsMt0Y.js

File diff suppressed because one or more lines are too long

95
apps/admin/.output/server/chunks/build/agents-sIgrTlD1.mjs → apps/admin/.output/server/chunks/build/agents-C12ARvzr.mjs

@ -29,6 +29,7 @@ const CAT_MT = 3;
const CAT_AST = 4;
const CAT_LLM = 5;
const CAT_STS = 7;
const CAT_LLM_VISION = 9;
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "agents",
__ssrInlineRender: true,
@ -41,17 +42,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
];
const SLOTS = {
chat: [
{ key: "stt_svc_id", slot: "STT", label: "语音识别", cat: CAT_STT, color: "#1664ff" },
{ key: "llm_svc_id", slot: "LLM", label: "大语言模型", cat: CAT_LLM, color: "#b45309" },
{ key: "tts_svc_id", slot: "TTS", label: "语音合成", cat: CAT_TTS, color: "#7c3aed" }
{ key: "stt_svc_id", slot: "STT", label: "语音识别", cats: [CAT_STT], color: "#1664ff" },
{ key: "llm_svc_id", slot: "LLM", label: "大语言模型", cats: [CAT_LLM, CAT_LLM_VISION], color: "#b45309" },
{ key: "tts_svc_id", slot: "TTS", label: "语音合成", cats: [CAT_TTS], color: "#7c3aed" }
],
translate: [
{ key: "stt_svc_id", slot: "STT", label: "语音识别", cat: CAT_STT, color: "#1664ff" },
{ key: "mt_svc_id", slot: "MT", label: "机器翻译", cat: CAT_MT, color: "#059669" },
{ key: "tts_svc_id", slot: "TTS", label: "语音合成", cat: CAT_TTS, color: "#7c3aed" }
{ key: "stt_svc_id", slot: "STT", label: "语音识别", cats: [CAT_STT], color: "#1664ff" },
{ key: "mt_svc_id", slot: "MT", label: "机器翻译", cats: [CAT_MT], color: "#059669" },
{ key: "tts_svc_id", slot: "TTS", label: "语音合成", cats: [CAT_TTS], color: "#7c3aed" }
],
"sts-chat": [{ key: "sts_svc_id", slot: "STS", label: "端到端语音对话", cat: CAT_STS, color: "#be185d" }],
"ast-translate": [{ key: "ast_svc_id", slot: "AST", label: "端到端语音翻译", cat: CAT_AST, color: "#f97316" }]
"sts-chat": [{ key: "sts_svc_id", slot: "STS", label: "端到端语音对话", cats: [CAT_STS], color: "#be185d" }],
"ast-translate": [{ key: "ast_svc_id", slot: "AST", label: "端到端语音翻译", cats: [CAT_AST], color: "#f97316" }]
};
function slotsOfType(t) {
return SLOTS[t] ?? [];
@ -104,10 +105,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
items: agents2.value.filter((a) => a.type === t.value).sort((a, b) => (b.sort || 0) - (a.sort || 0) || (a.name || "").localeCompare(b.name || ""))
})).filter((g) => g.items.length)
);
function svcsByCat(cat) {
return allSvcs.value.filter(
(s) => s.enable && (s.categories || "").split(",").map(Number).includes(cat)
);
function svcCats(s) {
return (s.categories || "").split(",").map(Number);
}
function svcsByCats(cats) {
return allSvcs.value.filter((s) => s.enable && svcCats(s).some((c) => cats.includes(c)));
}
function isVisionSvc(s) {
return svcCats(s).includes(CAT_LLM_VISION);
}
function svcName(id) {
if (!id) return "未配置";
@ -118,39 +123,39 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
return slotsOfType(a.type).map((s) => ({ slot: s.slot, color: s.color, id: a[s.key] }));
}
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(_attrs)} data-v-463df649><div class="flex items-center justify-between mb-5 flex-wrap gap-3" data-v-463df649><div data-v-463df649><h2 class="text-lg font-semibold text-slate-800" data-v-463df649>Agent 配置</h2><p class="text-xs text-slate-400 mt-1" data-v-463df649> 把已配置的第三方服务编排成可下发客户端的智能体。四种类型按需引用不同服务;通话翻译规则只能引用「翻译」与「端到端翻译」两类。 </p></div><div class="flex items-center gap-3" data-v-463df649><span class="text-sm text-slate-500" data-v-463df649>作用域</span><select class="select select-bordered select-sm" data-v-463df649><option value="" data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(scopeApp.value) ? ssrLooseContain(scopeApp.value, "") : ssrLooseEqual(scopeApp.value, "")) ? " selected" : ""}>全局默认</option><!--[-->`);
_push(`<div${ssrRenderAttrs(_attrs)} data-v-4a81d81a><div class="flex items-center justify-between mb-5 flex-wrap gap-3" data-v-4a81d81a><div data-v-4a81d81a><h2 class="text-lg font-semibold text-slate-800" data-v-4a81d81a>Agent 配置</h2><p class="text-xs text-slate-400 mt-1" data-v-4a81d81a> 把已配置的第三方服务编排成可下发客户端的智能体。四种类型按需引用不同服务;通话翻译规则只能引用「翻译」与「端到端翻译」两类。 </p></div><div class="flex items-center gap-3" data-v-4a81d81a><span class="text-sm text-slate-500" data-v-4a81d81a>作用域</span><select class="select select-bordered select-sm" data-v-4a81d81a><option value="" data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(scopeApp.value) ? ssrLooseContain(scopeApp.value, "") : ssrLooseEqual(scopeApp.value, "")) ? " selected" : ""}>全局默认</option><!--[-->`);
ssrRenderList(scopeApps.value, (a) => {
_push(`<option${ssrRenderAttr("value", a)} data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(scopeApp.value) ? ssrLooseContain(scopeApp.value, a) : ssrLooseEqual(scopeApp.value, a)) ? " selected" : ""}>${ssrInterpolate(a)}</option>`);
_push(`<option${ssrRenderAttr("value", a)} data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(scopeApp.value) ? ssrLooseContain(scopeApp.value, a) : ssrLooseEqual(scopeApp.value, a)) ? " selected" : ""}>${ssrInterpolate(a)}</option>`);
});
_push(`<!--]--></select><button class="btn btn-primary btn-sm text-white" data-v-463df649>+ 新建 Agent</button></div></div>`);
_push(`<!--]--></select><button class="btn btn-primary btn-sm text-white" data-v-4a81d81a>+ 新建 Agent</button></div></div>`);
if (!agents2.value.length) {
_push(`<div class="text-center py-20 text-slate-300" data-v-463df649><div class="text-5xl mb-3" data-v-463df649>🤖</div><p class="text-sm" data-v-463df649>当前作用域下还没有 Agent</p><p class="text-xs mt-1" data-v-463df649>先在「第三方服务配置」里配好服务,再来把它们组装成 Agent</p></div>`);
_push(`<div class="text-center py-20 text-slate-300" data-v-4a81d81a><div class="text-5xl mb-3" data-v-4a81d81a>🤖</div><p class="text-sm" data-v-4a81d81a>当前作用域下还没有 Agent</p><p class="text-xs mt-1" data-v-4a81d81a>先在「第三方服务配置」里配好服务,再来把它们组装成 Agent</p></div>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(grouped.value, (g) => {
_push(`<div class="mb-6" data-v-463df649><div class="flex items-center gap-2 mb-3" data-v-463df649><span class="type-tag" style="${ssrRenderStyle({ background: g.bg, color: g.color })}" data-v-463df649>${ssrInterpolate(g.icon)} ${ssrInterpolate(g.label)}</span><span class="text-xs text-slate-400" data-v-463df649>${ssrInterpolate(g.hint)}</span><span class="text-xs text-slate-300" data-v-463df649>·</span><span class="text-xs text-slate-400" data-v-463df649>${ssrInterpolate(g.items.length)} 个</span></div><div class="agent-grid" data-v-463df649><!--[-->`);
_push(`<div class="mb-6" data-v-4a81d81a><div class="flex items-center gap-2 mb-3" data-v-4a81d81a><span class="type-tag" style="${ssrRenderStyle({ background: g.bg, color: g.color })}" data-v-4a81d81a>${ssrInterpolate(g.icon)} ${ssrInterpolate(g.label)}</span><span class="text-xs text-slate-400" data-v-4a81d81a>${ssrInterpolate(g.hint)}</span><span class="text-xs text-slate-300" data-v-4a81d81a>·</span><span class="text-xs text-slate-400" data-v-4a81d81a>${ssrInterpolate(g.items.length)} 个</span></div><div class="agent-grid" data-v-4a81d81a><!--[-->`);
ssrRenderList(g.items, (a) => {
_push(`<div class="agent-card" data-v-463df649><div class="flex items-start justify-between gap-2" data-v-463df649><div class="min-w-0" data-v-463df649><div class="font-semibold text-sm text-slate-800 truncate" data-v-463df649>${ssrInterpolate(a.name || a.id)}</div><div class="text-[11px] text-slate-400 mt-0.5 truncate" data-v-463df649>${ssrInterpolate(a.id)}</div></div><div class="flex items-center gap-1 flex-shrink-0" data-v-463df649>`);
_push(`<div class="agent-card" data-v-4a81d81a><div class="flex items-start justify-between gap-2" data-v-4a81d81a><div class="min-w-0" data-v-4a81d81a><div class="font-semibold text-sm text-slate-800 truncate" data-v-4a81d81a>${ssrInterpolate(a.name || a.id)}</div><div class="text-[11px] text-slate-400 mt-0.5 truncate" data-v-4a81d81a>${ssrInterpolate(a.id)}</div></div><div class="flex items-center gap-1 flex-shrink-0" data-v-4a81d81a>`);
if (a.enable) {
_push(`<span class="badge badge-success badge-xs" data-v-463df649>启用</span>`);
_push(`<span class="badge badge-success badge-xs" data-v-4a81d81a>启用</span>`);
} else {
_push(`<span class="badge badge-ghost badge-xs" data-v-463df649>停用</span>`);
_push(`<span class="badge badge-ghost badge-xs" data-v-4a81d81a>停用</span>`);
}
_push(`<button class="btn btn-ghost btn-xs text-error" data-v-463df649>删除</button></div></div>`);
_push(`<button class="btn btn-ghost btn-xs text-error" data-v-4a81d81a>删除</button></div></div>`);
if (a.description) {
_push(`<p class="text-xs text-slate-500 mt-2 line-clamp-2" data-v-463df649>${ssrInterpolate(a.description)}</p>`);
_push(`<p class="text-xs text-slate-500 mt-2 line-clamp-2" data-v-4a81d81a>${ssrInterpolate(a.description)}</p>`);
} else {
_push(`<!---->`);
}
_push(`<div class="flex flex-wrap items-center gap-1.5 mt-3" data-v-463df649><!--[-->`);
_push(`<div class="flex flex-wrap items-center gap-1.5 mt-3" data-v-4a81d81a><!--[-->`);
ssrRenderList(pipelineOf(a), (s) => {
_push(`<span class="svc-pill" style="${ssrRenderStyle({ background: s.color })}" data-v-463df649>${ssrInterpolate(s.slot)}: ${ssrInterpolate(svcName(s.id))}</span>`);
_push(`<span class="svc-pill" style="${ssrRenderStyle({ background: s.color })}" data-v-4a81d81a>${ssrInterpolate(s.slot)}: ${ssrInterpolate(svcName(s.id))}</span>`);
});
_push(`<!--]--></div>`);
if (a.support_langs) {
_push(`<div class="text-[11px] text-slate-400 mt-2 truncate" data-v-463df649> 支持语言:${ssrInterpolate(a.support_langs)}</div>`);
_push(`<div class="text-[11px] text-slate-400 mt-2 truncate" data-v-4a81d81a> 支持语言:${ssrInterpolate(a.support_langs)}</div>`);
} else {
_push(`<!---->`);
}
@ -158,61 +163,61 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
});
_push(`<!--]--></div></div>`);
});
_push(`<!--]--><div class="ag-overlay" style="${ssrRenderStyle(modalOpen.value ? null : { display: "none" })}" data-v-463df649><div class="ag-box" data-v-463df649><div class="flex items-center justify-between mb-4" data-v-463df649><div class="flex items-center gap-3" data-v-463df649><h3 class="text-base font-semibold text-slate-800" data-v-463df649>${ssrInterpolate(isEditing.value ? "编辑 Agent" : "新建 Agent")}</h3><span class="scope-chip" data-v-463df649>${ssrInterpolate(scopeApp.value || "全局默认")}</span></div><button class="btn btn-ghost btn-xs" data-v-463df649>✕ 关闭</button></div><section class="ed-section" data-v-463df649><div class="ed-section-title" data-v-463df649>类型</div><div class="type-row" data-v-463df649><!--[-->`);
_push(`<!--]--><div class="ag-overlay" style="${ssrRenderStyle(modalOpen.value ? null : { display: "none" })}" data-v-4a81d81a><div class="ag-box" data-v-4a81d81a><div class="flex items-center justify-between mb-4" data-v-4a81d81a><div class="flex items-center gap-3" data-v-4a81d81a><h3 class="text-base font-semibold text-slate-800" data-v-4a81d81a>${ssrInterpolate(isEditing.value ? "编辑 Agent" : "新建 Agent")}</h3><span class="scope-chip" data-v-4a81d81a>${ssrInterpolate(scopeApp.value || "全局默认")}</span></div><button class="btn btn-ghost btn-xs" data-v-4a81d81a>✕ 关闭</button></div><section class="ed-section" data-v-4a81d81a><div class="ed-section-title" data-v-4a81d81a>类型</div><div class="type-row" data-v-4a81d81a><!--[-->`);
ssrRenderList(AGENT_TYPES, (t) => {
_push(`<button type="button" class="${ssrRenderClass([{ on: form.type === t.value, locked: isEditing.value && form.type !== t.value }, "ttab"])}"${ssrIncludeBooleanAttr(isEditing.value) ? " disabled" : ""} data-v-463df649><span class="ttab-title" data-v-463df649>${ssrInterpolate(t.icon)} ${ssrInterpolate(t.label)}</span><span class="ttab-desc" data-v-463df649>${ssrInterpolate(t.hint)}</span></button>`);
_push(`<button type="button" class="${ssrRenderClass([{ on: form.type === t.value, locked: isEditing.value && form.type !== t.value }, "ttab"])}"${ssrIncludeBooleanAttr(isEditing.value) ? " disabled" : ""} data-v-4a81d81a><span class="ttab-title" data-v-4a81d81a>${ssrInterpolate(t.icon)} ${ssrInterpolate(t.label)}</span><span class="ttab-desc" data-v-4a81d81a>${ssrInterpolate(t.hint)}</span></button>`);
});
_push(`<!--]--></div>`);
if (isEditing.value) {
_push(`<p class="ed-tip" data-v-463df649>类型创建后不可更改;需要换类型请新建一个 Agent。</p>`);
_push(`<p class="ed-tip" data-v-4a81d81a>类型创建后不可更改;需要换类型请新建一个 Agent。</p>`);
} else {
_push(`<!---->`);
}
_push(`</section><section class="ed-section" data-v-463df649><div class="ed-section-title" data-v-463df649>基本信息</div><div class="grid grid-cols-2 gap-3" data-v-463df649><div data-v-463df649><span class="ed-label" data-v-463df649>Agent ID <i class="req" data-v-463df649>*</i></span><input${ssrRenderAttr("value", form.id)}${ssrIncludeBooleanAttr(isEditing.value) ? " disabled" : ""} class="input input-bordered input-sm w-full" placeholder="如 trans-cn-en(作用域内唯一,创建后不可改)" data-v-463df649></div><div data-v-463df649><span class="ed-label" data-v-463df649>名称 <i class="req" data-v-463df649>*</i></span><input${ssrRenderAttr("value", form.name)} class="input input-bordered input-sm w-full" placeholder="展示名,如 中英实时翻译" data-v-463df649></div></div><div class="mt-3" data-v-463df649><span class="ed-label" data-v-463df649>描述</span><input${ssrRenderAttr("value", form.description)} class="input input-bordered input-sm w-full" placeholder="这个 Agent 用在什么场景" data-v-463df649></div><div class="grid grid-cols-3 gap-3 mt-3" data-v-463df649><div data-v-463df649><span class="ed-label" data-v-463df649>头像 URL</span><input${ssrRenderAttr("value", form.avatar_url)} class="input input-bordered input-sm w-full" placeholder="可留空" data-v-463df649></div><div data-v-463df649><span class="ed-label" data-v-463df649>排序(越大越靠前)</span><input${ssrRenderAttr("value", form.sort)} type="number" class="input input-bordered input-sm w-full" data-v-463df649></div><div data-v-463df649><span class="ed-label" data-v-463df649>音色性别偏好</span><select class="select select-bordered select-sm w-full" data-v-463df649><option${ssrRenderAttr("value", 0)} data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(form.gender) ? ssrLooseContain(form.gender, 0) : ssrLooseEqual(form.gender, 0)) ? " selected" : ""}>不限</option><option${ssrRenderAttr("value", 1)} data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(form.gender) ? ssrLooseContain(form.gender, 1) : ssrLooseEqual(form.gender, 1)) ? " selected" : ""}>男</option><option${ssrRenderAttr("value", 2)} data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(form.gender) ? ssrLooseContain(form.gender, 2) : ssrLooseEqual(form.gender, 2)) ? " selected" : ""}>女</option></select></div></div></section><section class="ed-section" data-v-463df649><div class="ed-section-title" data-v-463df649>服务编排</div><div class="slot-row" data-v-463df649><!--[-->`);
_push(`</section><section class="ed-section" data-v-4a81d81a><div class="ed-section-title" data-v-4a81d81a>基本信息</div><div class="grid grid-cols-2 gap-3" data-v-4a81d81a><div data-v-4a81d81a><span class="ed-label" data-v-4a81d81a>Agent ID <i class="req" data-v-4a81d81a>*</i></span><input${ssrRenderAttr("value", form.id)}${ssrIncludeBooleanAttr(isEditing.value) ? " disabled" : ""} class="input input-bordered input-sm w-full" placeholder="如 trans-cn-en(作用域内唯一,创建后不可改)" data-v-4a81d81a></div><div data-v-4a81d81a><span class="ed-label" data-v-4a81d81a>名称 <i class="req" data-v-4a81d81a>*</i></span><input${ssrRenderAttr("value", form.name)} class="input input-bordered input-sm w-full" placeholder="展示名,如 中英实时翻译" data-v-4a81d81a></div></div><div class="mt-3" data-v-4a81d81a><span class="ed-label" data-v-4a81d81a>描述</span><input${ssrRenderAttr("value", form.description)} class="input input-bordered input-sm w-full" placeholder="这个 Agent 用在什么场景" data-v-4a81d81a></div><div class="grid grid-cols-3 gap-3 mt-3" data-v-4a81d81a><div data-v-4a81d81a><span class="ed-label" data-v-4a81d81a>头像 URL</span><input${ssrRenderAttr("value", form.avatar_url)} class="input input-bordered input-sm w-full" placeholder="可留空" data-v-4a81d81a></div><div data-v-4a81d81a><span class="ed-label" data-v-4a81d81a>排序(越大越靠前)</span><input${ssrRenderAttr("value", form.sort)} type="number" class="input input-bordered input-sm w-full" data-v-4a81d81a></div><div data-v-4a81d81a><span class="ed-label" data-v-4a81d81a>音色性别偏好</span><select class="select select-bordered select-sm w-full" data-v-4a81d81a><option${ssrRenderAttr("value", 0)} data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(form.gender) ? ssrLooseContain(form.gender, 0) : ssrLooseEqual(form.gender, 0)) ? " selected" : ""}>不限</option><option${ssrRenderAttr("value", 1)} data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(form.gender) ? ssrLooseContain(form.gender, 1) : ssrLooseEqual(form.gender, 1)) ? " selected" : ""}>男</option><option${ssrRenderAttr("value", 2)} data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(form.gender) ? ssrLooseContain(form.gender, 2) : ssrLooseEqual(form.gender, 2)) ? " selected" : ""}>女</option></select></div></div></section><section class="ed-section" data-v-4a81d81a><div class="ed-section-title" data-v-4a81d81a>服务编排</div><div class="slot-row" data-v-4a81d81a><!--[-->`);
ssrRenderList(slotsOfType(form.type), (s, i) => {
_push(`<!--[--><div class="slot-item" data-v-463df649><span class="stage-tag" style="${ssrRenderStyle({ background: s.color })}" data-v-463df649>${ssrInterpolate(s.slot)}</span><span class="ed-label inline" data-v-463df649>${ssrInterpolate(s.label)}</span><select class="select select-bordered select-sm w-full" data-v-463df649><option value="" disabled data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(form[s.key]) ? ssrLooseContain(form[s.key], "") : ssrLooseEqual(form[s.key], "")) ? " selected" : ""}>${ssrInterpolate(svcsByCat(s.cat).length ? "请选择服务" : "(无可用服务,请先去第三方服务配置里添加)")}</option><!--[-->`);
ssrRenderList(svcsByCat(s.cat), (v) => {
_push(`<option${ssrRenderAttr("value", v.id)} data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(form[s.key]) ? ssrLooseContain(form[s.key], v.id) : ssrLooseEqual(form[s.key], v.id)) ? " selected" : ""}>${ssrInterpolate(v.name)}</option>`);
_push(`<!--[--><div class="slot-item" data-v-4a81d81a><span class="stage-tag" style="${ssrRenderStyle({ background: s.color })}" data-v-4a81d81a>${ssrInterpolate(s.slot)}</span><span class="ed-label inline" data-v-4a81d81a>${ssrInterpolate(s.label)}</span><select class="select select-bordered select-sm w-full" data-v-4a81d81a><option value="" disabled data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(form[s.key]) ? ssrLooseContain(form[s.key], "") : ssrLooseEqual(form[s.key], "")) ? " selected" : ""}>${ssrInterpolate(svcsByCats(s.cats).length ? "请选择服务" : "(无可用服务,请先去第三方服务配置里添加)")}</option><!--[-->`);
ssrRenderList(svcsByCats(s.cats), (v) => {
_push(`<option${ssrRenderAttr("value", v.id)} data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(form[s.key]) ? ssrLooseContain(form[s.key], v.id) : ssrLooseEqual(form[s.key], v.id)) ? " selected" : ""}>${ssrInterpolate(v.name)}${ssrInterpolate(isVisionSvc(v) ? " 🖼" : "")}</option>`);
});
_push(`<!--]--></select></div>`);
if (i < slotsOfType(form.type).length - 1) {
_push(`<span class="slot-arrow" data-v-463df649>→</span>`);
_push(`<span class="slot-arrow" data-v-4a81d81a>→</span>`);
} else {
_push(`<!---->`);
}
_push(`<!--]-->`);
});
_push(`<!--]--></div></section><section class="ed-section" data-v-463df649><div class="ed-section-title" data-v-463df649>语言与音色</div><div class="grid grid-cols-2 gap-3" data-v-463df649><div data-v-463df649><span class="ed-label" data-v-463df649>支持语言(多选)</span>`);
_push(`<!--]--></div></section><section class="ed-section" data-v-4a81d81a><div class="ed-section-title" data-v-4a81d81a>语言与音色</div><div class="grid grid-cols-2 gap-3" data-v-4a81d81a><div data-v-4a81d81a><span class="ed-label" data-v-4a81d81a>支持语言(多选)</span>`);
_push(ssrRenderComponent(__nuxt_component_0, {
modelValue: form.support_langs,
"onUpdate:modelValue": ($event) => form.support_langs = $event,
multiple: ""
}, null, _parent));
_push(`</div><div data-v-463df649><span class="ed-label" data-v-463df649>默认语言</span>`);
_push(`</div><div data-v-4a81d81a><span class="ed-label" data-v-4a81d81a>默认语言</span>`);
_push(ssrRenderComponent(__nuxt_component_0, {
modelValue: form.default_lang,
"onUpdate:modelValue": ($event) => form.default_lang = $event,
options: supportedLangOptions.value
}, null, _parent));
_push(`</div></div><div class="mt-3" data-v-463df649><div class="flex items-center justify-between mb-1" data-v-463df649><span class="ed-label mb-0" data-v-463df649>音色覆盖(不填则用 TTS 服务自带默认音色)</span><button class="btn btn-ghost btn-xs" data-v-463df649>+ 添加一行</button></div>`);
_push(`</div></div><div class="mt-3" data-v-4a81d81a><div class="flex items-center justify-between mb-1" data-v-4a81d81a><span class="ed-label mb-0" data-v-4a81d81a>音色覆盖(不填则用 TTS 服务自带默认音色)</span><button class="btn btn-ghost btn-xs" data-v-4a81d81a>+ 添加一行</button></div>`);
if (!form.voice_map.length) {
_push(`<div class="text-xs text-slate-300 py-2" data-v-463df649>未设置音色覆盖</div>`);
_push(`<div class="text-xs text-slate-300 py-2" data-v-4a81d81a>未设置音色覆盖</div>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(form.voice_map, (v, i) => {
_push(`<div class="voice-row" data-v-463df649><select class="select select-bordered select-xs" data-v-463df649><option value="" data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(v.language) ? ssrLooseContain(v.language, "") : ssrLooseEqual(v.language, "")) ? " selected" : ""}>(语言)</option><!--[-->`);
_push(`<div class="voice-row" data-v-4a81d81a><select class="select select-bordered select-xs" data-v-4a81d81a><option value="" data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(v.language) ? ssrLooseContain(v.language, "") : ssrLooseEqual(v.language, "")) ? " selected" : ""}>(语言)</option><!--[-->`);
ssrRenderList(supportedLangOptions.value, (o) => {
_push(`<option${ssrRenderAttr("value", o.code)} data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(v.language) ? ssrLooseContain(v.language, o.code) : ssrLooseEqual(v.language, o.code)) ? " selected" : ""}>${ssrInterpolate(o.code)} · ${ssrInterpolate(o.name)}</option>`);
_push(`<option${ssrRenderAttr("value", o.code)} data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(v.language) ? ssrLooseContain(v.language, o.code) : ssrLooseEqual(v.language, o.code)) ? " selected" : ""}>${ssrInterpolate(o.code)} · ${ssrInterpolate(o.name)}</option>`);
});
_push(`<!--]--></select><select class="select select-bordered select-xs" data-v-463df649><option${ssrRenderAttr("value", 0)} data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(v.gender) ? ssrLooseContain(v.gender, 0) : ssrLooseEqual(v.gender, 0)) ? " selected" : ""}>不限</option><option${ssrRenderAttr("value", 1)} data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(v.gender) ? ssrLooseContain(v.gender, 1) : ssrLooseEqual(v.gender, 1)) ? " selected" : ""}>男</option><option${ssrRenderAttr("value", 2)} data-v-463df649${ssrIncludeBooleanAttr(Array.isArray(v.gender) ? ssrLooseContain(v.gender, 2) : ssrLooseEqual(v.gender, 2)) ? " selected" : ""}>女</option></select><input${ssrRenderAttr("value", v.voice)} class="input input-bordered input-xs flex-1" placeholder="音色名,如 zh-CN-XiaoxiaoNeural" data-v-463df649><button class="btn btn-ghost btn-xs text-error" data-v-463df649>删除</button></div>`);
_push(`<!--]--></select><select class="select select-bordered select-xs" data-v-4a81d81a><option${ssrRenderAttr("value", 0)} data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(v.gender) ? ssrLooseContain(v.gender, 0) : ssrLooseEqual(v.gender, 0)) ? " selected" : ""}>不限</option><option${ssrRenderAttr("value", 1)} data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(v.gender) ? ssrLooseContain(v.gender, 1) : ssrLooseEqual(v.gender, 1)) ? " selected" : ""}>男</option><option${ssrRenderAttr("value", 2)} data-v-4a81d81a${ssrIncludeBooleanAttr(Array.isArray(v.gender) ? ssrLooseContain(v.gender, 2) : ssrLooseEqual(v.gender, 2)) ? " selected" : ""}>女</option></select><input${ssrRenderAttr("value", v.voice)} class="input input-bordered input-xs flex-1" placeholder="音色名,如 zh-CN-XiaoxiaoNeural" data-v-4a81d81a><button class="btn btn-ghost btn-xs text-error" data-v-4a81d81a>删除</button></div>`);
});
_push(`<!--]--></div></section>`);
if (isChatType.value) {
_push(`<section class="ed-section" data-v-463df649><div class="ed-section-title" data-v-463df649>对话设定</div><div data-v-463df649><span class="ed-label" data-v-463df649>系统提示词</span><textarea class="textarea textarea-bordered w-full text-xs" rows="3" placeholder="定义这个智能体的人设与行为" data-v-463df649>${ssrInterpolate(form.system_prompt)}</textarea></div><div class="mt-3" data-v-463df649><label class="flex items-center gap-2 text-sm cursor-pointer" data-v-463df649><input${ssrIncludeBooleanAttr(Array.isArray(form.greeting_enabled) ? ssrLooseContain(form.greeting_enabled, null) : form.greeting_enabled) ? " checked" : ""} type="checkbox" class="checkbox checkbox-sm checkbox-primary" data-v-463df649><span data-v-463df649>开场白</span></label>`);
_push(`<section class="ed-section" data-v-4a81d81a><div class="ed-section-title" data-v-4a81d81a>对话设定</div><div data-v-4a81d81a><span class="ed-label" data-v-4a81d81a>系统提示词</span><textarea class="textarea textarea-bordered w-full text-xs" rows="3" placeholder="定义这个智能体的人设与行为" data-v-4a81d81a>${ssrInterpolate(form.system_prompt)}</textarea></div><div class="mt-3" data-v-4a81d81a><label class="flex items-center gap-2 text-sm cursor-pointer" data-v-4a81d81a><input${ssrIncludeBooleanAttr(Array.isArray(form.greeting_enabled) ? ssrLooseContain(form.greeting_enabled, null) : form.greeting_enabled) ? " checked" : ""} type="checkbox" class="checkbox checkbox-sm checkbox-primary" data-v-4a81d81a><span data-v-4a81d81a>开场白</span></label>`);
if (form.greeting_enabled) {
_push(`<input${ssrRenderAttr("value", form.greeting_text)} class="input input-bordered input-sm w-full mt-2" placeholder="接通后先说的一句话" data-v-463df649>`);
_push(`<input${ssrRenderAttr("value", form.greeting_text)} class="input input-bordered input-sm w-full mt-2" placeholder="接通后先说的一句话" data-v-4a81d81a>`);
} else {
_push(`<!---->`);
}
@ -220,7 +225,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
} else {
_push(`<!---->`);
}
_push(`<div class="ed-footer" data-v-463df649><label class="flex items-center gap-2 text-sm cursor-pointer" data-v-463df649><input${ssrIncludeBooleanAttr(Array.isArray(form.enable) ? ssrLooseContain(form.enable, null) : form.enable) ? " checked" : ""} type="checkbox" class="checkbox checkbox-sm checkbox-primary" data-v-463df649><span data-v-463df649>启用</span></label><div class="flex gap-2" data-v-463df649><button class="btn btn-ghost btn-sm" data-v-463df649>取消</button><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(submitting.value) ? " disabled" : ""} data-v-463df649>保存</button></div></div></div></div></div>`);
_push(`<div class="ed-footer" data-v-4a81d81a><label class="flex items-center gap-2 text-sm cursor-pointer" data-v-4a81d81a><input${ssrIncludeBooleanAttr(Array.isArray(form.enable) ? ssrLooseContain(form.enable, null) : form.enable) ? " checked" : ""} type="checkbox" class="checkbox checkbox-sm checkbox-primary" data-v-4a81d81a><span data-v-4a81d81a>启用</span></label><div class="flex gap-2" data-v-4a81d81a><button class="btn btn-ghost btn-sm" data-v-4a81d81a>取消</button><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(submitting.value) ? " disabled" : ""} data-v-4a81d81a>保存</button></div></div></div></div></div>`);
};
}
});
@ -230,7 +235,7 @@ _sfc_main.setup = (props, ctx) => {
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/agents.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const agents = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-463df649"]]);
const agents = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4a81d81a"]]);
export { agents as default };
//# sourceMappingURL=agents-sIgrTlD1.mjs.map
//# sourceMappingURL=agents-C12ARvzr.mjs.map

1
apps/admin/.output/server/chunks/build/agents-C12ARvzr.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"agents-C12ARvzr.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-C12ARvzr.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

1
apps/admin/.output/server/chunks/build/agents-sIgrTlD1.mjs.map

@ -1 +0,0 @@
{"version":3,"file":"agents-sIgrTlD1.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

8
apps/admin/.output/server/chunks/build/agents-styles.DrcBfQcb.mjs

@ -1,8 +0,0 @@
const agents_vue_vue_type_style_index_0_scoped_463df649_lang = ".type-tag[data-v-463df649]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px}.agent-grid[data-v-463df649]{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.agent-card[data-v-463df649]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:14px 16px;cursor:pointer;transition:all .15s}.agent-card[data-v-463df649]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.svc-pill[data-v-463df649]{display:inline-flex;align-items:center;font-size:10px;font-weight:600;padding:2px 8px;border-radius:7px;color:#fff}.ag-overlay[data-v-463df649]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:24px}.ag-box[data-v-463df649]{background:#fff;border-radius:18px;padding:24px;width:780px;max-width:96vw;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px #0000002e}.scope-chip[data-v-463df649]{font-size:11px;font-weight:600;padding:2px 9px;border-radius:6px;background:#eef2ff;color:#4338ca}.ed-section[data-v-463df649]{padding:14px 0;border-top:1px dashed #eef2f7}.ed-section[data-v-463df649]:first-of-type{padding-top:0;border-top:none}.ed-section-title[data-v-463df649]{font-size:11px;font-weight:700;letter-spacing:.04em;color:#94a3b8;margin-bottom:10px}.ed-label[data-v-463df649]{display:block;font-size:11px;color:#64748b;margin-bottom:4px}.ed-label.inline[data-v-463df649]{display:inline-block;margin-left:6px}.ed-tip[data-v-463df649]{font-size:11px;color:#94a3b8;margin-top:8px}.req[data-v-463df649]{color:#dc2626;font-style:normal}.type-row[data-v-463df649]{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.ttab[data-v-463df649]{display:flex;flex-direction:column;gap:3px;padding:11px 12px;border-radius:10px;border:1.5px solid #e2e8f0;background:#fff;cursor:pointer;transition:all .15s;text-align:left}.ttab[data-v-463df649]:hover:not(:disabled){border-color:#c7d2fe;background:#f8fafc}.ttab.on[data-v-463df649]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.ttab.locked[data-v-463df649]{opacity:.45;cursor:not-allowed}.ttab-title[data-v-463df649]{font-weight:700;font-size:12px;color:#1e293b}.ttab-desc[data-v-463df649]{font-size:10px;color:#94a3b8}.slot-row[data-v-463df649]{display:flex;align-items:flex-end;gap:10px}.slot-item[data-v-463df649]{flex:1;min-width:0}.slot-arrow[data-v-463df649]{color:#cbd5e1;padding-bottom:8px;flex-shrink:0}.stage-tag[data-v-463df649]{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:5px;color:#fff;vertical-align:middle}.voice-row[data-v-463df649]{gap:8px;margin-bottom:6px}.ed-footer[data-v-463df649],.voice-row[data-v-463df649]{display:flex;align-items:center}.ed-footer[data-v-463df649]{justify-content:space-between;gap:12px;padding-top:14px;border-top:1px solid #eef2f7}@media(max-width:860px){.type-row[data-v-463df649]{grid-template-columns:repeat(2,1fr)}.slot-row[data-v-463df649]{flex-direction:column;align-items:stretch}.slot-arrow[data-v-463df649]{display:none}}";
const agentsStyles_DrcBfQcb = [
agents_vue_vue_type_style_index_0_scoped_463df649_lang
];
export { agentsStyles_DrcBfQcb as default };
//# sourceMappingURL=agents-styles.DrcBfQcb.mjs.map

1
apps/admin/.output/server/chunks/build/agents-styles.DrcBfQcb.mjs.map

@ -1 +0,0 @@
{"version":3,"file":"agents-styles.DrcBfQcb.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles-1.mjs-Dz2nKerr.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles.DrcBfQcb.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}

8
apps/admin/.output/server/chunks/build/agents-styles.GXWAwNko.mjs

@ -0,0 +1,8 @@
const agents_vue_vue_type_style_index_0_scoped_4a81d81a_lang = ".type-tag[data-v-4a81d81a]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px}.agent-grid[data-v-4a81d81a]{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.agent-card[data-v-4a81d81a]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:14px 16px;cursor:pointer;transition:all .15s}.agent-card[data-v-4a81d81a]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.svc-pill[data-v-4a81d81a]{display:inline-flex;align-items:center;font-size:10px;font-weight:600;padding:2px 8px;border-radius:7px;color:#fff}.ag-overlay[data-v-4a81d81a]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:24px}.ag-box[data-v-4a81d81a]{background:#fff;border-radius:18px;padding:24px;width:780px;max-width:96vw;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px #0000002e}.scope-chip[data-v-4a81d81a]{font-size:11px;font-weight:600;padding:2px 9px;border-radius:6px;background:#eef2ff;color:#4338ca}.ed-section[data-v-4a81d81a]{padding:14px 0;border-top:1px dashed #eef2f7}.ed-section[data-v-4a81d81a]:first-of-type{padding-top:0;border-top:none}.ed-section-title[data-v-4a81d81a]{font-size:11px;font-weight:700;letter-spacing:.04em;color:#94a3b8;margin-bottom:10px}.ed-label[data-v-4a81d81a]{display:block;font-size:11px;color:#64748b;margin-bottom:4px}.ed-label.inline[data-v-4a81d81a]{display:inline-block;margin-left:6px}.ed-tip[data-v-4a81d81a]{font-size:11px;color:#94a3b8;margin-top:8px}.req[data-v-4a81d81a]{color:#dc2626;font-style:normal}.type-row[data-v-4a81d81a]{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.ttab[data-v-4a81d81a]{display:flex;flex-direction:column;gap:3px;padding:11px 12px;border-radius:10px;border:1.5px solid #e2e8f0;background:#fff;cursor:pointer;transition:all .15s;text-align:left}.ttab[data-v-4a81d81a]:hover:not(:disabled){border-color:#c7d2fe;background:#f8fafc}.ttab.on[data-v-4a81d81a]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.ttab.locked[data-v-4a81d81a]{opacity:.45;cursor:not-allowed}.ttab-title[data-v-4a81d81a]{font-weight:700;font-size:12px;color:#1e293b}.ttab-desc[data-v-4a81d81a]{font-size:10px;color:#94a3b8}.slot-row[data-v-4a81d81a]{display:flex;align-items:flex-end;gap:10px}.slot-item[data-v-4a81d81a]{flex:1;min-width:0}.slot-arrow[data-v-4a81d81a]{color:#cbd5e1;padding-bottom:8px;flex-shrink:0}.stage-tag[data-v-4a81d81a]{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:5px;color:#fff;vertical-align:middle}.voice-row[data-v-4a81d81a]{gap:8px;margin-bottom:6px}.ed-footer[data-v-4a81d81a],.voice-row[data-v-4a81d81a]{display:flex;align-items:center}.ed-footer[data-v-4a81d81a]{justify-content:space-between;gap:12px;padding-top:14px;border-top:1px solid #eef2f7}@media(max-width:860px){.type-row[data-v-4a81d81a]{grid-template-columns:repeat(2,1fr)}.slot-row[data-v-4a81d81a]{flex-direction:column;align-items:stretch}.slot-arrow[data-v-4a81d81a]{display:none}}";
const agentsStyles_GXWAwNko = [
agents_vue_vue_type_style_index_0_scoped_4a81d81a_lang
];
export { agentsStyles_GXWAwNko as default };
//# sourceMappingURL=agents-styles.GXWAwNko.mjs.map

1
apps/admin/.output/server/chunks/build/agents-styles.GXWAwNko.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"agents-styles.GXWAwNko.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles-1.mjs-BzkXHx2D.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles.GXWAwNko.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}

2
apps/admin/.output/server/chunks/build/client.precomputed.mjs

File diff suppressed because one or more lines are too long

170
apps/admin/.output/server/chunks/build/meetingsvc-Dcq0cJyO.mjs → apps/admin/.output/server/chunks/build/meetingsvc-BKMj3MwH.mjs

@ -124,18 +124,61 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
if (!svcSupportsLang(o.svc_id, probeLang.value)) return `不支持 ${langName(probeLang.value)}(${probeLang.value}),跳过 → 顺延下一个`;
return "备用:前面都跳过时接手";
}
const langSum = computed(() => {
const missing = [];
const groups = [];
let unlimitedKinds = 0;
for (const k of [1, 2, 3]) {
const list = ofKind(k).filter((o) => o.enabled);
if (!list.length) {
missing.push(k);
continue;
}
const union = /* @__PURE__ */ new Set();
let unlimited = false;
for (const o of list) {
const ls = svcLangs(o.svc_id).split(",").map((x) => x.trim()).filter(Boolean);
if (!ls.length) {
unlimited = true;
break;
}
ls.forEach((l) => union.add(l));
}
if (unlimited) unlimitedKinds++;
else groups.push({ kind: k, langs: [...union] });
}
if (!groups.length) return { missing, unlimited: true, langs: [], groups, unlimitedKinds };
const langs = groups.reduce((acc, g) => acc.filter((l) => g.langs.includes(l)), [...groups[0].langs]).sort((a, b) => langOrder(a) - langOrder(b));
return { missing, unlimited: false, langs, groups, unlimitedKinds };
});
function langOrder(code) {
const i = LANG_OPTIONS.findIndex((o) => o.code === code);
return i < 0 ? Number.MAX_SAFE_INTEGER : i;
}
const langSumFormula = computed(() => {
const parts = [];
for (const k of [1, 2, 3]) {
if (langSum.value.missing.includes(k)) {
parts.push(`${kindLabel(k)} 未配置`);
continue;
}
const g = langSum.value.groups.find((x) => x.kind === k);
parts.push(`${kindLabel(k)} ${g ? g.langs.length + " 种" : "全语种"}`);
}
return parts.join(" ∩ ");
});
const llmDefault = computed(() => ofKind(3).find((o) => o.is_default) ?? null);
const pickable = computed(() => ofKind(3).filter((o) => o.enabled && o.client_visible));
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(_attrs)} data-v-4edbf244><div class="flex items-start justify-between mb-4 flex-wrap gap-3" data-v-4edbf244><div data-v-4edbf244><h2 class="text-lg font-semibold text-slate-800" data-v-4edbf244>会议记录服务</h2><p class="text-xs text-slate-400 mt-1 max-w-3xl" data-v-4edbf244> 识别 / 翻译 / 总结三段,从<b data-v-4edbf244>第三方服务配置</b>里选已配好的服务来编排(不再单独填凭据)。 <span class="text-slate-500" data-v-4edbf244>先配「全局默认」作兜底,再按应用 / 区域覆盖</span>——没配覆盖的应用自动继承全局默认。 </p></div></div><div class="scopebar" data-v-4edbf244><div class="flex items-center gap-2" data-v-4edbf244><span class="text-xs text-slate-500 font-semibold" data-v-4edbf244>作用域</span><select class="select select-bordered select-sm" data-v-4edbf244><option value="" data-v-4edbf244${ssrIncludeBooleanAttr(Array.isArray(scopeApp.value) ? ssrLooseContain(scopeApp.value, "") : ssrLooseEqual(scopeApp.value, "")) ? " selected" : ""}>全局默认(兜底)</option><!--[-->`);
_push(`<div${ssrRenderAttrs(_attrs)} data-v-512b8191><div class="flex items-start justify-between mb-4 flex-wrap gap-3" data-v-512b8191><div data-v-512b8191><h2 class="text-lg font-semibold text-slate-800" data-v-512b8191>会议记录服务</h2><p class="text-xs text-slate-400 mt-1 max-w-3xl" data-v-512b8191> 识别 / 翻译 / 总结三段,从<b data-v-512b8191>第三方服务配置</b>里选已配好的服务来编排(不再单独填凭据)。 <span class="text-slate-500" data-v-512b8191>先配「全局默认」作兜底,再按应用 / 区域覆盖</span>——没配覆盖的应用自动继承全局默认。 </p></div></div><div class="scopebar" data-v-512b8191><div class="flex items-center gap-2" data-v-512b8191><span class="text-xs text-slate-500 font-semibold" data-v-512b8191>作用域</span><select class="select select-bordered select-sm" data-v-512b8191><option value="" data-v-512b8191${ssrIncludeBooleanAttr(Array.isArray(scopeApp.value) ? ssrLooseContain(scopeApp.value, "") : ssrLooseEqual(scopeApp.value, "")) ? " selected" : ""}>全局默认(兜底)</option><!--[-->`);
ssrRenderList(apps.value, (a) => {
_push(`<option${ssrRenderAttr("value", a)} data-v-4edbf244${ssrIncludeBooleanAttr(Array.isArray(scopeApp.value) ? ssrLooseContain(scopeApp.value, a) : ssrLooseEqual(scopeApp.value, a)) ? " selected" : ""}>应用:${ssrInterpolate(a)}</option>`);
_push(`<option${ssrRenderAttr("value", a)} data-v-512b8191${ssrIncludeBooleanAttr(Array.isArray(scopeApp.value) ? ssrLooseContain(scopeApp.value, a) : ssrLooseEqual(scopeApp.value, a)) ? " selected" : ""}>应用:${ssrInterpolate(a)}</option>`);
});
_push(`<!--]--></select><select class="select select-bordered select-sm" data-v-4edbf244><option${ssrRenderAttr("value", 0)} data-v-4edbf244${ssrIncludeBooleanAttr(Array.isArray(scopeRegion.value) ? ssrLooseContain(scopeRegion.value, 0) : ssrLooseEqual(scopeRegion.value, 0)) ? " selected" : ""}>全区域</option><!--[-->`);
_push(`<!--]--></select><select class="select select-bordered select-sm" data-v-512b8191><option${ssrRenderAttr("value", 0)} data-v-512b8191${ssrIncludeBooleanAttr(Array.isArray(scopeRegion.value) ? ssrLooseContain(scopeRegion.value, 0) : ssrLooseEqual(scopeRegion.value, 0)) ? " selected" : ""}>全区域</option><!--[-->`);
ssrRenderList(REGIONS, (r) => {
_push(`<option${ssrRenderAttr("value", r.value)} data-v-4edbf244${ssrIncludeBooleanAttr(Array.isArray(scopeRegion.value) ? ssrLooseContain(scopeRegion.value, r.value) : ssrLooseEqual(scopeRegion.value, r.value)) ? " selected" : ""}>${ssrInterpolate(r.label)}</option>`);
_push(`<option${ssrRenderAttr("value", r.value)} data-v-512b8191${ssrIncludeBooleanAttr(Array.isArray(scopeRegion.value) ? ssrLooseContain(scopeRegion.value, r.value) : ssrLooseEqual(scopeRegion.value, r.value)) ? " selected" : ""}>${ssrInterpolate(r.label)}</option>`);
});
_push(`<!--]--></select></div><span class="text-[11px] text-slate-400" data-v-4edbf244>${ssrInterpolate(scopeApp.value ? `正在编辑「${scopeApp.value}」` : "正在编辑全局默认")}${ssrInterpolate(scopeRegion.value ? ` · ${regionLabel(scopeRegion.value)}` : " · 全区域")} `);
_push(`<!--]--></select></div><span class="text-[11px] text-slate-400" data-v-512b8191>${ssrInterpolate(scopeApp.value ? `正在编辑「${scopeApp.value}」` : "正在编辑全局默认")}${ssrInterpolate(scopeRegion.value ? ` · ${regionLabel(scopeRegion.value)}` : " · 全区域")} `);
if (isOverride.value) {
_push(`<!--[-->(覆盖全局默认)<!--]-->`);
} else {
@ -143,21 +186,52 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
}
_push(`</span></div>`);
if (loading.value) {
_push(`<div class="bg-white rounded-xl border border-slate-100 py-16 text-center" data-v-4edbf244><span class="loading loading-spinner loading-sm" data-v-4edbf244></span></div>`);
_push(`<div class="bg-white rounded-xl border border-slate-100 py-16 text-center" data-v-512b8191><span class="loading loading-spinner loading-sm" data-v-512b8191></span></div>`);
} else {
_push(`<!--[-->`);
_push(`<!--[--><div class="${ssrRenderClass([{ bad: !langSum.value.unlimited && !langSum.value.langs.length, warn: langSum.value.missing.length }, "langsum"])}" data-v-512b8191><div class="langsum-head" data-v-512b8191><span class="langsum-title" data-v-512b8191>当前配置支持的语言</span>`);
if (langSum.value.unlimited) {
_push(`<span class="${ssrRenderClass([{ off: langSum.value.missing.length }, "langsum-count"])}" data-v-512b8191>未限定(各引擎自行判断)</span>`);
} else {
_push(`<span class="${ssrRenderClass([{ off: langSum.value.missing.length }, "langsum-count"])}" data-v-512b8191>${ssrInterpolate(langSum.value.langs.length)} 种`);
if (langSum.value.missing.length) {
_push(`<!--[-->(链路未配全,尚不可用)<!--]-->`);
} else {
_push(`<!---->`);
}
_push(`</span>`);
}
_push(`<span class="langsum-formula" data-v-512b8191>${ssrInterpolate(langSumFormula.value)}</span></div>`);
if (langSum.value.missing.length) {
_push(`<div class="langsum-msg bad" data-v-512b8191> ⚠ ${ssrInterpolate(langSum.value.missing.map(kindLabel).join("、"))}段没有启用中的服务,整条链路走不通——先把这些段配上。 </div>`);
} else if (!langSum.value.unlimited && !langSum.value.langs.length) {
_push(`<div class="langsum-msg bad" data-v-512b8191> ⚠ 各段语言无交集,任何语种都走不完整条链路。放宽某一段的支持语言,或补一个覆盖面更广的服务。 </div>`);
} else {
_push(`<!---->`);
}
if (langSum.value.langs.length) {
_push(`<div class="langsum-langs" data-v-512b8191><!--[-->`);
ssrRenderList(langSum.value.langs, (l) => {
_push(`<span class="lang on"${ssrRenderAttr("title", langName(l))} data-v-512b8191>${ssrInterpolate(l)}</span>`);
});
_push(`<!--]--></div>`);
} else if (langSum.value.unlimited && !langSum.value.missing.length) {
_push(`<div class="langsum-msg" data-v-512b8191> 各段都没限定支持语言(服务未填 languages 字段),实际能否处理由引擎判断。 </div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
if (!available.value.length) {
_push(`<div class="alert alert-warning py-2 text-sm mb-4" data-v-4edbf244><span data-v-4edbf244> 该作用域没有可选服务。先去<b data-v-4edbf244>第三方服务配置</b>添加「录音文件识别 / 机器翻译 / 文本或多媒体大模型」类的服务 (全局默认或该应用作用域),这里才能选。 </span></div>`);
_push(`<div class="alert alert-warning py-2 text-sm mb-4" data-v-512b8191><span data-v-512b8191> 该作用域没有可选服务。先去<b data-v-512b8191>第三方服务配置</b>添加「录音文件识别 / 机器翻译 / 文本或多媒体大模型」类的服务 (全局默认或该应用作用域),这里才能选。 </span></div>`);
} else {
_push(`<!---->`);
}
_push(`<div class="card" data-v-4edbf244><div class="card-head" data-v-4edbf244><div data-v-4edbf244><div class="card-title" data-v-4edbf244>识别(录音文件转写)</div><div class="card-desc" data-v-4edbf244>按顺序找<b data-v-4edbf244>第一个「已启用 + 支持源语言」</b>的服务,不支持则跳到下一个。把便宜的排前面即&quot;优先用性价比高的&quot;。</div></div><div class="flex gap-2 shrink-0" data-v-4edbf244><button class="btn btn-xs"${ssrIncludeBooleanAttr(ofKind(1).length < 2 || busy.value) ? " disabled" : ""} data-v-4edbf244>⇅ 按参考单价重排</button><button class="btn btn-primary btn-xs text-white"${ssrIncludeBooleanAttr(!addable(1).length) ? " disabled" : ""} data-v-4edbf244>+ 添加识别服务</button></div></div><div class="probe-bar" data-v-4edbf244><span class="text-xs text-slate-500 font-semibold" data-v-4edbf244>选路预览</span><select class="select select-bordered select-xs w-44 text-xs" data-v-4edbf244><!--[-->`);
_push(`<div class="card" data-v-512b8191><div class="card-head" data-v-512b8191><div data-v-512b8191><div class="card-title" data-v-512b8191>识别(录音文件转写)</div><div class="card-desc" data-v-512b8191>按顺序找<b data-v-512b8191>第一个「已启用 + 支持源语言」</b>的服务,不支持则跳到下一个。把便宜的排前面即&quot;优先用性价比高的&quot;。</div></div><div class="flex gap-2 shrink-0" data-v-512b8191><button class="btn btn-xs"${ssrIncludeBooleanAttr(ofKind(1).length < 2 || busy.value) ? " disabled" : ""} data-v-512b8191>⇅ 按参考单价重排</button><button class="btn btn-primary btn-xs text-white"${ssrIncludeBooleanAttr(!addable(1).length) ? " disabled" : ""} data-v-512b8191>+ 添加识别服务</button></div></div><div class="probe-bar" data-v-512b8191><span class="text-xs text-slate-500 font-semibold" data-v-512b8191>选路预览</span><select class="select select-bordered select-xs w-44 text-xs" data-v-512b8191><!--[-->`);
ssrRenderList(unref(LANG_OPTIONS), (o) => {
_push(`<option${ssrRenderAttr("value", o.code)} data-v-4edbf244${ssrIncludeBooleanAttr(Array.isArray(probeLang.value) ? ssrLooseContain(probeLang.value, o.code) : ssrLooseEqual(probeLang.value, o.code)) ? " selected" : ""}>${ssrInterpolate(o.code)} · ${ssrInterpolate(o.name)}</option>`);
_push(`<option${ssrRenderAttr("value", o.code)} data-v-512b8191${ssrIncludeBooleanAttr(Array.isArray(probeLang.value) ? ssrLooseContain(probeLang.value, o.code) : ssrLooseEqual(probeLang.value, o.code)) ? " selected" : ""}>${ssrInterpolate(o.code)} · ${ssrInterpolate(o.name)}</option>`);
});
_push(`<!--]--></select>`);
if (asrHit.value) {
_push(`<span class="probe-out" data-v-4edbf244>命中 ${ssrInterpolate(svcName(asrHit.value.svc_id))}`);
_push(`<span class="probe-out" data-v-512b8191>命中 ${ssrInterpolate(svcName(asrHit.value.svc_id))}`);
if (asrHit.value.cost_hint) {
_push(`<!--[--> · ¥${ssrInterpolate(asrHit.value.cost_hint)}/时<!--]-->`);
} else {
@ -165,55 +239,55 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
}
_push(`</span>`);
} else {
_push(`<span class="probe-out bad" data-v-4edbf244>无可用服务 —— ${ssrInterpolate(langName(probeLang.value))} 会转写失败</span>`);
_push(`<span class="probe-out bad" data-v-512b8191>无可用服务 —— ${ssrInterpolate(langName(probeLang.value))} 会转写失败</span>`);
}
_push(`</div>`);
if (!ofKind(1).length) {
_push(`<div class="py-10 text-center text-slate-400 text-sm" data-v-4edbf244>暂无识别服务,点右上「+ 添加识别服务」</div>`);
_push(`<div class="py-10 text-center text-slate-400 text-sm" data-v-512b8191>暂无识别服务,点右上「+ 添加识别服务」</div>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(ofKind(1), (o, i) => {
_push(`<div class="${ssrRenderClass([{ hit: asrHit.value && asrHit.value.row_id === o.row_id, off: !o.enabled }, "svc asr"])}" data-v-4edbf244><div class="${ssrRenderClass([{ hit: asrHit.value && asrHit.value.row_id === o.row_id }, "svc-rank"])}" data-v-4edbf244>${ssrInterpolate(i + 1)}</div><div class="min-w-0" data-v-4edbf244><div class="${ssrRenderClass([{ skip: asrSkipped(o) }, "svc-name"])}" data-v-4edbf244>${ssrInterpolate(svcName(o.svc_id))}</div><div class="svc-prov" data-v-4edbf244>${ssrInterpolate(svcProvider(o.svc_id))} · ${ssrInterpolate(o.svc_id)}</div></div><div class="flex flex-wrap gap-1" data-v-4edbf244>`);
_push(`<div class="${ssrRenderClass([{ hit: asrHit.value && asrHit.value.row_id === o.row_id, off: !o.enabled }, "svc asr"])}" data-v-512b8191><div class="${ssrRenderClass([{ hit: asrHit.value && asrHit.value.row_id === o.row_id }, "svc-rank"])}" data-v-512b8191>${ssrInterpolate(i + 1)}</div><div class="min-w-0" data-v-512b8191><div class="${ssrRenderClass([{ skip: asrSkipped(o) }, "svc-name"])}" data-v-512b8191>${ssrInterpolate(svcName(o.svc_id))}</div><div class="svc-prov" data-v-512b8191>${ssrInterpolate(svcProvider(o.svc_id))} · ${ssrInterpolate(o.svc_id)}</div></div><div class="flex flex-wrap gap-1" data-v-512b8191>`);
if (svcLangs(o.svc_id)) {
_push(`<!--[--><!--[-->`);
ssrRenderList(svcLangs(o.svc_id).split(",").slice(0, 5), (l) => {
_push(`<span class="${ssrRenderClass([{ on: l === probeLang.value }, "lang"])}" data-v-4edbf244>${ssrInterpolate(l)}</span>`);
_push(`<span class="${ssrRenderClass([{ on: l === probeLang.value }, "lang"])}" data-v-512b8191>${ssrInterpolate(l)}</span>`);
});
_push(`<!--]-->`);
if (svcLangs(o.svc_id).split(",").length > 5) {
_push(`<span class="lang" data-v-4edbf244>+${ssrInterpolate(svcLangs(o.svc_id).split(",").length - 5)}</span>`);
_push(`<span class="lang" data-v-512b8191>+${ssrInterpolate(svcLangs(o.svc_id).split(",").length - 5)}</span>`);
} else {
_push(`<!---->`);
}
_push(`<!--]-->`);
} else {
_push(`<span class="text-[11px] text-slate-400" data-v-4edbf244>未限定</span>`);
_push(`<span class="text-[11px] text-slate-400" data-v-512b8191>未限定</span>`);
}
_push(`</div><div class="svc-cost" data-v-4edbf244>`);
_push(`</div><div class="svc-cost" data-v-512b8191>`);
if (o.cost_hint) {
_push(`<!--[-->¥${ssrInterpolate(o.cost_hint)}<small data-v-4edbf244> /时</small><!--]-->`);
_push(`<!--[-->¥${ssrInterpolate(o.cost_hint)}<small data-v-512b8191> /时</small><!--]-->`);
} else {
_push(`<span class="text-slate-300" data-v-4edbf244>—</span>`);
_push(`<span class="text-slate-300" data-v-512b8191>—</span>`);
}
_push(`</div><div data-v-4edbf244><input type="checkbox" class="toggle toggle-success toggle-sm"${ssrIncludeBooleanAttr(o.enabled) ? " checked" : ""}${ssrIncludeBooleanAttr(busy.value) ? " disabled" : ""} data-v-4edbf244></div><div class="svc-acts" data-v-4edbf244><button class="arrow"${ssrIncludeBooleanAttr(i === 0 || busy.value) ? " disabled" : ""} aria-label="上移" data-v-4edbf244>↑</button><button class="arrow"${ssrIncludeBooleanAttr(i === ofKind(1).length - 1 || busy.value) ? " disabled" : ""} aria-label="下移" data-v-4edbf244>↓</button><button class="btn btn-ghost btn-xs" data-v-4edbf244>单价</button><button class="btn btn-ghost btn-xs text-red-500" data-v-4edbf244>移除</button></div><div class="${ssrRenderClass([asrWhyClass(o), "svc-why"])}" data-v-4edbf244>${ssrInterpolate(asrWhy(o))}</div></div>`);
_push(`</div><div data-v-512b8191><input type="checkbox" class="toggle toggle-success toggle-sm"${ssrIncludeBooleanAttr(o.enabled) ? " checked" : ""}${ssrIncludeBooleanAttr(busy.value) ? " disabled" : ""} data-v-512b8191></div><div class="svc-acts" data-v-512b8191><button class="arrow"${ssrIncludeBooleanAttr(i === 0 || busy.value) ? " disabled" : ""} aria-label="上移" data-v-512b8191>↑</button><button class="arrow"${ssrIncludeBooleanAttr(i === ofKind(1).length - 1 || busy.value) ? " disabled" : ""} aria-label="下移" data-v-512b8191>↓</button><button class="btn btn-ghost btn-xs" data-v-512b8191>单价</button><button class="btn btn-ghost btn-xs text-red-500" data-v-512b8191>移除</button></div><div class="${ssrRenderClass([asrWhyClass(o), "svc-why"])}" data-v-512b8191>${ssrInterpolate(asrWhy(o))}</div></div>`);
});
_push(`<!--]--></div><div class="card mt-4" data-v-4edbf244><div class="card-head" data-v-4edbf244><div data-v-4edbf244><div class="card-title" data-v-4edbf244>翻译</div><div class="card-desc" data-v-4edbf244>按顺序取<b data-v-4edbf244>第一个已启用</b>的服务;调用失败自动回退下一个。</div></div><div class="flex gap-2 shrink-0" data-v-4edbf244><button class="btn btn-xs"${ssrIncludeBooleanAttr(ofKind(2).length < 2 || busy.value) ? " disabled" : ""} data-v-4edbf244>⇅ 按参考单价重排</button><button class="btn btn-primary btn-xs text-white"${ssrIncludeBooleanAttr(!addable(2).length) ? " disabled" : ""} data-v-4edbf244>+ 添加翻译服务</button></div></div>`);
_push(`<!--]--></div><div class="card mt-4" data-v-512b8191><div class="card-head" data-v-512b8191><div data-v-512b8191><div class="card-title" data-v-512b8191>翻译</div><div class="card-desc" data-v-512b8191>按顺序取<b data-v-512b8191>第一个已启用</b>的服务;调用失败自动回退下一个。</div></div><div class="flex gap-2 shrink-0" data-v-512b8191><button class="btn btn-xs"${ssrIncludeBooleanAttr(ofKind(2).length < 2 || busy.value) ? " disabled" : ""} data-v-512b8191>⇅ 按参考单价重排</button><button class="btn btn-primary btn-xs text-white"${ssrIncludeBooleanAttr(!addable(2).length) ? " disabled" : ""} data-v-512b8191>+ 添加翻译服务</button></div></div>`);
if (!ofKind(2).length) {
_push(`<div class="py-10 text-center text-slate-400 text-sm" data-v-4edbf244>暂无翻译服务</div>`);
_push(`<div class="py-10 text-center text-slate-400 text-sm" data-v-512b8191>暂无翻译服务</div>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(ofKind(2), (o, i) => {
_push(`<div class="${ssrRenderClass([{ hit: mtHit.value && mtHit.value.row_id === o.row_id, off: !o.enabled }, "svc mt"])}" data-v-4edbf244><div class="${ssrRenderClass([{ hit: mtHit.value && mtHit.value.row_id === o.row_id }, "svc-rank"])}" data-v-4edbf244>${ssrInterpolate(i + 1)}</div><div class="min-w-0" data-v-4edbf244><div class="svc-name" data-v-4edbf244>${ssrInterpolate(svcName(o.svc_id))}</div><div class="svc-prov" data-v-4edbf244>${ssrInterpolate(svcProvider(o.svc_id))} · ${ssrInterpolate(o.svc_id)}</div></div><div class="svc-cost" data-v-4edbf244>`);
_push(`<div class="${ssrRenderClass([{ hit: mtHit.value && mtHit.value.row_id === o.row_id, off: !o.enabled }, "svc mt"])}" data-v-512b8191><div class="${ssrRenderClass([{ hit: mtHit.value && mtHit.value.row_id === o.row_id }, "svc-rank"])}" data-v-512b8191>${ssrInterpolate(i + 1)}</div><div class="min-w-0" data-v-512b8191><div class="svc-name" data-v-512b8191>${ssrInterpolate(svcName(o.svc_id))}</div><div class="svc-prov" data-v-512b8191>${ssrInterpolate(svcProvider(o.svc_id))} · ${ssrInterpolate(o.svc_id)}</div></div><div class="svc-cost" data-v-512b8191>`);
if (o.cost_hint) {
_push(`<!--[-->¥${ssrInterpolate(o.cost_hint)}<small data-v-4edbf244> /百万字符</small><!--]-->`);
_push(`<!--[-->¥${ssrInterpolate(o.cost_hint)}<small data-v-512b8191> /百万字符</small><!--]-->`);
} else {
_push(`<span class="text-slate-300" data-v-4edbf244>—</span>`);
_push(`<span class="text-slate-300" data-v-512b8191>—</span>`);
}
_push(`</div><div data-v-4edbf244><input type="checkbox" class="toggle toggle-success toggle-sm"${ssrIncludeBooleanAttr(o.enabled) ? " checked" : ""}${ssrIncludeBooleanAttr(busy.value) ? " disabled" : ""} data-v-4edbf244></div><div class="svc-acts" data-v-4edbf244><button class="arrow"${ssrIncludeBooleanAttr(i === 0 || busy.value) ? " disabled" : ""} aria-label="上移" data-v-4edbf244>↑</button><button class="arrow"${ssrIncludeBooleanAttr(i === ofKind(2).length - 1 || busy.value) ? " disabled" : ""} aria-label="下移" data-v-4edbf244>↓</button><button class="btn btn-ghost btn-xs" data-v-4edbf244>单价</button><button class="btn btn-ghost btn-xs text-red-500" data-v-4edbf244>移除</button></div><div class="${ssrRenderClass([!o.enabled ? "no" : mtHit.value && mtHit.value.row_id === o.row_id ? "ok" : "", "svc-why"])}" data-v-4edbf244>`);
_push(`</div><div data-v-512b8191><input type="checkbox" class="toggle toggle-success toggle-sm"${ssrIncludeBooleanAttr(o.enabled) ? " checked" : ""}${ssrIncludeBooleanAttr(busy.value) ? " disabled" : ""} data-v-512b8191></div><div class="svc-acts" data-v-512b8191><button class="arrow"${ssrIncludeBooleanAttr(i === 0 || busy.value) ? " disabled" : ""} aria-label="上移" data-v-512b8191>↑</button><button class="arrow"${ssrIncludeBooleanAttr(i === ofKind(2).length - 1 || busy.value) ? " disabled" : ""} aria-label="下移" data-v-512b8191>↓</button><button class="btn btn-ghost btn-xs" data-v-512b8191>单价</button><button class="btn btn-ghost btn-xs text-red-500" data-v-512b8191>移除</button></div><div class="${ssrRenderClass([!o.enabled ? "no" : mtHit.value && mtHit.value.row_id === o.row_id ? "ok" : "", "svc-why"])}" data-v-512b8191>`);
if (!o.enabled) {
_push(`<!--[-->已停用,跳过<!--]-->`);
} else if (mtHit.value && mtHit.value.row_id === o.row_id) {
@ -223,64 +297,64 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
}
_push(`</div></div>`);
});
_push(`<!--]--></div><div class="card mt-4" data-v-4edbf244><div class="card-head" data-v-4edbf244><div data-v-4edbf244><div class="card-title" data-v-4edbf244>总结(大模型)</div><div class="card-desc" data-v-4edbf244>后台指定默认模型,客户端可在允许范围内自选。带 🖼 的是<b data-v-4edbf244>多媒体大模型</b>,能识别会议里的图片。</div></div><button class="btn btn-primary btn-xs text-white shrink-0"${ssrIncludeBooleanAttr(!addable(3).length) ? " disabled" : ""} data-v-4edbf244>+ 添加模型</button></div><div class="mode-bar" data-v-4edbf244><label class="flex items-center gap-2 cursor-pointer shrink-0" data-v-4edbf244><input type="checkbox" class="toggle toggle-primary toggle-sm"${ssrIncludeBooleanAttr(llmClientChoice.value) ? " checked" : ""}${ssrIncludeBooleanAttr(busy.value) ? " disabled" : ""} data-v-4edbf244><span class="text-sm font-semibold text-slate-700" data-v-4edbf244>允许客户端指定模型</span></label><p class="mode-txt" data-v-4edbf244>`);
_push(`<!--]--></div><div class="card mt-4" data-v-512b8191><div class="card-head" data-v-512b8191><div data-v-512b8191><div class="card-title" data-v-512b8191>总结(大模型)</div><div class="card-desc" data-v-512b8191>后台指定默认模型,客户端可在允许范围内自选。带 🖼 的是<b data-v-512b8191>多媒体大模型</b>,能识别会议里的图片。</div></div><button class="btn btn-primary btn-xs text-white shrink-0"${ssrIncludeBooleanAttr(!addable(3).length) ? " disabled" : ""} data-v-512b8191>+ 添加模型</button></div><div class="mode-bar" data-v-512b8191><label class="flex items-center gap-2 cursor-pointer shrink-0" data-v-512b8191><input type="checkbox" class="toggle toggle-primary toggle-sm"${ssrIncludeBooleanAttr(llmClientChoice.value) ? " checked" : ""}${ssrIncludeBooleanAttr(busy.value) ? " disabled" : ""} data-v-512b8191><span class="text-sm font-semibold text-slate-700" data-v-512b8191>允许客户端指定模型</span></label><p class="mode-txt" data-v-512b8191>`);
if (llmClientChoice.value) {
_push(`<!--[--> 前端能选 <b data-v-4edbf244>${ssrInterpolate(pickable.value.length)}</b> 个模型`);
_push(`<!--[--> 前端能选 <b data-v-512b8191>${ssrInterpolate(pickable.value.length)}</b> 个模型`);
if (pickable.value.length) {
_push(`<!--[-->:${ssrInterpolate(pickable.value.map((x) => svcName(x.svc_id)).join("、"))}<!--]-->`);
} else {
_push(`<!--[-->(一个都没勾「前端可见」,等同强制默认)<!--]-->`);
}
_push(`。不传则用默认 <b data-v-4edbf244>${ssrInterpolate(llmDefault.value ? svcName(llmDefault.value.svc_id) : "—")}</b>。 <!--]-->`);
_push(`。不传则用默认 <b data-v-512b8191>${ssrInterpolate(llmDefault.value ? svcName(llmDefault.value.svc_id) : "—")}</b>。 <!--]-->`);
} else {
_push(`<!--[--> 前端不下发模型列表,一律走默认模型 <b data-v-4edbf244>${ssrInterpolate(llmDefault.value ? svcName(llmDefault.value.svc_id) : "—")}</b>;客户端传了也忽略。 <!--]-->`);
_push(`<!--[--> 前端不下发模型列表,一律走默认模型 <b data-v-512b8191>${ssrInterpolate(llmDefault.value ? svcName(llmDefault.value.svc_id) : "—")}</b>;客户端传了也忽略。 <!--]-->`);
}
_push(`</p></div>`);
if (!ofKind(3).length) {
_push(`<div class="py-10 text-center text-slate-400 text-sm" data-v-4edbf244>暂无模型</div>`);
_push(`<div class="py-10 text-center text-slate-400 text-sm" data-v-512b8191>暂无模型</div>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(ofKind(3), (o) => {
_push(`<div class="${ssrRenderClass([{ isdefault: o.is_default, off: !o.enabled }, "svc llm"])}" data-v-4edbf244><div class="grid place-items-center" data-v-4edbf244><input type="radio" name="llmdef" class="radio radio-primary radio-xs"${ssrIncludeBooleanAttr(o.is_default) ? " checked" : ""}${ssrIncludeBooleanAttr(!o.enabled || busy.value) ? " disabled" : ""} data-v-4edbf244></div><div class="min-w-0" data-v-4edbf244><div class="svc-name" data-v-4edbf244>${ssrInterpolate(svcName(o.svc_id))} `);
_push(`<div class="${ssrRenderClass([{ isdefault: o.is_default, off: !o.enabled }, "svc llm"])}" data-v-512b8191><div class="grid place-items-center" data-v-512b8191><input type="radio" name="llmdef" class="radio radio-primary radio-xs"${ssrIncludeBooleanAttr(o.is_default) ? " checked" : ""}${ssrIncludeBooleanAttr(!o.enabled || busy.value) ? " disabled" : ""} data-v-512b8191></div><div class="min-w-0" data-v-512b8191><div class="svc-name" data-v-512b8191>${ssrInterpolate(svcName(o.svc_id))} `);
if (isVision(o.svc_id)) {
_push(`<span title="多媒体大模型,能识图" data-v-4edbf244>🖼</span>`);
_push(`<span title="多媒体大模型,能识图" data-v-512b8191>🖼</span>`);
} else {
_push(`<!---->`);
}
if (o.is_default) {
_push(`<span class="chip chip-app ml-1" data-v-4edbf244>默认</span>`);
_push(`<span class="chip chip-app ml-1" data-v-512b8191>默认</span>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="svc-prov" data-v-4edbf244>${ssrInterpolate(svcProvider(o.svc_id))} · ${ssrInterpolate(o.svc_id)}</div></div><div class="svc-cost" data-v-4edbf244>`);
_push(`</div><div class="svc-prov" data-v-512b8191>${ssrInterpolate(svcProvider(o.svc_id))} · ${ssrInterpolate(o.svc_id)}</div></div><div class="svc-cost" data-v-512b8191>`);
if (o.cost_hint) {
_push(`<!--[-->¥${ssrInterpolate(o.cost_hint)}<small data-v-4edbf244> /百万token</small><!--]-->`);
_push(`<!--[-->¥${ssrInterpolate(o.cost_hint)}<small data-v-512b8191> /百万token</small><!--]-->`);
} else {
_push(`<span class="text-slate-300" data-v-4edbf244>—</span>`);
_push(`<span class="text-slate-300" data-v-512b8191>—</span>`);
}
_push(`</div><div data-v-4edbf244><input type="checkbox" class="toggle toggle-success toggle-sm"${ssrIncludeBooleanAttr(o.client_visible) ? " checked" : ""}${ssrIncludeBooleanAttr(!llmClientChoice.value || !o.enabled || busy.value) ? " disabled" : ""}${ssrRenderAttr("title", !llmClientChoice.value ? "先打开「允许客户端指定模型」" : "")} data-v-4edbf244></div><div data-v-4edbf244><input type="checkbox" class="toggle toggle-success toggle-sm"${ssrIncludeBooleanAttr(o.enabled) ? " checked" : ""}${ssrIncludeBooleanAttr(busy.value) ? " disabled" : ""} data-v-4edbf244></div><div class="svc-acts" data-v-4edbf244><button class="btn btn-ghost btn-xs" data-v-4edbf244>单价</button><button class="btn btn-ghost btn-xs text-red-500" data-v-4edbf244>移除</button></div></div>`);
_push(`</div><div data-v-512b8191><input type="checkbox" class="toggle toggle-success toggle-sm"${ssrIncludeBooleanAttr(o.client_visible) ? " checked" : ""}${ssrIncludeBooleanAttr(!llmClientChoice.value || !o.enabled || busy.value) ? " disabled" : ""}${ssrRenderAttr("title", !llmClientChoice.value ? "先打开「允许客户端指定模型」" : "")} data-v-512b8191></div><div data-v-512b8191><input type="checkbox" class="toggle toggle-success toggle-sm"${ssrIncludeBooleanAttr(o.enabled) ? " checked" : ""}${ssrIncludeBooleanAttr(busy.value) ? " disabled" : ""} data-v-512b8191></div><div class="svc-acts" data-v-512b8191><button class="btn btn-ghost btn-xs" data-v-512b8191>单价</button><button class="btn btn-ghost btn-xs text-red-500" data-v-512b8191>移除</button></div></div>`);
});
_push(`<!--]--><div class="col-h llm-h" data-v-4edbf244><div data-v-4edbf244></div><div data-v-4edbf244></div><div data-v-4edbf244>参考单价</div><div data-v-4edbf244>前端可见</div><div data-v-4edbf244>启用</div><div data-v-4edbf244></div></div></div><!--]-->`);
_push(`<!--]--><div class="col-h llm-h" data-v-512b8191><div data-v-512b8191></div><div data-v-512b8191></div><div data-v-512b8191>参考单价</div><div data-v-512b8191>前端可见</div><div data-v-512b8191>启用</div><div data-v-512b8191></div></div></div><!--]-->`);
}
_push(`<dialog class="modal" data-v-4edbf244><div class="modal-box max-w-md" data-v-4edbf244><h3 class="font-bold text-lg" data-v-4edbf244>添加${ssrInterpolate(kindLabel(addKind.value))}服务</h3><p class="text-xs text-slate-400 mt-1" data-v-4edbf244>从第三方服务配置里选一个已配好的服务加入本段编排。</p><div class="mt-4 space-y-3" data-v-4edbf244><div class="form-control" data-v-4edbf244><label class="label py-1" data-v-4edbf244><span class="label-text text-sm font-medium" data-v-4edbf244>服务</span></label><select class="select select-bordered select-sm" data-v-4edbf244><option value="" data-v-4edbf244${ssrIncludeBooleanAttr(Array.isArray(addForm.svc_id) ? ssrLooseContain(addForm.svc_id, "") : ssrLooseEqual(addForm.svc_id, "")) ? " selected" : ""}>请选择服务…</option><!--[-->`);
_push(`<dialog class="modal" data-v-512b8191><div class="modal-box max-w-md" data-v-512b8191><h3 class="font-bold text-lg" data-v-512b8191>添加${ssrInterpolate(kindLabel(addKind.value))}服务</h3><p class="text-xs text-slate-400 mt-1" data-v-512b8191>从第三方服务配置里选一个已配好的服务加入本段编排。</p><div class="mt-4 space-y-3" data-v-512b8191><div class="form-control" data-v-512b8191><label class="label py-1" data-v-512b8191><span class="label-text text-sm font-medium" data-v-512b8191>服务</span></label><select class="select select-bordered select-sm" data-v-512b8191><option value="" data-v-512b8191${ssrIncludeBooleanAttr(Array.isArray(addForm.svc_id) ? ssrLooseContain(addForm.svc_id, "") : ssrLooseEqual(addForm.svc_id, "")) ? " selected" : ""}>请选择服务…</option><!--[-->`);
ssrRenderList(addable(addKind.value), (s) => {
_push(`<option${ssrRenderAttr("value", s.id)} data-v-4edbf244${ssrIncludeBooleanAttr(Array.isArray(addForm.svc_id) ? ssrLooseContain(addForm.svc_id, s.id) : ssrLooseEqual(addForm.svc_id, s.id)) ? " selected" : ""}>${ssrInterpolate(s.name)}${ssrInterpolate(addKind.value === 3 && catsHas(s.categories, 9) ? " 🖼" : "")}(${ssrInterpolate(s.provider || s.id)}) </option>`);
_push(`<option${ssrRenderAttr("value", s.id)} data-v-512b8191${ssrIncludeBooleanAttr(Array.isArray(addForm.svc_id) ? ssrLooseContain(addForm.svc_id, s.id) : ssrLooseEqual(addForm.svc_id, s.id)) ? " selected" : ""}>${ssrInterpolate(s.name)}${ssrInterpolate(addKind.value === 3 && catsHas(s.categories, 9) ? " 🖼" : "")}(${ssrInterpolate(s.provider || s.id)}) </option>`);
});
_push(`<!--]--></select>`);
if (!addable(addKind.value).length) {
_push(`<span class="text-[11px] text-amber-600 mt-1" data-v-4edbf244>没有可添加的服务了(都加过了,或服务池里没这类服务)。</span>`);
_push(`<span class="text-[11px] text-amber-600 mt-1" data-v-512b8191>没有可添加的服务了(都加过了,或服务池里没这类服务)。</span>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="form-control" data-v-4edbf244><label class="label py-1" data-v-4edbf244><span class="label-text text-sm font-medium" data-v-4edbf244>参考单价(${ssrInterpolate(costUnit(addKind.value))},可空)</span></label><input${ssrRenderAttr("value", addForm.cost_hint)} type="number" step="0.01" min="0" class="input input-bordered input-sm font-mono text-xs" placeholder="0" data-v-4edbf244><span class="text-[11px] text-slate-400 mt-1" data-v-4edbf244>仅用于排序/展示,填你的实付价。</span></div>`);
_push(`</div><div class="form-control" data-v-512b8191><label class="label py-1" data-v-512b8191><span class="label-text text-sm font-medium" data-v-512b8191>参考单价(${ssrInterpolate(costUnit(addKind.value))},可空)</span></label><input${ssrRenderAttr("value", addForm.cost_hint)} type="number" step="0.01" min="0" class="input input-bordered input-sm font-mono text-xs" placeholder="0" data-v-512b8191><span class="text-[11px] text-slate-400 mt-1" data-v-512b8191>仅用于排序/展示,填你的实付价。</span></div>`);
if (addKind.value === 3) {
_push(`<div class="flex gap-4" data-v-4edbf244><label class="flex items-center gap-2 cursor-pointer" data-v-4edbf244><input${ssrIncludeBooleanAttr(Array.isArray(addForm.is_default) ? ssrLooseContain(addForm.is_default, null) : addForm.is_default) ? " checked" : ""} type="checkbox" class="toggle toggle-primary toggle-sm" data-v-4edbf244><span class="text-sm" data-v-4edbf244>设为默认</span></label><label class="flex items-center gap-2 cursor-pointer" data-v-4edbf244><input${ssrIncludeBooleanAttr(Array.isArray(addForm.client_visible) ? ssrLooseContain(addForm.client_visible, null) : addForm.client_visible) ? " checked" : ""} type="checkbox" class="toggle toggle-success toggle-sm" data-v-4edbf244><span class="text-sm" data-v-4edbf244>前端可见</span></label></div>`);
_push(`<div class="flex gap-4" data-v-512b8191><label class="flex items-center gap-2 cursor-pointer" data-v-512b8191><input${ssrIncludeBooleanAttr(Array.isArray(addForm.is_default) ? ssrLooseContain(addForm.is_default, null) : addForm.is_default) ? " checked" : ""} type="checkbox" class="toggle toggle-primary toggle-sm" data-v-512b8191><span class="text-sm" data-v-512b8191>设为默认</span></label><label class="flex items-center gap-2 cursor-pointer" data-v-512b8191><input${ssrIncludeBooleanAttr(Array.isArray(addForm.client_visible) ? ssrLooseContain(addForm.client_visible, null) : addForm.client_visible) ? " checked" : ""} type="checkbox" class="toggle toggle-success toggle-sm" data-v-512b8191><span class="text-sm" data-v-512b8191>前端可见</span></label></div>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="modal-action" data-v-4edbf244><button class="btn btn-ghost btn-sm" data-v-4edbf244>取消</button><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(!addForm.svc_id || saving.value) ? " disabled" : ""} data-v-4edbf244>${ssrInterpolate(saving.value ? "添加中…" : "添加")}</button></div></div><form method="dialog" class="modal-backdrop" data-v-4edbf244><button data-v-4edbf244>close</button></form></dialog><dialog class="modal" data-v-4edbf244><div class="modal-box max-w-sm" data-v-4edbf244><h3 class="font-bold text-lg" data-v-4edbf244>参考单价</h3><p class="text-xs text-slate-400 mt-1" data-v-4edbf244>${ssrInterpolate(costEdit.name)}(${ssrInterpolate(costUnit(costEdit.kind))})</p><input${ssrRenderAttr("value", costEdit.cost_hint)} type="number" step="0.01" min="0" class="input input-bordered input-sm w-full font-mono text-xs mt-3" placeholder="0" data-v-4edbf244><div class="modal-action" data-v-4edbf244><button class="btn btn-ghost btn-sm" data-v-4edbf244>取消</button><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(saving.value) ? " disabled" : ""} data-v-4edbf244>保存</button></div></div><form method="dialog" class="modal-backdrop" data-v-4edbf244><button data-v-4edbf244>close</button></form></dialog></div>`);
_push(`</div><div class="modal-action" data-v-512b8191><button class="btn btn-ghost btn-sm" data-v-512b8191>取消</button><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(!addForm.svc_id || saving.value) ? " disabled" : ""} data-v-512b8191>${ssrInterpolate(saving.value ? "添加中…" : "添加")}</button></div></div><form method="dialog" class="modal-backdrop" data-v-512b8191><button data-v-512b8191>close</button></form></dialog><dialog class="modal" data-v-512b8191><div class="modal-box max-w-sm" data-v-512b8191><h3 class="font-bold text-lg" data-v-512b8191>参考单价</h3><p class="text-xs text-slate-400 mt-1" data-v-512b8191>${ssrInterpolate(costEdit.name)}(${ssrInterpolate(costUnit(costEdit.kind))})</p><input${ssrRenderAttr("value", costEdit.cost_hint)} type="number" step="0.01" min="0" class="input input-bordered input-sm w-full font-mono text-xs mt-3" placeholder="0" data-v-512b8191><div class="modal-action" data-v-512b8191><button class="btn btn-ghost btn-sm" data-v-512b8191>取消</button><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(saving.value) ? " disabled" : ""} data-v-512b8191>保存</button></div></div><form method="dialog" class="modal-backdrop" data-v-512b8191><button data-v-512b8191>close</button></form></dialog></div>`);
};
}
});
@ -290,7 +364,7 @@ _sfc_main.setup = (props, ctx) => {
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/meetingsvc.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const meetingsvc = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4edbf244"]]);
const meetingsvc = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-512b8191"]]);
export { meetingsvc as default };
//# sourceMappingURL=meetingsvc-Dcq0cJyO.mjs.map
//# sourceMappingURL=meetingsvc-BKMj3MwH.mjs.map

1
apps/admin/.output/server/chunks/build/meetingsvc-BKMj3MwH.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"meetingsvc-BKMj3MwH.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-BKMj3MwH.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

1
apps/admin/.output/server/chunks/build/meetingsvc-Dcq0cJyO.mjs.map

@ -1 +0,0 @@
{"version":3,"file":"meetingsvc-Dcq0cJyO.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-Dcq0cJyO.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

8
apps/admin/.output/server/chunks/build/meetingsvc-styles.CJmYxbsV.mjs

File diff suppressed because one or more lines are too long

1
apps/admin/.output/server/chunks/build/meetingsvc-styles.CJmYxbsV.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"meetingsvc-styles.CJmYxbsV.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles-1.mjs-Bm4lU46E.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles.CJmYxbsV.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}

8
apps/admin/.output/server/chunks/build/meetingsvc-styles.CM1HF5Dg.mjs

@ -1,8 +0,0 @@
const meetingsvc_vue_vue_type_style_index_0_scoped_4edbf244_lang = ".scopebar[data-v-4edbf244]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#f8fafc;border:1px solid #eef2f7;border-radius:11px;padding:10px 13px;margin-bottom:16px}.card[data-v-4edbf244]{background:#fff;border:1px solid #eef2f7;border-radius:14px;box-shadow:0 1px 2px #0f172a0a;overflow:hidden}.card-head[data-v-4edbf244]{padding:15px 18px;border-bottom:1px solid #eef2f7;display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}.card-title[data-v-4edbf244]{font-size:14.5px;font-weight:700;color:#1e293b}.card-desc[data-v-4edbf244]{font-size:11.5px;color:#64748b;margin-top:3px;max-width:76ch;line-height:1.55}.probe-bar[data-v-4edbf244]{display:flex;align-items:center;gap:10px;padding:11px 16px;background:#fcfcfd;border-bottom:1px solid #eef2f7;flex-wrap:wrap}.probe-out[data-v-4edbf244]{font-size:11.5px;font-weight:600;color:#15803d;background:#dcfce7;padding:3px 9px;border-radius:6px}.probe-out.bad[data-v-4edbf244]{color:#dc2626;background:#fee2e2}.mode-bar[data-v-4edbf244]{display:flex;align-items:center;gap:14px;padding:12px 16px;background:#fcfcfd;border-bottom:1px solid #eef2f7;flex-wrap:wrap}.mode-txt[data-v-4edbf244]{font-size:12px;color:#64748b;flex:1;min-width:260px;line-height:1.6;margin:0}.mode-txt b[data-v-4edbf244]{color:#1e293b;font-weight:600}.svc[data-v-4edbf244]{display:grid;gap:12px;align-items:center;padding:11px 16px;border-bottom:1px solid #eef2f7}.svc[data-v-4edbf244]:last-child{border-bottom:0}.svc[data-v-4edbf244]:hover{background:#fcfcfd}.svc.off[data-v-4edbf244]{opacity:.55}.svc.hit[data-v-4edbf244]{background:linear-gradient(90deg,#dcfce7,transparent 42%)}.svc.isdefault[data-v-4edbf244]{background:linear-gradient(90deg,#eef2ff,transparent 42%)}.svc.asr[data-v-4edbf244]{grid-template-columns:34px 1fr 170px 110px 60px auto}.svc.mt[data-v-4edbf244]{grid-template-columns:34px 1fr 130px 60px auto}.svc.llm[data-v-4edbf244]{grid-template-columns:40px 1fr 130px 90px 60px auto}.col-h[data-v-4edbf244]{padding:8px 16px;background:#fcfcfd;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8;font-weight:700;display:grid;gap:12px}.col-h.llm-h[data-v-4edbf244]{grid-template-columns:40px 1fr 130px 90px 60px auto;border-top:1px solid #eef2f7}.svc-rank[data-v-4edbf244]{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:#f8fafc;border:1px solid #e2e8f0;color:#64748b;font-family:SF Mono,Menlo,monospace;font-size:12px;font-weight:700}.svc-rank.hit[data-v-4edbf244]{background:#16a34a;border-color:#16a34a;color:#fff}.svc-name[data-v-4edbf244]{font-weight:600;font-size:13.5px;color:#334155}.svc-name.skip[data-v-4edbf244]{text-decoration:line-through;text-decoration-color:#cbd5e1}.svc-prov[data-v-4edbf244]{font-size:11px;color:#94a3b8;margin-top:2px}.svc-cost[data-v-4edbf244],.svc-prov[data-v-4edbf244]{font-family:SF Mono,Menlo,monospace}.svc-cost[data-v-4edbf244]{font-size:12.5px;font-variant-numeric:tabular-nums;color:#334155}.svc-cost small[data-v-4edbf244]{color:#94a3b8;font-size:10px}.svc-acts[data-v-4edbf244]{display:flex;gap:3px;align-items:center;justify-content:flex-end}.svc-why[data-v-4edbf244]{grid-column:2/-1;font-size:11px;color:#64748b;margin-top:-2px}.svc-why.ok[data-v-4edbf244]{color:#15803d;font-weight:600}.svc-why.no[data-v-4edbf244]{color:#b45309}.arrow[data-v-4edbf244]{width:24px;height:24px;border-radius:6px;border:1px solid #e2e8f0;background:#fff;color:#64748b;cursor:pointer;display:grid;place-items:center;font-size:11px;padding:0}.arrow[data-v-4edbf244]:hover:not(:disabled){border-color:#4f46e5;color:#4f46e5}.arrow[data-v-4edbf244]:disabled{opacity:.25;cursor:not-allowed}.lang[data-v-4edbf244]{font-family:SF Mono,Menlo,monospace;font-size:9.5px;padding:1px 5px;border-radius:4px;background:#f8fafc;border:1px solid #eef2f7;color:#64748b}.lang.on[data-v-4edbf244]{background:#dcfce7;border-color:transparent;color:#15803d}.chip[data-v-4edbf244],.lang.on[data-v-4edbf244]{font-weight:700}.chip[data-v-4edbf244]{display:inline-flex;align-items:center;font-size:10.5px;padding:2px 7px;border-radius:5px;background:#f1f5f9;color:#64748b}.chip-app[data-v-4edbf244]{background:#eef2ff;color:#4338ca}@media(max-width:1100px){.svc.asr[data-v-4edbf244],.svc.llm[data-v-4edbf244],.svc.mt[data-v-4edbf244]{grid-template-columns:34px 1fr}.col-h[data-v-4edbf244]{display:none}.svc-acts[data-v-4edbf244]{justify-content:flex-start}.svc-acts[data-v-4edbf244],.svc-why[data-v-4edbf244]{grid-column:1/-1}}";
const meetingsvcStyles_CM1HF5Dg = [
meetingsvc_vue_vue_type_style_index_0_scoped_4edbf244_lang
];
export { meetingsvcStyles_CM1HF5Dg as default };
//# sourceMappingURL=meetingsvc-styles.CM1HF5Dg.mjs.map

1
apps/admin/.output/server/chunks/build/meetingsvc-styles.CM1HF5Dg.mjs.map

@ -1 +0,0 @@
{"version":3,"file":"meetingsvc-styles.CM1HF5Dg.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles-1.mjs-D7BiGYyo.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles.CM1HF5Dg.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}

4
apps/admin/.output/server/chunks/build/server.mjs

@ -1960,7 +1960,7 @@ const _routes = [
name: "agents",
path: "/agents",
meta: __nuxt_page_meta$l || {},
component: () => import('./agents-sIgrTlD1.mjs')
component: () => import('./agents-C12ARvzr.mjs')
},
{
name: "appconfig",
@ -2032,7 +2032,7 @@ const _routes = [
name: "meetingsvc",
path: "/meetingsvc",
meta: __nuxt_page_meta$9 || {},
component: () => import('./meetingsvc-Dcq0cJyO.mjs')
component: () => import('./meetingsvc-BKMj3MwH.mjs')
},
{
name: "meettemplates",

16
apps/admin/.output/server/chunks/build/styles.mjs

@ -1,23 +1,23 @@
const interopDefault = r => r.default || r || [];
const styles = {
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/error-500.vue": () => import('./error-500-styles.CsxdYB__.mjs').then(interopDefault),
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/error-404.vue": () => import('./error-404-styles.Dw8OeZuk.mjs').then(interopDefault),
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/error-500.vue": () => import('./error-500-styles.CsxdYB__.mjs').then(interopDefault),
"pages/apps/[name].vue": () => import('./_name_-styles.Dz82uZcJ.mjs').then(interopDefault),
"components/AppDeployTab.vue": () => import('./AppDeployTab-styles.CUK7XFMF.mjs').then(interopDefault),
"components/AppModuleTab.vue": () => import('./AppModuleTab-styles._m-oVrlE.mjs').then(interopDefault),
"pages/accounts.vue": () => import('./accounts-styles.E9MHodaB.mjs').then(interopDefault),
"pages/calltranslate.vue": () => import('./calltranslate-styles.T5wE0P9E.mjs').then(interopDefault),
"pages/agents.vue": () => import('./agents-styles.GXWAwNko.mjs').then(interopDefault),
"pages/apps/index.vue": () => import('./index-styles.pMqqe5sq.mjs').then(interopDefault),
"pages/agents.vue": () => import('./agents-styles.DrcBfQcb.mjs').then(interopDefault),
"pages/dashboard.vue": () => import('./dashboard-styles.8Bs-G9zJ.mjs').then(interopDefault),
"components/SvcAlertBanner.vue": () => import('./SvcAlertBanner-styles.C9CJuYwV.mjs').then(interopDefault),
"pages/channels.vue": () => import('./channels-styles.BsiooF6f.mjs').then(interopDefault),
"pages/calltranslate.vue": () => import('./calltranslate-styles.T5wE0P9E.mjs').then(interopDefault),
"pages/statlog.vue": () => import('./statlog-styles.CjrRv6cK.mjs').then(interopDefault),
"pages/meetingsvc.vue": () => import('./meetingsvc-styles.CM1HF5Dg.mjs').then(interopDefault),
"pages/serviceconfig.vue": () => import('./serviceconfig-styles.pHiXruL3.mjs').then(interopDefault),
"pages/svcinspect.vue": () => import('./svcinspect-styles.DpDXXkHn.mjs').then(interopDefault),
"pages/systemconfig.vue": () => import('./systemconfig-styles.DqxAqW2L.mjs').then(interopDefault),
"pages/index.vue": () => import('./index-styles.DNbAzSQY.mjs').then(interopDefault),
"pages/dashboard.vue": () => import('./dashboard-styles.8Bs-G9zJ.mjs').then(interopDefault),
"pages/meetingsvc.vue": () => import('./meetingsvc-styles.CJmYxbsV.mjs').then(interopDefault),
"components/SvcAlertBanner.vue": () => import('./SvcAlertBanner-styles.C9CJuYwV.mjs').then(interopDefault),
"pages/systemconfig.vue": () => import('./systemconfig-styles.DqxAqW2L.mjs').then(interopDefault),
"pages/svcinspect.vue": () => import('./svcinspect-styles.DpDXXkHn.mjs').then(interopDefault),
"layouts/default.vue": () => import('./default-styles.BZwnP0YX.mjs').then(interopDefault),
"components/AppLoading.vue": () => import('./default-styles.BZwnP0YX.mjs').then(interopDefault),
"components/LangSelect.vue": () => import('./LangSelect-styles.Bi81RebM.mjs').then(interopDefault)

484
apps/admin/.output/server/chunks/nitro/nitro.mjs

@ -4028,7 +4028,7 @@ function _expandFromEnv(value) {
const _inlineRuntimeConfig = {
"app": {
"baseURL": "/",
"buildId": "1ce432df-603d-4010-810b-770972167d80",
"buildId": "24e01d06-12c5-401a-ad62-3d0500cb591f",
"buildAssetsDir": "/_nuxt/",
"cdnURL": ""
},
@ -4507,404 +4507,404 @@ const plugins = [
];
const assets = {
"/_nuxt/B0TjgAkR.js": {
"/_nuxt/0C81UldQ.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1874-0TVWWcvy86s6fmh3RPtDnI24IqY\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 6260,
"path": "../public/_nuxt/B0TjgAkR.js"
},
"/_nuxt/BIXaKwU_.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2221-6rCN+b04yTrogz3ccYLAJJRKtak\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 8737,
"path": "../public/_nuxt/BIXaKwU_.js"
},
"/_nuxt/BJhUngVd.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"9dfe-6ghqXre5+A4LVv+bYSjycjDxujo\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 40446,
"path": "../public/_nuxt/BJhUngVd.js"
"etag": "\"df-xQ/pgiE/Inbd2IKL+zk2Dx2fJbU\"",
"mtime": "2026-08-06T10:48:02.780Z",
"size": 223,
"path": "../public/_nuxt/0C81UldQ.js"
},
"/_nuxt/BMQvQYtl.js": {
"/_nuxt/2SfDgkhQ.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"d96-+XiAR31ZSoqhZByaMAAITyflnfQ\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 3478,
"path": "../public/_nuxt/BMQvQYtl.js"
"etag": "\"1a10-m9XOFV/BIYEveQfatDyb6ROvjAQ\"",
"mtime": "2026-08-06T10:48:02.781Z",
"size": 6672,
"path": "../public/_nuxt/2SfDgkhQ.js"
},
"/_nuxt/BRt-3vKG.js": {
"/_nuxt/BOeuA5fk.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"ab56-l2XQKNNKzC2imTdpENBitWXQ83s\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 43862,
"path": "../public/_nuxt/BRt-3vKG.js"
"etag": "\"b1f-4UlA/G571XIkysm7gbPG7Bf3fnk\"",
"mtime": "2026-08-06T10:48:02.780Z",
"size": 2847,
"path": "../public/_nuxt/BOeuA5fk.js"
},
"/_nuxt/Bpb__dU6.js": {
"/_nuxt/BqXDZ2AY.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"22ee-n6vSAPLtqPKyzpJLXThMoODgAjA\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 8942,
"path": "../public/_nuxt/Bpb__dU6.js"
"etag": "\"4066-km+qyq5m4NWaoxjHk9AX8qGoDC8\"",
"mtime": "2026-08-06T10:48:02.780Z",
"size": 16486,
"path": "../public/_nuxt/BqXDZ2AY.js"
},
"/_nuxt/Bf3Eg9kO.js": {
"/_nuxt/Bw873H05.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2037-qgc+kw87XZHtvLH7K+zrsiY70pk\"",
"mtime": "2026-08-03T09:05:58.396Z",
"etag": "\"2037-jemWI9qResf36uvqL/of2+cfIzo\"",
"mtime": "2026-08-06T10:48:02.781Z",
"size": 8247,
"path": "../public/_nuxt/Bf3Eg9kO.js"
},
"/_nuxt/BqjD6jMG.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"4592-ypS4bD6MFQ8Gx9Ansdil4hprmpc\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 17810,
"path": "../public/_nuxt/BqjD6jMG.js"
"path": "../public/_nuxt/Bw873H05.js"
},
"/_nuxt/BuCQ8FwD.js": {
"/_nuxt/C-IO5Zsk.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1bda-JuIJHhuB50/PIGj5K7fbz6+HC2s\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 7130,
"path": "../public/_nuxt/BuCQ8FwD.js"
},
"/_nuxt/C-2gsgTH.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"b1f-RaBAecwSqbgmGQZYVLA85pF5RX8\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 2847,
"path": "../public/_nuxt/C-2gsgTH.js"
},
"/_nuxt/C2WfoPPr.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1a5-khtazNarA+tNzBkGO++C7VCLYns\"",
"mtime": "2026-08-03T09:05:58.396Z",
"etag": "\"1a5-rJ1E/pun3UqVkdw1a0je/CCz1RQ\"",
"mtime": "2026-08-06T10:48:02.781Z",
"size": 421,
"path": "../public/_nuxt/C2WfoPPr.js"
"path": "../public/_nuxt/C-IO5Zsk.js"
},
"/_nuxt/C6twYRfy.js": {
"/_nuxt/C-NJnooU.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"58b-1IayW5wwFlj3mlTzatL2Q+LGr3U\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 1419,
"path": "../public/_nuxt/C6twYRfy.js"
"etag": "\"1bbe-HUZxE3NybFk63i1H6hx1bZqW0Qw\"",
"mtime": "2026-08-06T10:48:02.781Z",
"size": 7102,
"path": "../public/_nuxt/C-NJnooU.js"
},
"/_nuxt/CRsHkMZx.js": {
"/_nuxt/C0oOyOZM.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"4d8a-r3YPhm/FZeMZQZPTN25ItYcZguw\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 19850,
"path": "../public/_nuxt/CRsHkMZx.js"
"etag": "\"324a-QJjLycKJ1Nyn2C9aio2DxFyDwzM\"",
"mtime": "2026-08-06T10:48:02.781Z",
"size": 12874,
"path": "../public/_nuxt/C0oOyOZM.js"
},
"/_nuxt/CcYro5R2.js": {
"/_nuxt/CDbX0LeJ.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"4efb-3bw2qPPZudkwFEFDFA+TDN+9T30\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 20219,
"path": "../public/_nuxt/CcYro5R2.js"
"etag": "\"146-jvNjCHMWIu3RuuyMwsPELNoGnVg\"",
"mtime": "2026-08-06T10:48:02.781Z",
"size": 326,
"path": "../public/_nuxt/CDbX0LeJ.js"
},
"/_nuxt/CglQi8MB.js": {
"/_nuxt/CUrW23xA.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"868-x7P/t+i7+atMIz04wD/0Q2Fsq5E\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 2152,
"path": "../public/_nuxt/CglQi8MB.js"
"etag": "\"d96-LSyqrgQ17RJWFXO5+3diHR1QKxk\"",
"mtime": "2026-08-06T10:48:02.781Z",
"size": 3478,
"path": "../public/_nuxt/CUrW23xA.js"
},
"/_nuxt/ChQPCk92.js": {
"/_nuxt/CX31_Ko0.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"3d7-bVlkH5HnpdHdWIG2sqCldjh0OqM\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 983,
"path": "../public/_nuxt/ChQPCk92.js"
"etag": "\"58b-0PzsnBDdfsJPlExQGUWfq55514g\"",
"mtime": "2026-08-06T10:48:02.782Z",
"size": 1419,
"path": "../public/_nuxt/CX31_Ko0.js"
},
"/_nuxt/C_VX9uKy.js": {
"/_nuxt/CgE-6DOq.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"4066-kyfOpKjj/3aMitL3zTgxP+EAOA8\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 16486,
"path": "../public/_nuxt/C_VX9uKy.js"
"etag": "\"2e5-LLqB4Te5Vd1H07HPUvF2p9yDoW8\"",
"mtime": "2026-08-06T10:48:02.782Z",
"size": 741,
"path": "../public/_nuxt/CgE-6DOq.js"
},
"/_nuxt/CyqrlMkw.js": {
"/_nuxt/CSjlBIfC.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"df-OU6eEIAx0jXEFOUOSjdFijbsDkw\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 223,
"path": "../public/_nuxt/CyqrlMkw.js"
"etag": "\"321da-dJXi17i2sgQuultrZsU4pKoNICM\"",
"mtime": "2026-08-06T10:48:02.781Z",
"size": 205274,
"path": "../public/_nuxt/CSjlBIfC.js"
},
"/_nuxt/CvHBDjjq.js": {
"/_nuxt/CmmnvhJf.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2f8d-YfWp/X3pnynUAkLoDIAnN2Dgsp8\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 12173,
"path": "../public/_nuxt/CvHBDjjq.js"
"etag": "\"256c-v8Xn1Fmyff5G6+fpgWVUH0IwJXY\"",
"mtime": "2026-08-06T10:48:02.782Z",
"size": 9580,
"path": "../public/_nuxt/CmmnvhJf.js"
},
"/_nuxt/D-lUY2ZC.js": {
"/_nuxt/D1rGIbQk.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1bbe-JV4LjMn0QDLKVDnt2tH32Tzb83A\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 7102,
"path": "../public/_nuxt/D-lUY2ZC.js"
"etag": "\"161c-8XpKKbtVYu86lRoq3CWObyFmuR4\"",
"mtime": "2026-08-06T10:48:02.782Z",
"size": 5660,
"path": "../public/_nuxt/D1rGIbQk.js"
},
"/_nuxt/DACw1I5K.js": {
"/_nuxt/DEBoYqVm.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"3a38-FcNQz6Rr0OWKgGFSyjdnAa+t9H0\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 14904,
"path": "../public/_nuxt/DACw1I5K.js"
"etag": "\"3a29-sMYf6nBaaGuLCZwJqCFlyRN4scI\"",
"mtime": "2026-08-06T10:48:02.782Z",
"size": 14889,
"path": "../public/_nuxt/DEBoYqVm.js"
},
"/_nuxt/DG0IG_4u.js": {
"/_nuxt/DSJrmuXT.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"324a-G/30BU0NKpk3L3E/3K+Cq4K14UM\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 12874,
"path": "../public/_nuxt/DG0IG_4u.js"
"etag": "\"3a84-REopr+0ODalQ+1qDWvzdI4fQ0gw\"",
"mtime": "2026-08-06T10:48:02.782Z",
"size": 14980,
"path": "../public/_nuxt/DSJrmuXT.js"
},
"/_nuxt/Db4U27_j.js": {
"/_nuxt/DYuOZo9E.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1a81-4Y6FALsFB0PyGFBGg9SCZP3P0dI\"",
"mtime": "2026-08-03T09:05:58.396Z",
"size": 6785,
"path": "../public/_nuxt/Db4U27_j.js"
"etag": "\"9dfe-H2q30q/uwKI1cuU8XNeqNAKSQIA\"",
"mtime": "2026-08-06T10:48:02.782Z",
"size": 40446,
"path": "../public/_nuxt/DYuOZo9E.js"
},
"/_nuxt/DGSd_XG-.js": {
"/_nuxt/Dc2nKS93.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"925d-k51YRlIFm1WhKTQDk8Vr2XsERr0\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 37469,
"path": "../public/_nuxt/DGSd_XG-.js"
"etag": "\"868-gmXhaXfl5eDvK66mSimDH8GrYpk\"",
"mtime": "2026-08-06T10:48:02.782Z",
"size": 2152,
"path": "../public/_nuxt/Dc2nKS93.js"
},
"/_nuxt/Ddg4glGj.js": {
"/_nuxt/DgF_fRjV.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"ecf-NAUQ/qgmO5kG6E/Ym1KO/ywfOD4\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 3791,
"path": "../public/_nuxt/Ddg4glGj.js"
"etag": "\"1a81-SzFkBxCj8iTsdpCmBqR5O9dWn7A\"",
"mtime": "2026-08-06T10:48:02.783Z",
"size": 6785,
"path": "../public/_nuxt/DgF_fRjV.js"
},
"/_nuxt/DuRQSWLc.js": {
"/_nuxt/DlCThPMw.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"161c-U8dRYiGCDgql7elD2QoJlOg5xWY\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 5660,
"path": "../public/_nuxt/DuRQSWLc.js"
"etag": "\"ab56-Hp1IuxwuNAbZXiPLqeLvdrwaaQA\"",
"mtime": "2026-08-06T10:48:02.783Z",
"size": 43862,
"path": "../public/_nuxt/DlCThPMw.js"
},
"/_nuxt/DwmKnEeH.js": {
"/_nuxt/Dcjzwjeu.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"39a6-FpTR3LbcJDNvyvlyVNm7HE0Heq4\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 14758,
"path": "../public/_nuxt/DwmKnEeH.js"
"etag": "\"3a38-cKnS5xeiI9jmTiCkQcqRdFol3hk\"",
"mtime": "2026-08-06T10:48:02.783Z",
"size": 14904,
"path": "../public/_nuxt/Dcjzwjeu.js"
},
"/_nuxt/FVTAbpot.js": {
"/_nuxt/IkD0WKHv.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"17a-8kh3vArQnUkbPOiAVWWpc/xLZnE\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 378,
"path": "../public/_nuxt/FVTAbpot.js"
"etag": "\"4d8a-sBWeVectiPXocyDX8b4HqzeDXSI\"",
"mtime": "2026-08-06T10:48:02.783Z",
"size": 19850,
"path": "../public/_nuxt/IkD0WKHv.js"
},
"/_nuxt/G5UJCii2.js": {
"/_nuxt/ChQPCk92.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"337c-jXEBi3TAUdl1TiUYcRCIlppk+UQ\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 13180,
"path": "../public/_nuxt/G5UJCii2.js"
"etag": "\"3d7-bVlkH5HnpdHdWIG2sqCldjh0OqM\"",
"mtime": "2026-08-06T10:48:02.782Z",
"size": 983,
"path": "../public/_nuxt/ChQPCk92.js"
},
"/_nuxt/GZG--rps.js": {
"/_nuxt/CzMCfc-v.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1a83-nVOgt9CFKjKKtq7ZqQlJbpIzmL0\"",
"mtime": "2026-08-03T09:05:58.397Z",
"etag": "\"1a83-HqzN3m9KQuVUg7GJ2o6FSrTyESI\"",
"mtime": "2026-08-06T10:48:02.782Z",
"size": 6787,
"path": "../public/_nuxt/GZG--rps.js"
"path": "../public/_nuxt/CzMCfc-v.js"
},
"/_nuxt/LangSelect.Dkm6e8RK.css": {
"type": "text/css; charset=utf-8",
"etag": "\"5c3-C4SkCgblTC2eBbJlNpFMUPfZZW8\"",
"mtime": "2026-08-03T09:05:58.397Z",
"mtime": "2026-08-06T10:48:02.783Z",
"size": 1475,
"path": "../public/_nuxt/LangSelect.Dkm6e8RK.css"
},
"/_nuxt/OLpUuA7c.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"146-QuwP7VIOncv2Rj6D1Vfb8ntlCWI\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 326,
"path": "../public/_nuxt/OLpUuA7c.js"
},
"/_nuxt/PN667bHc.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"58d-Ep7a34IW34moz3HCr5MkNYgtj58\"",
"mtime": "2026-08-03T09:05:58.397Z",
"mtime": "2026-08-06T10:48:02.783Z",
"size": 1421,
"path": "../public/_nuxt/PN667bHc.js"
},
"/_nuxt/VVFxpwIU.js": {
"/_nuxt/QmZ_XupB.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"3a84-m8nuxY0nuIQB5db+87P0SCdRzY8\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 14980,
"path": "../public/_nuxt/VVFxpwIU.js"
"etag": "\"17a-WZZFGdaAWPI9ibFRF/uVojLEdHE\"",
"mtime": "2026-08-06T10:48:02.783Z",
"size": 378,
"path": "../public/_nuxt/QmZ_XupB.js"
},
"/_nuxt/SxV4xvpk.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"4592-o3SOsI9OW3ayP2JXIALKx1Y9W+c\"",
"mtime": "2026-08-06T10:48:02.783Z",
"size": 17810,
"path": "../public/_nuxt/SxV4xvpk.js"
},
"/_nuxt/WFs8pQQC.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"337c-bUnckVV11fhPQcE+Kj4vI8tmoI0\"",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 13180,
"path": "../public/_nuxt/WFs8pQQC.js"
},
"/_nuxt/_name_.B5yFMG3g.css": {
"type": "text/css; charset=utf-8",
"etag": "\"1a66-PDbmlnPJP0bTaSWoPPpQSN3ew/k\"",
"mtime": "2026-08-03T09:05:58.397Z",
"mtime": "2026-08-06T10:48:02.783Z",
"size": 6758,
"path": "../public/_nuxt/_name_.B5yFMG3g.css"
},
"/_nuxt/agents.Ba_0YWqu.css": {
"type": "text/css; charset=utf-8",
"etag": "\"c07-ANglF3RoGJ86deGXSxkG2l7YvKk\"",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 3079,
"path": "../public/_nuxt/agents.Ba_0YWqu.css"
},
"/_nuxt/a5exfo9k.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2221-JBR/HMYbIOVlF1Tkx/VqL0ZQbDY\"",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 8737,
"path": "../public/_nuxt/a5exfo9k.js"
},
"/_nuxt/accounts.vxGnCxY1.css": {
"type": "text/css; charset=utf-8",
"etag": "\"13a-18ifK9iGrWdARqUkEGJ49mKNMlI\"",
"mtime": "2026-08-03T09:05:58.397Z",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 314,
"path": "../public/_nuxt/accounts.vxGnCxY1.css"
},
"/_nuxt/agents.-kjpROzC.css": {
"type": "text/css; charset=utf-8",
"etag": "\"c07-DtTrCb/0z2FTH0M/xGNfaiUA464\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 3079,
"path": "../public/_nuxt/agents.-kjpROzC.css"
},
"/_nuxt/calltranslate.CJXjjd14.css": {
"type": "text/css; charset=utf-8",
"etag": "\"12bf-GWJtFmiGpAneLOM6lhOF8Yczqoc\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 4799,
"path": "../public/_nuxt/calltranslate.CJXjjd14.css"
},
"/_nuxt/channels.4kXMd4_X.css": {
"type": "text/css; charset=utf-8",
"etag": "\"fab-xNgT+6RhPcM6WuuTH+FQBwmlYkk\"",
"mtime": "2026-08-03T09:05:58.397Z",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 4011,
"path": "../public/_nuxt/channels.4kXMd4_X.css"
},
"/_nuxt/dashboard.CT4jXDd_.css": {
"type": "text/css; charset=utf-8",
"etag": "\"1674-0u9/7z1ElLa3Aat996LHpwiBQ9Y\"",
"mtime": "2026-08-03T09:05:58.397Z",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 5748,
"path": "../public/_nuxt/dashboard.CT4jXDd_.css"
},
"/_nuxt/default.miyQHb0v.css": {
"type": "text/css; charset=utf-8",
"etag": "\"b2-O1zVvoAVcFlJDT9d+8Mq5HKgSwA\"",
"mtime": "2026-08-03T09:05:58.397Z",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 178,
"path": "../public/_nuxt/default.miyQHb0v.css"
},
"/_nuxt/error-404.Dm-MYrAh.css": {
"type": "text/css; charset=utf-8",
"etag": "\"97e-/v6mv+rmcBtKGiHr88cRdQNod1s\"",
"mtime": "2026-08-03T09:05:58.397Z",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 2430,
"path": "../public/_nuxt/error-404.Dm-MYrAh.css"
},
"/_nuxt/entry.BR7WYV0V.css": {
"type": "text/css; charset=utf-8",
"etag": "\"184d8-A6/29WUlnBYe0VZZ0y9JEEZyJt4\"",
"mtime": "2026-08-03T09:05:58.397Z",
"size": 99544,
"path": "../public/_nuxt/entry.BR7WYV0V.css"
},
"/_nuxt/error-500.DM8oqBl3.css": {
"type": "text/css; charset=utf-8",
"etag": "\"773-fnDg7l3rvJ5f8Hx4TwZqMlSCEdI\"",
"mtime": "2026-08-03T09:05:58.398Z",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 1907,
"path": "../public/_nuxt/error-500.DM8oqBl3.css"
},
"/_nuxt/index.BXNugdH5.css": {
"/_nuxt/hXX2NJw2.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1bda-+PHF1x2PZIqVSBZPt+GM0hnUE4A\"",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 7130,
"path": "../public/_nuxt/hXX2NJw2.js"
},
"/_nuxt/entry.BR7WYV0V.css": {
"type": "text/css; charset=utf-8",
"etag": "\"c9d-iEqnsYCjM8QWRpOi0SjOz5c/OsY\"",
"mtime": "2026-08-03T09:05:58.398Z",
"size": 3229,
"path": "../public/_nuxt/index.BXNugdH5.css"
"etag": "\"184d8-A6/29WUlnBYe0VZZ0y9JEEZyJt4\"",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 99544,
"path": "../public/_nuxt/entry.BR7WYV0V.css"
},
"/_nuxt/hv_H8fds.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"586d-rwuydSb71DXYbL3tNqVz3SGuk/Y\"",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 22637,
"path": "../public/_nuxt/hv_H8fds.js"
},
"/_nuxt/index.4nAkFRy2.css": {
"type": "text/css; charset=utf-8",
"etag": "\"9bb-oLx1eNvSlE3Mf6e/ODXe5npQc6w\"",
"mtime": "2026-08-03T09:05:58.398Z",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 2491,
"path": "../public/_nuxt/index.4nAkFRy2.css"
},
"/_nuxt/l8H0VyaU.js": {
"/_nuxt/index.BXNugdH5.css": {
"type": "text/css; charset=utf-8",
"etag": "\"c9d-iEqnsYCjM8QWRpOi0SjOz5c/OsY\"",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 3229,
"path": "../public/_nuxt/index.BXNugdH5.css"
},
"/_nuxt/omoEWMdu.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"256c-7iNN7IzEmvDECd6vOPJz236J7pQ\"",
"mtime": "2026-08-03T09:05:58.398Z",
"size": 9580,
"path": "../public/_nuxt/l8H0VyaU.js"
"etag": "\"ecf-Wfvog0hpO6ijYYGxaMgL/Fmu/tU\"",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 3791,
"path": "../public/_nuxt/omoEWMdu.js"
},
"/_nuxt/meetingsvc.Cnu-3MbB.css": {
"/_nuxt/calltranslate.CJXjjd14.css": {
"type": "text/css; charset=utf-8",
"etag": "\"1181-i/bAxNjFIbxMsmYOCjcYf5QXrXY\"",
"mtime": "2026-08-03T09:05:58.398Z",
"size": 4481,
"path": "../public/_nuxt/meetingsvc.Cnu-3MbB.css"
"etag": "\"12bf-GWJtFmiGpAneLOM6lhOF8Yczqoc\"",
"mtime": "2026-08-06T10:48:02.784Z",
"size": 4799,
"path": "../public/_nuxt/calltranslate.CJXjjd14.css"
},
"/_nuxt/ncAT-iHw.js": {
"/_nuxt/kX8FbUD0.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1a10-tcOdKP3+fXzUyUWv6qGEACIYcWk\"",
"mtime": "2026-08-03T09:05:58.398Z",
"size": 6672,
"path": "../public/_nuxt/ncAT-iHw.js"
"etag": "\"1874-fv5UZ6sYd6/AXKmwAt7U3fvW334\"",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 6260,
"path": "../public/_nuxt/kX8FbUD0.js"
},
"/_nuxt/mElhLwm2.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"321da-nIceHuaujHDSXFqv+Yu/fBQjDUQ\"",
"mtime": "2026-08-03T09:05:58.398Z",
"size": 205274,
"path": "../public/_nuxt/mElhLwm2.js"
"/_nuxt/meetingsvc.DgYSEQUA.css": {
"type": "text/css; charset=utf-8",
"etag": "\"15b5-ihBIWfyVoCoSGDt99wujE0L7L7g\"",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 5557,
"path": "../public/_nuxt/meetingsvc.DgYSEQUA.css"
},
"/_nuxt/qig5Qp6S.js": {
"/_nuxt/r_MxzKf2.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2e5-rP4ybTE3PHFe5sQ+1dX/9D0NoRE\"",
"mtime": "2026-08-03T09:05:58.398Z",
"size": 741,
"path": "../public/_nuxt/qig5Qp6S.js"
"etag": "\"925d-i+C32fQG1UEvf3o7su5xdWIBzjc\"",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 37469,
"path": "../public/_nuxt/r_MxzKf2.js"
},
"/_nuxt/serviceconfig.D1-cnJwZ.css": {
"type": "text/css; charset=utf-8",
"etag": "\"11f9-1SPPT0dmRmZGXJYCHUYqKbT0mYs\"",
"mtime": "2026-08-03T09:05:58.398Z",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 4601,
"path": "../public/_nuxt/serviceconfig.D1-cnJwZ.css"
},
"/_nuxt/statlog.C1q_3yEh.css": {
"type": "text/css; charset=utf-8",
"etag": "\"4f1-raISk2zkJ3RyYjmALXSajiW6ngA\"",
"mtime": "2026-08-03T09:05:58.398Z",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 1265,
"path": "../public/_nuxt/statlog.C1q_3yEh.css"
},
"/_nuxt/svcinspect.H9TdRqZ5.css": {
"type": "text/css; charset=utf-8",
"etag": "\"709-X1szhhs8D9fMma7X8BsLOY0a31w\"",
"mtime": "2026-08-03T09:05:58.398Z",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 1801,
"path": "../public/_nuxt/svcinspect.H9TdRqZ5.css"
},
"/_nuxt/systemconfig.MaL8_AEr.css": {
"type": "text/css; charset=utf-8",
"etag": "\"5f6-qMlVehTadQhvspNSgWfTP18KCiE\"",
"mtime": "2026-08-03T09:05:58.398Z",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 1526,
"path": "../public/_nuxt/systemconfig.MaL8_AEr.css"
},
"/_nuxt/w2gB9CpJ.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"22ee-e/bnqU4E+WyofBkH2OQpwZ0YJpU\"",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 8942,
"path": "../public/_nuxt/w2gB9CpJ.js"
},
"/_nuxt/xcfsMt0Y.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2f8d-y7tMvXmLWVPKtiavl1yIntOPp1o\"",
"mtime": "2026-08-06T10:48:02.785Z",
"size": 12173,
"path": "../public/_nuxt/xcfsMt0Y.js"
},
"/_nuxt/builds/latest.json": {
"type": "application/json",
"etag": "\"47-nZ5PO4GQjZUiqgb1NlI0hPipY74\"",
"mtime": "2026-08-03T09:05:58.390Z",
"etag": "\"47-j+KvavkEG9lVMqcfjvycSzhF5Ks\"",
"mtime": "2026-08-06T10:48:02.769Z",
"size": 71,
"path": "../public/_nuxt/builds/latest.json"
},
"/_nuxt/builds/meta/1ce432df-603d-4010-810b-770972167d80.json": {
"/_nuxt/builds/meta/24e01d06-12c5-401a-ad62-3d0500cb591f.json": {
"type": "application/json",
"etag": "\"58-FCGyY9ZbpaXLeBwDDD6Xx30+ZuI\"",
"mtime": "2026-08-03T09:05:58.388Z",
"etag": "\"58-AHhgfIkwGDEjrI9/ftXDMBGUJHo\"",
"mtime": "2026-08-06T10:48:02.763Z",
"size": 88,
"path": "../public/_nuxt/builds/meta/1ce432df-603d-4010-810b-770972167d80.json"
"path": "../public/_nuxt/builds/meta/24e01d06-12c5-401a-ad62-3d0500cb591f.json"
}
};

39
apps/admin/app/pages/agents.vue

@ -139,8 +139,8 @@
<span class="stage-tag" :style="{ background: s.color }">{{ s.slot }}</span>
<span class="ed-label inline">{{ s.label }}</span>
<select v-model="(form as any)[s.key]" class="select select-bordered select-sm w-full">
<option value="" disabled>{{ svcsByCat(s.cat).length ? '请选择服务' : '(无可用服务,请先去第三方服务配置里添加)' }}</option>
<option v-for="v in svcsByCat(s.cat)" :key="v.id" :value="v.id">{{ v.name }}</option>
<option value="" disabled>{{ svcsByCats(s.cats).length ? '请选择服务' : '(无可用服务,请先去第三方服务配置里添加)' }}</option>
<option v-for="v in svcsByCats(s.cats)" :key="v.id" :value="v.id">{{ v.name }}{{ isVisionSvc(v) ? ' 🖼' : '' }}</option>
</select>
</div>
<span v-if="i < slotsOfType(form.type).length - 1" class="slot-arrow">→</span>
@ -272,6 +272,7 @@ const CAT_MT = 3
const CAT_AST = 4
const CAT_LLM = 5
const CAT_STS = 7
const CAT_LLM_VISION = 9 // 多媒体大模型:能力是文本模型的超集,LLM 槽位一并可选
// Agent 类型(值与后端 comm.AgentType* 常量严格一致)
const AGENT_TYPES = [
@ -281,21 +282,21 @@ const AGENT_TYPES = [
{ value: 'ast-translate', label: '端到端翻译', icon: '🚀', hint: '单个 AST 服务直接完成语音翻译', color: '#c2410c', bg: '#fff7ed' },
]
// 每种类型的服务槽位:key 对应 AgentConfig 字段名,cat 用于筛选可选服务
interface Slot { key: string; slot: string; label: string; cat: number; color: string }
// 每种类型的服务槽位:key 对应 AgentConfig 字段名,cats 用于筛选可选服务(命中任一即可选)
interface Slot { key: string; slot: string; label: string; cats: number[]; color: string }
const SLOTS: Record<string, Slot[]> = {
chat: [
{ key: 'stt_svc_id', slot: 'STT', label: '语音识别', cat: CAT_STT, color: '#1664ff' },
{ key: 'llm_svc_id', slot: 'LLM', label: '大语言模型', cat: CAT_LLM, color: '#b45309' },
{ key: 'tts_svc_id', slot: 'TTS', label: '语音合成', cat: CAT_TTS, color: '#7c3aed' },
{ key: 'stt_svc_id', slot: 'STT', label: '语音识别', cats: [CAT_STT], color: '#1664ff' },
{ key: 'llm_svc_id', slot: 'LLM', label: '大语言模型', cats: [CAT_LLM, CAT_LLM_VISION], color: '#b45309' },
{ key: 'tts_svc_id', slot: 'TTS', label: '语音合成', cats: [CAT_TTS], color: '#7c3aed' },
],
translate: [
{ key: 'stt_svc_id', slot: 'STT', label: '语音识别', cat: CAT_STT, color: '#1664ff' },
{ key: 'mt_svc_id', slot: 'MT', label: '机器翻译', cat: CAT_MT, color: '#059669' },
{ key: 'tts_svc_id', slot: 'TTS', label: '语音合成', cat: CAT_TTS, color: '#7c3aed' },
{ key: 'stt_svc_id', slot: 'STT', label: '语音识别', cats: [CAT_STT], color: '#1664ff' },
{ key: 'mt_svc_id', slot: 'MT', label: '机器翻译', cats: [CAT_MT], color: '#059669' },
{ key: 'tts_svc_id', slot: 'TTS', label: '语音合成', cats: [CAT_TTS], color: '#7c3aed' },
],
'sts-chat': [{ key: 'sts_svc_id', slot: 'STS', label: '端到端语音对话', cat: CAT_STS, color: '#be185d' }],
'ast-translate': [{ key: 'ast_svc_id', slot: 'AST', label: '端到端语音翻译', cat: CAT_AST, color: '#f97316' }],
'sts-chat': [{ key: 'sts_svc_id', slot: 'STS', label: '端到端语音对话', cats: [CAT_STS], color: '#be185d' }],
'ast-translate': [{ key: 'ast_svc_id', slot: 'AST', label: '端到端语音翻译', cats: [CAT_AST], color: '#f97316' }],
}
function slotsOfType(t: string): Slot[] {
return SLOTS[t] ?? []
@ -373,10 +374,16 @@ async function loadAll() {
}
// ===== 服务 =====
function svcsByCat(cat: number): SvcConfig[] {
return allSvcs.value.filter(
(s) => s.enable && (s.categories || '').split(',').map(Number).includes(cat),
)
function svcCats(s: SvcConfig): number[] {
return (s.categories || '').split(',').map(Number)
}
// 槽位可选服务 = 已启用 且 类别命中该槽位允许的任一类别
function svcsByCats(cats: number[]): SvcConfig[] {
return allSvcs.value.filter((s) => s.enable && svcCats(s).some((c) => cats.includes(c)))
}
// 是否多媒体大模型(下拉里加 🖼 标记,与「会议记录服务」页一致)
function isVisionSvc(s: SvcConfig): boolean {
return svcCats(s).includes(CAT_LLM_VISION)
}
function svcName(id?: string): string {
if (!id) return '未配置'

82
apps/admin/app/pages/meetingsvc.vue

@ -35,6 +35,32 @@
</div>
<template v-else>
<!-- 支持语言汇总:同段并集、跨段交集 -->
<div class="langsum" :class="{ bad: !langSum.unlimited && !langSum.langs.length, warn: langSum.missing.length }">
<div class="langsum-head">
<span class="langsum-title">当前配置支持的语言</span>
<span v-if="langSum.unlimited" class="langsum-count" :class="{ off: langSum.missing.length }">未限定(各引擎自行判断)</span>
<span v-else class="langsum-count" :class="{ off: langSum.missing.length }">
{{ langSum.langs.length }} 种<template v-if="langSum.missing.length">(链路未配全,尚不可用)</template>
</span>
<span class="langsum-formula">{{ langSumFormula }}</span>
</div>
<div v-if="langSum.missing.length" class="langsum-msg bad">
⚠ {{ langSum.missing.map(kindLabel).join('、') }}段没有启用中的服务,整条链路走不通——先把这些段配上。
</div>
<div v-else-if="!langSum.unlimited && !langSum.langs.length" class="langsum-msg bad">
⚠ 各段语言无交集,任何语种都走不完整条链路。放宽某一段的支持语言,或补一个覆盖面更广的服务。
</div>
<div v-if="langSum.langs.length" class="langsum-langs">
<span v-for="l in langSum.langs" :key="l" class="lang on" :title="langName(l)">{{ l }}</span>
</div>
<div v-else-if="langSum.unlimited && !langSum.missing.length" class="langsum-msg">
各段都没限定支持语言(服务未填 languages 字段),实际能否处理由引擎判断。
</div>
</div>
<!-- 无可用服务提示 -->
<div v-if="!available.length" class="alert alert-warning py-2 text-sm mb-4">
<span>
@ -324,6 +350,49 @@ function asrWhy(o: Orch) {
return '备用:前面都跳过时接手'
}
// ---- 支持语言汇总 ----
// 规则:同一段内多个服务取**并集**(谁支持都算这段支持,选路时会自动顺延到支持的那个);
// 段与段之间取**交集**(一条记录要依次过识别→翻译→总结,缺一段就走不完)。
// 某段只要有一个服务没填 languages,该段视为「全语种」不参与收缩——与 svcSupportsLang
// 的「未限定=先当支持」保持一致,否则会把实际能用的语言误判成不支持。
const langSum = computed(() => {
const missing: number[] = [] // 没有任何启用服务的段
const groups: { kind: number; langs: string[] }[] = [] // 有语言限定的段
let unlimitedKinds = 0 // 有服务但全未限定的段数
for (const k of [1, 2, 3]) {
const list = ofKind(k).filter((o) => o.enabled)
if (!list.length) { missing.push(k); continue }
const union = new Set<string>()
let unlimited = false
for (const o of list) {
const ls = svcLangs(o.svc_id).split(',').map((x) => x.trim()).filter(Boolean)
if (!ls.length) { unlimited = true; break } // 该服务未限定 → 整段放开
ls.forEach((l) => union.add(l))
}
if (unlimited) unlimitedKinds++
else groups.push({ kind: k, langs: [...union] })
}
if (!groups.length) return { missing, unlimited: true, langs: [] as string[], groups, unlimitedKinds }
const langs = groups
.reduce<string[]>((acc, g) => acc.filter((l) => g.langs.includes(l)), [...groups[0]!.langs])
.sort((a, b) => langOrder(a) - langOrder(b)) // 按 LANG_OPTIONS 顺序,跟其它页面一致
return { missing, unlimited: false, langs, groups, unlimitedKinds }
})
function langOrder(code: string) {
const i = LANG_OPTIONS.findIndex((o) => o.code === code)
return i < 0 ? Number.MAX_SAFE_INTEGER : i
}
// 顶部那行算式,说明这个结果是怎么来的:识别 11 ∩ 翻译 全语种 …
const langSumFormula = computed(() => {
const parts: string[] = []
for (const k of [1, 2, 3]) {
if (langSum.value.missing.includes(k)) { parts.push(`${kindLabel(k)} 未配置`); continue }
const g = langSum.value.groups.find((x) => x.kind === k)
parts.push(`${kindLabel(k)} ${g ? g.langs.length + ' 种' : '全语种'}`)
}
return parts.join(' ∩ ')
})
// 总结
const llmDefault = computed(() => ofKind(3).find((o) => o.is_default) ?? null)
const pickable = computed(() => ofKind(3).filter((o) => o.enabled && o.client_visible))
@ -492,6 +561,19 @@ onMounted(async () => {
<style scoped>
.scopebar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; background: #f8fafc; border: 1px solid #eef2f7; border-radius: 11px; padding: 10px 13px; margin-bottom: 16px; }
.langsum { background: #fff; border: 1px solid #eef2f7; border-radius: 14px; box-shadow: 0 1px 2px rgba(15, 23, 42, .04); padding: 13px 16px; margin-bottom: 16px; }
.langsum.warn { border-color: #fed7aa; background: #fffbf5; }
.langsum.bad { border-color: #fecaca; background: #fff7f7; }
.langsum-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.langsum-title { font-size: 13px; font-weight: 700; color: #1e293b; }
.langsum-count { font-size: 12px; font-weight: 700; color: #15803d; background: #dcfce7; padding: 2px 8px; border-radius: 6px; }
.langsum.bad .langsum-count { color: #dc2626; background: #fee2e2; }
.langsum-count.off { color: #b45309; background: #fef3c7; } /* 有段没配全:语言算得出来,但链路还走不通 */
.langsum-formula { font-size: 11px; color: #94a3b8; font-family: 'SF Mono', Menlo, monospace; }
.langsum-msg { font-size: 11.5px; color: #64748b; margin-top: 7px; line-height: 1.6; }
.langsum-msg.bad { color: #b91c1c; font-weight: 600; }
.langsum-langs { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 9px; }
.card { background: #fff; border: 1px solid #eef2f7; border-radius: 14px; box-shadow: 0 1px 2px rgba(15, 23, 42, .04); overflow: hidden; }
.card-head { padding: 15px 18px; border-bottom: 1px solid #eef2f7; display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.card-title { font-size: 14.5px; font-weight: 700; color: #1e293b; }

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CyqrlMkw.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/0C81UldQ.js

@ -1 +1 @@
import{_ as t,o,c as s,R as c}from"./mElhLwm2.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default};
import{_ as t,o,c as s,R as c}from"./CSjlBIfC.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default};

2
apps/admin/.output/public/_nuxt/ncAT-iHw.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/2SfDgkhQ.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C-2gsgTH.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BOeuA5fk.js

@ -1 +1 @@
import{g as h,j as x,k as w,B as y,c as r,a as e,t as d,l as b,m as _,p as v,v as g,n as k,y as B,x as u,o as p,_ as M}from"./mElhLwm2.js";const A={class:"login-bg flex items-center justify-center px-4"},z={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=B({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",A,[e("div",z,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default};
import{g as h,j as x,k as w,B as y,c as r,a as e,t as d,l as b,m as _,p as v,v as g,n as k,y as B,x as u,o as p,_ as M}from"./CSjlBIfC.js";const A={class:"login-bg flex items-center justify-center px-4"},z={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=B({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",A,[e("div",z,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C_VX9uKy.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BqXDZ2AY.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/Bf3Eg9kO.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bw873H05.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C2WfoPPr.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C-IO5Zsk.js

@ -1 +1 @@
import{g as t,B as n,P as a,c as o,a as s,o as c}from"./mElhLwm2.js";const i={class:"py-16 text-center text-slate-400"},m=t({__name:"mcpconfig",setup(l){return n(()=>{a("/serviceconfig")}),(r,e)=>(c(),o("div",i,[...e[0]||(e[0]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1),s("p",{class:"text-sm mt-3"},"MCP 配置已并入「第三方服务配置」,正在跳转…",-1)])]))}});export{m as default};
import{g as t,B as n,P as a,c as o,a as s,o as c}from"./CSjlBIfC.js";const i={class:"py-16 text-center text-slate-400"},m=t({__name:"mcpconfig",setup(l){return n(()=>{a("/serviceconfig")}),(r,e)=>(c(),o("div",i,[...e[0]||(e[0]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1),s("p",{class:"text-sm mt-3"},"MCP 配置已并入「第三方服务配置」,正在跳转…",-1)])]))}});export{m as default};

2
apps/admin/.output/public/_nuxt/D-lUY2ZC.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C-NJnooU.js

@ -1,4 +1,4 @@
import{g as G,B as K,Q as P,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Q,s as Y,t as n,x as i,z as E,o,n as F,l as I,_ as Z}from"./mElhLwm2.js";import{u as J}from"./C6twYRfy.js";import{u as W}from"./FVTAbpot.js";import"./qig5Qp6S.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=J(),{success:O,error:R}=W(),z={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?z[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function B(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function H(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function j(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
import{g as G,B as K,Q as P,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Q,s as Y,t as n,x as i,z as E,o,n as F,l as I,_ as Z}from"./CSjlBIfC.js";import{u as J}from"./CX31_Ko0.js";import{u as W}from"./QmZ_XupB.js";import"./CgE-6DOq.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=J(),{success:O,error:R}=W(),z={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?z[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function B(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function H(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function j(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
只清除本核对面板的记录,不影响已落库的统计数据。
清空后可重新触发埋点,观察是否正常进来。`))try{const r=await A("clearstatlogs",{day:l});O("已清空 "+(r&&r.cleared!=null?r.cleared:0)+" 条"),m()}catch(r){R("清空失败:"+(r?.message||"网络异常"))}}function q(){w.value?(d=X(m,15e3),y.value="· 每 15 秒自动刷新"):(d&&clearInterval(d),d=null,y.value="")}return K(()=>{v.value=p(0),m()}),P(()=>{d&&clearInterval(d)}),(l,s)=>(o(),a("div",null,[e("div",$,[s[6]||(s[6]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"统计日志"),e("p",{class:"text-xs text-slate-400 mt-0.5"},[u("console 从 NATS 收到的「当日统计快照」接收流水(最新在前,按接收时间分天存 Redis)。各业务部署每个同步周期/启动时/0点 推送一次当日绝对快照,console 收到后覆盖落库。用于核对每个部署是否在正常汇报;带 "),e("span",{class:"unreg"},"未注册"),u(" 的应用快照已收到但"),e("b",null,"不会落库"),u("(应用名需与 console 注册表完全一致)。")])],-1)),e("div",tt,[x(e("select",{"onUpdate:modelValue":s[0]||(s[0]=t=>v.value=t),class:"select select-bordered select-sm",onChange:m},[(o(!0),a(f,null,U(V.value,t=>(o(),a("option",{key:t.value,value:t.value},n(t.label),9,et))),128))],544),[[M,v.value,void 0,{number:!0}]]),x(e("select",{"onUpdate:modelValue":s[1]||(s[1]=t=>b.value=t),class:"select select-bordered select-sm"},[...s[4]||(s[4]=[e("option",{value:""},"全部级别",-1),e("option",{value:"info"},"已落库",-1),e("option",{value:"warn"},"未落库",-1),e("option",{value:"error"},"解析失败",-1)])],512),[[M,b.value]]),x(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>h.value=t),class:"input input-bordered input-sm w-44",placeholder:"筛选 应用/区域/产品"},null,512),[[Q,h.value]]),e("label",st,[x(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>w.value=t),type:"checkbox",class:"checkbox checkbox-xs",onChange:q},null,544),[[Y,w.value]]),s[5]||(s[5]=u(" 自动刷新 ",-1))]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:m},"刷新"),e("button",{class:"btn btn-outline btn-error btn-sm",title:"清空本日核对流水(不影响已落库的统计数据),清空后可重新观察埋点是否正常进来",onClick:j},"清空本日")])]),e("div",lt,[e("span",null,[s[7]||(s[7]=u("该日保留 ",-1)),e("b",nt,n(L.value),1),s[8]||(s[8]=u(" 条",-1))]),e("span",null,[s[9]||(s[9]=u("当前显示 ",-1)),e("b",at,n(T.value.length),1),s[10]||(s[10]=u(" 条",-1))]),e("span",null,[s[11]||(s[11]=u("最近接收 ",-1)),e("b",ot,n(N.value),1)]),e("span",rt,n(y.value),1)]),e("div",ut,[s[12]||(s[12]=e("div",{id:"logHead"},[e("div",null,"接收时间"),e("div",null,"级别"),e("div",null,"应用 · 区域 · 产品"),e("div",null,"统计日"),e("div",null,"指标摘要 / 说明"),e("div",null,"快照时间")],-1)),e("div",it,[_.value?(o(),a("div",ct,"加载中...")):g.value?(o(),a("div",dt,"加载失败:"+n(g.value),1)):T.value.length?(o(!0),a(f,{key:3},U(T.value,(t,r)=>(o(),a("div",{key:r,class:"logrow"},[e("div",pt,n(C(t.ts)),1),e("div",null,[e("span",{class:F(["lv",B(t.level).cls])},n(B(t.level).txt),3)]),e("div",null,[t.app?(o(),a(f,{key:0},[e("span",mt,n(t.app),1),t.registered?I("",!0):(o(),a("span",ft,"未注册"))],64)):(o(),a("span",gt,"(无应用名)")),e("span",xt," · "+n(D(t.region)),1),e("span",_t," · "+n(S(t.product_id)),1)]),e("div",yt,n(t.stat_day?k(t.stat_day):"-"),1),e("div",null,[t.msg?(o(),a(f,{key:0},[e("span",{class:F(t.level==="error"?"text-red-600":"text-amber-600")},n(t.msg),3),t.summary?(o(),a("span",bt," · "+n(t.summary),1)):I("",!0)],64)):(o(),a(f,{key:1},[u(n(t.summary||"无增量"),1)],64))]),e("div",ht,[u(n(C(t.snap_ts)),1),H(t)?(o(),a("span",wt,"迟到"+n(t.ts-t.snap_ts)+"s",1)):I("",!0)])]))),128)):(o(),a("div",vt,n(c.value.length?"无匹配记录":"该日暂无接收记录"),1))])])]))}}),Lt=Z(kt,[["__scopeId","data-v-742ee359"]]);export{Lt as default};

2
apps/admin/.output/public/_nuxt/DG0IG_4u.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C0oOyOZM.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/OLpUuA7c.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CDbX0LeJ.js

@ -1 +1 @@
import{u as a,e as s,h as u,i as r,f as h}from"./mElhLwm2.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u};
import{u as a,e as s,h as u,i as r,f as h}from"./CSjlBIfC.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u};

4
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/mElhLwm2.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CSjlBIfC.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/BMQvQYtl.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CUrW23xA.js

@ -1 +1 @@
import{_ as o,o as s,c as a,a as t,t as r}from"./mElhLwm2.js";import{u as i}from"./OLpUuA7c.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default};
import{_ as o,o as s,c as a,a as t,t as r}from"./CSjlBIfC.js";import{u as i}from"./CDbX0LeJ.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C6twYRfy.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CX31_Ko0.js

@ -1 +1 @@
import{j as w,k as d}from"./mElhLwm2.js";import{u as h}from"./qig5Qp6S.js";async function f(o,i,a){const e=w(),u=d(),s={"Content-Type":"application/json"};e.token&&(s.Authorization=e.token),a&&Object.assign(s,a);const t=await fetch(o,{method:"POST",headers:s,body:JSON.stringify(i)});if(!t.ok)throw new Error(`HTTP error: ${t.status}`);const n=await t.json();if(n.code===18)throw e.logout(),u.push("/"),new Error(n.msg||"Unauthorized");if(n.code!==0)throw new Error(n.msg||"Unknown error");return n.data}const y=/^(get|list|load|query|fetch|search|count|stat|export|check)/i;function g(o){return!y.test(o)}function A(){const o=w(),{begin:i,end:a}=h();async function e(t,n){const r={};if(o.currentAppId&&(r["X-App-Id"]=String(o.currentAppId)),!g(t))return f(`/web/api/api_${t}`,n??{},r);i();try{return await f(`/web/api/api_${t}`,n??{},r)}finally{a()}}async function u(t,n){return f(`/console/api/${t}`,n??{})}async function s(t,n){const r=t.type||"application/octet-stream",c=await e("getcostoken",{path:n,filename:t.name,content_type:r}),p=c.upload_url||c.url||"";if(!p)throw new Error("未获取到上传地址:请确认已在【第三方服务配置→存储】配置并启用「阿里云 OSS」");const l=await fetch(p,{method:"PUT",headers:{"Content-Type":r},body:t});if(!l.ok)throw new Error(`Upload failed: ${l.status}`);return c.url||p.split("?")[0]}return{webApi:e,consoleApi:u,uploadFile:s}}export{A as u};
import{j as w,k as d}from"./CSjlBIfC.js";import{u as h}from"./CgE-6DOq.js";async function f(o,i,a){const e=w(),u=d(),s={"Content-Type":"application/json"};e.token&&(s.Authorization=e.token),a&&Object.assign(s,a);const t=await fetch(o,{method:"POST",headers:s,body:JSON.stringify(i)});if(!t.ok)throw new Error(`HTTP error: ${t.status}`);const n=await t.json();if(n.code===18)throw e.logout(),u.push("/"),new Error(n.msg||"Unauthorized");if(n.code!==0)throw new Error(n.msg||"Unknown error");return n.data}const y=/^(get|list|load|query|fetch|search|count|stat|export|check)/i;function g(o){return!y.test(o)}function A(){const o=w(),{begin:i,end:a}=h();async function e(t,n){const r={};if(o.currentAppId&&(r["X-App-Id"]=String(o.currentAppId)),!g(t))return f(`/web/api/api_${t}`,n??{},r);i();try{return await f(`/web/api/api_${t}`,n??{},r)}finally{a()}}async function u(t,n){return f(`/console/api/${t}`,n??{})}async function s(t,n){const r=t.type||"application/octet-stream",c=await e("getcostoken",{path:n,filename:t.name,content_type:r}),p=c.upload_url||c.url||"";if(!p)throw new Error("未获取到上传地址:请确认已在【第三方服务配置→存储】配置并启用「阿里云 OSS」");const l=await fetch(p,{method:"PUT",headers:{"Content-Type":r},body:t});if(!l.ok)throw new Error(`Upload failed: ${l.status}`);return c.url||p.split("?")[0]}return{webApi:e,consoleApi:u,uploadFile:s}}export{A as u};

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CcYro5R2.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/qig5Qp6S.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CgE-6DOq.js

@ -1 +1 @@
import{e as f,a9 as p,aa as c,z as r}from"./mElhLwm2.js";const l="$s";function y(...t){const a=typeof t[t.length-1]=="string"?t.pop():void 0;typeof t[0]!="string"&&t.unshift(a);const[n,e]=t;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(e!==void 0&&typeof e!="function")throw new Error("[nuxt] [useState] init must be a function: "+e);const i=l+n,u=f(),s=p(u.payload.state,i);if(e&&(u._state[i]??={_default:e}),s.value===void 0&&e){const o=e();if(c(o))return u.payload.state[i]=o,o;s.value=o}return s}function v(){const t=y("app:loading",()=>0),a=r(()=>t.value>0);function n(){t.value++}function e(){t.value=Math.max(0,t.value-1)}return{count:t,loading:a,begin:n,end:e}}export{y as a,v as u};
import{e as f,a9 as p,aa as c,z as r}from"./CSjlBIfC.js";const l="$s";function y(...t){const a=typeof t[t.length-1]=="string"?t.pop():void 0;typeof t[0]!="string"&&t.unshift(a);const[n,e]=t;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(e!==void 0&&typeof e!="function")throw new Error("[nuxt] [useState] init must be a function: "+e);const i=l+n,u=f(),s=p(u.payload.state,i);if(e&&(u._state[i]??={_default:e}),s.value===void 0&&e){const o=e();if(c(o))return u.payload.state[i]=o,o;s.value=o}return s}function v(){const t=y("app:loading",()=>0),a=r(()=>t.value>0);function n(){t.value++}function e(){t.value=Math.max(0,t.value-1)}return{count:t,loading:a,begin:n,end:e}}export{y as a,v as u};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/l8H0VyaU.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CmmnvhJf.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/GZG--rps.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CzMCfc-v.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DuRQSWLc.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D1rGIbQk.js

File diff suppressed because one or more lines are too long

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DEBoYqVm.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/VVFxpwIU.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DSJrmuXT.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BJhUngVd.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DYuOZo9E.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CglQi8MB.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Dc2nKS93.js

@ -1 +1 @@
import{L as y,l as x}from"./ChQPCk92.js";import{g as V,c as t,F as u,a as l,n as C,r,l as g,t as o,z as h,o as s,d as B,_ as N}from"./mElhLwm2.js";const L={class:"lang-select"},O={class:"lang-chip-name"},S=["onClick"],j={key:0,class:"lang-empty"},z={key:0,class:"lang-dd"},F={class:"lang-dd-sum"},I={class:"lang-dd-panel"},T=["checked","onChange"],$={class:"lang-opt-code"},w={class:"lang-opt-name"},A=["value","disabled"],D=["value"],E=V({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(c,{emit:f}){const d=c,m=f,p=h(()=>d.options&&d.options.length?d.options:y),i=h(()=>(d.modelValue||"").split(",").map(a=>a.trim()).filter(Boolean));function v(a){return x(a)}function _(a){if(d.disabled)return;const n=i.value.slice(),e=n.indexOf(a);e>=0?n.splice(e,1):n.push(a),m("update:modelValue",n.join(","))}function b(a){m("update:modelValue",a.target.value)}return(a,n)=>(s(),t("div",L,[c.multiple?(s(),t(u,{key:0},[l("div",{class:C(["lang-chips",{"lang-disabled":c.disabled}])},[(s(!0),t(u,null,r(i.value,e=>(s(),t("span",{key:e,class:"lang-chip"},[B(o(e),1),l("span",O,o(v(e)),1),l("button",{type:"button",class:"lang-x",onClick:k=>_(e)},"×",8,S)]))),128)),i.value.length?g("",!0):(s(),t("span",j,"未选择语言"))],2),c.disabled?g("",!0):(s(),t("details",z,[l("summary",F,"+ 选择语言(已选 "+o(i.value.length)+")",1),l("div",I,[(s(!0),t(u,null,r(p.value,e=>(s(),t("label",{key:e.code,class:"lang-opt"},[l("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:i.value.includes(e.code),onChange:k=>_(e.code)},null,40,T),l("span",$,o(e.code),1),l("span",w,o(e.name),1)]))),128))])]))],64)):(s(),t("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:c.modelValue,disabled:c.disabled,onChange:b},[n[0]||(n[0]=l("option",{value:""},"(未设置)",-1)),(s(!0),t(u,null,r(p.value,e=>(s(),t("option",{key:e.code,value:e.code},o(e.code)+" · "+o(e.name),9,D))),128))],40,A))]))}}),q=Object.assign(N(E,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"});export{q as _};
import{L as y,l as x}from"./ChQPCk92.js";import{g as V,c as t,F as u,a as l,n as C,r,l as g,t as o,z as h,o as s,d as B,_ as N}from"./CSjlBIfC.js";const L={class:"lang-select"},O={class:"lang-chip-name"},S=["onClick"],j={key:0,class:"lang-empty"},z={key:0,class:"lang-dd"},F={class:"lang-dd-sum"},I={class:"lang-dd-panel"},T=["checked","onChange"],$={class:"lang-opt-code"},w={class:"lang-opt-name"},A=["value","disabled"],D=["value"],E=V({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(c,{emit:f}){const d=c,m=f,p=h(()=>d.options&&d.options.length?d.options:y),i=h(()=>(d.modelValue||"").split(",").map(a=>a.trim()).filter(Boolean));function v(a){return x(a)}function _(a){if(d.disabled)return;const n=i.value.slice(),e=n.indexOf(a);e>=0?n.splice(e,1):n.push(a),m("update:modelValue",n.join(","))}function b(a){m("update:modelValue",a.target.value)}return(a,n)=>(s(),t("div",L,[c.multiple?(s(),t(u,{key:0},[l("div",{class:C(["lang-chips",{"lang-disabled":c.disabled}])},[(s(!0),t(u,null,r(i.value,e=>(s(),t("span",{key:e,class:"lang-chip"},[B(o(e),1),l("span",O,o(v(e)),1),l("button",{type:"button",class:"lang-x",onClick:k=>_(e)},"×",8,S)]))),128)),i.value.length?g("",!0):(s(),t("span",j,"未选择语言"))],2),c.disabled?g("",!0):(s(),t("details",z,[l("summary",F,"+ 选择语言(已选 "+o(i.value.length)+")",1),l("div",I,[(s(!0),t(u,null,r(p.value,e=>(s(),t("label",{key:e.code,class:"lang-opt"},[l("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:i.value.includes(e.code),onChange:k=>_(e.code)},null,40,T),l("span",$,o(e.code),1),l("span",w,o(e.name),1)]))),128))])]))],64)):(s(),t("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:c.modelValue,disabled:c.disabled,onChange:b},[n[0]||(n[0]=l("option",{value:""},"(未设置)",-1)),(s(!0),t(u,null,r(p.value,e=>(s(),t("option",{key:e.code,value:e.code},o(e.code)+" · "+o(e.name),9,D))),128))],40,A))]))}}),q=Object.assign(N(E,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"});export{q as _};

2
apps/admin/.output/public/_nuxt/DACw1I5K.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Dcjzwjeu.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Db4U27_j.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DgF_fRjV.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BRt-3vKG.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DlCThPMw.js

File diff suppressed because one or more lines are too long

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DwmKnEeH.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CRsHkMZx.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/IkD0WKHv.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/FVTAbpot.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/QmZ_XupB.js

@ -1 +1 @@
import{a as u}from"./qig5Qp6S.js";let i=0;function f(){const o=u("app:toasts",()=>[]);function e(s,t="info",r=3e3){const a=++i;o.value.push({id:a,type:t,msg:s}),r>0&&setTimeout(()=>{o.value=o.value.filter(n=>n.id!==a)},r)}return{toasts:o,toast:e,success:(s,t)=>e(s,"success",t),error:(s,t)=>e(s,"error",t),info:(s,t)=>e(s,"info",t),warn:(s,t)=>e(s,"warning",t)}}export{f as u};
import{a as u}from"./CgE-6DOq.js";let i=0;function f(){const o=u("app:toasts",()=>[]);function e(s,t="info",r=3e3){const a=++i;o.value.push({id:a,type:t,msg:s}),r>0&&setTimeout(()=>{o.value=o.value.filter(n=>n.id!==a)},r)}return{toasts:o,toast:e,success:(s,t)=>e(s,"success",t),error:(s,t)=>e(s,"error",t),info:(s,t)=>e(s,"info",t),warn:(s,t)=>e(s,"warning",t)}}export{f as u};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BqjD6jMG.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/SxV4xvpk.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/G5UJCii2.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/WFs8pQQC.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BIXaKwU_.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/a5exfo9k.js

File diff suppressed because one or more lines are too long

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/agents.-kjpROzC.css

@ -1 +0,0 @@
.type-tag[data-v-463df649]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px}.agent-grid[data-v-463df649]{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.agent-card[data-v-463df649]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:14px 16px;cursor:pointer;transition:all .15s}.agent-card[data-v-463df649]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.svc-pill[data-v-463df649]{display:inline-flex;align-items:center;font-size:10px;font-weight:600;padding:2px 8px;border-radius:7px;color:#fff}.ag-overlay[data-v-463df649]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:24px}.ag-box[data-v-463df649]{background:#fff;border-radius:18px;padding:24px;width:780px;max-width:96vw;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px #0000002e}.scope-chip[data-v-463df649]{font-size:11px;font-weight:600;padding:2px 9px;border-radius:6px;background:#eef2ff;color:#4338ca}.ed-section[data-v-463df649]{padding:14px 0;border-top:1px dashed #eef2f7}.ed-section[data-v-463df649]:first-of-type{padding-top:0;border-top:none}.ed-section-title[data-v-463df649]{font-size:11px;font-weight:700;letter-spacing:.04em;color:#94a3b8;margin-bottom:10px}.ed-label[data-v-463df649]{display:block;font-size:11px;color:#64748b;margin-bottom:4px}.ed-label.inline[data-v-463df649]{display:inline-block;margin-left:6px}.ed-tip[data-v-463df649]{font-size:11px;color:#94a3b8;margin-top:8px}.req[data-v-463df649]{color:#dc2626;font-style:normal}.type-row[data-v-463df649]{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.ttab[data-v-463df649]{display:flex;flex-direction:column;gap:3px;padding:11px 12px;border-radius:10px;border:1.5px solid #e2e8f0;background:#fff;cursor:pointer;transition:all .15s;text-align:left}.ttab[data-v-463df649]:hover:not(:disabled){border-color:#c7d2fe;background:#f8fafc}.ttab.on[data-v-463df649]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.ttab.locked[data-v-463df649]{opacity:.45;cursor:not-allowed}.ttab-title[data-v-463df649]{font-weight:700;font-size:12px;color:#1e293b}.ttab-desc[data-v-463df649]{font-size:10px;color:#94a3b8}.slot-row[data-v-463df649]{display:flex;align-items:flex-end;gap:10px}.slot-item[data-v-463df649]{flex:1;min-width:0}.slot-arrow[data-v-463df649]{color:#cbd5e1;padding-bottom:8px;flex-shrink:0}.stage-tag[data-v-463df649]{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:5px;color:#fff;vertical-align:middle}.voice-row[data-v-463df649]{gap:8px;margin-bottom:6px}.ed-footer[data-v-463df649],.voice-row[data-v-463df649]{display:flex;align-items:center}.ed-footer[data-v-463df649]{justify-content:space-between;gap:12px;padding-top:14px;border-top:1px solid #eef2f7}@media(max-width:860px){.type-row[data-v-463df649]{grid-template-columns:repeat(2,1fr)}.slot-row[data-v-463df649]{flex-direction:column;align-items:stretch}.slot-arrow[data-v-463df649]{display:none}}

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/agents.Ba_0YWqu.css

@ -0,0 +1 @@
.type-tag[data-v-4a81d81a]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px}.agent-grid[data-v-4a81d81a]{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.agent-card[data-v-4a81d81a]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:14px 16px;cursor:pointer;transition:all .15s}.agent-card[data-v-4a81d81a]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.svc-pill[data-v-4a81d81a]{display:inline-flex;align-items:center;font-size:10px;font-weight:600;padding:2px 8px;border-radius:7px;color:#fff}.ag-overlay[data-v-4a81d81a]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:24px}.ag-box[data-v-4a81d81a]{background:#fff;border-radius:18px;padding:24px;width:780px;max-width:96vw;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px #0000002e}.scope-chip[data-v-4a81d81a]{font-size:11px;font-weight:600;padding:2px 9px;border-radius:6px;background:#eef2ff;color:#4338ca}.ed-section[data-v-4a81d81a]{padding:14px 0;border-top:1px dashed #eef2f7}.ed-section[data-v-4a81d81a]:first-of-type{padding-top:0;border-top:none}.ed-section-title[data-v-4a81d81a]{font-size:11px;font-weight:700;letter-spacing:.04em;color:#94a3b8;margin-bottom:10px}.ed-label[data-v-4a81d81a]{display:block;font-size:11px;color:#64748b;margin-bottom:4px}.ed-label.inline[data-v-4a81d81a]{display:inline-block;margin-left:6px}.ed-tip[data-v-4a81d81a]{font-size:11px;color:#94a3b8;margin-top:8px}.req[data-v-4a81d81a]{color:#dc2626;font-style:normal}.type-row[data-v-4a81d81a]{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.ttab[data-v-4a81d81a]{display:flex;flex-direction:column;gap:3px;padding:11px 12px;border-radius:10px;border:1.5px solid #e2e8f0;background:#fff;cursor:pointer;transition:all .15s;text-align:left}.ttab[data-v-4a81d81a]:hover:not(:disabled){border-color:#c7d2fe;background:#f8fafc}.ttab.on[data-v-4a81d81a]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.ttab.locked[data-v-4a81d81a]{opacity:.45;cursor:not-allowed}.ttab-title[data-v-4a81d81a]{font-weight:700;font-size:12px;color:#1e293b}.ttab-desc[data-v-4a81d81a]{font-size:10px;color:#94a3b8}.slot-row[data-v-4a81d81a]{display:flex;align-items:flex-end;gap:10px}.slot-item[data-v-4a81d81a]{flex:1;min-width:0}.slot-arrow[data-v-4a81d81a]{color:#cbd5e1;padding-bottom:8px;flex-shrink:0}.stage-tag[data-v-4a81d81a]{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:5px;color:#fff;vertical-align:middle}.voice-row[data-v-4a81d81a]{gap:8px;margin-bottom:6px}.ed-footer[data-v-4a81d81a],.voice-row[data-v-4a81d81a]{display:flex;align-items:center}.ed-footer[data-v-4a81d81a]{justify-content:space-between;gap:12px;padding-top:14px;border-top:1px solid #eef2f7}@media(max-width:860px){.type-row[data-v-4a81d81a]{grid-template-columns:repeat(2,1fr)}.slot-row[data-v-4a81d81a]{flex-direction:column;align-items:stretch}.slot-arrow[data-v-4a81d81a]{display:none}}

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BuCQ8FwD.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/hXX2NJw2.js

File diff suppressed because one or more lines are too long

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/hv_H8fds.js

File diff suppressed because one or more lines are too long

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save