Files
senmesh-zc/deployment/iw/web/assets/console-nn2bY2CJ.js
KodouWZF d39b3b035d feat(部署): 新增 deployment/ 内外网两套按侧部署包
按 demo/ 的写法把交付包改成「角色由目录决定」:iw/ 拷内网机、ow/ 拷外网机,
各自含镜像 tar、SQL、配置与 install.sh,install.sh 不再收 iw/ow 参数。

前端不再打进镜像,改为静态包放在 <侧>/web/ 只读挂进 nginx:1.27-alpine,
现场临时改页面直接替换文件 + restart web 即可。数据仍全部挂宿主机,
子目录命名与 deploy/offline 一致(pgdata/redis/mq/upload/logs/gate),
默认根改为包内 ./volumes,放数据盘只改 .env 的 SFILE_DATA_ROOT。

后端镜像 sfile-app:1.0.1 含传输优化那一批(实测组包 11.4×、解包 9.9×)。
出包脚本 deployment/scripts/build-package.sh 负责 jar→镜像→前端双包→sql→tar→VERSION。
2026-11-04 21:44:56 +08:00

2 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{t as e}from"./useQuery-dxbdhNvu.js";import{a as t,i as n,n as r,o as i,r as a,t as o}from"./select-stsOu5jD.js";import{t as s}from"./file-COj1kCUn.js";import{t as c}from"./folder-input--tEWrMtP.js";import{t as l}from"./folder-Dl7FxCLT.js";import{t as u}from"./plus-BHIlMeNy.js";import{t as d}from"./upload-Cr-BixPb.js";import{$ as f,Ft as p,G as m,H as h,K as g,M as _,Mt as v,Q as y,Qt as b,Tt as x,U as S,V as C,Vn as w,W as T,Zt as E,bt as ee,ct as D,et as O,fn as te,gt as ne,jt as k,ln as A,lt as re,mt as ie,q as j,qn as M,rn as N,st as P,tn as ae,tt as F,yn as I,yt as oe,zn as se}from"./index-BaTxSAlR.js";import{t as ce}from"./directory-breadcrumb-u3uCxukv.js";import{n as L,r as R,t as z}from"./data-table-CEq6a930.js";import{t as le}from"./pagination-Bragnnjj.js";import{a as ue,n as de,o as B,r as V,s as H,t as U}from"./dialog-CnxDxMp1.js";import{n as W,t as fe}from"./es-6YDPW35u.js";import{t as G}from"./textarea-Dyx6I5ZN.js";import{i as K,n as q,r as pe,t as me}from"./tabs-DopbVsQe.js";var he=te(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),J=M(w(),1);const ge=t=>{var n,r,i;let[a,o]=(0,J.useState)([]),[s,c]=(0,J.useState)(0),[l,u]=(0,J.useState)({pageIndex:0,pageSize:10}),d=e({queryKey:[`riskFileList`,l,s],queryFn:()=>ne({rootType:re.OUTSIDE,fileStatus:P.AUDITING,parentId:s||0,pageSize:l.pageSize,pageNo:l.pageIndex+1}).then(e=>e.data)}),f=e=>{c(e.id),m.setPageIndex(0),o(t=>[...t,e])},p=t(f),m=L({data:(d==null||(n=d.data)==null?void 0:n.entityList)||[],columns:p,getCoreRowModel:R(),manualPagination:!1,rowCount:(d==null||(r=d.data)==null?void 0:r.totalCount)||0,pageCount:(d==null||(i=d.data)==null?void 0:i.pageCount)||0,onPaginationChange:u,autoResetPageIndex:!1,state:{pagination:l}});return{parentId:s,handleChangeParentId:f,openDirectorys:a,changeOpenDirectorys:e=>{c(e==null?void 0:e.id),m.setPageIndex(0),o(t=>{let n=t.findIndex(t=>t.id===(e==null?void 0:e.id));return n>-1?[...t.slice(0,n+1)]:[]})},pagination:l,table:m,query:d}},_e=e=>{let{mutateAsync:t,isPending:n}=I({mutationFn:x,...e||{}});return{changeStatus:e=>{A.promise(t(e),{loading:`操作中`,success:`操作成功`})},changeStatusIsPending:n}};var Y=M(se(),1);function ve({open:e,setOpen:t,data:n,refetch:r}){let{changeStatus:i,changeStatusIsPending:a}=_e({onSuccess(){r==null||r(),t(!1)}});return(0,Y.jsx)(U,{open:e,onOpenChange:t,children:(0,Y.jsxs)(V,{className:`w-[400px]`,children:[(0,Y.jsxs)(B,{children:[(0,Y.jsxs)(H,{children:[`您确定要`,(n==null?void 0:n.newStatus)===P.VALID?`通过`:`驳回`,`?`]}),(0,Y.jsxs)(`div`,{className:`mt-1 flex items-center gap-1 text-sm p-2 rounded-md bg-gray-50`,children:[(n==null?void 0:n.fileType)===D.FILE?(0,Y.jsx)(s,{size:16,className:`text-primary flex-none`}):(0,Y.jsx)(l,{size:16,className:`text-amber-500 flex-none`}),(0,Y.jsx)(`span`,{className:`break-all`,children:n==null?void 0:n.fileName})]})]}),(0,Y.jsxs)(ue,{children:[(0,Y.jsx)(de,{asChild:!0,children:(0,Y.jsx)(b,{variant:`outline`,children:`取消`})}),(0,Y.jsxs)(b,{type:`submit`,disabled:a,onClick:()=>{i({id:n==null?void 0:n.id,oldStatus:n==null?void 0:n.fileStatus,newStatus:n==null?void 0:n.newStatus})},children:[a&&(0,Y.jsx)(E,{}),`确定`]})]})]})})}let X=(e=21)=>{let t=``,n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[n[e]&63];return t};function ye({onSubmit:e,loading:t}){let{mutateAsync:n,isPending:r}=I({mutationFn:e=>p(e).then(e=>{var t;return ie((t=e.data)==null?void 0:t.fileCode)}).then(e=>{var t;return((t=JSON.parse((e==null?void 0:e.data)||`{}`))==null||(t=t.risk_rules)==null?void 0:t.map(e=>({...e,content_examples:e.content_examples.join(),id:X(16)})))||[]}),onSuccess(t){e(t)}}),{getRootProps:i,getInputProps:a,isDragActive:o}=fe({onDropAccepted:(0,J.useCallback)(e=>{e.forEach(e=>{n(e)})},[]),onDropRejected:(0,J.useCallback)(e=>{let t=e[0].errors[0];if(t.code===W.FileTooLarge){A.error(`文件大小超过5MB`);return}if(t.code===W.TooManyFiles){A.error(`只能上传一个文件`);return}A.error(`文件上传失败`)},[]),maxFiles:1,minSize:1,maxSize:5*1024*1024,disabled:r,multiple:!1});return(0,Y.jsxs)(`div`,{className:`relative border border-dashed rounded-lg text-center cursor-pointer transition-colors hover:border-primary overflow-hidden
${o?`border-primary bg-primary/5`:`border-muted-foreground/25`}`,children:[(r||t)&&(0,Y.jsx)(`div`,{className:`absolute left-0 right-0 top-0 bottom-0 flex items-center justify-center backdrop-blur-xs bg-white/5 z-50`,children:(0,Y.jsx)(E,{className:`h-12 w-12 text-primary`})}),(0,Y.jsxs)(`div`,{...i(),className:`p-8 rounded-lg outline-none`,children:[(0,Y.jsx)(`input`,{...a({accept:`.docx,.txt,.md,.mdx,.markdown,.pdf,.html,.xlsx,.csv,.pptx,.xml,.epub,.mp3,.m4a,.wav,.amr,.mpga,.mp4,.mov,.mpeg,.webm,.jpg,.jpeg,.png,.gif,.svg`})}),(0,Y.jsx)(`div`,{className:`p-4 rounded-full bg-gray-50 inline-flex justify-center items-center`,children:(0,Y.jsx)(d,{className:`mx-auto h-6 w-6 text-muted-foreground`})}),(0,Y.jsx)(`p`,{className:`mt-2 text-lg`,children:o?`松开鼠标以选择文件`:`拖放文件到这里,或点击选择`}),(0,Y.jsx)(`p`,{className:`mt-2 text-sm text-black/50`,children:`文件最大不能超过5MB`})]})]})}var be=y({risk_category:f().max(32,{message:`风险类别名称最多32个字符`}).nonempty({message:`风险类别名称不能为空`}),content_examples:f().max(256,{message:`内容示例最多256个字符`}).nonempty({message:`内容示例不能为空`}),judgment_criteria:f().max(256,{message:`判断依据最多256个字符`}).nonempty({message:`判断依据不能为空`}),risk_level:f().max(16,{message:`风险等级最多16个字符`}).nonempty({message:`风险等级不能为空`})});function xe({onSubmit:e,loading:s,onClose:c}){let l=F({resolver:O(be),defaultValues:{risk_category:``,content_examples:``,judgment_criteria:``,risk_level:``}}),u=t=>{e([{...t,id:X(16)}])};return(0,Y.jsx)(h,{...l,children:(0,Y.jsxs)(`form`,{onSubmit:l.handleSubmit(u),className:`space-y-4`,children:[(0,Y.jsx)(T,{control:l.control,name:`risk_category`,render:({field:e})=>(0,Y.jsxs)(m,{children:[(0,Y.jsx)(g,{children:`风险类别名称`}),(0,Y.jsx)(S,{children:(0,Y.jsx)(C,{...e})}),(0,Y.jsx)(j,{})]})}),(0,Y.jsx)(T,{control:l.control,name:`risk_level`,render:({field:e})=>(0,Y.jsxs)(m,{children:[(0,Y.jsx)(g,{children:`风险类型`}),(0,Y.jsx)(S,{children:(0,Y.jsxs)(o,{onValueChange:e.onChange,value:e.value,children:[(0,Y.jsx)(t,{className:`w-full`,children:(0,Y.jsx)(i,{placeholder:`请选择`})}),(0,Y.jsx)(r,{children:(0,Y.jsxs)(a,{children:[(0,Y.jsx)(n,{value:`1`,children:`高风险`}),(0,Y.jsx)(n,{value:`2`,children:`中风险`}),(0,Y.jsx)(n,{value:`3`,children:`低风险`})]})})]})}),(0,Y.jsx)(j,{})]})}),(0,Y.jsx)(T,{control:l.control,name:`content_examples`,render:({field:e})=>(0,Y.jsxs)(m,{children:[(0,Y.jsx)(g,{children:`内容示例`}),(0,Y.jsx)(S,{children:(0,Y.jsx)(G,{...e,rows:6})}),(0,Y.jsx)(j,{})]})}),(0,Y.jsx)(T,{control:l.control,name:`judgment_criteria`,render:({field:e})=>(0,Y.jsxs)(m,{children:[(0,Y.jsx)(g,{children:`判断依据`}),(0,Y.jsx)(S,{children:(0,Y.jsx)(G,{...e,rows:6})}),(0,Y.jsx)(j,{})]})}),(0,Y.jsxs)(`div`,{className:`space-x-2 flex justify-end`,children:[(0,Y.jsx)(b,{type:`button`,variant:`outline`,onClick:c,children:`取消`}),(0,Y.jsxs)(b,{type:`submit`,disabled:s,children:[s&&(0,Y.jsx)(E,{}),`确定`]})]})]})})}const Z=e=>{let{mutateAsync:t,isPending:n}=I({mutationFn:v,...e||{}});return{save:e=>{A.promise(t(e),{loading:`提交中...`,success:`操作成功`})},saveIsPending:n}};function Q({open:e,setOpen:t,refetch:n,data:r}){let{save:i,saveIsPending:a}=Z({onSuccess(){n(),t(!1)}}),o=e=>{if(!(e!=null&&e.length)){A.error(`数据为空,不能保存`);return}i([...r||[],...e])};return(0,Y.jsx)(U,{open:e,onOpenChange:t,children:(0,Y.jsxs)(V,{className:`!max-w-[500px] overflow-auto`,children:[(0,Y.jsx)(B,{children:(0,Y.jsx)(H,{children:`风险预警设置`})}),(0,Y.jsxs)(me,{defaultValue:`form`,children:[(0,Y.jsxs)(pe,{className:`w-full mb-2`,children:[(0,Y.jsx)(K,{value:`ai`,disabled:a,children:`AI生成`}),(0,Y.jsx)(K,{value:`form`,disabled:a,children:`表单创建`})]}),(0,Y.jsx)(q,{value:`ai`,children:(0,Y.jsx)(ye,{onSubmit:o,loading:a,onClose:()=>t(!1)})}),(0,Y.jsx)(q,{value:`form`,children:(0,Y.jsx)(xe,{onSubmit:o,loading:a,onClose:()=>t(!1)})})]})]})})}const Se=e=>{let{mutateAsync:t,isPending:n}=I({mutationFn:k,...e||{}});return{save:e=>{A.promise(t(e),{loading:`提交中...`,success:`操作成功`})},saveIsPending:n}};var Ce=y({minAuditRiskLevel:f().nonempty({message:`低风险处理方式不能为空`})}),we={3:`低风险`,2:`中风险`,1:`高风险`};function Te({removeRiskRule:e}){return[{accessorKey:`risk_category`,header:`风险类别`,cell:({row:e})=>(0,Y.jsx)(`span`,{children:e.getValue(`risk_category`)})},{accessorKey:`risk_level`,header:`风险等级`,cell:({row:e})=>(0,Y.jsx)(`span`,{children:we[e.getValue(`risk_level`)]})},{accessorKey:`content_examples`,header:`内容示例`,meta:{className:`whitespace-normal`},cell:({row:e})=>(0,Y.jsx)(`div`,{className:`w-[200px] wrap-break-word`,children:e.getValue(`content_examples`)})},{id:`actions`,header:`操作`,cell:({row:t})=>(0,Y.jsx)(`div`,{className:`space-x-2`,children:(0,Y.jsx)(b,{size:`sm`,variant:`destructive`,onClick:()=>e(t.original),children:`删除`})})}]}function Ee({open:s,setOpen:c}){let l=F({resolver:O(Ce),defaultValues:{minAuditRiskLevel:`高风险`}}),[d,f]=(0,J.useState)(!1),p=e({queryKey:[`riskRule`],queryFn:()=>ee().then(e=>JSON.parse(e.data||`[]`)),enabled:()=>s}),{save:g}=Z({onSuccess(){p==null||p.refetch()}}),_=Te({removeRiskRule:(0,J.useCallback)(e=>{var t;g((p==null||(t=p.data)==null?void 0:t.filter(t=>t.id!==e.id))||[])},[p==null?void 0:p.data])}),v=L({data:(p==null?void 0:p.data)||[],columns:_,getCoreRowModel:R(),state:{columnPinning:{right:[`actions`]}}}),y=e({queryKey:[`riskLevel`],queryFn:()=>oe().then(e=>e.data),enabled:()=>s});(0,J.useEffect)(()=>{l.reset({minAuditRiskLevel:y.data})},[y.data]);let{save:x,saveIsPending:C}=Se({onSuccess(){y==null||y.refetch()}}),w=e=>{x(e.minAuditRiskLevel)};return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Q,{open:d,setOpen:f,refetch:()=>p==null?void 0:p.refetch(),data:p==null?void 0:p.data}),(0,Y.jsx)(U,{open:s,onOpenChange:c,children:(0,Y.jsxs)(V,{className:`!max-w-[1000px] overflow-hidden`,children:[(0,Y.jsx)(B,{children:(0,Y.jsx)(H,{children:`风险预警设置`})}),(0,Y.jsx)(h,{...l,children:(0,Y.jsx)(`form`,{onSubmit:l.handleSubmit(w),className:`space-y-4`,children:(0,Y.jsx)(`div`,{className:`border border-solid border-accent p-3 rounded-lg`,children:(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`div`,{className:`text-sm`,children:`最低风险审批等级`}),(0,Y.jsx)(T,{control:l.control,name:`minAuditRiskLevel`,render:({field:e})=>(0,Y.jsxs)(m,{children:[(0,Y.jsx)(S,{children:(0,Y.jsxs)(o,{onValueChange:e.onChange,value:e.value,children:[(0,Y.jsx)(t,{className:`w-[100px]`,children:(0,Y.jsx)(i,{placeholder:`请选择`})}),(0,Y.jsx)(r,{children:(0,Y.jsxs)(a,{children:[(0,Y.jsx)(n,{value:`1`,children:`高风险`}),(0,Y.jsx)(n,{value:`2`,children:`中风险`}),(0,Y.jsx)(n,{value:`3`,children:`低风险`})]})})]})}),(0,Y.jsx)(j,{})]})}),(0,Y.jsxs)(b,{variant:`default`,type:`submit`,disabled:C,children:[C&&(0,Y.jsx)(E,{}),`保存`]})]})})})}),(0,Y.jsxs)(`div`,{className:`border border-solid border-accent p-3 rounded-lg overflow-auto`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`div`,{className:`text-base font-bold`,children:`告警类别管理`}),(0,Y.jsxs)(b,{variant:`default`,onClick:()=>{f(!0)},children:[(0,Y.jsx)(u,{}),`添加`]})]}),(0,Y.jsx)(`div`,{className:`mt-2 overflow-auto max-h-[400px]`,children:(0,Y.jsx)(z,{table:v,query:p})})]})]})})]})}var De={3:`低`,2:`中`,1:`高`};function $({handleChangeParentId:e,handleResolve:t,handleReject:n}){return[{accessorKey:`fileName`,header:`文件名`,cell:({row:t})=>{var n,r;return(0,Y.jsxs)(`div`,{className:N(`flex items-center gap-1 break-all`,(t==null||(n=t.original)==null?void 0:n.fileType)===D.DIRECTORY&&`cursor-pointer hover:underline hover:text-primary group`),onClick:()=>{var n;(t==null||(n=t.original)==null?void 0:n.fileType)===D.DIRECTORY&&e(t==null?void 0:t.original)},children:[(t==null||(r=t.original)==null?void 0:r.fileType)===D.FILE?(0,Y.jsx)(s,{size:18,className:`text-primary`}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(l,{size:18,className:`text-amber-500 group-hover:hidden`}),(0,Y.jsx)(c,{size:18,className:`text-amber-500 group-hover:block hidden`})]}),(0,Y.jsx)(`span`,{children:t.getValue(`fileName`)})]})}},{accessorKey:`createTime`,header:`创建日期`,cell:({row:e})=>(0,Y.jsx)(`div`,{children:e.getValue(`createTime`)})},{accessorKey:`maxRiskLevel`,header:`风险等级`,cell:({row:e})=>(0,Y.jsx)(`div`,{children:De[e.getValue(`maxRiskLevel`)]||`-`})},{accessorKey:`recommendation`,header:`原因`,cell:({row:e})=>{var t,n;let r=JSON.parse(((t=e.original)==null?void 0:t.riskJson)||`{}`);return(0,Y.jsx)(`div`,{children:(r==null||(n=r.risk_rules)==null||(n=n.map(e=>e.risk_category))==null?void 0:n.join())||`-`})}},{accessorKey:`fileSize`,header:`文件大小`,cell:({row:e})=>(0,Y.jsx)(`div`,{children:ae(e.getValue(`fileSize`))})},{accessorKey:`fileStatus`,header:()=>(0,Y.jsx)(`div`,{className:`text-center`,children:`状态`}),cell:({row:e})=>(0,Y.jsx)(`div`,{className:`text-center`,children:(0,Y.jsx)(_,{status:e.original.fileStatus})})},{id:`actions`,enableHiding:!1,header:`操作`,cell:({row:e})=>e.original.parentId===0?(0,Y.jsxs)(`div`,{className:`space-x-2`,children:[(0,Y.jsx)(b,{size:`sm`,onClick:()=>t(e.original),children:`通过`}),(0,Y.jsx)(b,{size:`sm`,variant:`destructive`,onClick:()=>n(e.original),children:`驳回`})]}):null}]}function Oe(){let[e,t]=(0,J.useState)(null),[n,r]=(0,J.useState)(!1),i=e=>{t({...e,newStatus:P.VALID}),r(!0)},a=e=>{t({...e,newStatus:P.INVALID}),r(!0)},{openDirectorys:o,changeOpenDirectorys:s,table:c,query:l}=ge(e=>$({handleChangeParentId:e,handleResolve:i,handleReject:a})),[u,d]=(0,J.useState)(!1);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(ve,{open:n,setOpen:r,data:e,refetch:l.refetch}),(0,Y.jsx)(Ee,{open:u,setOpen:d}),(0,Y.jsxs)(`div`,{className:`p-4 box-border min-h-full space-y-4`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-lg`,children:`管理控制台`}),(0,Y.jsx)(`div`,{className:`text-xs text-black/50`,children:`系统管理与监控中心`})]}),(0,Y.jsxs)(`div`,{className:`p-4 rounded-lg border bg-white space-y-2`,children:[(0,Y.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,Y.jsxs)(b,{variant:`default`,onClick:()=>d(!0),children:[(0,Y.jsx)(he,{}),`风险告警设置`]})}),(0,Y.jsx)(ce,{directorys:o,onChangeDirectorys:s}),(0,Y.jsxs)(`div`,{className:`relative overflow-hidden`,children:[(0,Y.jsx)(z,{table:c,query:l}),(0,Y.jsx)(le,{table:c,className:`justify-end p-2 sticky bottom-0 left-0 right-0 z-10 bg-white`})]})]})]})]})}export{Oe as component,$ as useColumns};