From a49ed802f438a6889f09d51e45c996ffcda88cdf Mon Sep 17 00:00:00 2001 From: GinHa <15201596918@163.com> Date: Tue, 11 Aug 2026 13:23:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E5=91=98=E7=A7=AF=E5=88=86=E6=94=B9?= =?UTF-8?q?=E7=89=88V7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{index-C0AXQCDm.js => index-DWWJqJI6.js} | 6 +- video-gen-admin/dist/index.html | 2 +- .../src/pages/AdminCreditProducts.tsx | 12 ++- .../src/pages/AdminCreditRecords.tsx | 6 +- ...a63_expand_credit_addon_validity_months.py | 75 +++++++++++++++++++ .../app/api/admin/credit_management.py | 6 +- video-gen-api/app/models/credit/product.py | 4 +- video-gen-api/app/schemas/credit_product.py | 4 + .../app/services/credit/product_service.py | 2 +- .../services/credit/subscription_service.py | 21 +++++- .../{index-Bni9FiTX.js => index-zFXYmniI.js} | 4 +- video-gen-app/dist/index.html | 2 +- .../src/components/Layout/AppLayout.tsx | 3 + video-gen-app/src/pages/CreditRecordsPage.tsx | 19 ++--- 14 files changed, 137 insertions(+), 29 deletions(-) rename video-gen-admin/dist/assets/{index-C0AXQCDm.js => index-DWWJqJI6.js} (96%) create mode 100644 video-gen-api/alembic/versions/b7e2c4d91a63_expand_credit_addon_validity_months.py rename video-gen-app/dist/assets/{index-Bni9FiTX.js => index-zFXYmniI.js} (96%) diff --git a/video-gen-admin/dist/assets/index-C0AXQCDm.js b/video-gen-admin/dist/assets/index-DWWJqJI6.js similarity index 96% rename from video-gen-admin/dist/assets/index-C0AXQCDm.js rename to video-gen-admin/dist/assets/index-DWWJqJI6.js index 64019c24..35852eed 100644 --- a/video-gen-admin/dist/assets/index-C0AXQCDm.js +++ b/video-gen-admin/dist/assets/index-DWWJqJI6.js @@ -573,7 +573,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho `);break;case``:l=!0;break;case``:l=!1;break;case``:case``:case``:break;case``:l=!1;break;default:if(!l&&o.WTF)throw Error(`unrecognized `+n[0]+` in threaded comments`)}return e}),s)))}),_&&_.length&&sc(g,_,!0,c.people||[])}catch(e){if(c.WTF)throw e}var v,h}function Kd(e){return e.charAt(0)==`/`?e.slice(1):e}function qd(e,t){if(Oe(),Hd(t||={}),st(e,`META-INF/manifest.xml`)||st(e,`objectdata.xml`))return ud(e,t);if(st(e,`Index/Document.iwa`)){if(typeof Uint8Array>`u`)throw Error(`NUMBERS file parsing requires Uint8Array support`);if(e.FileIndex)return zd(e);var n=Pe.utils.cfb_new();return dt(e).forEach(function(t){ft(n,t,function e(t,n,r){if(!r)return ot(ct(t,n));if(!n)return null;try{return e(t,n)}catch{return null}}(e,t))}),zd(n)}if(!st(e,`[Content_Types].xml`))throw st(e,`index.xml.gz`)?Error(`Unsupported NUMBERS 08 file`):st(e,`index.xml`)?Error(`Unsupported NUMBERS 09 file`):Error(`Unsupported ZIP file`);var r,i,a=dt(e),o=function(e){var t=$r();if(!e||!e.match)return t;var n={};if((e.match(yt)||[]).forEach(function(e){var r=St(e);switch(r[0].replace(bt,`<`)){case`]*>([\\s\\S]*?)`));n&&0`:r=null;break;default:if(o.indexOf(``),l=c[0].slice(4),u=c[1];switch(l){case`lpstr`:case`bstr`:case`lpwstr`:n[r]=Ot(u);break;case`bool`:n[r]=Rt(u);break;case`i1`:case`i2`:case`i4`:case`i8`:case`int`:case`uint`:n[r]=parseInt(u,10);break;case`r4`:case`r8`:case`decimal`:n[r]=parseFloat(u);break;case`filetime`:case`date`:n[r]=Xe(u);break;case`cy`:case`error`:n[r]=Ot(u);break;default:if(l.slice(-1)==`/`)break;t.WTF&&typeof console<`u`&&console.warn(`Unexpected`,o,l,c)}}else if(o.slice(0,2)!==``:break;case``:break;case``:case``:case``:break;case``:O=!1;break;default:if(!O&&E.WTF)throw Error(`unrecognized `+t[0]+` in threaded comments`)}return e}),D)),k&&=Wd(k,p.Sheets);var A=+!!lt(e,`xl/worksheets/sheet.xml`,!0);e:for(b=0;b!=m.Worksheets;++b){var j=`sheet`;if(k&&k[b]?(v=`xl/`+k[b][1].replace(/[\/]?xl\//,``),st(e,v)||(v=k[b][1]),st(e,v)||(v=T.replace(/_rels\/.*$/,``)+k[b][1]),j=k[b][2]):v=(v=`xl/worksheets/sheet`+(b+1-A)+`.`+w).replace(/sheet0\./,`sheet.`),y=v.replace(/^(.*)(\/)([^\/]*)$/,`$1/_rels/$3.rels`),t&&t.sheets!=null)switch(typeof t.sheets){case`number`:if(b!=t.sheets)continue e;break;case`string`:if(m.SheetNames[b].toLowerCase()!=t.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(t.sheets)){for(var M=!1,N=0;N!=t.sheets.length;++N)typeof t.sheets[N]==`number`&&t.sheets[N]==b&&(M=1),typeof t.sheets[N]==`string`&&t.sheets[N].toLowerCase()==m.SheetNames[b].toLowerCase()&&(M=1);if(!M)continue e}}Gd(e,v,y,m.SheetNames[b],b,x,r,j,t,p,c,l)}return _={Directory:o,Workbook:p,Props:m,Custprops:g,Deps:h,Sheets:r,SheetNames:m.SheetNames,Strings:tl,Styles:l,Themes:c,SSF:Qe(V)},t&&t.bookFiles&&(e.files?(_.keys=a,_.files=e.files):(_.keys=[],_.files={},e.FullPaths.forEach(function(t,n){t=t.replace(/^Root Entry[\/]/,``),_.keys.push(t),_.files[t]=e.FileIndex[n]}))),t&&t.bookVBA&&(0/,`>`)];return e.forEach(function(e){var i=``;(e[1]||[]).forEach(function(a,o){var s;a.T?(a.a&&t.indexOf(a.a)==-1&&t.push(a.a),s={ref:e[0],id:`{54EE7951-7262-4200-6969-`+(`000000000000`+ n.tcid++).slice(-12)+`}`},o==0?i=s.id:s.parentId=i,a.ID=s.id,a.a&&(s.personId=`{54EE7950-7262-4200-6969-`+(`000000000000`+t.indexOf(a.a)).slice(-12)+`}`),r.push(rn(`threadedComment`,tn(`text`,a.t||``),s))):delete a.ID})}),r.push(``),r.join(``)}(f,d,t)),i.threadedcomments.push(m),ai(g,-1,`../threadedComments/threadedComment`+s+`.`+n,ti.TCMNT)),ft(a,m=`xl/comments`+s+`.`+n,cc(f)),i.comments.push(m),ai(g,-1,`../comments`+s+`.`+n,ti.CMNT),p=!0),_[`!legacy`]&&p&&ft(a,`xl/drawings/vmlDrawing`+s+`.vml`,oc(s,_[`!comments`])),delete _[`!comments`],delete _[`!legacy`]),g[`!id`].rId1&&ft(a,ni(o),ii(g))}return t.Strings!=null&&0/,`>`)],r.forEach(function(e,t){u.push(rn(`person`,null,{displayName:e,id:`{54EE7950-7262-4200-6969-`+(`000000000000`+t).slice(-12)+`}`,userId:e,providerId:`None`}))}),u.push(``),u.join(``))),i.people.push(o),ai(t.wbrels,-1,`persons/person.xml`,ti.PEOPLE)),ft(a,`[Content_Types].xml`,ei(i,t)),ft(a,`_rels/.rels`,ii(t.rels)),ft(a,`xl/_rels/workbook.xml.rels`,ii(t.wbrels)),delete t.revssf,delete t.ssf,a}function Zd(e,t){var n=``;switch((t||{}).type||`base64`){case`buffer`:return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case`base64`:n=b(e.slice(0,12));break;case`binary`:n=e;break;case`array`:return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw Error(`Unrecognized type `+(t&&t.type||`undefined`))}return[n.charCodeAt(0),n.charCodeAt(1),n.charCodeAt(2),n.charCodeAt(3),n.charCodeAt(4),n.charCodeAt(5),n.charCodeAt(6),n.charCodeAt(7)]}function Qd(e,t){var n=0;e:for(;n`u`||x||(r.type=`array`)),r.type==`string`&&(d=!0,r.type=`binary`,r.codepage=65001,u=(f=e).match(/[^\x00-\x7F]/)?qt(f):f),r.type==`array`&&typeof Uint8Array<`u`&&e instanceof Uint8Array&&typeof ArrayBuffer<`u`){var f=new ArrayBuffer(3),f=new Uint8Array(f);if(f.foo=`bar`,!f.foo)return(r=Qe(r)).type=`array`,ef(O(u),r)}switch((i=Zd(u,r))[0]){case 208:if(i[1]===207&&i[2]===17&&i[3]===224&&i[4]===161&&i[5]===177&&i[6]===26&&i[7]===225)return s=Pe.read(u,r),c=r,(Pe.find(s,`EncryptedPackage`)?Jd:Lu)(s,c);break;case 9:if(i[1]<=8)return Lu(u,r);break;case 60:return wu(u,r);case 73:if(i[1]===73&&i[2]===42&&i[3]===0)throw Error(`TIFF Image File is not a spreadsheet`);if(i[1]===68)return function(e,t){var n=t||{},r=!!n.WTF;n.WTF=!0;try{var i=za.to_workbook(e,n);return n.WTF=r,i}catch(i){if(n.WTF=r,!i.message.match(/SYLK bad record ID/)&&r)throw i;return no.to_workbook(e,t)}}(u,r);break;case 84:if(i[1]===65&&i[2]===66&&i[3]===76)return Ha.to_workbook(u,r);break;case 80:return i[1]===75&&i[2]<9&&i[3]<9?(o=c=u,(a=(a=r)||{}).type||(a.type=x&&Buffer.isBuffer(c)?`buffer`:`base64`),qd(mt(o,a),a)):$d(e,u,r,d);case 239:return i[3]===60?wu(u,r):$d(e,u,r,d);case 255:if(i[1]===254)return o=u,(a=r).type==`base64`&&(o=b(o)),o=n.utils.decode(1200,o.slice(2),`str`),a.type=`binary`,Qd(o,a);if(i[1]===0&&i[2]===2&&i[3]===0)return po.to_workbook(u,r);break;case 0:if(i[1]===0&&(2<=i[2]&&i[3]===0||i[2]===0&&(i[3]===8||i[3]===9)))return po.to_workbook(u,r);break;case 3:case 131:case 139:case 140:return Na.to_workbook(u,r);case 123:if(i[1]===92&&i[2]===114&&i[3]===116)return is.to_workbook(u,r);break;case 10:case 13:case 32:return function(e,t){var n=``,r=Zd(e,t);switch(t.type){case`base64`:n=b(e);break;case`binary`:n=e;break;case`buffer`:n=e.toString(`binary`);break;case`array`:n=Ze(e);break;default:throw Error(`Unrecognized type `+t.type)}return r[0]==239&&r[1]==187&&r[2]==191&&(n=Kt(n)),t.type=`binary`,Qd(n,t)}(u,r);case 137:if(i[1]===80&&i[2]===78&&i[3]===71)throw Error(`PNG Image File is not a spreadsheet`)}return-1t)return t;throw Error(`Cannot find sheet # `+t)}if(typeof t!=`string`)throw Error(`Cannot find sheet |`+t+`|`);if(-1<(e=e.SheetNames.indexOf(t)))return e;throw Error(`Cannot find sheet name |`+t+`|`)}(e,t),e.Workbook.Sheets[t]||(e.Workbook.Sheets[t]={}),n){case 0:case 1:case 2:break;default:throw Error(`Bad sheet visibility setting `+n)}e.Workbook.Sheets[t].Hidden=n},cell_set_number_format:function(e,t){return e.z=t,e},cell_set_hyperlink:xf,cell_set_internal_link:function(e,t,n){return xf(e,`#`+t,n)},cell_add_comment:function(e,t,n){e.c||=[],e.c.push({t,a:n||`SheetJS`})},sheet_set_array_formula:function(e,t,n,r){for(var i=typeof t==`string`?cr(t):t,a=typeof t==`string`?t:sr(t),o=i.s.r;o<=i.e.r;++o)for(var s=i.s.c;s<=i.e.c;++s){var c=vf(e,o,s);c.t=`n`,c.F=a,delete c.v,o==i.s.r&&s==i.s.c&&(c.f=n,r&&(c.D=!0))}return e},consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};function Cf(e){Sf=e}var pa={to_json:function(e,t){var n=Sf({objectMode:!0});if(e==null||e[`!ref`]==null)return n.push(null),n;var r,i={t:`n`,v:0},a=0,o=1,s=[],c=``,l={s:{r:0,c:0},e:{r:0,c:0}},u=t||{},d=u.range==null?e[`!ref`]:u.range;switch(u.header===1?a=1:u.header===`A`?a=2:Array.isArray(u.header)&&(a=3),typeof d){case`string`:l=cr(d);break;case`number`:(l=cr(e[`!ref`])).s.r=d;break;default:l=d}0a.e.r)return s||(s=!0,n.push(``+i)),n.push(null);for(;o<=a.e.r;){n.push(ed(e,a,o,r)),++o;break}},n},to_csv:function(e,t){var n=Sf(),r=t??{};if(e==null||e[`!ref`]==null)return n.push(null),n;var i=cr(e[`!ref`]),a=r.FS===void 0?`,`:r.FS,o=a.charCodeAt(0),s=r.RS===void 0?` -`:r.RS,c=s.charCodeAt(0),l=RegExp((a==`|`?`\\|`:a)+`+$`),u=``,d=[];r.dense=Array.isArray(e);for(var f=r.skipHidden&&e[`!cols`]||[],p=r.skipHidden&&e[`!rows`]||[],m=i.s.c;m<=i.e.c;++m)(f[m]||{}).hidden||(d[m]=rr(m));var h=i.s.r,g=!1,_=0;return n._read=function(){if(!g)return g=!0,n.push(``);for(;h<=i.e.r;)if(++h,!(p[h-1]||{}).hidden&&(u=mf(e,i,h-1,d,o,c,a,r),u!=null&&((u=r.strip?u.replace(l,``):u)||!1!==r.blankrows)))return n.push((_++?s:``)+u);return n.push(null)},n},set_readable:Cf},wf=function(){function e(t,n,r){return this instanceof e?(this.tagName=t,this._attributes=n||{},this._children=r||[],this._prefix=``,this):new e(t,n,r)}return e.prototype.createElement=function(){return new e(arguments)},e.prototype.children=function(){return this._children},e.prototype.append=function(e){return this._children.push(e),this},e.prototype.prefix=function(e){return arguments.length==0?this._prefix:(this._prefix=e,this)},e.prototype.attr=function(e,t){if(t==null)return delete this._attributes[e],this;if(arguments.length==0)return this._attributes;if(typeof e==`string`&&arguments.length==1)return this._attributes.attr[e];if(typeof e==`object`&&arguments.length==1)for(var n in e)this._attributes[n]=e[n];else arguments.length==2&&typeof e==`string`&&(this._attributes[e]=t);return this},e.prototype.escapeAttributeValue=function(e){return`"`+e.replace(/\"/g,`"`)+`"`},e.prototype.toXml=function(e){var t=(e||=this)._prefix;if(t+=`<`+e.tagName,e._attributes)for(var n in e._attributes)t+=` `+n+`=`+this.escapeAttributeValue(``+e._attributes[n]);if(e._children&&0`;for(var r=0;r`}else t+=`/>`;return t},e}(),Tf=function(e){var t,n=164,r={0:`General`,1:`0`,2:`0.00`,3:`#,##0`,4:`#,##0.00`,9:`0%`,10:`0.00%`,11:`0.00E+00`,12:`# ?/?`,13:`# ??/??`,14:`m/d/yy`,15:`d-mmm-yy`,16:`d-mmm`,17:`mmm-yy`,18:`h:mm AM/PM`,19:`h:mm:ss AM/PM`,20:`h:mm`,21:`h:mm:ss`,22:`m/d/yy h:mm`,37:`#,##0 ;(#,##0)`,38:`#,##0 ;[Red](#,##0)`,39:`#,##0.00;(#,##0.00)`,40:`#,##0.00;[Red](#,##0.00)`,45:`mm:ss`,46:`[h]:mm:ss`,47:`mmss.0`,48:`##0.0E+0`,49:`@`,56:`"上午/下午 "hh"時"mm"分"ss"秒 "`},i={};for(t in r)i[r[t]]=t;var a={};return{initialize:function(e){this.$fonts=wf(`fonts`).attr(`count`,0).attr(`x14ac:knownFonts`,`1`),this.$fills=wf(`fills`).attr(`count`,0),this.$borders=wf(`borders`).attr(`count`,0),this.$numFmts=wf(`numFmts`).attr(`count`,0),this.$cellStyleXfs=wf(`cellStyleXfs`),this.$xf=wf(`xf`).attr(`numFmtId`,0).attr(`fontId`,0).attr(`fillId`,0).attr(`borderId`,0),this.$cellXfs=wf(`cellXfs`).attr(`count`,0),this.$cellStyles=wf(`cellStyles`).append(wf(`cellStyle`).attr(`name`,`Normal`).attr(`xfId`,0).attr(`builtinId`,0)),this.$dxfs=wf(`dxfs`).attr(`count`,`0`),this.$tableStyles=wf(`tableStyles`).attr(`count`,`0`).attr(`defaultTableStyle`,`TableStyleMedium9`).attr(`defaultPivotStyle`,`PivotStyleMedium4`),this.$styles=wf(`styleSheet`).attr(`xmlns:mc`,`http://schemas.openxmlformats.org/markup-compatibility/2006`).attr(`xmlns:x14ac`,`http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac`).attr(`xmlns`,`http://schemas.openxmlformats.org/spreadsheetml/2006/main`).attr(`mc:Ignorable`,`x14ac`).prefix(``).append(this.$numFmts).append(this.$fonts).append(this.$fills).append(this.$borders).append(this.$cellStyleXfs.append(this.$xf)).append(this.$cellXfs).append(this.$cellStyles).append(this.$dxfs).append(this.$tableStyles);var t=e.defaultCellStyle||{};return t.font||={name:`Calibri`,sz:`11`},t.font.name||(t.font.name=`Calibri`),t.font.sz||(t.font.sz=11),t.fill||={patternType:`none`,fgColor:{}},t.border||={},t.numFmt||=0,this.defaultStyle=t,e=JSON.parse(JSON.stringify(t)),e.fill={patternType:`gray125`,fgColor:{}},this.addStyles([t,e]),this},addStyle:function(e){var t=JSON.stringify(e),n=a[t];return n==null?(n=this._addXf(e),a[t]=n):n=a[t],n},addStyles:function(e){var t=this;return e.map(function(e){return t.addStyle(e)})},_duckTypeStyle:function(e){return typeof e==`object`&&(e.patternFill||e.fgColor)?{fill:e}:e.font||e.numFmt||e.border||e.fill?e:this._getStyleCSS(e)},_getStyleCSS:function(e){return e},_addXf:function(e){var t=this._addFont(e.font),n=this._addFill(e.fill),r=this._addBorder(e.border),i=this._addNumFmt(e.numFmt),a=wf(`xf`).attr(`numFmtId`,i).attr(`fontId`,t).attr(`fillId`,n).attr(`borderId`,r).attr(`xfId`,`0`);return 0/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`),e=wf(`numFmt`).attr(`numFmtId`,++n).attr(`formatCode`,e),this.$numFmts.append(e),e=this.$numFmts.children().length,this.$numFmts.attr(`count`,e),n)},_addFill:function(e){if(!e)return 0;var t,n=wf(`patternFill`).attr(`patternType`,e.patternType||`solid`);return e.fgColor&&(t=wf(`fgColor`),e.fgColor.rgb?(e.fgColor.rgb.length==6&&(e.fgColor.rgb=`FF`+e.fgColor.rgb),t.attr(`rgb`,e.fgColor.rgb),n.append(t)):e.fgColor.theme&&(t.attr(`theme`,e.fgColor.theme),e.fgColor.tint&&t.attr(`tint`,e.fgColor.tint),n.append(t)),e.bgColor||={indexed:`64`}),e.bgColor&&(e=wf(`bgColor`).attr(e.bgColor),n.append(e)),n=wf(`fill`).append(n),this.$fills.append(n),n=this.$fills.children().length,this.$fills.attr(`count`,n),n-1},_getSubBorder:function(e,t){var n=wf(e);return t&&(n.attr(`style`,t.style||`medium`),t.color&&(e=wf(`color`),t.color.auto?e.attr(`auto`,t.color.auto):t.color.rgb?e.attr(`rgb`,t.color.rgb):(t.color.theme||t.color.tint)&&(e.attr(`theme`,t.color.theme||`1`),e.attr(`tint`,t.color.tint||`0`)),n.append(e))),n},_addBorder:function(e){if(!e)return 0;var t=this,n=wf(`border`).attr(`diagonalUp`,e.diagonalUp).attr(`diagonalDown`,e.diagonalDown);[`left`,`right`,`top`,`bottom`,`diagonal`].forEach(function(r){n.append(t._getSubBorder(r,e[r]))}),this.$borders.append(n);var r=this.$borders.children().length;return this.$borders.attr(`count`,r),r-1},toXml:function(){return this.$styles.toXml()}}.initialize(e||{})};Lu!==void 0&&(e.parse_xlscfb=Lu),e.parse_zip=qd,e.read=ef,e.readFile=tf,e.readFileSync=tf,e.write=cf,e.writeFile=uf,e.writeFileSync=uf,e.writeFileAsync=function(e,t,n,r){var i=n||{};return i.type=`file`,i.file=e,lf(i),i.type=`buffer`,r instanceof Function||(r=n),Me.writeFile(e,cf(t,i),r)},e.utils=Oa,e.writeXLSX=sf,e.writeFileXLSX=function(e,t,n){return(n||={}).type=`file`,n.file=t,lf(n),sf(e,n)},e.SSF=ke,pa!==void 0&&(e.stream=pa),Pe!==void 0&&(e.CFB=Pe),u===void 0||((pa=h5())||{}).Readable&&Cf(pa.Readable)}if(e===void 0?t!==void 0&&t.exports?r(t.exports):typeof define==`function`&&define.amd?define(`xlsx`,function(){return n.version||r(n),n}):r(n):r(e),typeof window<`u`&&!window.XLSX)try{window.XLSX=n}catch{}}))(),1),_5={top:{style:`thin`,color:{rgb:`000000`}},right:{style:`thin`,color:{rgb:`000000`}},bottom:{style:`thin`,color:{rgb:`000000`}},left:{style:`thin`,color:{rgb:`000000`}}},v5={vertical:`center`,wrapText:!0},u2e={font:{bold:!0,sz:16,color:{rgb:`FFFFFF`}},fill:{fgColor:{rgb:`111827`}},alignment:{...v5,horizontal:`center`},border:_5},d2e={font:{bold:!0,color:{rgb:`111827`}},fill:{fgColor:{rgb:`F3F4F6`}},alignment:{...v5,horizontal:`center`},border:_5},f2e={font:{color:{rgb:`111827`}},fill:{fgColor:{rgb:`FFFFFF`}},alignment:{...v5,horizontal:`left`},border:_5},p2e={font:{bold:!0,color:{rgb:`FFFFFF`}},fill:{fgColor:{rgb:`374151`}},alignment:{...v5,horizontal:`center`},border:_5},m2e={font:{color:{rgb:`111827`}},fill:{fgColor:{rgb:`FFFFFF`}},alignment:{...v5,horizontal:`left`},border:_5};function y5(e){return e??``}function b5(e){if(e==null)return 0;let t=(e instanceof Date?e.toISOString():String(e)).split(/\r?\n/);return Math.max(...t.map(e=>Array.from(e).reduce((e,t)=>e+(t.charCodeAt(0)>255?2:1),0)),0)}function x5(e,t,n){return Math.min(n,Math.max(t,e))}function h2e(e,t){let n=Math.max(t.length,...e.map(e=>e.length));return Array.from({length:n},(n,r)=>{let i=t[r];if(i?.width)return{wch:i.width};let a=e.reduce((e,t)=>Math.max(e,b5(t[r])),b5(i?.title)),o=i?.minWidth??10,s=i?.maxWidth??42;return{wch:x5(Math.ceil(a*1.15)+2,o,s)}})}function g2e(e,t,n=20){return x5(n+(e.reduce((e,n,r)=>{let i=Math.max(8,t[r]?.wch||12),a=(n==null?``:String(n)).split(/\r?\n/).reduce((e,t)=>e+Math.max(1,Math.ceil(b5(t)/Math.max(8,i-2))),0);return Math.max(e,a)},1)-1)*16,n,120)}function S5(e,t,n){e.s={...t,alignment:{...t.alignment},border:_5},n&&(e.z=n)}function C5(e){return typeof e==`number`&&Number.isFinite(e)}function _2e(e){let{filename:t,sheetName:n,title:r,metadataRows:i=[],summaryRows:a=[],columns:o,rows:s}=e,c=Math.max(1,o.length),l=[],u=-1,d=-1;r&&(u=l.length,l.push([r,...Array.from({length:c-1},()=>``)])),i.forEach(e=>l.push(e.map(y5))),a.forEach(e=>l.push(e.map(y5))),(i.length||a.length)&&l.push(Array.from({length:c},()=>``)),d=l.length,l.push(o.map(e=>e.title)),s.forEach((e,t)=>{l.push(o.map(n=>y5(n.render(e,t))))});let f=g5.utils.aoa_to_sheet(l),p=g5.utils.decode_range(f[`!ref`]||`A1:A1`),m=h2e(l,o);f[`!cols`]=m,f[`!rows`]=l.map((e,t)=>t===u?{hpt:34}:t===d?{hpt:28}:e.every(e=>e===``)?{hpt:10}:{hpt:g2e(e,m)}),u>=0&&c>1&&(f[`!merges`]=f[`!merges`]||[],f[`!merges`].push({s:{r:u,c:0},e:{r:u,c:c-1}})),f[`!autofilter`]={ref:g5.utils.encode_range({s:{r:d,c:0},e:{r:Math.max(d,l.length-1),c:c-1}})};for(let e=p.s.r;e<=p.e.r;e+=1)for(let t=p.s.c;t<=p.e.c;t+=1){let n=g5.utils.encode_cell({r:e,c:t}),r=f[n]||{t:`s`,v:``};if(f[n]=r,e===u){S5(r,u2e);continue}if(e===d){S5(r,p2e);continue}if(e{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(w5),[i,a]=(0,C.useState)(0),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)(``),[f,p]=(0,C.useState)(1),[m,h]=(0,C.useState)(10),[g,_]=(0,C.useState)(``),[v,y]=(0,C.useState)(``),[b,x]=(0,C.useState)([]),[S,w]=(0,C.useState)(``),[T,E]=(0,C.useState)(``),[D,O]=(0,C.useState)(``),[k,A]=(0,C.useState)(``),[j,M]=(0,C.useState)(``),[N,P]=(0,C.useState)(``),[F,I]=(0,C.useState)(``),[L,R]=(0,C.useState)(``),[z,B]=(0,C.useState)(``),[V,H]=(0,C.useState)([null,null]),U=(0,C.useMemo)(()=>({page:f,pageSize:m,userName:z||void 0,teamId:v||void 0,recordType:S||void 0,creditSubject:T||void 0,mediaType:D||void 0,chargeKind:k||void 0,chargeAction:j||void 0,sourceModule:N||void 0,sourceStepCode:F||void 0,billingScene:L||void 0,startDate:V[0]?.format(`YYYY-MM-DD`),endDate:V[1]?.format(`YYYY-MM-DD`),...k2e(g)}),[f,m,z,v,S,T,D,k,j,N,F,L,V,g]),W=async()=>{s(!0);try{let e=await L0(U);t(e.items||[]),a(e.total||0),r(e.summary||w5)}catch(e){X.error(e?.message||`加载积分记录失败`)}finally{s(!1)}};(0,C.useEffect)(()=>{W()},[U]),(0,C.useEffect)(()=>{k0(!0).then(x).catch(()=>{})},[]);let ee=()=>{_(``),y(``),w(``),E(``),O(``),A(``),M(``),P(``),I(``),R(``),B(``),H([null,null]),p(1)},te=async()=>{l(!0),d(`准备导出...`);try{let e={...U,page:1,pageSize:500},t=await L0(e),n=[...t.items||[]],r=t.summary||w5,i=t.total||0,a=Math.max(1,Math.ceil(i/500));d(`正在获取 ${n.length} / ${i}`);for(let t=2;t<=a;t+=1){let r=await L0({...e,page:t});n.push(...r.items||[]),d(`正在获取 ${Math.min(n.length,i)} / ${i}`)}_2e({filename:`积分流水_${(0,aS.default)().format(`YYYYMMDD_HHmmss`)}.xlsx`,sheetName:`积分流水`,title:`积分流水汇总`,metadataRows:[[`筛选时间`,`${V[0]?.format(`YYYY-MM-DD`)||`不限`} 至 ${V[1]?.format(`YYYY-MM-DD`)||`不限`}`],[`导出时间`,(0,aS.default)().format(`YYYY-MM-DD HH:mm:ss`)],[`导出条数`,i]],summaryRows:[[`总充值`,r.totalRecharge],[`总消费(真实扣费 + 预扣占用)`,r.totalConsume],[` · 真实扣费(独立统计:type=消费 & action=charge/NULL)`,r.totalCharge],[` · 预扣占用(独立统计:type=消费 & action=hold)`,r.totalHold],[`总回退(真实退款 + 预扣释放)`,r.totalRefund],[` · 真实退款(独立统计:type=回退 & action=refund/NULL)`,r.totalRefundReal],[` · 预扣释放(独立统计:type=回退 & action=hold_release)`,r.totalHoldRelease],[`净消耗(总消费 − 总回退,≥ 0)`,r.netConsume],[`交易笔数`,r.transactionCount],[`生成条数`,r.generationCount],[`生成尝试次数`,r.generationAttemptCount],[`图片生成条数`,r.imageGenerationCount],[`视频生成条数`,r.videoGenerationCount],[`图片消费积分(仅真实扣费)`,r.imageConsume],[`视频消费积分(仅真实扣费)`,r.videoConsume],[`提词消费积分(仅真实扣费)`,r.textConsume],[`视频分析积分(仅真实扣费)`,r.analysisConsume],[`总 Token`,r.totalTokens],[`输入 Token`,r.inputTokens],[`输出 Token`,r.outputTokens]],columns:[{title:`时间`,maxWidth:22,render:e=>v2(e.createdAt||``)},{title:`用户`,minWidth:12,maxWidth:20,render:e=>e.username||`-`},{title:`手机号`,minWidth:13,maxWidth:18,render:e=>e.phone||`-`},{title:`用户类型`,maxWidth:16,render:e=>e.userTypeLabel||`-`},{title:`前台归类`,maxWidth:18,render:e=>e.frontendUserKindLabel||`-`},{title:`归属团队`,maxWidth:20,render:e=>e.teamNameSnapshot||`未分配团队`},{title:`流水类型`,maxWidth:14,align:`center`,render:e=>e.recordTypeLabel||e.type||`-`},{title:`交易动作`,maxWidth:16,align:`center`,render:e=>e.chargeActionLabel||(e.chargeAction?T5[e.chargeAction]?.text||e.chargeAction:`-`)},{title:`积分类型`,maxWidth:20,render:e=>e.creditSubjectLabel||`-`},{title:`扣费子类`,maxWidth:22,render:e=>e.chargeKindLabel||`-`},{title:`模块`,maxWidth:20,render:e=>e.sourceModuleLabel||`-`},{title:`模块步骤`,maxWidth:22,render:e=>e.sourceStepCodeLabel||`-`},{title:`计费场景`,maxWidth:32,render:e=>e.sceneNameSnapshot||e.billingSceneLabel||`-`},{title:`媒体类型`,maxWidth:12,align:`center`,render:e=>e.mediaTypeLabel||`-`},{title:`业务积分`,minWidth:12,maxWidth:14,align:`right`,numFmt:`#,##0.00`,render:e=>e.amount},{title:`有效余额变动`,minWidth:14,maxWidth:16,align:`right`,numFmt:`#,##0.00`,render:e=>e.balanceDelta??e.amount},{title:`已过期积分`,minWidth:13,maxWidth:15,align:`right`,numFmt:`#,##0.00`,render:e=>e.expiredAmount||0},{title:`变动后余额`,minWidth:12,maxWidth:14,align:`right`,numFmt:`#,##0.00`,render:e=>e.balanceAfter},{title:`LLM调用`,minWidth:12,maxWidth:15,align:`right`,render:e=>`${e.llmCallCount||0}(成${e.llmSuccessCallCount||0}/败${e.llmFailedCallCount||0})`},{title:`实际 Token`,minWidth:12,maxWidth:14,align:`right`,numFmt:`#,##0`,render:e=>e.totalTokens||0},{title:`输入 Token`,minWidth:12,maxWidth:14,align:`right`,numFmt:`#,##0`,render:e=>e.inputTokens||0},{title:`输出 Token`,minWidth:12,maxWidth:14,align:`right`,numFmt:`#,##0`,render:e=>e.outputTokens||0},{title:`执行类型`,maxWidth:18,render:e=>D5(e.engineType)},{title:`执行配置`,maxWidth:28,render:e=>e.engineName||`-`},{title:`供应商`,maxWidth:18,render:e=>e.engineProvider||`-`},{title:`模型版本`,maxWidth:26,render:e=>e.engineModelName||`-`},{title:`关联状态`,maxWidth:14,align:`center`,render:e=>e.ownerDeleted?`关联已删除`:`正常`},{title:`说明`,minWidth:18,maxWidth:42,render:e=>e.description||``},{title:`业务归属类型`,maxWidth:18,render:e=>e.ownerType||``},{title:`业务归属ID`,maxWidth:28,render:e=>e.ownerId||``},{title:`积分来源分摊`,minWidth:24,maxWidth:48,render:e=>(e.allocations||[]).map(e=>`${e.sourceType||`-`}:${e.sourceId||`-`}=${e.amount}`).join(`;`)},{title:`BizKey`,maxWidth:36,render:e=>e.bizKey||``}],rows:n}),X.success(`Excel 已导出`)}catch(e){X.error(e?.message||`导出失败`)}finally{l(!1),d(``)}},ne=[{title:`用户`,dataIndex:`username`,width:130,fixed:`left`,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:e||`-`}),(0,Q.jsx)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:t.phone||`-`})]})},{title:`用户类型`,dataIndex:`userTypeLabel`,width:120,render:(e,t)=>(0,Q.jsx)(rI,{color:t.userType===`admin`?`orange`:`blue`,children:t.userTypeLabel||`-`})},{title:`归属团队`,dataIndex:`teamNameSnapshot`,width:130,render:e=>e?(0,Q.jsx)(rI,{color:`blue`,children:e}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`未分配`})},{title:`流水类型`,dataIndex:`recordType`,width:100,render:(e,t)=>{let n=y2e[e]||{text:t.recordTypeLabel||e||`-`,color:`default`,icon:null};return(0,Q.jsx)(rI,{color:n.color,icon:n.icon,children:n.text})}},{title:`交易动作`,dataIndex:`chargeAction`,width:110,render:(e,t)=>{let n=T5[e]||{text:t.chargeActionLabel||e||`-`,color:`default`};return e?(0,Q.jsx)(rI,{color:n.color,children:t.chargeActionLabel||n.text}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`历史`})}},{title:`积分类型`,dataIndex:`creditSubjectLabel`,width:150,render:e=>(0,Q.jsx)(rI,{children:e||`-`})},{title:`模块`,dataIndex:`sourceModuleLabel`,width:130,render:e=>e||`-`},{title:`步骤/场景`,key:`scene`,width:210,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{children:t.sceneNameSnapshot||t.billingSceneLabel||`-`}),(0,Q.jsx)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:t.sourceStepCodeLabel||`-`})]})},{title:`媒体`,dataIndex:`mediaTypeLabel`,width:80,render:e=>e?(0,Q.jsx)(rI,{color:`purple`,children:e}):`-`},{title:`业务积分`,dataIndex:`amount`,width:120,sorter:(e,t)=>e.amount-t.amount,render:e=>(0,Q.jsx)(Z.Text,{strong:!0,children:E5(e)})},{title:`有效变动`,dataIndex:`balanceDelta`,width:120,render:(e,t)=>{let n=e??t.amount;return(0,Q.jsxs)(Z.Text,{strong:!0,style:{color:n>0?`#10b981`:n<0?`#ef4444`:`#64748b`},children:[n>0?`+`:``,E5(n)]})}},{title:`过期积分`,dataIndex:`expiredAmount`,width:110,render:e=>e?(0,Q.jsx)(rI,{color:`orange`,children:E5(e)}):`-`},{title:`余额`,dataIndex:`balanceAfter`,width:110,render:e=>E5(e)},{title:`LLM调用`,key:`llmCalls`,width:130,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[E5(t.llmCallCount||0),` 次`,(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[`成 `,E5(t.llmSuccessCallCount||0),` / 败 `,E5(t.llmFailedCallCount||0)]})]})},{title:`Token`,key:`tokens`,width:140,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:E5(t.totalTokens)}),(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[`入 `,E5(t.inputTokens),` / 出 `,E5(t.outputTokens)]})]})},{title:`执行配置`,key:`engine`,width:230,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(rI,{color:t.engineType===`model`?`geekblue`:t.engineType===`image`?`purple`:t.engineType===`video`?`cyan`:`default`,children:D5(t.engineType)}),(0,Q.jsx)(`div`,{children:t.engineName||`-`}),(0,Q.jsx)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[t.engineProvider,t.engineModelName].filter(Boolean).join(` / `)||`-`})]})},{title:`关联状态`,dataIndex:`ownerDeleted`,width:100,render:e=>(0,Q.jsx)(rI,{color:e?`red`:`green`,children:e?`已删除`:`正常`})},{title:`说明`,dataIndex:`description`,width:240,ellipsis:!0},{title:`时间`,dataIndex:`createdAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:v2(e)})}];return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(5, minmax(0, 1fr))`,gap:16,marginBottom:16},children:[(0,Q.jsx)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(uR,{style:{color:`#10b981`,fontSize:22}}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{style:{color:`#94a3b8`},children:`总充值`}),(0,Q.jsxs)(`div`,{style:{fontSize:22,fontWeight:800,color:`#10b981`},children:[`+`,E5(n.totalRecharge)]})]})]})}),(0,Q.jsx)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(tR,{style:{color:`#ef4444`,fontSize:22}}),(0,Q.jsxs)(`div`,{style:{minWidth:0},children:[(0,Q.jsxs)(`div`,{style:{color:`#94a3b8`},children:[`总消费`,(0,Q.jsx)(`span`,{style:{marginLeft:6,fontSize:10,color:`#94a3b8`},children:`(真实扣费 + 预扣占用)`})]}),(0,Q.jsxs)(`div`,{style:{fontSize:22,fontWeight:800,color:`#ef4444`},children:[`-`,E5(n.totalConsume)]}),(0,Q.jsxs)(`div`,{style:{fontSize:11,color:`#94a3b8`,marginTop:2},children:[`真实 `,(0,Q.jsx)(`span`,{style:{color:`#b91c1c`,fontWeight:600},children:E5(n.totalCharge)}),(0,Q.jsx)(`span`,{style:{margin:`0 4px`,color:`#cbd5e1`},children:`|`}),`预扣 `,(0,Q.jsx)(`span`,{style:{color:`#d97706`,fontWeight:600},children:E5(n.totalHold)})]})]})]})}),(0,Q.jsx)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(uZ,{style:{color:`#3b82f6`,fontSize:22}}),(0,Q.jsxs)(`div`,{style:{minWidth:0},children:[(0,Q.jsxs)(`div`,{style:{color:`#94a3b8`},children:[`总回退`,(0,Q.jsx)(`span`,{style:{marginLeft:6,fontSize:10,color:`#94a3b8`},children:`(真实退款 + 预扣释放)`})]}),(0,Q.jsxs)(`div`,{style:{fontSize:22,fontWeight:800,color:`#3b82f6`},children:[`+`,E5(n.totalRefund)]}),(0,Q.jsxs)(`div`,{style:{fontSize:11,color:`#94a3b8`,marginTop:2},children:[`退款 `,(0,Q.jsx)(`span`,{style:{color:`#1d4ed8`,fontWeight:600},children:E5(n.totalRefundReal)}),(0,Q.jsx)(`span`,{style:{margin:`0 4px`,color:`#cbd5e1`},children:`|`}),`释放 `,(0,Q.jsx)(`span`,{style:{color:`#047857`,fontWeight:600},children:E5(n.totalHoldRelease)})]})]})]})}),(0,Q.jsx)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`,background:`linear-gradient(135deg, #faf5ff 0%, #eef2ff 100%)`},children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(EU,{style:{color:`#6366f1`,fontSize:22}}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{style:{color:`#6366f1`},children:`净消耗(实际用掉)`}),(0,Q.jsx)(`div`,{style:{fontSize:22,fontWeight:800,color:`#4338ca`},children:E5(n.netConsume)}),(0,Q.jsx)(`div`,{style:{fontSize:11,color:`#818cf8`,marginTop:2},children:`总消费 − 总回退(≥ 0)`})]})]})}),(0,Q.jsx)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(N1,{style:{color:`#6366f1`,fontSize:22}}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{style:{color:`#94a3b8`},children:`交易 / 生成`}),(0,Q.jsxs)(`div`,{style:{fontSize:22,fontWeight:800},children:[E5(n.transactionCount),` / `,E5(n.generationCount)]})]})]})})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(4, minmax(0, 1fr))`,gap:16,marginBottom:16},children:[(0,Q.jsxs)(aO,{size:`small`,bordered:!1,children:[`图片生成:`,E5(n.imageGenerationCount),` 条 / `,E5(n.imageConsume),` 积分`]}),(0,Q.jsxs)(aO,{size:`small`,bordered:!1,children:[`视频生成:`,E5(n.videoGenerationCount),` 条 / `,E5(n.videoConsume),` 积分`]}),(0,Q.jsxs)(aO,{size:`small`,bordered:!1,children:[`提词消费:`,E5(n.textConsume),` 积分`]}),(0,Q.jsxs)(aO,{size:`small`,bordered:!1,children:[`视频分析:`,E5(n.analysisConsume),` 积分`]})]}),(0,Q.jsxs)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16,flexWrap:`wrap`,gap:12},children:[(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(Wy,{value:g,onChange:e=>{p(1),_(e)},style:{width:150},options:b2e}),(0,Q.jsx)(Wy,{value:v,onChange:e=>{p(1),y(e)},style:{width:170},options:[{value:``,label:`全部团队`},{value:v2e,label:`未分配团队`},...b.map(e=>({value:e.id,label:e.status===`disabled`?`${e.name}(禁用)`:e.name}))]}),(0,Q.jsx)(Wy,{value:S,onChange:e=>{p(1),w(e)},style:{width:130},options:x2e}),(0,Q.jsx)(Wy,{value:T,onChange:e=>{p(1),E(e)},style:{width:180},options:S2e}),(0,Q.jsx)(Wy,{value:D,onChange:e=>{p(1),O(e)},style:{width:110},options:C2e}),(0,Q.jsx)(Wy,{value:k,onChange:e=>{p(1),A(e)},style:{width:150},options:w2e}),(0,Q.jsx)(Wy,{value:j,onChange:e=>{p(1),M(e)},style:{width:140},options:T2e}),(0,Q.jsx)(Wy,{value:N,onChange:e=>{p(1),P(e)},style:{width:150},options:E2e}),(0,Q.jsx)(Wy,{value:F,onChange:e=>{p(1),I(e)},style:{width:150},options:D2e}),(0,Q.jsx)(Wy,{value:L,onChange:e=>{p(1),R(e)},style:{width:220},options:O2e}),(0,Q.jsx)(Fj,{placeholder:`用户名/手机号/邮箱`,value:z,onChange:e=>{p(1),B(e.target.value)},style:{width:180},allowClear:!0}),(0,Q.jsx)(eA.RangePicker,{value:V,onChange:e=>{p(1),H(e?[e[0],e[1]]:[null,null])},placeholder:[`开始日期`,`结束日期`],style:{width:250}})]}),(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{onClick:ee,children:`重置`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:W,children:`刷新`}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(JI,{}),loading:c,onClick:te,children:`下载 Excel`})]})]}),u&&(0,Q.jsx)(`div`,{style:{marginBottom:12,color:`#6366f1`},children:u}),(0,Q.jsx)(ZF,{columns:ne,dataSource:e,rowKey:`id`,loading:o,pagination:{current:f,pageSize:m,total:i,onChange:(e,t)=>{p(e),h(t)},showSizeChanger:!0,showTotal:e=>`共 ${e} 条记录`},expandable:{rowExpandable:e=>!!e.allocations?.length,expandedRowRender:e=>(0,Q.jsx)(ZF,{size:`small`,pagination:!1,rowKey:`id`,dataSource:e.allocations||[],columns:[{title:`动作`,dataIndex:`allocationAction`,width:150},{title:`积分来源`,dataIndex:`sourceType`,width:160,render:e=>e||`-`},{title:`来源ID`,dataIndex:`sourceId`,width:260,render:e=>e||`-`},{title:`积分数量`,dataIndex:`amount`,width:120,render:e=>E5(e)},{title:`生效时间`,dataIndex:`validFrom`,width:190,render:e=>e?v2(e):`-`},{title:`过期边界`,dataIndex:`expiresAt`,width:190,render:e=>e?v2(e):`-`}],scroll:{x:1070}})},scroll:{x:2520}})]})]})},j2e=()=>{let[e,t]=(0,C.useState)(!1),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(180),[u]=Y.useForm(),d=async()=>{try{let e=await bJe(),t={};e.forEach(e=>{t[e.key]=e.value}),u.setFieldsValue({wechat_appid:t.payment_wechat_appid||``,wechat_mch_id:t.payment_wechat_mch_id||``,wechat_private_key:t.payment_wechat_private_key||``,wechat_cert_serial_no:t.payment_wechat_cert_serial_no||``,wechat_api_v3_key:t.payment_wechat_api_v3_key||``,wechat_notify_url:t.payment_wechat_notify_url||``,wechat_public_key:t.payment_wechat_public_key||``,wechat_public_key_id:t.payment_wechat_public_key_id||``,alipay_app_id:t.payment_alipay_app_id||``,alipay_private_key:t.payment_alipay_private_key||``,alipay_public_key:t.payment_alipay_public_key||``,alipay_notify_url:t.payment_alipay_notify_url||``,alipay_gateway:t.payment_alipay_gateway||``,order_timeout:t.payment_order_timeout||`180`}),r(t.payment_wechat_enabled===`true`),a(t.payment_alipay_enabled===`true`),s(t.payment_mock===`true`),l(parseInt(t.payment_order_timeout||`180`,10))}catch{X.error(`加载支付配置失败`)}};return(0,C.useEffect)(()=>{d()},[]),(0,Q.jsxs)(`div`,{style:{maxWidth:`100%`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:24,flexWrap:`wrap`,marginBottom:24},children:[(0,Q.jsx)(`div`,{style:{flex:`1 1 400px`,minWidth:400},children:(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[(0,Q.jsx)(`div`,{style:{width:40,height:40,borderRadius:10,background:`rgba(99,102,241,0.08)`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:20,color:`#6366f1`},children:(0,Q.jsx)(Xk,{})}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:`订单超时时间`})})]}),(0,Q.jsx)(Y,{form:u,layout:`inline`,children:(0,Q.jsx)(Y.Item,{name:`order_timeout`,style:{margin:0},children:(0,Q.jsxs)(bA.Compact,{style:{width:140},children:[(0,Q.jsx)(ok,{min:30,max:86400,placeholder:`180`,style:{width:`100%`},size:`middle`}),(0,Q.jsx)(Z.Text,{children:`秒`})]})})})]})})}),(0,Q.jsx)(`div`,{style:{flex:`1 1 400px`,minWidth:400},children:(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`,background:o?`#fff7e6`:`#fafbff`},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[(0,Q.jsx)(`div`,{style:{width:40,height:40,borderRadius:10,background:o?`rgba(245,158,11,0.15)`:`rgba(99,102,241,0.08)`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:20,color:o?`#f59e0b`:`#6366f1`},children:(0,Q.jsx)(EU,{})}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:`模拟支付模式`})})]}),(0,Q.jsx)(vN,{checked:o,onChange:s,checkedChildren:`已开启`,unCheckedChildren:`已关闭`})]})})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:24,flexWrap:`wrap`},children:[(0,Q.jsx)(`div`,{style:{flex:`1 1 400px`,minWidth:400},children:(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:20},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[(0,Q.jsx)(`div`,{style:{width:44,height:44,borderRadius:10,background:`rgba(7,193,96,0.08)`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:22,color:`#07c160`},children:(0,Q.jsx)(z1,{})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:5,style:{margin:0},children:`微信支付`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:`微信商户号支付配置`})]})]}),(0,Q.jsx)(vN,{checked:n,onChange:r,checkedChildren:`已启用`,unCheckedChildren:`未启用`})]}),(0,Q.jsxs)(Y,{form:u,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`wechat_appid`,label:`AppID`,children:(0,Q.jsx)(Fj,{placeholder:`微信支付 AppID`,size:`large`,disabled:!n})}),(0,Q.jsx)(Y.Item,{name:`wechat_mch_id`,label:`商户号 (MchID)`,children:(0,Q.jsx)(Fj,{placeholder:`微信支付商户号`,size:`large`,disabled:!n})}),(0,Q.jsx)(Y.Item,{name:`wechat_private_key`,label:`商户私钥`,extra:` +`:r.RS,c=s.charCodeAt(0),l=RegExp((a==`|`?`\\|`:a)+`+$`),u=``,d=[];r.dense=Array.isArray(e);for(var f=r.skipHidden&&e[`!cols`]||[],p=r.skipHidden&&e[`!rows`]||[],m=i.s.c;m<=i.e.c;++m)(f[m]||{}).hidden||(d[m]=rr(m));var h=i.s.r,g=!1,_=0;return n._read=function(){if(!g)return g=!0,n.push(``);for(;h<=i.e.r;)if(++h,!(p[h-1]||{}).hidden&&(u=mf(e,i,h-1,d,o,c,a,r),u!=null&&((u=r.strip?u.replace(l,``):u)||!1!==r.blankrows)))return n.push((_++?s:``)+u);return n.push(null)},n},set_readable:Cf},wf=function(){function e(t,n,r){return this instanceof e?(this.tagName=t,this._attributes=n||{},this._children=r||[],this._prefix=``,this):new e(t,n,r)}return e.prototype.createElement=function(){return new e(arguments)},e.prototype.children=function(){return this._children},e.prototype.append=function(e){return this._children.push(e),this},e.prototype.prefix=function(e){return arguments.length==0?this._prefix:(this._prefix=e,this)},e.prototype.attr=function(e,t){if(t==null)return delete this._attributes[e],this;if(arguments.length==0)return this._attributes;if(typeof e==`string`&&arguments.length==1)return this._attributes.attr[e];if(typeof e==`object`&&arguments.length==1)for(var n in e)this._attributes[n]=e[n];else arguments.length==2&&typeof e==`string`&&(this._attributes[e]=t);return this},e.prototype.escapeAttributeValue=function(e){return`"`+e.replace(/\"/g,`"`)+`"`},e.prototype.toXml=function(e){var t=(e||=this)._prefix;if(t+=`<`+e.tagName,e._attributes)for(var n in e._attributes)t+=` `+n+`=`+this.escapeAttributeValue(``+e._attributes[n]);if(e._children&&0`;for(var r=0;r`}else t+=`/>`;return t},e}(),Tf=function(e){var t,n=164,r={0:`General`,1:`0`,2:`0.00`,3:`#,##0`,4:`#,##0.00`,9:`0%`,10:`0.00%`,11:`0.00E+00`,12:`# ?/?`,13:`# ??/??`,14:`m/d/yy`,15:`d-mmm-yy`,16:`d-mmm`,17:`mmm-yy`,18:`h:mm AM/PM`,19:`h:mm:ss AM/PM`,20:`h:mm`,21:`h:mm:ss`,22:`m/d/yy h:mm`,37:`#,##0 ;(#,##0)`,38:`#,##0 ;[Red](#,##0)`,39:`#,##0.00;(#,##0.00)`,40:`#,##0.00;[Red](#,##0.00)`,45:`mm:ss`,46:`[h]:mm:ss`,47:`mmss.0`,48:`##0.0E+0`,49:`@`,56:`"上午/下午 "hh"時"mm"分"ss"秒 "`},i={};for(t in r)i[r[t]]=t;var a={};return{initialize:function(e){this.$fonts=wf(`fonts`).attr(`count`,0).attr(`x14ac:knownFonts`,`1`),this.$fills=wf(`fills`).attr(`count`,0),this.$borders=wf(`borders`).attr(`count`,0),this.$numFmts=wf(`numFmts`).attr(`count`,0),this.$cellStyleXfs=wf(`cellStyleXfs`),this.$xf=wf(`xf`).attr(`numFmtId`,0).attr(`fontId`,0).attr(`fillId`,0).attr(`borderId`,0),this.$cellXfs=wf(`cellXfs`).attr(`count`,0),this.$cellStyles=wf(`cellStyles`).append(wf(`cellStyle`).attr(`name`,`Normal`).attr(`xfId`,0).attr(`builtinId`,0)),this.$dxfs=wf(`dxfs`).attr(`count`,`0`),this.$tableStyles=wf(`tableStyles`).attr(`count`,`0`).attr(`defaultTableStyle`,`TableStyleMedium9`).attr(`defaultPivotStyle`,`PivotStyleMedium4`),this.$styles=wf(`styleSheet`).attr(`xmlns:mc`,`http://schemas.openxmlformats.org/markup-compatibility/2006`).attr(`xmlns:x14ac`,`http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac`).attr(`xmlns`,`http://schemas.openxmlformats.org/spreadsheetml/2006/main`).attr(`mc:Ignorable`,`x14ac`).prefix(``).append(this.$numFmts).append(this.$fonts).append(this.$fills).append(this.$borders).append(this.$cellStyleXfs.append(this.$xf)).append(this.$cellXfs).append(this.$cellStyles).append(this.$dxfs).append(this.$tableStyles);var t=e.defaultCellStyle||{};return t.font||={name:`Calibri`,sz:`11`},t.font.name||(t.font.name=`Calibri`),t.font.sz||(t.font.sz=11),t.fill||={patternType:`none`,fgColor:{}},t.border||={},t.numFmt||=0,this.defaultStyle=t,e=JSON.parse(JSON.stringify(t)),e.fill={patternType:`gray125`,fgColor:{}},this.addStyles([t,e]),this},addStyle:function(e){var t=JSON.stringify(e),n=a[t];return n==null?(n=this._addXf(e),a[t]=n):n=a[t],n},addStyles:function(e){var t=this;return e.map(function(e){return t.addStyle(e)})},_duckTypeStyle:function(e){return typeof e==`object`&&(e.patternFill||e.fgColor)?{fill:e}:e.font||e.numFmt||e.border||e.fill?e:this._getStyleCSS(e)},_getStyleCSS:function(e){return e},_addXf:function(e){var t=this._addFont(e.font),n=this._addFill(e.fill),r=this._addBorder(e.border),i=this._addNumFmt(e.numFmt),a=wf(`xf`).attr(`numFmtId`,i).attr(`fontId`,t).attr(`fillId`,n).attr(`borderId`,r).attr(`xfId`,`0`);return 0/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`),e=wf(`numFmt`).attr(`numFmtId`,++n).attr(`formatCode`,e),this.$numFmts.append(e),e=this.$numFmts.children().length,this.$numFmts.attr(`count`,e),n)},_addFill:function(e){if(!e)return 0;var t,n=wf(`patternFill`).attr(`patternType`,e.patternType||`solid`);return e.fgColor&&(t=wf(`fgColor`),e.fgColor.rgb?(e.fgColor.rgb.length==6&&(e.fgColor.rgb=`FF`+e.fgColor.rgb),t.attr(`rgb`,e.fgColor.rgb),n.append(t)):e.fgColor.theme&&(t.attr(`theme`,e.fgColor.theme),e.fgColor.tint&&t.attr(`tint`,e.fgColor.tint),n.append(t)),e.bgColor||={indexed:`64`}),e.bgColor&&(e=wf(`bgColor`).attr(e.bgColor),n.append(e)),n=wf(`fill`).append(n),this.$fills.append(n),n=this.$fills.children().length,this.$fills.attr(`count`,n),n-1},_getSubBorder:function(e,t){var n=wf(e);return t&&(n.attr(`style`,t.style||`medium`),t.color&&(e=wf(`color`),t.color.auto?e.attr(`auto`,t.color.auto):t.color.rgb?e.attr(`rgb`,t.color.rgb):(t.color.theme||t.color.tint)&&(e.attr(`theme`,t.color.theme||`1`),e.attr(`tint`,t.color.tint||`0`)),n.append(e))),n},_addBorder:function(e){if(!e)return 0;var t=this,n=wf(`border`).attr(`diagonalUp`,e.diagonalUp).attr(`diagonalDown`,e.diagonalDown);[`left`,`right`,`top`,`bottom`,`diagonal`].forEach(function(r){n.append(t._getSubBorder(r,e[r]))}),this.$borders.append(n);var r=this.$borders.children().length;return this.$borders.attr(`count`,r),r-1},toXml:function(){return this.$styles.toXml()}}.initialize(e||{})};Lu!==void 0&&(e.parse_xlscfb=Lu),e.parse_zip=qd,e.read=ef,e.readFile=tf,e.readFileSync=tf,e.write=cf,e.writeFile=uf,e.writeFileSync=uf,e.writeFileAsync=function(e,t,n,r){var i=n||{};return i.type=`file`,i.file=e,lf(i),i.type=`buffer`,r instanceof Function||(r=n),Me.writeFile(e,cf(t,i),r)},e.utils=Oa,e.writeXLSX=sf,e.writeFileXLSX=function(e,t,n){return(n||={}).type=`file`,n.file=t,lf(n),sf(e,n)},e.SSF=ke,pa!==void 0&&(e.stream=pa),Pe!==void 0&&(e.CFB=Pe),u===void 0||((pa=h5())||{}).Readable&&Cf(pa.Readable)}if(e===void 0?t!==void 0&&t.exports?r(t.exports):typeof define==`function`&&define.amd?define(`xlsx`,function(){return n.version||r(n),n}):r(n):r(e),typeof window<`u`&&!window.XLSX)try{window.XLSX=n}catch{}}))(),1),_5={top:{style:`thin`,color:{rgb:`000000`}},right:{style:`thin`,color:{rgb:`000000`}},bottom:{style:`thin`,color:{rgb:`000000`}},left:{style:`thin`,color:{rgb:`000000`}}},v5={vertical:`center`,wrapText:!0},u2e={font:{bold:!0,sz:16,color:{rgb:`FFFFFF`}},fill:{fgColor:{rgb:`111827`}},alignment:{...v5,horizontal:`center`},border:_5},d2e={font:{bold:!0,color:{rgb:`111827`}},fill:{fgColor:{rgb:`F3F4F6`}},alignment:{...v5,horizontal:`center`},border:_5},f2e={font:{color:{rgb:`111827`}},fill:{fgColor:{rgb:`FFFFFF`}},alignment:{...v5,horizontal:`left`},border:_5},p2e={font:{bold:!0,color:{rgb:`FFFFFF`}},fill:{fgColor:{rgb:`374151`}},alignment:{...v5,horizontal:`center`},border:_5},m2e={font:{color:{rgb:`111827`}},fill:{fgColor:{rgb:`FFFFFF`}},alignment:{...v5,horizontal:`left`},border:_5};function y5(e){return e??``}function b5(e){if(e==null)return 0;let t=(e instanceof Date?e.toISOString():String(e)).split(/\r?\n/);return Math.max(...t.map(e=>Array.from(e).reduce((e,t)=>e+(t.charCodeAt(0)>255?2:1),0)),0)}function x5(e,t,n){return Math.min(n,Math.max(t,e))}function h2e(e,t){let n=Math.max(t.length,...e.map(e=>e.length));return Array.from({length:n},(n,r)=>{let i=t[r];if(i?.width)return{wch:i.width};let a=e.reduce((e,t)=>Math.max(e,b5(t[r])),b5(i?.title)),o=i?.minWidth??10,s=i?.maxWidth??42;return{wch:x5(Math.ceil(a*1.15)+2,o,s)}})}function g2e(e,t,n=20){return x5(n+(e.reduce((e,n,r)=>{let i=Math.max(8,t[r]?.wch||12),a=(n==null?``:String(n)).split(/\r?\n/).reduce((e,t)=>e+Math.max(1,Math.ceil(b5(t)/Math.max(8,i-2))),0);return Math.max(e,a)},1)-1)*16,n,120)}function S5(e,t,n){e.s={...t,alignment:{...t.alignment},border:_5},n&&(e.z=n)}function C5(e){return typeof e==`number`&&Number.isFinite(e)}function _2e(e){let{filename:t,sheetName:n,title:r,metadataRows:i=[],summaryRows:a=[],columns:o,rows:s}=e,c=Math.max(1,o.length),l=[],u=-1,d=-1;r&&(u=l.length,l.push([r,...Array.from({length:c-1},()=>``)])),i.forEach(e=>l.push(e.map(y5))),a.forEach(e=>l.push(e.map(y5))),(i.length||a.length)&&l.push(Array.from({length:c},()=>``)),d=l.length,l.push(o.map(e=>e.title)),s.forEach((e,t)=>{l.push(o.map(n=>y5(n.render(e,t))))});let f=g5.utils.aoa_to_sheet(l),p=g5.utils.decode_range(f[`!ref`]||`A1:A1`),m=h2e(l,o);f[`!cols`]=m,f[`!rows`]=l.map((e,t)=>t===u?{hpt:34}:t===d?{hpt:28}:e.every(e=>e===``)?{hpt:10}:{hpt:g2e(e,m)}),u>=0&&c>1&&(f[`!merges`]=f[`!merges`]||[],f[`!merges`].push({s:{r:u,c:0},e:{r:u,c:c-1}})),f[`!autofilter`]={ref:g5.utils.encode_range({s:{r:d,c:0},e:{r:Math.max(d,l.length-1),c:c-1}})};for(let e=p.s.r;e<=p.e.r;e+=1)for(let t=p.s.c;t<=p.e.c;t+=1){let n=g5.utils.encode_cell({r:e,c:t}),r=f[n]||{t:`s`,v:``};if(f[n]=r,e===u){S5(r,u2e);continue}if(e===d){S5(r,p2e);continue}if(e{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(w5),[i,a]=(0,C.useState)(0),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)(``),[f,p]=(0,C.useState)(1),[m,h]=(0,C.useState)(10),[g,_]=(0,C.useState)(``),[v,y]=(0,C.useState)(``),[b,x]=(0,C.useState)([]),[S,w]=(0,C.useState)(``),[T,E]=(0,C.useState)(``),[D,O]=(0,C.useState)(``),[k,A]=(0,C.useState)(``),[j,M]=(0,C.useState)(``),[N,P]=(0,C.useState)(``),[F,I]=(0,C.useState)(``),[L,R]=(0,C.useState)(``),[z,B]=(0,C.useState)(``),[V,H]=(0,C.useState)([null,null]),U=(0,C.useMemo)(()=>({page:f,pageSize:m,userName:z||void 0,teamId:v||void 0,recordType:S||void 0,creditSubject:T||void 0,mediaType:D||void 0,chargeKind:k||void 0,chargeAction:j||void 0,sourceModule:N||void 0,sourceStepCode:F||void 0,billingScene:L||void 0,startDate:V[0]?.format(`YYYY-MM-DD`),endDate:V[1]?.format(`YYYY-MM-DD`),...k2e(g)}),[f,m,z,v,S,T,D,k,j,N,F,L,V,g]),W=async()=>{s(!0);try{let e=await L0(U);t(e.items||[]),a(e.total||0),r(e.summary||w5)}catch(e){X.error(e?.message||`加载积分记录失败`)}finally{s(!1)}};(0,C.useEffect)(()=>{W()},[U]),(0,C.useEffect)(()=>{k0(!0).then(x).catch(()=>{})},[]);let ee=()=>{_(``),y(``),w(``),E(``),O(``),A(``),M(``),P(``),I(``),R(``),B(``),H([null,null]),p(1)},te=async()=>{l(!0),d(`准备导出...`);try{let e={...U,page:1,pageSize:500},t=await L0(e),n=[...t.items||[]],r=t.summary||w5,i=t.total||0,a=Math.max(1,Math.ceil(i/500));d(`正在获取 ${n.length} / ${i}`);for(let t=2;t<=a;t+=1){let r=await L0({...e,page:t});n.push(...r.items||[]),d(`正在获取 ${Math.min(n.length,i)} / ${i}`)}_2e({filename:`积分流水_${(0,aS.default)().format(`YYYYMMDD_HHmmss`)}.xlsx`,sheetName:`积分流水`,title:`积分流水汇总`,metadataRows:[[`筛选时间`,`${V[0]?.format(`YYYY-MM-DD`)||`不限`} 至 ${V[1]?.format(`YYYY-MM-DD`)||`不限`}`],[`导出时间`,(0,aS.default)().format(`YYYY-MM-DD HH:mm:ss`)],[`导出条数`,i]],summaryRows:[[`总充值`,r.totalRecharge],[`总消费(真实扣费 + 预扣占用)`,r.totalConsume],[` · 真实扣费(独立统计:type=消费 & action=charge/NULL)`,r.totalCharge],[` · 预扣占用(独立统计:type=消费 & action=hold)`,r.totalHold],[`总回退(真实退款 + 预扣释放)`,r.totalRefund],[` · 真实退款(独立统计:type=回退 & action=refund/NULL)`,r.totalRefundReal],[` · 预扣释放(独立统计:type=回退 & action=hold_release)`,r.totalHoldRelease],[`净消耗(总消费 − 总回退,≥ 0)`,r.netConsume],[`交易笔数`,r.transactionCount],[`生成条数`,r.generationCount],[`生成尝试次数`,r.generationAttemptCount],[`图片生成条数`,r.imageGenerationCount],[`视频生成条数`,r.videoGenerationCount],[`图片消费积分(仅真实扣费)`,r.imageConsume],[`视频消费积分(仅真实扣费)`,r.videoConsume],[`提词消费积分(仅真实扣费)`,r.textConsume],[`视频分析积分(仅真实扣费)`,r.analysisConsume],[`总 Token`,r.totalTokens],[`输入 Token`,r.inputTokens],[`输出 Token`,r.outputTokens]],columns:[{title:`时间`,maxWidth:22,render:e=>v2(e.createdAt||``)},{title:`用户`,minWidth:12,maxWidth:20,render:e=>e.username||`-`},{title:`手机号`,minWidth:13,maxWidth:18,render:e=>e.phone||`-`},{title:`用户类型`,maxWidth:16,render:e=>e.userTypeLabel||`-`},{title:`前台归类`,maxWidth:18,render:e=>e.frontendUserKindLabel||`-`},{title:`归属团队`,maxWidth:20,render:e=>e.teamNameSnapshot||`未分配团队`},{title:`流水类型`,maxWidth:14,align:`center`,render:e=>e.recordTypeLabel||e.type||`-`},{title:`交易动作`,maxWidth:16,align:`center`,render:e=>e.chargeActionLabel||(e.chargeAction?T5[e.chargeAction]?.text||e.chargeAction:`-`)},{title:`积分类型`,maxWidth:20,render:e=>e.creditSubjectLabel||`-`},{title:`扣费子类`,maxWidth:22,render:e=>e.chargeKindLabel||`-`},{title:`模块`,maxWidth:20,render:e=>e.sourceModuleLabel||`-`},{title:`模块步骤`,maxWidth:22,render:e=>e.sourceStepCodeLabel||`-`},{title:`计费场景`,maxWidth:32,render:e=>e.sceneNameSnapshot||e.billingSceneLabel||`-`},{title:`媒体类型`,maxWidth:12,align:`center`,render:e=>e.mediaTypeLabel||`-`},{title:`变动积分`,minWidth:12,maxWidth:14,align:`right`,numFmt:`#,##0.00`,render:e=>e.amount},{title:`已过期积分`,minWidth:13,maxWidth:15,align:`right`,numFmt:`#,##0.00`,render:e=>e.expiredAmount||0},{title:`变动后余额`,minWidth:12,maxWidth:14,align:`right`,numFmt:`#,##0.00`,render:e=>e.balanceAfter},{title:`LLM调用`,minWidth:12,maxWidth:15,align:`right`,render:e=>`${e.llmCallCount||0}(成${e.llmSuccessCallCount||0}/败${e.llmFailedCallCount||0})`},{title:`实际 Token`,minWidth:12,maxWidth:14,align:`right`,numFmt:`#,##0`,render:e=>e.totalTokens||0},{title:`输入 Token`,minWidth:12,maxWidth:14,align:`right`,numFmt:`#,##0`,render:e=>e.inputTokens||0},{title:`输出 Token`,minWidth:12,maxWidth:14,align:`right`,numFmt:`#,##0`,render:e=>e.outputTokens||0},{title:`执行类型`,maxWidth:18,render:e=>D5(e.engineType)},{title:`执行配置`,maxWidth:28,render:e=>e.engineName||`-`},{title:`供应商`,maxWidth:18,render:e=>e.engineProvider||`-`},{title:`模型版本`,maxWidth:26,render:e=>e.engineModelName||`-`},{title:`关联状态`,maxWidth:14,align:`center`,render:e=>e.ownerDeleted?`关联已删除`:`正常`},{title:`说明`,minWidth:18,maxWidth:42,render:e=>e.description||``},{title:`业务归属类型`,maxWidth:18,render:e=>e.ownerType||``},{title:`业务归属ID`,maxWidth:28,render:e=>e.ownerId||``},{title:`积分来源分摊`,minWidth:24,maxWidth:48,render:e=>(e.allocations||[]).map(e=>`${e.sourceType||`-`}:${e.sourceId||`-`}=${e.amount}`).join(`;`)},{title:`BizKey`,maxWidth:36,render:e=>e.bizKey||``}],rows:n}),X.success(`Excel 已导出`)}catch(e){X.error(e?.message||`导出失败`)}finally{l(!1),d(``)}},ne=[{title:`用户`,dataIndex:`username`,width:130,fixed:`left`,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:e||`-`}),(0,Q.jsx)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:t.phone||`-`})]})},{title:`用户类型`,dataIndex:`userTypeLabel`,width:120,render:(e,t)=>(0,Q.jsx)(rI,{color:t.userType===`admin`?`orange`:`blue`,children:t.userTypeLabel||`-`})},{title:`归属团队`,dataIndex:`teamNameSnapshot`,width:130,render:e=>e?(0,Q.jsx)(rI,{color:`blue`,children:e}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`未分配`})},{title:`流水类型`,dataIndex:`recordType`,width:100,render:(e,t)=>{let n=y2e[e]||{text:t.recordTypeLabel||e||`-`,color:`default`,icon:null};return(0,Q.jsx)(rI,{color:n.color,icon:n.icon,children:n.text})}},{title:`交易动作`,dataIndex:`chargeAction`,width:110,render:(e,t)=>{let n=T5[e]||{text:t.chargeActionLabel||e||`-`,color:`default`};return e?(0,Q.jsx)(rI,{color:n.color,children:t.chargeActionLabel||n.text}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`历史`})}},{title:`积分类型`,dataIndex:`creditSubjectLabel`,width:150,render:e=>(0,Q.jsx)(rI,{children:e||`-`})},{title:`模块`,dataIndex:`sourceModuleLabel`,width:130,render:e=>e||`-`},{title:`步骤/场景`,key:`scene`,width:210,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{children:t.sceneNameSnapshot||t.billingSceneLabel||`-`}),(0,Q.jsx)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:t.sourceStepCodeLabel||`-`})]})},{title:`媒体`,dataIndex:`mediaTypeLabel`,width:80,render:e=>e?(0,Q.jsx)(rI,{color:`purple`,children:e}):`-`},{title:`变动积分`,dataIndex:`amount`,width:120,sorter:(e,t)=>e.amount-t.amount,render:e=>(0,Q.jsxs)(Z.Text,{strong:!0,style:{color:e>0?`#10b981`:e<0?`#ef4444`:`#64748b`},children:[e>0?`+`:``,E5(e)]})},{title:`过期积分`,dataIndex:`expiredAmount`,width:110,render:e=>e?(0,Q.jsx)(rI,{color:`orange`,children:E5(e)}):`-`},{title:`余额`,dataIndex:`balanceAfter`,width:110,render:e=>E5(e)},{title:`LLM调用`,key:`llmCalls`,width:130,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[E5(t.llmCallCount||0),` 次`,(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[`成 `,E5(t.llmSuccessCallCount||0),` / 败 `,E5(t.llmFailedCallCount||0)]})]})},{title:`Token`,key:`tokens`,width:140,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:E5(t.totalTokens)}),(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[`入 `,E5(t.inputTokens),` / 出 `,E5(t.outputTokens)]})]})},{title:`执行配置`,key:`engine`,width:230,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(rI,{color:t.engineType===`model`?`geekblue`:t.engineType===`image`?`purple`:t.engineType===`video`?`cyan`:`default`,children:D5(t.engineType)}),(0,Q.jsx)(`div`,{children:t.engineName||`-`}),(0,Q.jsx)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[t.engineProvider,t.engineModelName].filter(Boolean).join(` / `)||`-`})]})},{title:`关联状态`,dataIndex:`ownerDeleted`,width:100,render:e=>(0,Q.jsx)(rI,{color:e?`red`:`green`,children:e?`已删除`:`正常`})},{title:`说明`,dataIndex:`description`,width:240,ellipsis:!0},{title:`时间`,dataIndex:`createdAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:v2(e)})}];return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(5, minmax(0, 1fr))`,gap:16,marginBottom:16},children:[(0,Q.jsx)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(uR,{style:{color:`#10b981`,fontSize:22}}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{style:{color:`#94a3b8`},children:`总充值`}),(0,Q.jsxs)(`div`,{style:{fontSize:22,fontWeight:800,color:`#10b981`},children:[`+`,E5(n.totalRecharge)]})]})]})}),(0,Q.jsx)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(tR,{style:{color:`#ef4444`,fontSize:22}}),(0,Q.jsxs)(`div`,{style:{minWidth:0},children:[(0,Q.jsxs)(`div`,{style:{color:`#94a3b8`},children:[`总消费`,(0,Q.jsx)(`span`,{style:{marginLeft:6,fontSize:10,color:`#94a3b8`},children:`(真实扣费 + 预扣占用)`})]}),(0,Q.jsxs)(`div`,{style:{fontSize:22,fontWeight:800,color:`#ef4444`},children:[`-`,E5(n.totalConsume)]}),(0,Q.jsxs)(`div`,{style:{fontSize:11,color:`#94a3b8`,marginTop:2},children:[`真实 `,(0,Q.jsx)(`span`,{style:{color:`#b91c1c`,fontWeight:600},children:E5(n.totalCharge)}),(0,Q.jsx)(`span`,{style:{margin:`0 4px`,color:`#cbd5e1`},children:`|`}),`预扣 `,(0,Q.jsx)(`span`,{style:{color:`#d97706`,fontWeight:600},children:E5(n.totalHold)})]})]})]})}),(0,Q.jsx)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(uZ,{style:{color:`#3b82f6`,fontSize:22}}),(0,Q.jsxs)(`div`,{style:{minWidth:0},children:[(0,Q.jsxs)(`div`,{style:{color:`#94a3b8`},children:[`总回退`,(0,Q.jsx)(`span`,{style:{marginLeft:6,fontSize:10,color:`#94a3b8`},children:`(真实退款 + 预扣释放)`})]}),(0,Q.jsxs)(`div`,{style:{fontSize:22,fontWeight:800,color:`#3b82f6`},children:[`+`,E5(n.totalRefund)]}),(0,Q.jsxs)(`div`,{style:{fontSize:11,color:`#94a3b8`,marginTop:2},children:[`退款 `,(0,Q.jsx)(`span`,{style:{color:`#1d4ed8`,fontWeight:600},children:E5(n.totalRefundReal)}),(0,Q.jsx)(`span`,{style:{margin:`0 4px`,color:`#cbd5e1`},children:`|`}),`释放 `,(0,Q.jsx)(`span`,{style:{color:`#047857`,fontWeight:600},children:E5(n.totalHoldRelease)})]})]})]})}),(0,Q.jsx)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`,background:`linear-gradient(135deg, #faf5ff 0%, #eef2ff 100%)`},children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(EU,{style:{color:`#6366f1`,fontSize:22}}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{style:{color:`#6366f1`},children:`净消耗(实际用掉)`}),(0,Q.jsx)(`div`,{style:{fontSize:22,fontWeight:800,color:`#4338ca`},children:E5(n.netConsume)}),(0,Q.jsx)(`div`,{style:{fontSize:11,color:`#818cf8`,marginTop:2},children:`总消费 − 总回退(≥ 0)`})]})]})}),(0,Q.jsx)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(N1,{style:{color:`#6366f1`,fontSize:22}}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{style:{color:`#94a3b8`},children:`交易 / 生成`}),(0,Q.jsxs)(`div`,{style:{fontSize:22,fontWeight:800},children:[E5(n.transactionCount),` / `,E5(n.generationCount)]})]})]})})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(4, minmax(0, 1fr))`,gap:16,marginBottom:16},children:[(0,Q.jsxs)(aO,{size:`small`,bordered:!1,children:[`图片生成:`,E5(n.imageGenerationCount),` 条 / `,E5(n.imageConsume),` 积分`]}),(0,Q.jsxs)(aO,{size:`small`,bordered:!1,children:[`视频生成:`,E5(n.videoGenerationCount),` 条 / `,E5(n.videoConsume),` 积分`]}),(0,Q.jsxs)(aO,{size:`small`,bordered:!1,children:[`提词消费:`,E5(n.textConsume),` 积分`]}),(0,Q.jsxs)(aO,{size:`small`,bordered:!1,children:[`视频分析:`,E5(n.analysisConsume),` 积分`]})]}),(0,Q.jsxs)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16,flexWrap:`wrap`,gap:12},children:[(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(Wy,{value:g,onChange:e=>{p(1),_(e)},style:{width:150},options:b2e}),(0,Q.jsx)(Wy,{value:v,onChange:e=>{p(1),y(e)},style:{width:170},options:[{value:``,label:`全部团队`},{value:v2e,label:`未分配团队`},...b.map(e=>({value:e.id,label:e.status===`disabled`?`${e.name}(禁用)`:e.name}))]}),(0,Q.jsx)(Wy,{value:S,onChange:e=>{p(1),w(e)},style:{width:130},options:x2e}),(0,Q.jsx)(Wy,{value:T,onChange:e=>{p(1),E(e)},style:{width:180},options:S2e}),(0,Q.jsx)(Wy,{value:D,onChange:e=>{p(1),O(e)},style:{width:110},options:C2e}),(0,Q.jsx)(Wy,{value:k,onChange:e=>{p(1),A(e)},style:{width:150},options:w2e}),(0,Q.jsx)(Wy,{value:j,onChange:e=>{p(1),M(e)},style:{width:140},options:T2e}),(0,Q.jsx)(Wy,{value:N,onChange:e=>{p(1),P(e)},style:{width:150},options:E2e}),(0,Q.jsx)(Wy,{value:F,onChange:e=>{p(1),I(e)},style:{width:150},options:D2e}),(0,Q.jsx)(Wy,{value:L,onChange:e=>{p(1),R(e)},style:{width:220},options:O2e}),(0,Q.jsx)(Fj,{placeholder:`用户名/手机号/邮箱`,value:z,onChange:e=>{p(1),B(e.target.value)},style:{width:180},allowClear:!0}),(0,Q.jsx)(eA.RangePicker,{value:V,onChange:e=>{p(1),H(e?[e[0],e[1]]:[null,null])},placeholder:[`开始日期`,`结束日期`],style:{width:250}})]}),(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{onClick:ee,children:`重置`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:W,children:`刷新`}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(JI,{}),loading:c,onClick:te,children:`下载 Excel`})]})]}),u&&(0,Q.jsx)(`div`,{style:{marginBottom:12,color:`#6366f1`},children:u}),(0,Q.jsx)(ZF,{columns:ne,dataSource:e,rowKey:`id`,loading:o,pagination:{current:f,pageSize:m,total:i,onChange:(e,t)=>{p(e),h(t)},showSizeChanger:!0,showTotal:e=>`共 ${e} 条记录`},expandable:{rowExpandable:e=>!!e.allocations?.length,expandedRowRender:e=>(0,Q.jsx)(ZF,{size:`small`,pagination:!1,rowKey:`id`,dataSource:e.allocations||[],columns:[{title:`动作`,dataIndex:`allocationAction`,width:150},{title:`积分来源`,dataIndex:`sourceType`,width:160,render:e=>e||`-`},{title:`来源ID`,dataIndex:`sourceId`,width:260,render:e=>e||`-`},{title:`积分数量`,dataIndex:`amount`,width:120,render:e=>E5(e)},{title:`生效时间`,dataIndex:`validFrom`,width:190,render:e=>e?v2(e):`-`},{title:`过期边界`,dataIndex:`expiresAt`,width:190,render:e=>e?v2(e):`-`}],scroll:{x:1070}})},scroll:{x:2520}})]})]})},j2e=()=>{let[e,t]=(0,C.useState)(!1),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(180),[u]=Y.useForm(),d=async()=>{try{let e=await bJe(),t={};e.forEach(e=>{t[e.key]=e.value}),u.setFieldsValue({wechat_appid:t.payment_wechat_appid||``,wechat_mch_id:t.payment_wechat_mch_id||``,wechat_private_key:t.payment_wechat_private_key||``,wechat_cert_serial_no:t.payment_wechat_cert_serial_no||``,wechat_api_v3_key:t.payment_wechat_api_v3_key||``,wechat_notify_url:t.payment_wechat_notify_url||``,wechat_public_key:t.payment_wechat_public_key||``,wechat_public_key_id:t.payment_wechat_public_key_id||``,alipay_app_id:t.payment_alipay_app_id||``,alipay_private_key:t.payment_alipay_private_key||``,alipay_public_key:t.payment_alipay_public_key||``,alipay_notify_url:t.payment_alipay_notify_url||``,alipay_gateway:t.payment_alipay_gateway||``,order_timeout:t.payment_order_timeout||`180`}),r(t.payment_wechat_enabled===`true`),a(t.payment_alipay_enabled===`true`),s(t.payment_mock===`true`),l(parseInt(t.payment_order_timeout||`180`,10))}catch{X.error(`加载支付配置失败`)}};return(0,C.useEffect)(()=>{d()},[]),(0,Q.jsxs)(`div`,{style:{maxWidth:`100%`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:24,flexWrap:`wrap`,marginBottom:24},children:[(0,Q.jsx)(`div`,{style:{flex:`1 1 400px`,minWidth:400},children:(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[(0,Q.jsx)(`div`,{style:{width:40,height:40,borderRadius:10,background:`rgba(99,102,241,0.08)`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:20,color:`#6366f1`},children:(0,Q.jsx)(Xk,{})}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:`订单超时时间`})})]}),(0,Q.jsx)(Y,{form:u,layout:`inline`,children:(0,Q.jsx)(Y.Item,{name:`order_timeout`,style:{margin:0},children:(0,Q.jsxs)(bA.Compact,{style:{width:140},children:[(0,Q.jsx)(ok,{min:30,max:86400,placeholder:`180`,style:{width:`100%`},size:`middle`}),(0,Q.jsx)(Z.Text,{children:`秒`})]})})})]})})}),(0,Q.jsx)(`div`,{style:{flex:`1 1 400px`,minWidth:400},children:(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`,background:o?`#fff7e6`:`#fafbff`},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[(0,Q.jsx)(`div`,{style:{width:40,height:40,borderRadius:10,background:o?`rgba(245,158,11,0.15)`:`rgba(99,102,241,0.08)`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:20,color:o?`#f59e0b`:`#6366f1`},children:(0,Q.jsx)(EU,{})}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:`模拟支付模式`})})]}),(0,Q.jsx)(vN,{checked:o,onChange:s,checkedChildren:`已开启`,unCheckedChildren:`已关闭`})]})})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:24,flexWrap:`wrap`},children:[(0,Q.jsx)(`div`,{style:{flex:`1 1 400px`,minWidth:400},children:(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:20},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[(0,Q.jsx)(`div`,{style:{width:44,height:44,borderRadius:10,background:`rgba(7,193,96,0.08)`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:22,color:`#07c160`},children:(0,Q.jsx)(z1,{})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:5,style:{margin:0},children:`微信支付`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:`微信商户号支付配置`})]})]}),(0,Q.jsx)(vN,{checked:n,onChange:r,checkedChildren:`已启用`,unCheckedChildren:`未启用`})]}),(0,Q.jsxs)(Y,{form:u,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`wechat_appid`,label:`AppID`,children:(0,Q.jsx)(Fj,{placeholder:`微信支付 AppID`,size:`large`,disabled:!n})}),(0,Q.jsx)(Y.Item,{name:`wechat_mch_id`,label:`商户号 (MchID)`,children:(0,Q.jsx)(Fj,{placeholder:`微信支付商户号`,size:`large`,disabled:!n})}),(0,Q.jsx)(Y.Item,{name:`wechat_private_key`,label:`商户私钥`,extra:` ⚠️ 重要:请填写 apiclient_key.pem 的内容,不是 apiclient_cert.pem! 内容应该以 -----BEGIN PRIVATE KEY----- 或 -----BEGIN RSA PRIVATE KEY----- 开头 `,children:(0,Q.jsx)(Fj.TextArea,{rows:4,placeholder:`\r @@ -587,8 +587,8 @@ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...\r `,disabled:!i})}),(0,Q.jsx)(Y.Item,{name:`alipay_gateway`,label:`网关地址`,children:(0,Q.jsx)(Fj,{placeholder:`https://openapi.alipay.com/gateway.do`,size:`large`,disabled:!i})}),(0,Q.jsx)(Y.Item,{name:`alipay_notify_url`,label:`回调地址`,children:(0,Q.jsx)(Fj,{placeholder:`https://yourdomain.com/api/payments/alipay/callback`,size:`large`,disabled:!i})})]})]})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,marginTop:24},children:(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(yZ,{}),onClick:async()=>{try{let e=await u.validateFields();t(!0),await xJe({payment_mock:String(o),payment_wechat_enabled:String(n),payment_wechat_appid:e.wechat_appid||``,payment_wechat_mch_id:e.wechat_mch_id||``,payment_wechat_private_key:e.wechat_private_key||``,payment_wechat_cert_serial_no:e.wechat_cert_serial_no||``,payment_wechat_api_v3_key:e.wechat_api_v3_key||``,payment_wechat_notify_url:e.wechat_notify_url||``,payment_wechat_public_key:e.wechat_public_key||``,payment_wechat_public_key_id:e.wechat_public_key_id||``,payment_alipay_enabled:String(i),payment_alipay_app_id:e.alipay_app_id||``,payment_alipay_private_key:e.alipay_private_key||``,payment_alipay_public_key:e.alipay_public_key||``,payment_alipay_notify_url:e.alipay_notify_url||``,payment_alipay_gateway:e.alipay_gateway||``,payment_order_timeout:String(e.order_timeout||180)}),X.success(`支付配置已保存`),d()}catch{X.error(`保存失败`)}finally{t(!1)}},loading:e,size:`large`,style:{borderRadius:8,minWidth:160,height:44,fontSize:15},children:`保存配置`})})]})},{Option:O5}=Wy,{RangePicker:M2e}=eA,N2e=()=>{let[e,t]=(0,C.useState)(!1),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(1),[o,s]=(0,C.useState)(10),[c,l]=(0,C.useState)(0),[u,d]=(0,C.useState)({startDate:(0,aS.default)().format(`YYYY-MM-DD`),endDate:(0,aS.default)().format(`YYYY-MM-DD`)}),f=async()=>{try{t(!0);let[e,n]=await Promise.all([SJe(u),CJe({...u,phone:u.phone,page:i,pageSize:o})]);r({...e,recent:n.items||[]}),l(n.total)}catch{X.error(`加载支付统计失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{f()},[u,i,o]);let p=(e,t)=>{a(e),s(t)},m=()=>{d({startDate:(0,aS.default)().format(`YYYY-MM-DD`),endDate:(0,aS.default)().format(`YYYY-MM-DD`)}),a(1)},h=async e=>{try{t(!0),await wJe(e),X.success(`退款成功`),await f()}catch(e){X.error(e?.response?.data?.detail||`退款失败`)}finally{t(!1)}},g=e=>{e&&e.length===2&&d(t=>({...t,startDate:e[0].format(`YYYY-MM-DD`),endDate:e[1].format(`YYYY-MM-DD`)}))},_={paid:{color:`green`,label:`已支付`,icon:(0,Q.jsx)(xV,{})},pending:{color:`gold`,label:`待支付`,icon:(0,Q.jsx)(Xk,{})},cancelled:{color:`default`,label:`已取消`,icon:(0,Q.jsx)(LV,{})},refunded:{color:`red`,label:`已退款`,icon:(0,Q.jsx)(Z$,{})}},v={alipay:{color:`blue`,label:`支付宝`},wechat:{color:`green`,label:`微信`}},y=[{title:`订单号`,dataIndex:`orderNo`,key:`orderNo`,width:200},{title:`用户`,dataIndex:`username`,key:`username`,width:120},{title:`手机号`,dataIndex:`phone`,key:`phone`,width:120,render:e=>e||`-`},{title:`支付方式`,dataIndex:`paymentMethod`,key:`paymentMethod`,width:100,render:e=>{let t=v[e]||{color:`default`,label:e};return(0,Q.jsx)(rI,{color:t.color,children:t.label})}},{title:`金额`,dataIndex:`amount`,key:`amount`,width:100,render:e=>(0,Q.jsxs)(Z.Text,{strong:!0,style:{color:`#10b981`},children:[`¥`,e.toFixed(2)]})},{title:`积分`,dataIndex:`credits`,key:`credits`,width:80},{title:`状态`,dataIndex:`status`,key:`status`,width:100,render:e=>{let t=_[e]||{color:`default`,label:e,icon:null};return(0,Q.jsx)(rI,{color:t.color,icon:t.icon,children:t.label})}},{title:`支付宝交易号`,dataIndex:`tradeNo`,key:`tradeNo`,width:200,render:e=>e||`-`},{title:`创建时间`,dataIndex:`createdAt`,key:`createdAt`,width:160,render:e=>(0,Q.jsx)(`span`,{className:`date-display`,style:{color:`#94a3b8`},children:e?v2(e):`-`})},{title:`支付时间`,dataIndex:`paidAt`,key:`paidAt`,width:160,render:e=>(0,Q.jsx)(`span`,{className:`date-display`,style:{color:`#94a3b8`},children:e?v2(e):`-`})},{title:`操作`,key:`action`,width:120,render:(e,t)=>t.status===`paid`?(0,Q.jsx)(xM,{title:`确认要退款该订单吗?`,description:`退款后积分会扣除,金额会原路返回`,onConfirm:()=>h(t.orderNo),okText:`确认`,cancelText:`取消`,children:(0,Q.jsx)(rS,{type:`link`,danger:!0,size:`small`,icon:(0,Q.jsx)(Z$,{}),children:`退款`})}):null}];if(!n)return(0,Q.jsx)(`div`,{style:{padding:24,color:`#94a3b8`},children:`加载中…`});let b=n.byStatus?.paid||{count:0,amount:0},x=n.byStatus?.pending||{count:0,amount:0},S=n.byStatus?.cancelled||{count:0,amount:0},w=n.byStatus?.refunded||{count:0,amount:0},T=b.count+x.count+S.count+w.count,E=n.month||{count:0,amount:0};return(0,Q.jsx)(em,{locale:l0.default,children:(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(XM,{gutter:[16,16],style:{marginBottom:24},children:[(0,Q.jsx)(OO,{xs:24,sm:12,lg:12,children:(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsx)($M,{title:`今日收入`,value:n.today.paidAmount,precision:2,prefix:(0,Q.jsx)(EU,{style:{color:`#10b981`}}),suffix:`元`,valueStyle:{color:`#10b981`,fontWeight:700}}),(0,Q.jsxs)(Z.Text,{type:`secondary`,style:{fontSize:12},children:[n.today.paidCount,` 笔订单`]})]})}),(0,Q.jsx)(OO,{xs:24,sm:12,lg:12,children:(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsx)($M,{title:`本月累计`,value:E.paidAmount,precision:2,prefix:(0,Q.jsx)(EU,{style:{color:`#6366f1`}}),suffix:`元`,valueStyle:{color:`#6366f1`,fontWeight:700}}),(0,Q.jsxs)(Z.Text,{type:`secondary`,style:{fontSize:12},children:[E.paidCount,` 笔订单`]})]})})]}),(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`,marginBottom:16},title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(EU,{}),`订单状态分布`]}),children:(0,Q.jsx)(XM,{gutter:16,children:[`paid`,`pending`,`cancelled`,`refunded`].map(e=>{let t=n.byStatus?.[e]||{count:0,amount:0},r=_[e],i=T>0?(t.count/T*100).toFixed(1):`0.0`;return(0,Q.jsx)(OO,{span:6,children:(0,Q.jsxs)(`div`,{style:{padding:16,borderRadius:10,background:`#fafbff`,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rI,{color:r.color,icon:r.icon,children:r.label}),(0,Q.jsxs)(Z.Text,{type:`secondary`,style:{fontSize:12},children:[i,`%`]})]}),(0,Q.jsxs)(`div`,{style:{marginTop:8,fontSize:20,fontWeight:700},children:[t.count,` `,(0,Q.jsx)(`span`,{style:{fontSize:13,color:`#94a3b8`,fontWeight:400},children:`笔`})]}),(0,Q.jsxs)(`div`,{style:{fontSize:13,color:`#64748b`,marginTop:4},children:[`¥`,t.amount.toFixed(2)]})]})},e)})})}),(0,Q.jsxs)(aO,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(EU,{}),`订单列表`]}),children:[(0,Q.jsxs)(XM,{gutter:[16,16],style:{marginBottom:24},children:[(0,Q.jsxs)(OO,{xs:24,sm:8,md:4,children:[(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:4},children:`支付方式`}),(0,Q.jsxs)(Wy,{placeholder:`全部`,allowClear:!0,style:{width:`100%`},value:u.paymentMethod,onChange:e=>{d(t=>({...t,paymentMethod:e})),a(1)},children:[(0,Q.jsx)(O5,{value:`alipay`,children:`支付宝`}),(0,Q.jsx)(O5,{value:`wechat`,children:`微信`})]})]}),(0,Q.jsxs)(OO,{xs:24,sm:8,md:4,children:[(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:4},children:`状态`}),(0,Q.jsxs)(Wy,{placeholder:`全部`,allowClear:!0,style:{width:`100%`},value:u.status,onChange:e=>{d(t=>({...t,status:e})),a(1)},children:[(0,Q.jsx)(O5,{value:`paid`,children:`已支付`}),(0,Q.jsx)(O5,{value:`pending`,children:`待支付`}),(0,Q.jsx)(O5,{value:`cancelled`,children:`已取消`}),(0,Q.jsx)(O5,{value:`refunded`,children:`已退款`})]})]}),(0,Q.jsxs)(OO,{xs:24,sm:8,md:5,children:[(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:4},children:`手机号`}),(0,Q.jsx)(Fj,{placeholder:`搜索手机号`,allowClear:!0,value:u.phone,onChange:e=>d(t=>({...t,phone:e.target.value})),onPressEnter:()=>{a(1),f()},suffix:(0,Q.jsx)(Vy,{style:{color:`#94a3b8`}})})]}),(0,Q.jsxs)(OO,{xs:24,sm:12,md:7,children:[(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:4},children:`日期范围`}),(0,Q.jsx)(M2e,{style:{width:`100%`},value:[(0,aS.default)(u.startDate),(0,aS.default)(u.endDate)],onChange:g})]}),(0,Q.jsx)(OO,{xs:24,sm:12,md:4,style:{display:`flex`,alignItems:`flex-end`},children:(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:m,style:{marginBottom:0},children:`重置筛选`})})]}),(0,Q.jsx)(ZF,{columns:y,dataSource:n.recent||[],rowKey:`id`,loading:e,pagination:{current:i,pageSize:o,total:c,onChange:p,showSizeChanger:!0,showTotal:e=>`共 ${e} 条`},scroll:{x:1e3},size:`middle`})]})]})})},k5=[{name:`ShoppingCartOutlined`,label:`购物`,component:(0,Q.jsx)(UZ,{})},{name:`BookOutlined`,label:`书籍`,component:(0,Q.jsx)(Bz,{})},{name:`HomeOutlined`,label:`房产`,component:(0,Q.jsx)(VK,{})},{name:`FireOutlined`,label:`火`,component:(0,Q.jsx)(yG,{})},{name:`RocketOutlined`,label:`科技`,component:(0,Q.jsx)(sZ,{})},{name:`SkinOutlined`,label:`时尚`,component:(0,Q.jsx)(aQ,{})},{name:`CompassOutlined`,label:`指南`,component:(0,Q.jsx)(gH,{})},{name:`HeartOutlined`,label:`健康`,component:(0,Q.jsx)(AK,{})},{name:`CarOutlined`,label:`汽车`,component:(0,Q.jsx)(uV,{})},{name:`CameraOutlined`,label:`相机`,component:(0,Q.jsx)(oV,{})},{name:`CloudOutlined`,label:`云`,component:(0,Q.jsx)(GV,{})},{name:`StarOutlined`,label:`星`,component:(0,Q.jsx)(IQ,{})},{name:`TrophyOutlined`,label:`奖杯`,component:(0,Q.jsx)(z$,{})},{name:`ThunderboltOutlined`,label:`闪电`,component:(0,Q.jsx)(S$,{})},{name:`BulbOutlined`,label:`灯泡`,component:(0,Q.jsx)(XB,{})},{name:`CoffeeOutlined`,label:`咖啡`,component:(0,Q.jsx)(uH,{})},{name:`CrownOutlined`,label:`皇冠`,component:(0,Q.jsx)(VH,{})},{name:`DashboardOutlined`,label:`仪表`,component:(0,Q.jsx)(YH,{})},{name:`FlagOutlined`,label:`旗帜`,component:(0,Q.jsx)(CG,{})},{name:`GlobalOutlined`,label:`全球`,component:(0,Q.jsx)(fK,{})},{name:`GiftOutlined`,label:`礼物`,component:(0,Q.jsx)(aK,{})},{name:`LaptopOutlined`,label:`笔记本`,component:(0,Q.jsx)(Eq,{})},{name:`MobileOutlined`,label:`手机`,component:(0,Q.jsx)(zJ,{})},{name:`MonitorOutlined`,label:`显示器`,component:(0,Q.jsx)(GJ,{})},{name:`PayCircleOutlined`,label:`支付`,component:(0,Q.jsx)(_Y,{})},{name:`PictureOutlined`,label:`图片`,component:(0,Q.jsx)(OY,{})},{name:`PlayCircleOutlined`,label:`播放`,component:(0,Q.jsx)(RY,{})},{name:`SafetyOutlined`,label:`安全`,component:(0,Q.jsx)(gZ,{})},{name:`ShoppingOutlined`,label:`商店`,component:(0,Q.jsx)(KZ,{})},{name:`SmileOutlined`,label:`笑脸`,component:(0,Q.jsx)(yQ,{})},{name:`SoundOutlined`,label:`声音`,component:(0,Q.jsx)(AQ,{})},{name:`TagOutlined`,label:`标签`,component:(0,Q.jsx)(l$,{})},{name:`TeamOutlined`,label:`团队`,component:(0,Q.jsx)(y$,{})},{name:`ToolOutlined`,label:`工具`,component:(0,Q.jsx)(k$,{})},{name:`TruckOutlined`,label:`物流`,component:(0,Q.jsx)(U$,{})},{name:`VideoCameraOutlined`,label:`视频`,component:(0,Q.jsx)(k1,{})},{name:`WalletOutlined`,label:`钱包`,component:(0,Q.jsx)(N1,{})},{name:`BankOutlined`,label:`银行`,component:(0,Q.jsx)(UR,{})},{name:`BuildOutlined`,label:`建筑`,component:(0,Q.jsx)(KB,{})},{name:`ExperimentOutlined`,label:`实验`,component:(0,Q.jsx)(cW,{})},{name:`HighlightOutlined`,label:`高亮`,component:(0,Q.jsx)(FK,{})},{name:`IdcardOutlined`,label:`名片`,component:(0,Q.jsx)(ZK,{})},{name:`MedicineBoxOutlined`,label:`医药`,component:(0,Q.jsx)(dJ,{})},{name:`ReadOutlined`,label:`阅读`,component:(0,Q.jsx)(NX,{})},{name:`RestOutlined`,label:`休息`,component:(0,Q.jsx)(KX,{})},{name:`SketchOutlined`,label:`钻石`,component:(0,Q.jsx)(tQ,{})},{name:`SolutionOutlined`,label:`方案`,component:(0,Q.jsx)(TQ,{})}],P2e=Object.fromEntries(k5.map(e=>[e.name,e.component]));function A5(e){return P2e[e]||(0,Q.jsx)(KL,{})}function F2e(e){try{let t=typeof e==`string`?JSON.parse(e):e;if(!Array.isArray(t))return{skillItems:[],optionGroups:[]};let n=[],r=[];for(let e of t)e&&e.type===`option_group`&&e.name&&Array.isArray(e.options)?r.push({name:e.name,options:e.options}):e&&e.key&&e.label&&n.push({key:e.key,label:e.label});return{skillItems:n,optionGroups:r}}catch{return{skillItems:[],optionGroups:[]}}}var I2e=({value:e,onChange:t})=>{let n=k5.find(t=>t.name===e);return(0,Q.jsx)(SA,{trigger:[`click`],dropdownRender:()=>(0,Q.jsx)(`div`,{style:{background:`#fff`,borderRadius:12,padding:12,width:360,boxShadow:`0 12px 40px rgba(0,0,0,0.15)`,border:`1px solid #f0f0f5`},children:(0,Q.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(8, 1fr)`,gap:4},children:k5.map(n=>(0,Q.jsx)(`div`,{onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),t?.(n.name)},title:n.label,style:{width:40,height:40,borderRadius:8,display:`flex`,alignItems:`center`,justifyContent:`center`,cursor:`pointer`,fontSize:18,transition:`all 0.15s`,background:e===n.name?`#6366f1`:`transparent`,color:e===n.name?`#fff`:`#64748b`,border:e===n.name?`none`:`1px solid transparent`},onMouseEnter:t=>{e!==n.name&&(t.currentTarget.style.background=`#f1f5f9`)},onMouseLeave:t=>{e!==n.name&&(t.currentTarget.style.background=`transparent`)},children:n.component},n.name))})}),children:(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:`8px 12px`,borderRadius:8,border:`1px solid #d9d9d9`,cursor:`pointer`,height:40},children:[e?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{style:{fontSize:18,color:`#6366f1`},children:A5(e)}),(0,Q.jsx)(`span`,{style:{color:`#64748b`,fontSize:13},children:n?.label||e})]}):(0,Q.jsx)(`span`,{style:{color:`#bfbfbf`,fontSize:13},children:`选择图标`}),(0,Q.jsx)(zy,{style:{fontSize:10,color:`#bfbfbf`,marginLeft:`auto`}})]})})},L2e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)({open:!1,item:null}),[c]=Y.useForm(),l=async()=>{r(!0);try{t((await eJe()).map(e=>{let{skillItems:t,optionGroups:n}=F2e(e.skills);return{id:e.id,key:e.key,label:e.label,icon:e.icon||``,description:e.description||``,skills:JSON.stringify(t),optionGroups:n,isActive:e.is_active??e.isActive??!0,sortOrder:e.sort_order??e.sortOrder??0}}))}catch{X.error(`加载行业配置失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{l()},[]);let u=async()=>{try{let e=await c.validateFields();a(!0);let t=[];e.skills_wentutujie?.trim()&&t.push({type:`skill`,key:`文图理解生成视频提示词`,label:e.skills_wentutujie.trim()}),e.skills_wentutujie_image?.trim()&&t.push({type:`skill`,key:`文图理解生成图片提示词`,label:e.skills_wentutujie_image.trim()});let n=(e.optionGroups||[]).filter(e=>e?.name?.trim()).map(e=>({name:e.name.trim(),options:(e.options||[]).filter(e=>e?.trim())})).filter(e=>e.options.length>0);for(let e of n)t.push({type:`option_group`,name:e.name,options:e.options});let r={key:e.key,label:e.label,icon:e.icon||``,description:e.description||``,skills:t,is_active:e.is_active??!0,sort_order:e.sort_order??0};o.item?.id?(await R0({id:o.item.id,...r}),X.success(`已更新`)):(await R0(r),X.success(`已添加`)),s({open:!1,item:null}),c.resetFields(),l()}catch(e){if(e?.errorFields)return;X.error(e?.message||`保存失败`)}finally{a(!1)}},d=async e=>{try{await tJe(e),X.success(`已删除`),l()}catch(e){X.error(e?.message||`删除失败`)}},f=e=>{s({open:!0,item:e||null});let t=``,n=``,r=[];if(e){try{let r=JSON.parse(e.skills);if(Array.isArray(r))for(let e of r)(e.key===`文图理解生成视频提示词`||e.key===`文图理解`)&&(t=e.label||``),e.key===`文图理解生成图片提示词`&&(n=e.label||``)}catch{}r=e.optionGroups.length>0?e.optionGroups:[{name:``,options:[]}]}e?c.setFieldsValue({key:e.key,label:e.label,icon:e.icon||``,description:e.description,skills_wentutujie:t,skills_wentutujie_image:n,optionGroups:r,is_active:e.isActive,sort_order:e.sortOrder}):(c.resetFields(),c.setFieldsValue({is_active:!0,sort_order:0,optionGroups:[{name:``,options:[]}]}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(KL,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`行业与技能配置`}),(0,Q.jsxs)(rI,{color:`purple`,children:[e.length,` 个行业`]})]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加行业`})]}),(0,Q.jsx)(ZF,{columns:[{title:`行业`,key:`industry`,width:180,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[(0,Q.jsx)(`div`,{style:{width:36,height:36,borderRadius:10,background:`#f1f5f9`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:18,color:`#6366f1`,flexShrink:0},children:A5(t.icon)}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.label}),(0,Q.jsx)(`div`,{style:{color:`#94a3b8`,fontSize:12},children:t.key})]})]})},{title:`描述`,dataIndex:`description`,ellipsis:!0},{title:`选项配置`,key:`optionGroups`,width:260,render:(e,t)=>!t.optionGroups||t.optionGroups.length===0?(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#cbd5e1`},children:`未配置`}):(0,Q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:4},children:t.optionGroups.map((e,t)=>(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:6},children:[(0,Q.jsx)(rI,{color:`blue`,style:{margin:0,fontSize:11},children:e.name}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#64748b`},children:[e.options.slice(0,3).join(`、`),e.options.length>3?`...${e.options.length}项`:``]})]},t))})},{title:`文图理解生成视频提示词`,dataIndex:`skills`,ellipsis:!0,render:e=>{try{let t=JSON.parse(e);if(Array.isArray(t)){let e=t.find(e=>e.key===`文图理解生成视频提示词`||e.key===`文图理解`);if(e)return(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{fontSize:12},children:e.label})}}catch{}return(0,Q.jsx)(`span`,{style:{color:`#bfbfbf`},children:`-`})}},{title:`文图理解生成图片提示词`,dataIndex:`skills`,ellipsis:!0,render:e=>{try{let t=JSON.parse(e);if(Array.isArray(t)){let e=t.find(e=>e.key===`文图理解生成图片提示词`);if(e)return(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{fontSize:12},children:e.label})}}catch{}return(0,Q.jsx)(`span`,{style:{color:`#bfbfbf`},children:`-`})}},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(cI,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确定删除该行业?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)(rS,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(oI,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(KL,{}),o.item?`编辑行业`:`添加行业`]}),open:o.open,onOk:u,onCancel:()=>{s({open:!1,item:null}),c.resetFields()},okText:`保存`,cancelText:`取消`,width:640,confirmLoading:i,children:(0,Q.jsxs)(Y,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`key`,label:`行业标识`,style:{flex:1},rules:[{required:!0,message:`请输入标识`}],children:(0,Q.jsx)(Fj,{placeholder:`例如:ecommerce`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`label`,label:`行业名称`,style:{flex:1},rules:[{required:!0,message:`请输入名称`}],children:(0,Q.jsx)(Fj,{placeholder:`例如:电商`,size:`large`})})]}),(0,Q.jsx)(Y.Item,{name:`icon`,label:`行业图标`,children:(0,Q.jsx)(I2e,{})}),(0,Q.jsx)(Y.Item,{name:`description`,label:`行业描述`,children:(0,Q.jsx)(Fj.TextArea,{rows:2,placeholder:`行业描述`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`skills_wentutujie`,label:`文图理解生成视频提示词`,extra:`用于LLM优化视频提示词的系统指令,根据行业特点引导AI理解文案与画面的关系`,children:(0,Q.jsx)(Fj.TextArea,{rows:3,placeholder:`请输入文图理解生成视频提示词,例如: 你是一位专业的电商视频文案专家,擅长将产品卖点转化为视觉语言`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`skills_wentutujie_image`,label:`文图理解生成图片提示词`,extra:`用于LLM优化图片提示词的系统指令,根据行业特点引导AI理解文案与画面的关系`,children:(0,Q.jsx)(Fj.TextArea,{rows:3,placeholder:`请输入文图理解生成图片提示词,例如: 你是一位专业的电商图片文案专家,擅长将产品卖点转化为图片生成提示词`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{marginBottom:8},children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:13},children:`行业选项配置`}),(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,marginLeft:8},children:`添加选项组,每组包含名称和多个选项,前台将显示为下拉选择`})]}),(0,Q.jsx)(Y.List,{name:`optionGroups`,children:(e,{add:t,remove:n})=>(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8,marginBottom:16},children:[e.map(({key:e,name:t,...r})=>(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`flex-start`,padding:`10px 12px`,borderRadius:10,background:`#f8f9fc`,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,gap:8},children:[(0,Q.jsx)(Y.Item,{...r,name:[t,`name`],label:`选项名称`,style:{marginBottom:0},rules:[{required:!0,message:`请输入选项名称`}],children:(0,Q.jsx)(Fj,{placeholder:`例如:视频风格`,size:`middle`,style:{borderRadius:8}})}),(0,Q.jsx)(Y.Item,{...r,name:[t,`options`],label:`选项内容`,style:{marginBottom:0},children:(0,Q.jsx)(Wy,{mode:`tags`,size:`middle`,placeholder:`输入选项后回车添加`,style:{borderRadius:8},tokenSeparators:[`,`,`,`,`、`]})})]}),(0,Q.jsx)(NJ,{onClick:()=>n(t),style:{color:`#ef4444`,fontSize:16,marginTop:34,cursor:`pointer`,flexShrink:0}})]},e)),(0,Q.jsx)(rS,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,Q.jsx)(ND,{}),style:{borderRadius:8,height:36},children:`添加选项组`})]})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`is_active`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(vN,{})}),(0,Q.jsx)(Y.Item,{name:`sort_order`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Fj,{type:`number`,size:`large`})})]})]})})]})};function j5(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}var R2e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=Y.useForm(),s=Y.useWatch(`multiGenerationEnabled`,o)??!1,c=async()=>{r(!0);try{t((await z0()).map(e=>({...e,supportedRatios:j5(e.supportedRatios),supportedResolutions:j5(e.supportedResolutions),supportedDurations:j5(e.supportedDurations)})))}catch{X.error(`加载视频引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{c()},[]);let l=async()=>{try{let e=await o.validateFields(),t={name:e.name,provider:e.provider,api_base:e.apiBase,api_key:e.apiKey,model_name:e.modelName,supported_ratios:JSON.stringify(e.supportedRatios||[]),supported_resolutions:JSON.stringify(e.supportedResolutions||[]),supported_durations:JSON.stringify(e.supportedDurations||[]),max_duration:e.maxDuration??15,max_image_count:e.maxImageCount??2,max_video_count:e.maxVideoCount??0,max_audio_count:e.maxAudioCount??0,supports_first_last_frame:e.supportsFirstLastFrame??!1,supports_universal_reference:e.supportsUniversalReference??!0,is_active:e.isActive??!0,priority:e.priority??0,multi_generation_enabled:e.multiGenerationEnabled??!1,max_generation_count:e.maxGenerationCount??1};i.engine?(await B0({id:i.engine.id,...t}),X.success(`已更新`)):(await B0(t),X.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),c()}catch(e){if(e?.errorFields)return;X.error(e?.message||`保存失败`)}},u=async e=>{try{await nJe(e),X.success(`已删除`),c()}catch{X.error(`删除失败`)}},d=e=>{a({open:!0,engine:e||null}),e?o.setFieldsValue(e):(o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,multiGenerationEnabled:!1,maxGenerationCount:1,maxDuration:15,maxImageCount:2,maxVideoCount:0,maxAudioCount:0,supportsFirstLastFrame:!1,supportsUniversalReference:!0,supportedRatios:[`16:9`,`4:3`,`1:1`,`3:4`,`9:16`,`21:9`],supportedResolutions:[`480p`,`720p`,`1080p`],supportedDurations:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RY,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`视频引擎配置`}),(0,Q.jsxs)(rI,{color:`purple`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>d(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(ZF,{columns:[{title:`引擎名称`,key:`name`,width:180,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[(0,Q.jsx)(`div`,{style:{width:36,height:36,borderRadius:8,background:t.isActive?`linear-gradient(135deg, #6366f1, #8b5cf6)`:`linear-gradient(135deg, #94a3b8, #cbd5e1)`,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`#fff`,fontSize:16},children:(0,Q.jsx)(RY,{})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),(0,Q.jsx)(`div`,{style:{color:`#94a3b8`,fontSize:12},children:t.provider})]})]})},{title:`支持比例`,dataIndex:`supportedRatios`,width:200,render:e=>(0,Q.jsx)(bA,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(rI,{children:e},e))})},{title:`支持分辨率`,dataIndex:`supportedResolutions`,width:150,render:e=>(0,Q.jsx)(bA,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(rI,{color:`blue`,children:e},e))})},{title:`支持时长`,dataIndex:`supportedDurations`,width:120,render:e=>(0,Q.jsx)(rI,{color:`orange`,children:e?.length?`${Math.min(...e)}-${Math.max(...e)}s`:`-`})},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(rI,{color:`purple`,children:[e,` 张`]})},{title:`最大视频`,dataIndex:`maxVideoCount`,width:100,render:e=>(0,Q.jsxs)(rI,{color:`cyan`,children:[e,` 个`]})},{title:`最大音频`,dataIndex:`maxAudioCount`,width:100,render:e=>(0,Q.jsxs)(rI,{color:e>0?`geekblue`:`default`,children:[e||0,` 段`]})},{title:`首尾帧`,dataIndex:`supportsFirstLastFrame`,width:90,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`支持`:`不支持`})},{title:`全能参考`,dataIndex:`supportsUniversalReference`,width:100,render:e=>(0,Q.jsx)(rI,{color:e?`purple`:`default`,children:e?`支持`:`不支持`})},{title:`多份生成`,dataIndex:`multiGenerationEnabled`,width:100,render:e=>(0,Q.jsx)(rI,{color:e?`blue`:`default`,children:e?`开启`:`关闭`})},{title:`数量上限`,dataIndex:`maxGenerationCount`,width:100,render:(e,t)=>(0,Q.jsxs)(rI,{color:t.multiGenerationEnabled&&Number(e||1)>1?`magenta`:`default`,children:[`最多 `,t.multiGenerationEnabled&&e||1,` 份`]})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(cI,{}),onClick:()=>d(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确定删除?`,onConfirm:()=>u(t.id),children:(0,Q.jsx)(rS,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(oI,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1200}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RY,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:l,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:620,children:(0,Q.jsxs)(Y,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Fj,{placeholder:`Seedance 2.0`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Wy,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(Y.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(Fj.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`modelName`,label:`模型名称`,children:(0,Q.jsx)(Fj,{placeholder:`doubao-seedance-2-0-260128`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`supportedRatios`,label:`支持比例`,children:(0,Q.jsx)(Wy,{mode:`multiple`,size:`large`,options:[{value:`16:9`,label:`16:9 (横屏)`},{value:`4:3`,label:`4:3 (标准)`},{value:`1:1`,label:`1:1 (方形)`},{value:`3:4`,label:`3:4 (竖版)`},{value:`9:16`,label:`9:16 (竖屏)`},{value:`21:9`,label:`21:9 (超宽)`}]})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`supportedResolutions`,label:`支持分辨率`,style:{flex:1},children:(0,Q.jsx)(Wy,{mode:`multiple`,size:`large`,options:[{value:`480p`},{value:`720p`},{value:`1080p`}]})}),(0,Q.jsx)(Y.Item,{name:`supportedDurations`,label:`支持时长(秒)`,style:{flex:1},children:(0,Q.jsx)(Wy,{mode:`multiple`,size:`large`,options:Array.from({length:27},(e,t)=>({value:t+4,label:`${t+4}秒`}))})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`maxDuration`,label:`最大时长(秒)`,style:{flex:1},children:(0,Q.jsx)(Fj,{type:`number`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`maxImageCount`,label:`最大图片数量`,style:{flex:1},children:(0,Q.jsx)(Fj,{type:`number`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`maxVideoCount`,label:`最大视频数量`,style:{flex:1},children:(0,Q.jsx)(Fj,{type:`number`,size:`large`})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(Y.Item,{name:`maxAudioCount`,label:`最大参考音频数`,style:{flex:1},extra:`0 表示不支持音频参考`,rules:[{validator:(e,t)=>(Number(t??0),Promise.resolve())}],children:(0,Q.jsx)(Fj,{type:`number`,size:`large`,min:0,max:3})})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`supportsFirstLastFrame`,label:`首尾帧模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(vN,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(Y.Item,{name:`supportsUniversalReference`,label:`全能参考模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(vN,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(Y.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(vN,{})})]}),(0,Q.jsxs)(`div`,{style:{background:`#f8f9fc`,borderRadius:10,padding:16,marginBottom:12},children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`多份生成能力`}),(0,Q.jsx)(Z.Paragraph,{style:{margin:`6px 0 0`,color:`#64748b`,fontSize:12},children:`管理后台只控制是否允许客户端选择多份及最大数量;客户端每次可在 1 到上限之间选择。`})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`multiGenerationEnabled`,label:`允许客户端多份生成`,valuePropName:`checked`,style:{flex:1},children:(0,Q.jsx)(vN,{checkedChildren:`开启`,unCheckedChildren:`关闭`})}),(0,Q.jsx)(Y.Item,{name:`maxGenerationCount`,label:`客户端最大生成数量`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:1,max:5,precision:0,size:`large`,style:{width:`100%`},disabled:!s})}),(0,Q.jsx)(Y.Item,{name:`priority`,label:`优先级`,style:{flex:1},children:(0,Q.jsx)(Wy,{size:`large`,options:[{value:0,label:`0 (默认)`},{value:1,label:`1`},{value:2,label:`2`},{value:3,label:`3`},{value:5,label:`5`},{value:10,label:`10 (最高)`}]})})]})]})})]})};function z2e(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}function B2e(e){if(e&&typeof e==`object`&&!Array.isArray(e))return e;if(typeof e==`string`)try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}return{}}var M5={"1K":{"1:1":`1024x1024`,"4:3":`1152x864`,"3:4":`864x1152`,"16:9":`1312x736`,"9:16":`736x1312`,"3:2":`1248x832`,"2:3":`832x1248`,"21:9":`1568x672`},"2K":{"1:1":`2048x2048`,"4:3":`2304x1728`,"3:4":`1728x2304`,"16:9":`2848x1600`,"9:16":`1600x2848`,"3:2":`2496x1664`,"2:3":`1664x2496`,"21:9":`3136x1344`},"4K":{"1:1":`4096x4096`,"4:3":`4704x3520`,"3:4":`3520x4704`,"16:9":`5504x3040`,"9:16":`3040x5504`,"3:2":`4992x3328`,"2:3":`3328x4992`,"21:9":`6197x2656`}},N5=[`1:1`,`4:3`,`3:4`,`16:9`,`9:16`,`3:2`,`2:3`,`21:9`],V2e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=Y.useForm(),s=Y.useWatch(`multiGenerationEnabled`,o)??!1,c=async()=>{r(!0);try{t((await V0()).map(e=>({...e,supportedModels:z2e(e.supportedModels),supportedSizes:B2e(e.supportedSizes)})))}catch{X.error(`加载图片引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{c()},[]);let l=async()=>{try{let e=await o.validateFields(),t={};for(let n of[`1K`,`2K`,`4K`]){let r=e[`size_${n}`]||[];if(r.length>0){t[n]={};for(let e of r)t[n][e]=M5[n]?.[e]||e}}let n={name:e.name,provider:e.provider,api_base:e.apiBase,api_key:e.apiKey,model_name:e.modelName,supported_models:JSON.stringify(e.supportedModels||[]),supported_sizes:JSON.stringify(t),default_size:e.defaultSize||`2K`,max_image_count:e.maxImageCount??0,generate_url:e.generateUrl||``,is_active:e.isActive??!0,priority:e.priority??0,multi_generation_enabled:e.multiGenerationEnabled??!1,max_generation_count:e.maxGenerationCount??1,multi_image_max_images:e.multiImageMaxImages??15,max_reference_image_count:e.maxReferenceImageCount??14,output_format:e.outputFormat??``};i.engine?(await H0({id:i.engine.id,...n}),X.success(`已更新`)):(await H0(n),X.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),c()}catch(e){if(e?.errorFields)return;X.error(e?.message||`保存失败`)}},u=async e=>{try{await rJe(e),X.success(`已删除`),c()}catch{X.error(`删除失败`)}},d=e=>{if(a({open:!0,engine:e||null}),e){let t={};for(let n of[`1K`,`2K`,`4K`])t[`size_${n}`]=Object.keys(e.supportedSizes?.[n]||{});o.setFieldsValue({...e,...t})}else o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,multiGenerationEnabled:!1,maxGenerationCount:1,multiImageMaxImages:15,maxReferenceImageCount:14,outputFormat:``,supportedModels:[`doubao-seedream-5-0-260128`],defaultSize:`2K`,maxImageCount:0,size_1K:N5,size_2K:N5,size_4K:N5})};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(OY,{style:{fontSize:18,color:`#10b981`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`图片引擎配置`}),(0,Q.jsxs)(rI,{color:`green`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>d(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(ZF,{columns:[{title:`引擎名称`,key:`name`,width:180,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[(0,Q.jsx)(`div`,{style:{width:36,height:36,borderRadius:8,background:t.isActive?`linear-gradient(135deg, #10b981, #059669)`:`linear-gradient(135deg, #94a3b8, #cbd5e1)`,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`#fff`,fontSize:16},children:(0,Q.jsx)(OY,{})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),(0,Q.jsx)(`div`,{style:{color:`#94a3b8`,fontSize:12},children:t.modelName})]})]})},{title:`1K 支持比例`,key:`sizes_1k`,width:260,render:(e,t)=>{let n=Object.keys(t.supportedSizes?.[`1K`]||{});return n.length===0?(0,Q.jsx)(`span`,{style:{color:`#bfbfbf`},children:`-`}):(0,Q.jsx)(bA,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(rI,{color:`green`,children:[e,` `,t.supportedSizes[`1K`][e]]},e))})}},{title:`2K 支持比例`,key:`sizes_2k`,width:260,render:(e,t)=>{let n=Object.keys(t.supportedSizes?.[`2K`]||{});return n.length===0?(0,Q.jsx)(`span`,{style:{color:`#bfbfbf`},children:`-`}):(0,Q.jsx)(bA,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(rI,{color:`blue`,children:[e,` `,t.supportedSizes[`2K`][e]]},e))})}},{title:`4K 支持比例`,key:`sizes_4k`,width:260,render:(e,t)=>{let n=Object.keys(t.supportedSizes?.[`4K`]||{});return n.length===0?(0,Q.jsx)(`span`,{style:{color:`#bfbfbf`},children:`-`}):(0,Q.jsx)(bA,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(rI,{color:`purple`,children:[e,` `,t.supportedSizes[`4K`][e]]},e))})}},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(rI,{color:`purple`,children:[e,` 张`]})},{title:`多份生成`,dataIndex:`multiGenerationEnabled`,width:100,render:e=>(0,Q.jsx)(rI,{color:e?`blue`:`default`,children:e?`开启`:`关闭`})},{title:`数量上限`,dataIndex:`maxGenerationCount`,width:100,render:(e,t)=>(0,Q.jsxs)(rI,{color:t.multiGenerationEnabled&&Number(e||1)>1?`magenta`:`default`,children:[`最多 `,t.multiGenerationEnabled&&e||1,` 份`]})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(cI,{}),onClick:()=>d(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确定删除?`,onConfirm:()=>u(t.id),children:(0,Q.jsx)(rS,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(oI,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1e3}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(OY,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:l,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:680,children:(0,Q.jsxs)(Y,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Fj,{placeholder:`豆包文生图`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Wy,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(Y.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(Fj.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`modelName`,label:`默认模型`,children:(0,Q.jsx)(Fj,{placeholder:`doubao-seedream-5-0-260128`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`supportedModels`,label:`支持模型列表`,children:(0,Q.jsx)(Wy,{mode:`tags`,size:`large`,placeholder:`输入模型ID后回车添加`,tokenSeparators:[`,`,`,`],options:[{value:`doubao-seedream-5-0-260128`}]})}),(0,Q.jsxs)(`div`,{style:{background:`#f8f9fc`,borderRadius:10,padding:16,marginBottom:8},children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:`尺寸配置`}),(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,marginLeft:8},children:`勾选每个档位支持的比例,前台选择后传对应像素值给SDK`})]}),[`1K`,`2K`,`4K`].map(e=>(0,Q.jsxs)(`div`,{style:{background:`#fafbfc`,borderRadius:10,padding:`12px 16px`,marginBottom:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:13,color:e===`2K`?`#3b82f6`:`#8b5cf6`},children:e}),(0,Q.jsx)(Y.Item,{name:`size_${e}`,style:{marginTop:8,marginBottom:0},children:(0,Q.jsx)(SO.Group,{style:{width:`100%`},children:(0,Q.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(4, 1fr)`,gap:`6px 0`},children:N5.map(t=>(0,Q.jsxs)(SO,{value:t,style:{fontSize:12},children:[t,` `,(0,Q.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:11},children:M5[e]?.[t]})]},t))})})})]},e)),(0,Q.jsx)(Y.Item,{name:`defaultSize`,label:`默认尺寸档位`,children:(0,Q.jsx)(Wy,{size:`large`,options:[{value:`1K`,label:`1K`},{value:`2K`,label:`2K`},{value:`4K`,label:`4K`}]})}),(0,Q.jsx)(Y.Item,{name:`maxImageCount`,label:`最大图片数量`,children:(0,Q.jsx)(Fj,{type:`number`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`generateUrl`,label:`生成接口地址`,children:(0,Q.jsx)(Fj,{placeholder:`https://ark.cn-beijing.volces.com/api/v3/images/generations`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{background:`#f8f9fc`,borderRadius:10,padding:16,marginBottom:12},children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`多份生成能力`}),(0,Q.jsx)(Z.Paragraph,{style:{margin:`6px 0 0`,color:`#64748b`,fontSize:12},children:`管理后台只控制是否允许客户端选择多份及最大数量。客户端本次选择 2-5 份时,后端只调用一次火山同步组图 API;失败绝不降级成多次单图请求。`})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(2, minmax(0, 1fr))`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`multiGenerationEnabled`,label:`允许客户端多份生成`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{checkedChildren:`开启`,unCheckedChildren:`关闭`})}),(0,Q.jsx)(Y.Item,{name:`maxGenerationCount`,label:`客户端最大生成数量`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:1,max:5,precision:0,size:`large`,style:{width:`100%`},disabled:!s})}),(0,Q.jsx)(Y.Item,{name:`multiImageMaxImages`,label:`组图输入输出总上限`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:1,max:15,precision:0,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(Y.Item,{name:`maxReferenceImageCount`,label:`最大参考图数量`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:0,max:14,precision:0,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(Y.Item,{name:`outputFormat`,label:`供应商输出格式`,children:(0,Q.jsx)(Wy,{size:`large`,options:[{value:``,label:`不传(兼容不支持 output_format 的模型)`},{value:`png`,label:`PNG`},{value:`jpeg`,label:`JPEG`}]})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`priority`,label:`优先级`,children:(0,Q.jsx)(Wy,{size:`large`,options:[{value:0,label:`0 (默认)`},{value:1,label:`1`},{value:2,label:`2`},{value:3,label:`3`},{value:5,label:`5`},{value:10,label:`10 (最高)`}]})}),(0,Q.jsx)(Y.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30},children:(0,Q.jsx)(vN,{})})]})]})})]})},H2e=[`2K`,`4K`],U2e=[`480p`,`720p`,`1080p`],W2e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)([]),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)({open:!1,ratio:null}),[c]=Y.useForm(),l=Y.useWatch(`genType`,c)||`video`,u=Y.useWatch(`modelConfigId`,c),d=async()=>{a(!0);try{let[e,n]=await Promise.all([iJe(),$0()]),i=(n?.engine?.image||[]).map(e=>({...e,genType:`image`})),a=(n?.engine?.video||[]).map(e=>({...e,genType:`video`}));t(e),r([...a,...i])}catch{X.error(`加载积分比例失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{d()},[]);let f=(0,C.useMemo)(()=>n.filter(e=>e.genType===l).map(e=>({value:e.id,label:`${e.name}${e.modelName?`(${e.modelName})`:``}`})),[n,l]),p=(0,C.useMemo)(()=>n.find(e=>e.id===u&&e.genType===l),[n,l,u]),m=(0,C.useMemo)(()=>{if(l===`image`){let e=p?.supportedSizes?Object.keys(p.supportedSizes):[];return(e.length?e:H2e).map(e=>({value:e,label:e}))}let e=p?.supportedResolutions||[];return(e.length?e:U2e).map(e=>({value:e,label:e}))},[l,p]),h=(e,t)=>n.find(n=>n.id===e&&(!t||n.genType===t))?.name||e,g=async()=>{try{let e=await c.validateFields(),t={model_config_id:e.modelConfigId,gen_type:e.genType,resolution:e.resolution,ratio:e.ratio,base_credits:e.baseCredits,per_second_credits:e.genType===`image`?0:e.perSecondCredits||0};e.genType===`video`&&(t.input_video_ratio=e.inputVideoRatio??1,t.input_video_base_credits=e.inputVideoBaseCredits??0,t.input_video_per_second_credits=e.inputVideoPerSecondCredits??0),t.input_image_ratio=e.inputImageRatio??1,t.input_image_base_credits=e.inputImageBaseCredits??0,t.input_image_per_image_credits=e.inputImagePerImageCredits??0,o.ratio?(await U0({id:o.ratio.id,...t}),X.success(`已更新`)):(await U0(t),X.success(`已添加`)),s({open:!1,ratio:null}),c.resetFields(),d()}catch(e){if(e?.errorFields)return;X.error(e?.message||`保存失败`)}},_=async e=>{try{await aJe(e),X.success(`已删除`),d()}catch{X.error(`删除失败`)}},v=e=>{s({open:!0,ratio:e||null}),e?c.setFieldsValue({modelConfigId:e.modelConfigId,genType:e.genType===`image`?`image`:`video`,resolution:e.resolution,ratio:e.ratio,baseCredits:e.baseCredits,perSecondCredits:e.perSecondCredits,inputVideoRatio:e.inputVideoRatio,inputVideoBaseCredits:e.inputVideoBaseCredits,inputVideoPerSecondCredits:e.inputVideoPerSecondCredits,inputImageRatio:e.inputImageRatio,inputImageBaseCredits:e.inputImageBaseCredits,inputImagePerImageCredits:e.inputImagePerImageCredits}):(c.resetFields(),c.setFieldsValue({genType:`video`,ratio:1,baseCredits:60,perSecondCredits:2,inputVideoRatio:1,inputVideoBaseCredits:0,inputVideoPerSecondCredits:.5,inputImageRatio:1,inputImageBaseCredits:0,inputImagePerImageCredits:.5}))};return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(eV,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`积分比例配置`}),(0,Q.jsxs)(rI,{color:`purple`,children:[e.length,` 条规则`]})]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>v(),style:{borderRadius:8},children:`添加比例`})]}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{display:`block`,marginBottom:16,fontSize:13},children:`视频积分公式:(基础积分 + 每秒积分 x 视频时长) x 模型倍率;图片积分公式:基础积分 x 模型倍率`}),(0,Q.jsx)(ZF,{columns:[{title:`类型`,dataIndex:`genType`,width:80,render:e=>(0,Q.jsx)(rI,{color:e===`image`?`cyan`:`orange`,children:e===`image`?`图片`:`视频`})},{title:`引擎`,dataIndex:`modelConfigId`,width:180,render:(e,t)=>(0,Q.jsx)(rI,{color:t.genType===`image`?`cyan`:`purple`,children:h(e,t.genType)})},{title:`分辨率/尺寸`,dataIndex:`resolution`,width:110,render:e=>(0,Q.jsx)(rI,{color:{"480p":`blue`,"720p":`blue`,"1080p":`blue`,"4K":`green`,"2K":`green`}[e]||`default`,children:e})},{title:`倍率`,dataIndex:`ratio`,width:100,sorter:(e,t)=>e.ratio-t.ratio,render:e=>(0,Q.jsxs)(Z.Text,{strong:!0,style:{color:e>=2?`#ef4444`:e>=1.5?`#f59e0b`:`#10b981`},children:[`x`,e]})},{title:`基础积分`,dataIndex:`baseCredits`,width:100,render:e=>(0,Q.jsxs)(Z.Text,{children:[e,` 积分`]})},{title:`每秒积分`,dataIndex:`perSecondCredits`,width:100,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分/秒`})},{title:`传入视频`,children:[{title:`倍率`,dataIndex:`inputVideoRatio`,width:90,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:(0,Q.jsxs)(`span`,{style:{color:e>=2?`#ef4444`:e>=1.5?`#f59e0b`:`#10b981`},children:[`x`,e]})})},{title:`基础积分`,dataIndex:`inputVideoBaseCredits`,width:100,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分`})},{title:`每秒积分`,dataIndex:`inputVideoPerSecondCredits`,width:100,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分/秒`})}]},{title:`传入图片`,children:[{title:`倍率`,dataIndex:`inputImageRatio`,width:90,render:e=>(0,Q.jsxs)(`span`,{style:{color:e>=2?`#ef4444`:e>=1.5?`#f59e0b`:`#10b981`},children:[`x`,e]})},{title:`基础积分`,dataIndex:`inputImageBaseCredits`,width:100,render:e=>(0,Q.jsxs)(Z.Text,{children:[e,` 积分`]})},{title:`每张积分`,dataIndex:`inputImagePerImageCredits`,width:100,render:e=>(0,Q.jsxs)(Z.Text,{children:[e,` 积分/张`]})}]},{title:`示例计算`,key:`example`,width:160,render:(e,t)=>{let n;return t.genType===`image`?(n=Math.round(t.baseCredits*t.ratio),t.inputImageRatio&&t.inputImagePerImageCredits&&(n+=Math.round((t.inputImageBaseCredits+t.inputImagePerImageCredits*3)*t.inputImageRatio))):(n=Math.round((t.baseCredits+t.perSecondCredits*15)*t.ratio),t.inputVideoRatio&&t.inputVideoPerSecondCredits&&(n+=Math.round((t.inputVideoBaseCredits+t.inputVideoPerSecondCredits*15)*t.inputVideoRatio)),t.inputImageRatio&&t.inputImagePerImageCredits&&(n+=Math.round((t.inputImageBaseCredits+t.inputImagePerImageCredits*3)*t.inputImageRatio))),(0,Q.jsxs)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:[n,` 积分`]})}},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(cI,{}),onClick:()=>v(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确定删除?`,onConfirm:()=>_(t.id),children:(0,Q.jsx)(rS,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(oI,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:!1,scroll:{x:1500}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(eV,{}),o.ratio?`编辑比例`:`添加比例`]}),open:o.open,onOk:g,onCancel:()=>{s({open:!1,ratio:null}),c.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(Y,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(Y.Item,{name:`genType`,label:`生成类型`,rules:[{required:!0,message:`请选择生成类型`}],children:(0,Q.jsx)(Wy,{size:`large`,options:[{value:`video`,label:`视频`},{value:`image`,label:`图片`}],onChange:()=>{c.setFieldsValue({modelConfigId:void 0,resolution:void 0})}})}),(0,Q.jsx)(Y.Item,{name:`modelConfigId`,label:`引擎`,rules:[{required:!0,message:`请选择引擎`}],children:(0,Q.jsx)(Wy,{size:`large`,placeholder:`请选择引擎`,options:f,showSearch:!0,optionFilterProp:`label`,onChange:()=>c.setFieldsValue({resolution:void 0})})}),(0,Q.jsx)(Y.Item,{name:`resolution`,label:l===`image`?`图片尺寸`:`分辨率`,rules:[{required:!0,message:l===`image`?`请选择图片尺寸`:`请选择分辨率`}],children:(0,Q.jsx)(Wy,{size:`large`,placeholder:l===`image`?`请选择图片尺寸`:`请选择分辨率`,options:m})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`ratio`,label:`倍率`,style:{flex:1},rules:[{required:!0,message:`请输入倍率`}],children:(0,Q.jsx)(ok,{min:.1,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(Y.Item,{name:`baseCredits`,label:`基础积分`,style:{flex:1},rules:[{required:!0,message:`请输入基础积分`}],children:(0,Q.jsx)(ok,{min:0,max:1e3,style:{width:`100%`},size:`large`})}),l!==`image`&&(0,Q.jsx)(Y.Item,{name:`perSecondCredits`,label:`每秒积分`,style:{flex:1},rules:[{required:!0,message:`请输入每秒积分`}],children:(0,Q.jsx)(ok,{min:0,max:100,style:{width:`100%`},size:`large`})})]}),l!==`image`&&(0,Q.jsxs)(`div`,{style:{marginTop:8,padding:`12px 16px`,backgroundColor:`#f5f5ff`,borderRadius:8,border:`1px solid #e0e0ff`},children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{display:`block`,marginBottom:8,color:`#4f46e5`},children:`传入视频价格`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`inputVideoRatio`,label:`倍率`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频倍率`}],children:(0,Q.jsx)(ok,{min:0,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(Y.Item,{name:`inputVideoBaseCredits`,label:`基础积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频基础积分`}],children:(0,Q.jsx)(ok,{min:0,max:500,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(Y.Item,{name:`inputVideoPerSecondCredits`,label:`每秒积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频每秒积分`}],children:(0,Q.jsx)(ok,{min:0,max:50,style:{width:`100%`},size:`large`})})]})]}),(0,Q.jsxs)(`div`,{style:{marginTop:12,padding:`12px 16px`,backgroundColor:`#f0fff4`,borderRadius:8,border:`1px solid #c6f6d5`},children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{display:`block`,marginBottom:8,color:`#059669`},children:`传入图片价格`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`inputImageRatio`,label:`倍率`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入图片倍率`}],children:(0,Q.jsx)(ok,{min:0,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(Y.Item,{name:`inputImageBaseCredits`,label:`基础积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入图片基础积分`}],children:(0,Q.jsx)(ok,{min:0,max:500,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(Y.Item,{name:`inputImagePerImageCredits`,label:`每张积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入图片每张积分`}],children:(0,Q.jsx)(ok,{min:0,max:50,style:{width:`100%`},size:`large`})})]})]})]})})]})},P5={HomeOutlined:(0,Q.jsx)(VK,{}),PlayCircleOutlined:(0,Q.jsx)(RY,{}),WalletOutlined:(0,Q.jsx)(N1,{}),RobotOutlined:(0,Q.jsx)(iZ,{}),SettingOutlined:(0,Q.jsx)(FZ,{}),BellOutlined:(0,Q.jsx)(gz,{}),UserOutlined:(0,Q.jsx)(_1,{}),AppstoreOutlined:(0,Q.jsx)(KL,{}),FileTextOutlined:(0,Q.jsx)(wA,{}),StarOutlined:(0,Q.jsx)(IQ,{}),HeartOutlined:(0,Q.jsx)(AK,{}),CameraOutlined:(0,Q.jsx)(oV,{}),DashboardOutlined:(0,Q.jsx)(YH,{}),CalculatorOutlined:(0,Q.jsx)(eV,{}),DollarOutlined:(0,Q.jsx)(EU,{}),GiftOutlined:(0,Q.jsx)(aK,{}),ThunderboltOutlined:(0,Q.jsx)(S$,{}),FireOutlined:(0,Q.jsx)(yG,{}),CloudOutlined:(0,Q.jsx)(GV,{}),SmileOutlined:(0,Q.jsx)(yQ,{}),TrophyOutlined:(0,Q.jsx)(z$,{}),RocketOutlined:(0,Q.jsx)(sZ,{}),BulbOutlined:(0,Q.jsx)(XB,{}),CodeOutlined:(0,Q.jsx)(eH,{}),PictureOutlined:(0,Q.jsx)(OY,{}),VideoCameraOutlined:(0,Q.jsx)(k1,{}),AudioOutlined:(0,Q.jsx)(SR,{}),MailOutlined:(0,Q.jsx)(oJ,{}),PhoneOutlined:(0,Q.jsx)(xY,{}),GlobalOutlined:(0,Q.jsx)(fK,{}),ShoppingCartOutlined:(0,Q.jsx)(UZ,{}),TeamOutlined:(0,Q.jsx)(y$,{}),BarChartOutlined:(0,Q.jsx)(YR,{}),PieChartOutlined:(0,Q.jsx)(jY,{}),LineChartOutlined:(0,Q.jsx)(Bq,{}),SecurityScanOutlined:(0,Q.jsx)(OZ,{}),ApiOutlined:(0,Q.jsx)(AL,{}),DatabaseOutlined:(0,Q.jsx)($H,{}),CloudServerOutlined:(0,Q.jsx)(qV,{}),MenuOutlined:(0,Q.jsx)(SJ,{})},G2e=Object.keys(P5).map(e=>({value:e,label:(0,Q.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[P5[e],` `,e.replace(`Outlined`,``)]})})),K2e={page:`blue`,group:`purple`},q2e={page:`页面`,group:`分组`},J2e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!0),[i,a]=(0,C.useState)(`frontend`),[o,s]=(0,C.useState)({open:!1,menu:null}),[c]=Y.useForm(),l=async()=>{r(!0);try{t(await K0())}catch{}r(!1)};(0,C.useEffect)(()=>{l()},[]);let u=async()=>{try{let e=await c.validateFields(),t={label:e.label,path:e.path||``,icon:e.icon||``,sort_order:e.sortOrder??0,is_active:e.isActive??!0,parent_id:e.parentId||null,menu_type:e.menuType||`page`,menu_target:e.menuTarget||`frontend`,is_default:e.isDefault??!1};o.menu?.id?await q0({...t,id:o.menu.id}):await q0(t),X.success(o.menu?.id?`菜单已更新`:`菜单已添加`),s({open:!1,menu:null}),c.resetFields(),l()}catch{}},d=async e=>{try{await jJe(e),X.success(`菜单已删除`),l()}catch(e){X.error(e?.message||`删除失败`)}},f=t=>{s({open:!0,menu:t||null}),t?c.setFieldsValue({label:t.label,path:t.path,icon:t.icon,sortOrder:t.sortOrder??0,isActive:t.isActive??!0,parentId:t.parentId??``,menuType:t.menuType??`page`,menuTarget:t.menuTarget??`frontend`,isDefault:t.isDefault??!1}):(c.resetFields(),c.setFieldsValue({icon:`HomeOutlined`,sortOrder:e.length,isActive:!0,menuType:`page`,menuTarget:i,isDefault:!1}))},p=e.filter(e=>{let t=e.menuTarget??`frontend`;return t===i||t===`both`}),m=[{value:``,label:`顶级菜单`},...p.filter(e=>e.menuType===`group`).map(e=>({value:e.id,label:e.label}))],h=[],g=p.filter(e=>!e.parentId),_={};p.filter(e=>e.parentId).forEach(e=>{let t=e.parentId;_[t]||(_[t]=[]),_[t].push(e)}),g.sort((e,t)=>(e.sortOrder??0)-(t.sortOrder??0)).forEach(e=>{h.push({...e,_depth:0}),(_[e.id]||[]).sort((e,t)=>(e.sortOrder??0)-(t.sortOrder??0)).forEach(e=>{h.push({...e,_depth:1})})});let v=[{title:`排序`,dataIndex:`sortOrder`,width:60},{title:`菜单名称`,key:`label`,width:180,render:(e,t)=>(0,Q.jsxs)(`span`,{style:{paddingLeft:t._depth*20,fontWeight:t._depth===0?600:400},children:[t._depth===1&&(0,Q.jsx)(`span`,{style:{color:`#cbd5e1`,marginRight:4},children:`└`}),t.label]})},{title:`路由路径`,dataIndex:`path`,width:160,render:e=>e||(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})},{title:`图标`,dataIndex:`icon`,width:100,render:e=>e&&P5[e]?(0,Q.jsx)(`span`,{style:{fontSize:16,color:`#6366f1`},children:P5[e]}):`-`},{title:`类型`,dataIndex:`menuType`,width:80,render:e=>(0,Q.jsx)(rI,{color:K2e[e]||`default`,children:q2e[e]||e})},{title:`状态`,dataIndex:`isActive`,width:70,render:e=>(0,Q.jsx)(`span`,{style:{color:e?`#22c55e`:`#94a3b8`},children:e?`启用`:`停用`})},...i===`frontend`?[{title:`默认显示`,dataIndex:`isDefault`,width:80,render:e=>e?(0,Q.jsx)(rI,{color:`green`,children:`默认`}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})}]:[],{title:`操作`,key:`action`,width:150,render:(e,t)=>(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(cI,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确定删除该菜单?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)(rS,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(oI,{}),children:`删除`})})]})}];return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(SJ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`菜单配置`})]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加菜单`})]}),(0,Q.jsx)(rO,{activeKey:i,onChange:a,items:[{key:`frontend`,label:`前台菜单`},{key:`admin`,label:`后台菜单`}]}),(0,Q.jsx)(ZF,{columns:v,dataSource:h,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(SJ,{}),o.menu?.id?`编辑菜单`:`添加菜单`]}),open:o.open,onOk:u,onCancel:()=>{s({open:!1,menu:null}),c.resetFields()},okText:`确认`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(Y,{form:c,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`label`,label:`菜单名称`,rules:[{required:!0,message:`请输入菜单名称`}],children:(0,Q.jsx)(Fj,{placeholder:`例如:我的项目`,size:`large`})}),(0,Q.jsx)(Y.Item,{name:`path`,label:`路由路径`,tooltip:`分组类型可留空`,children:(0,Q.jsx)(Fj,{placeholder:`例如:/projects(分组可留空)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`menuType`,label:`菜单类型`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Wy,{size:`large`,options:[{value:`page`,label:`页面`},{value:`group`,label:`分组`}]})}),(0,Q.jsx)(Y.Item,{name:`menuTarget`,label:`适用端`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Wy,{size:`large`,options:[{value:`frontend`,label:`前台`},{value:`admin`,label:`后台`},{value:`both`,label:`两者`}]})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`icon`,label:`图标`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Wy,{size:`large`,options:G2e})}),(0,Q.jsx)(Y.Item,{name:`sortOrder`,label:`排序`,style:{flex:1},children:(0,Q.jsx)(ok,{min:0,max:100,style:{width:`100%`},size:`large`,placeholder:`默认0`})})]}),(0,Q.jsx)(Y.Item,{name:`parentId`,label:`上级菜单`,children:(0,Q.jsx)(Wy,{size:`large`,options:m,allowClear:!0,placeholder:`顶级菜单`})}),(0,Q.jsx)(Y.Item,{name:`isActive`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{})}),(0,Q.jsx)(Y.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.menuTarget!==t.menuTarget,children:({getFieldValue:e})=>e(`menuTarget`)===`admin`?null:(0,Q.jsx)(Y.Item,{name:`isDefault`,label:`新用户默认显示`,valuePropName:`checked`,tooltip:`开启后,新注册用户默认显示此菜单`,children:(0,Q.jsx)(vN,{})})})]})})]})},Y2e={monthly:`月`,quarterly:`季`,yearly:`年`},F5=e=>{let t=Number(e);return Number.isFinite(t)?`¥${t.toFixed(2)}`:`-`},X2e=()=>{let[e,t]=(0,C.useState)(`subscription`),[n,r]=(0,C.useState)([]),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(null),[c,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)(!0),[f]=Y.useForm(),p=e=>{r(t=>t.map(t=>t.id===e.id?e:t))},m=async()=>{a(!0);try{r(await jYe(e))}catch(e){X.error(e?.message||`加载积分商品失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{m()},[e]);let h=e=>{let t=e?e.renewalEnabled===!0:!0;if(s(e||null),d(t),l(!0),f.resetFields(),e){f.setFieldsValue({productCode:e.productCode,name:e.name,description:e.description||void 0,featuresText:(e.features||[]).join(` -`),tierCode:e.tierCode,tierRank:e.tierRank,billingCycle:e.billingCycle,monthlyGrantCredits:e.monthlyGrantCredits,firstPurchasePrice:e.firstPurchasePrice,regularPrice:e.regularPrice,activityPrice:e.activityPrice,activityRange:e.activityStartAt&&e.activityEndAt?[(0,aS.default)(e.activityStartAt),(0,aS.default)(e.activityEndAt)]:void 0,renewalEnabled:t,price:e.price,grantCredits:e.grantCredits,sortOrder:e.sortOrder,isActive:e.isActive});return}f.setFieldsValue({productCode:void 0,name:void 0,description:void 0,featuresText:void 0,isActive:!0,sortOrder:0,billingCycle:`monthly`,tierRank:1,renewalEnabled:t})},g=async()=>{try{let t=await f.validateFields(),n=t.activityRange||[],i={product_code:t.productCode,product_type:e,name:t.name,description:t.description||null,features:String(t.featuresText||``).split(` -`).map(e=>e.trim()).filter(Boolean),credit_level:`general`,currency:`CNY`,is_active:t.isActive??!0,sort_order:t.sortOrder??0};e===`subscription`?Object.assign(i,{tier_code:t.tierCode,tier_rank:t.tierRank,billing_cycle:t.billingCycle,monthly_grant_credits:t.monthlyGrantCredits,first_purchase_price:t.firstPurchasePrice,regular_price:t.regularPrice,activity_price:t.activityPrice??null,activity_start_at:n[0]?.toISOString()||null,activity_end_at:n[1]?.toISOString()||null,renewal_enabled:u,price:t.regularPrice}):Object.assign(i,{price:t.price,grant_credits:t.grantCredits});let a=o?await NYe(o.id,i):await MYe(i);if(e===`subscription`&&a.renewalEnabled!==u)throw Error(`续费开关保存结果与提交值不一致,请刷新后重试`);o?p(a):r(e=>[...e,a].sort((e,t)=>{let n=Number(e.sortOrder||0)-Number(t.sortOrder||0);return n===0?e.id.localeCompare(t.id):n})),X.success(o?`商品已更新`:`商品已创建`),l(!1),s(null),d(!0),f.resetFields()}catch(e){if(e?.errorFields)return;X.error(e?.message||`保存失败`)}},_=async(e,t)=>{let n=e.renewalEnabled===!0,r={...e,renewalEnabled:t};p(r),o?.id===e.id&&(s(r),d(t),f.setFieldValue(`renewalEnabled`,t));try{let n=await PYe(e.id,t);if(n.renewalEnabled!==t)throw Error(`续费开关保存结果与提交值不一致`);p(n),o?.id===e.id&&(s(n),d(n.renewalEnabled===!0),f.setFieldValue(`renewalEnabled`,n.renewalEnabled===!0)),X.success(t?`已开启续费`:`已关闭续费`)}catch(t){let r={...e,renewalEnabled:n};p(r),o?.id===e.id&&(s(r),d(n),f.setFieldValue(`renewalEnabled`,n)),X.error(t?.message||`更新续费状态失败`)}},v=(0,C.useMemo)(()=>e===`subscription`?[{title:`套餐`,key:`name`,render:(e,t)=>(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(Z.Text,{type:`secondary`,children:t.productCode})})]})},{title:`等级`,key:`tier`,render:(e,t)=>(0,Q.jsxs)(rI,{children:[t.tierCode||`-`,` / `,t.tierRank??`-`]})},{title:`周期`,dataIndex:`billingCycle`,render:e=>e?Y2e[e]||e:`-`},{title:`每月积分`,dataIndex:`monthlyGrantCredits`,render:e=>Number(e||0).toLocaleString()},{title:`首充价`,dataIndex:`firstPurchasePrice`,render:e=>F5(e)},{title:`原价`,dataIndex:`regularPrice`,render:e=>F5(e)},{title:`活动价`,key:`activity`,render:(e,t)=>t.activityPrice==null?`-`:(0,Q.jsx)(rI,{color:`red`,children:F5(t.activityPrice)})},{title:`允许续费`,dataIndex:`renewalEnabled`,render:(e,t)=>(0,Q.jsx)(vN,{checked:e===!0,checkedChildren:`开启`,unCheckedChildren:`关闭`,onChange:e=>void _(t,e)})},{title:`状态`,dataIndex:`isActive`,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`上架`:`下架`})},{title:`操作`,key:`action`,render:(e,t)=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(cI,{}),onClick:()=>h(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确认下架该商品?`,onConfirm:async()=>{await s2(t.id),X.success(`已下架`),await m()},children:(0,Q.jsx)(rS,{type:`link`,danger:!0,icon:(0,Q.jsx)(GQ,{}),children:`下架`})})]})}]:[{title:`增值包`,key:`name`,render:(e,t)=>(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(Z.Text,{type:`secondary`,children:t.productCode})})]})},{title:`积分`,dataIndex:`grantCredits`,render:e=>Number(e||0).toLocaleString()},{title:`价格`,dataIndex:`price`,render:e=>F5(e)},{title:`有效期`,render:()=>`1 个自然月`},{title:`状态`,dataIndex:`isActive`,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`上架`:`下架`})},{title:`操作`,key:`action`,render:(e,t)=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(cI,{}),onClick:()=>h(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确认下架该商品?`,onConfirm:async()=>{await s2(t.id),X.success(`已下架`),await m()},children:(0,Q.jsx)(rS,{type:`link`,danger:!0,icon:(0,Q.jsx)(GQ,{}),children:`下架`})})]})}],[e,n]);return(0,Q.jsxs)(aO,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(KZ,{}),`积分产品`]}),extra:(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>h(),children:e===`subscription`?`新增订阅套餐`:`新增积分增值包`}),children:[(0,Q.jsx)(rO,{activeKey:e,onChange:e=>t(e),items:[{key:`subscription`,label:`订阅套餐`},{key:`credit_addon`,label:`积分增值包`}]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:i,dataSource:n,columns:v,scroll:{x:1200}}),(0,Q.jsx)(vM,{open:c,title:o?`编辑积分商品`:`新增积分商品`,onOk:g,onCancel:()=>{l(!1),s(null),d(!0),f.resetFields()},width:760,destroyOnClose:!0,children:(0,Q.jsxs)(Y,{form:f,layout:`vertical`,children:[(0,Q.jsxs)(bA,{align:`start`,style:{width:`100%`},size:16,children:[(0,Q.jsx)(Y.Item,{name:`productCode`,label:`商品编码`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{disabled:!!o})}),(0,Q.jsx)(Y.Item,{name:`name`,label:`商品名称`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{style:{width:260}})}),(0,Q.jsx)(Y.Item,{name:`sortOrder`,label:`排序`,children:(0,Q.jsx)(ok,{})}),(0,Q.jsx)(Y.Item,{name:`isActive`,label:`上架`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{})})]}),e===`subscription`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(bA,{align:`start`,style:{width:`100%`},size:16,children:[(0,Q.jsx)(Y.Item,{name:`tierCode`,label:`套餐等级编码`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{})}),(0,Q.jsx)(Y.Item,{name:`tierRank`,label:`等级顺序`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:1})}),(0,Q.jsx)(Y.Item,{name:`billingCycle`,label:`订阅周期`,rules:[{required:!0}],children:(0,Q.jsx)(Wy,{style:{width:140},options:[{value:`monthly`,label:`月`},{value:`quarterly`,label:`季`},{value:`yearly`,label:`年`}]})}),(0,Q.jsx)(Y.Item,{name:`monthlyGrantCredits`,label:`每月发放积分`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:.01})})]}),(0,Q.jsxs)(bA,{align:`start`,size:16,children:[(0,Q.jsx)(Y.Item,{name:`firstPurchasePrice`,label:`首充价格`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:0,precision:2})}),(0,Q.jsx)(Y.Item,{name:`regularPrice`,label:`原价/续费价`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:0,precision:2})}),(0,Q.jsx)(Y.Item,{name:`activityPrice`,label:`活动价`,children:(0,Q.jsx)(ok,{min:0,precision:2})}),(0,Q.jsx)(Y.Item,{name:`activityRange`,label:`活动周期`,children:(0,Q.jsx)(eA.RangePicker,{showTime:!0})}),(0,Q.jsx)(Y.Item,{label:`允许续费`,tooltip:`关闭后,已失去首订资格的用户不会在客户端看到该套餐,也不能通过接口续费或升级购买。`,children:(0,Q.jsx)(vN,{checked:u,checkedChildren:`开启`,unCheckedChildren:`关闭`,onChange:e=>{d(e),f.setFieldValue(`renewalEnabled`,e)}})})]})]}):(0,Q.jsxs)(bA,{align:`start`,size:16,children:[(0,Q.jsx)(Y.Item,{name:`grantCredits`,label:`积分数量`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:.01})}),(0,Q.jsx)(Y.Item,{name:`price`,label:`价格`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:0,precision:2})}),(0,Q.jsx)(Y.Item,{label:`有效期`,children:(0,Q.jsx)(Fj,{value:`1 个自然月`,disabled:!0})})]}),(0,Q.jsx)(Y.Item,{name:`description`,label:`说明`,children:(0,Q.jsx)(Fj.TextArea,{rows:2})}),(0,Q.jsx)(Y.Item,{name:`featuresText`,label:`权益说明(每行一项)`,children:(0,Q.jsx)(Fj.TextArea,{rows:4})})]})})]})},Z2e=[{value:`generation_record_text_prompt_optimize`,label:`AI创作-提示词优化`},{value:`hot_opening_image_prompt_optimize`,label:`爆款开头复刻-图片提示词优化`},{value:`hot_opening_video_prompt_optimize`,label:`爆款开头复刻-视频提示词优化`},{value:`shot_image_prompt_optimize`,label:`拆镜复刻-图片提示词优化`},{value:`shot_video_prompt_optimize`,label:`拆镜复刻-视频提示词优化`},{value:`shot_original_video_analysis`,label:`拆镜复刻-原视频AI分析`},{value:`shot_segment_video_analysis`,label:`拆镜复刻-片段视频AI分析`}],Q2e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(!1),[c]=Y.useForm(),l=async()=>{s(!0);try{t(await zYe())}finally{s(!1)}};(0,C.useEffect)(()=>{l()},[]);let u=e=>{r(e||null),a(!0),c.resetFields(),c.setFieldsValue(e?{scene_code:e.sceneCode,pre_deduct_credits:e.preDeductCredits,is_active:e.isActive}:{is_active:!0,pre_deduct_credits:5})};return(0,Q.jsxs)(aO,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(iZ,{}),`LLM固定预扣配置`]}),extra:(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>u(),children:`新增场景`}),children:[(0,Q.jsx)(ZF,{rowKey:`id`,loading:o,dataSource:e,columns:[{title:`功能`,dataIndex:`sceneName`},{title:`场景编码`,dataIndex:`sceneCode`},{title:`固定预扣积分`,dataIndex:`preDeductCredits`},{title:`版本`,dataIndex:`version`},{title:`状态`,dataIndex:`isActive`,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,render:(e,t)=>(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(cI,{}),onClick:()=>u(t),children:`编辑`})}]}),(0,Q.jsx)(vM,{open:i,title:n?`编辑LLM场景预扣`:`新增LLM场景预扣`,onOk:async()=>{try{let e=await c.validateFields();n?await VYe(n.id,e):await BYe(e),X.success(`已保存`),a(!1),l()}catch(e){e?.errorFields||X.error(e?.message||`保存失败`)}},onCancel:()=>a(!1),children:(0,Q.jsxs)(Y,{form:c,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`scene_code`,label:`业务功能`,rules:[{required:!0}],children:(0,Q.jsx)(Wy,{disabled:!!n,options:Z2e})}),(0,Q.jsx)(Y.Item,{name:`pre_deduct_credits`,label:`固定预扣积分`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:.01,precision:2,style:{width:`100%`}})}),(0,Q.jsx)(Y.Item,{name:`is_active`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{})})]})})]})},I5={pre_deducted:{label:`已预扣`,color:`blue`},processing:{label:`处理中`,color:`processing`},succeeded:{label:`业务成功`,color:`success`},final_failed:{label:`最终失败`,color:`error`},refunded:{label:`已退款`,color:`purple`},refund_failed:{label:`退款失败`,color:`red`}},$2e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(1),[o,s]=(0,C.useState)(),[c,l]=(0,C.useState)(``),[u,d]=(0,C.useState)(!1),f=async()=>{d(!0);try{let e=await HYe({page:i,pageSize:20,status:o,userId:c||void 0});t(e.items),r(e.total)}finally{d(!1)}};return(0,C.useEffect)(()=>{f()},[i,o]),(0,Q.jsx)(aO,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RK,{}),`LLM调用与积分审计`]}),extra:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Fj.Search,{allowClear:!0,placeholder:`用户ID`,value:c,onChange:e=>l(e.target.value),onSearch:()=>{a(1),f()}}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`最终状态`,value:o,onChange:e=>{s(e),a(1)},options:Object.entries(I5).map(([e,t])=>({value:e,label:t.label}))})]}),children:(0,Q.jsx)(ZF,{rowKey:`id`,loading:u,dataSource:e,pagination:{current:i,pageSize:20,total:n,onChange:a},expandable:{expandedRowRender:e=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(txe,{items:(e.calls||[]).map(e=>({color:e.status===`succeeded`?`green`:e.status===`started`?`blue`:`red`,children:(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(Z.Text,{strong:!0,children:[b2(e.requestStartedAt),` 第 `,e.callSequence,` 次调用:`,e.status===`succeeded`?`成功`:e.status===`started`?`处理中`:e.status===`timeout`?`超时`:`失败`]}),(0,Q.jsxs)(`div`,{children:[`完成时间:`,e.responseReceivedAt?b2(e.responseReceivedAt):`-`]}),(0,Q.jsxs)(`div`,{children:[`模型:`,e.modelNameSnapshot||`-`,` 耗时:`,e.durationMs==null?`-`:`${e.durationMs}ms`]}),e.tokenUnavailableReason?(0,Q.jsxs)(`div`,{children:[`Token:`,e.tokenUnavailableReason]}):(0,Q.jsxs)(`div`,{children:[`输入 Token:`,e.inputTokens??0,` 输出 Token:`,e.outputTokens??0,` 总 Token:`,e.totalTokens??0]}),e.errorMessage&&(0,Q.jsxs)(Z.Text,{type:`danger`,children:[`错误:`,e.errorMessage]}),e.postprocessStatus===`succeeded`&&(0,Q.jsx)(`div`,{children:`后续处理:成功`}),e.postprocessError&&(0,Q.jsxs)(`div`,{children:[`后续处理:失败,`,e.postprocessError]})]})}))}),(0,Q.jsx)(iA,{bordered:!0,size:`small`,column:4,items:[{key:`scene`,label:`功能`,children:e.sceneNameSnapshot},{key:`credit`,label:`固定预扣`,children:e.preDeductCredits},{key:`calls`,label:`调用`,children:`${e.totalCallCount}(成功 ${e.successfulCallCount} / 失败 ${e.failedCallCount})`},{key:`tokens`,label:`累计 Token`,children:e.totalTokens},{key:`refundA`,label:`有效积分退回`,children:e.refundAvailableCredits},{key:`refundE`,label:`过期积分退回`,children:e.refundExpiredCredits},{key:`error`,label:`最终错误`,children:e.finalErrorMessage||`-`}]})]})},columns:[{title:`功能`,dataIndex:`sceneNameSnapshot`},{title:`用户`,dataIndex:`userId`},{title:`业务对象`,render:(e,t)=>`${t.ownerType}:${t.ownerId}`},{title:`模型`,dataIndex:`modelNameSnapshot`},{title:`预扣`,dataIndex:`preDeductCredits`},{title:`调用/Token`,render:(e,t)=>`${t.totalCallCount} / ${t.totalTokens}`},{title:`状态`,dataIndex:`status`,render:e=>{let t=I5[e]||{label:e,color:`default`};return(0,Q.jsx)(rI,{color:t.color,children:t.label})}},{title:`请求时间`,dataIndex:`requestTime`,render:e=>v2(e)}]})})},e4e={POST:`green`,PUT:`blue`,DELETE:`red`},t4e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(1),c=async e=>{a(!0);try{let n=await Y0({page:e||o});t(n.items||[]),r(n.total||0)}catch{X.error(`加载操作日志失败`)}finally{a(!1)}};return(0,C.useEffect)(()=>{c()},[]),(0,Q.jsx)(`div`,{children:(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RK,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`操作日志`})]}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>c(),children:`刷新`})]}),(0,Q.jsx)(ZF,{columns:[{title:`操作人`,dataIndex:`username`,width:120,render:e=>(0,Q.jsx)(Z.Text,{strong:!0,children:e})},{title:`操作`,dataIndex:`action`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`方法`,dataIndex:`method`,width:80,render:e=>(0,Q.jsx)(rI,{color:e4e[e]||`default`,children:e})},{title:`路径`,dataIndex:`path`,width:220,ellipsis:!0,render:e=>(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:e})},{title:`时间`,dataIndex:`createdAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:v2(e)})}],dataSource:e,rowKey:`id`,loading:i,pagination:{current:o,pageSize:20,total:n,showTotal:e=>`共 ${e} 条记录`,onChange:e=>{s(e),c(e)}},scroll:{x:800}})]})})},n4e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(1),[c,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)(!1),[f,p]=(0,C.useState)(!1),[m,h]=(0,C.useState)(null),[g]=Y.useForm(),[_]=Y.useForm(),v=async e=>{a(!0);try{let n=await LJe(e||o);t(n.items||[]),r(n.total||0)}catch{X.error(`加载应用管理列表失败`)}finally{a(!1)}},y=async()=>{try{let e=await g.validateFields();await RJe({app_id:e.app_id,secret:e.secret,open_type:e.open_type,max_count:e.max_count,auth_url:e.auth_url,company:e.company}),X.success(`创建成功`),l(!1),g.resetFields(),v()}catch(e){X.error(e?.message||`创建失败`)}},b=async e=>{try{h(await X0(e)),d(!0)}catch(e){X.error(e?.message||`获取详情失败`)}},x=async e=>{try{let t=await X0(e);h(t),_.setFieldsValue({appId:t.appId,secret:t.secret,openType:t.openType,maxCount:t.maxCount,authUrl:t.authUrl,company:t.company}),p(!0)}catch(e){X.error(e?.message||`获取详情失败`)}},S=async()=>{if(m)try{let e=await _.validateFields();await zJe(m.id,{app_id:e.app_id,secret:e.secret,open_type:e.open_type,count:e.count,auth_url:e.auth_url,company:e.company}),X.success(`更新成功`),p(!1),_.resetFields(),v()}catch(e){X.error(e?.message||`更新失败`)}},w=e=>{vM.confirm({title:`确认删除`,content:`确定要删除这个应用管理吗?`,okText:`删除`,okType:`danger`,cancelText:`取消`,onOk:async()=>{try{await BJe(e),X.success(`删除成功`),v()}catch(e){X.error(e?.message||`删除失败`)}}})};return(0,C.useEffect)(()=>{v()},[]),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(SJ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`应用管理列表`})]}),(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>v(),children:`刷新`}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>l(!0),children:`创建`})]})]}),(0,Q.jsx)(ZF,{columns:[{title:`ID`,dataIndex:`id`,width:120,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`应用ID`,dataIndex:`appId`,width:120,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`应用密钥`,dataIndex:`secret`,width:120,render:e=>{if(!e)return`-`;let t=e.length>12?`${e.slice(0,6)}...${e.slice(-4)}`:e;return(0,Q.jsx)(xb,{title:e,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12},children:t})})}},{title:`开户方式`,dataIndex:`openType`,width:90,render:e=>(0,Q.jsx)(Z.Text,{children:{1:`千川`,2:`广告`,3:`本地推`,4:`星图`,5:`快手代理商`,6:`巨量星图`,7:`巨量服务单`,8:`腾讯服务单`,9:`腾讯营销K2`,10:`腾讯营销K3`}[e]||e})},{title:`归属公司`,dataIndex:`company`,width:120,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`授权次数`,dataIndex:`maxCount`,width:90,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`状态`,dataIndex:`status`,width:80,render:e=>(0,Q.jsx)(rI,{color:e===1?`green`:`red`,children:e===1?`正常`:`禁用`})},{title:`授权URL`,dataIndex:`authUrl`,width:200,render:e=>e?(0,Q.jsx)(xb,{title:e,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12},ellipsis:!0,children:e.length>30?`${e.slice(0,27)}...`:e})}):`-`},{title:`创建人`,dataIndex:`createBy`,width:120,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`创建时间`,dataIndex:`createdAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:v2(e)})},{title:`更新时间`,dataIndex:`updatedAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:v2(e)})},{title:`操作`,width:120,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{icon:(0,Q.jsx)(Ej,{}),size:`small`,onClick:()=>b(t.id),children:`详情`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(cI,{}),size:`small`,onClick:()=>x(t.id),children:`更新`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(oI,{}),size:`small`,danger:!0,onClick:()=>w(t.id),children:`删除`})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:{current:o,pageSize:20,total:n,showTotal:e=>`共 ${e} 条记录`,onChange:e=>{s(e),v(e)}},scroll:{x:`max-content`}})]}),(0,Q.jsx)(vM,{title:`创建应用管理`,open:c,onOk:y,onCancel:()=>{l(!1),g.resetFields()},okText:`创建`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(Y,{form:g,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(Y.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(Y.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Wy,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Wy.Option,{value:1,children:`千川`}),(0,Q.jsx)(Wy.Option,{value:2,children:`广告`}),(0,Q.jsx)(Wy.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Wy.Option,{value:4,children:`星图`}),(0,Q.jsx)(Wy.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Wy.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Wy.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Wy.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Wy.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Wy.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(Y.Item,{name:`max_count`,label:`最大授权用户数`,initialValue:100,children:(0,Q.jsx)(ok,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(Y.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(Fj,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(Y.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用归属公司名称`})})]})}),(0,Q.jsx)(vM,{title:`应用管理详情`,open:u,onCancel:()=>{d(!1),h(null)},okText:`关闭`,cancelText:`取消`,width:600,children:m&&(0,Q.jsxs)(`div`,{style:{lineHeight:`2`},children:[(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`ID:`}),` `,m.id]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`应用ID:`}),` `,m.appId]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`应用密钥:`}),` `,m.secret]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`开户方式:`}),` `,{1:`千川`,2:`广告`,3:`本地推`,4:`星图`,5:`快手代理商`,6:`巨量星图`,7:`巨量服务单`,8:`腾讯服务单`,9:`腾讯营销K2`,10:`腾讯营销K3`}[m.openType]||m.openType]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`归属公司:`}),` `,m.company||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`授权次数:`}),` `,m.maxCount]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`状态:`}),` `,m.status===1?`正常`:`禁用`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`授权URL:`}),` `,m.authUrl||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建人:`}),` `,m.createBy]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建时间:`}),` `,v2(m.createdAt)]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`更新时间:`}),` `,v2(m.updatedAt)]})]})}),(0,Q.jsx)(vM,{title:`更新应用管理`,open:f,onOk:S,onCancel:()=>{p(!1),_.resetFields(),h(null)},okText:`更新`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(Y,{form:_,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`appId`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(Y.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(Y.Item,{name:`openType`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Wy,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Wy.Option,{value:1,children:`千川`}),(0,Q.jsx)(Wy.Option,{value:2,children:`广告`}),(0,Q.jsx)(Wy.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Wy.Option,{value:4,children:`星图`}),(0,Q.jsx)(Wy.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Wy.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Wy.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Wy.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Wy.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Wy.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(Y.Item,{name:`maxCount`,label:`最大授权用户数`,children:(0,Q.jsx)(ok,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(Y.Item,{name:`authUrl`,label:`应用授权链接`,children:(0,Q.jsx)(Fj,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(Y.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用归属公司名称`})})]})})]})},L5=new Set([`pending`,`optimizing`,`generating`]),r4e=new Set([`queued`,`preparing`,`creating_provider_task`,`provider_result_staged`,`waiting_remote`,`polling`,`result_ready`,`download_queued`,`downloading`,`retry_waiting`,`recovery_inconsistent`,`upscale_queued`,`upscale_processing`,`upscale_polling`,`upscale_downloading`,`upscale_finalizing`,`upscale_retry_waiting`]),R5=new Set([`completed`,`done`]),z5=new Set([`failed`,`timeout`,`download_failed`,`upscale_failed`]),i4e=new Set([...R5,...z5,`deleted`]),a4e={pending:`待处理`,optimizing:`提词处理中`,prompt_optimized:`待生成`,generating:`生成中`,queued:`已入队`,preparing:`准备中`,creating_provider_task:`创建供应商任务`,provider_result_staged:`供应商结果已暂存`,waiting_remote:`等待供应商结果`,polling:`轮询供应商结果`,result_ready:`远程结果已就绪`,download_queued:`下载已入队`,downloading:`下载中`,retry_waiting:`下载等待重试`,recovery_inconsistent:`恢复证据异常`,upscale_queued:`超分已入队`,upscale_processing:`本地超分处理中`,upscale_polling:`轮询远程超分`,upscale_downloading:`下载超分结果`,upscale_finalizing:`超分结果最终化`,upscale_retry_waiting:`超分等待重试`,completed:`已完成`,done:`已完成`,timeout:`任务超时`,download_failed:`下载失败`,upscale_failed:`超分失败`,failed:`失败`,deleted:`已删除`},o4e={pending:`default`,optimizing:`processing`,prompt_optimized:`blue`,generating:`warning`,queued:`processing`,preparing:`processing`,creating_provider_task:`processing`,provider_result_staged:`processing`,waiting_remote:`processing`,polling:`processing`,result_ready:`processing`,download_queued:`processing`,downloading:`processing`,retry_waiting:`orange`,recovery_inconsistent:`orange`,upscale_queued:`purple`,upscale_processing:`purple`,upscale_polling:`purple`,upscale_downloading:`purple`,upscale_finalizing:`purple`,upscale_retry_waiting:`orange`,completed:`success`,done:`success`,failed:`error`,timeout:`error`,download_failed:`error`,upscale_failed:`error`,deleted:`default`},B5=e=>String(e||``).trim().toLowerCase(),V5=(e,t)=>e.find(e=>t.has(e))||``,H5=e=>{let t=B5(e);return a4e[t]||t||`未知状态`},U5=e=>o4e[B5(e)]||`default`,W5=e=>{let t=B5(e.status),n=B5(e.displayStatus),r=B5(e.pipelineStage),i=[r,n,t].filter(Boolean),a=V5(i,z5),o=V5(i,R5),s=V5(i,new Set([`deleted`])),c=a||s||o||r||n||t||`pending`,l=z5.has(c),u=R5.has(c),d=typeof e.shouldPoll==`boolean`?e.shouldPoll:!l&&!u&&c!==`deleted`&&(r4e.has(r)||L5.has(t)||L5.has(n));return{status:t,displayStatus:n,pipelineStage:r,effectiveKey:c,label:H5(c),color:U5(c),isActive:d,isSuccess:u,isFailure:l,isTerminal:i4e.has(c)}},G5=`https://ceshi.apiforeign.minzhongzc.com`.replace(/\/api\/?$/i,``).replace(/\/$/,``),K5={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},q5={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(VW,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(k1,{})}},s4e=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),J5=e=>!!e&&/^blob:/i.test(e.trim()),Y5=e=>{if(!e)return``;let t=String(e).trim();return t?s4e(t)?t:G5?`${G5}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},X5=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,Z5=e=>e?v2(e):`-`,c4e=e=>e==null||e===``,Q5=e=>{if(!e||J5(e))return!1;try{let t=new URL(Y5(e),window.location.origin),n=t.searchParams.get(`exp`)||t.searchParams.get(`expires`)||t.searchParams.get(`expire`)||t.searchParams.get(`expires_at`)||t.searchParams.get(`x-expires`);if(!n)return!1;let r=Number(n);if(!Number.isFinite(r))return!1;let i=r>1e10?r:r*1e3;return Date.now()>=i}catch{return!1}},$5=e=>e?J5(e)||Q5(e)?`invalid`:`checking`:`empty`,e7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},l4e=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=e7(e)?.toLowerCase()||``;return t.includes(`video`)||/\.(mp4|mov|webm|m4v)(\?|$)/i.test(n)?`video`:t.includes(`image`)||/\.(png|jpe?g|webp|gif|bmp|svg)(\?|$)/i.test(n)?`image`:t||`unknown`},t7=(e,t)=>`${t}-${e7(e)||`empty`}`,n7=(e,t=`资源`)=>J5(e)?`本地临时素材已失效`:Q5(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,r7=({text:e,minHeight:t=240,compact:n=!1,action:r})=>(0,Q.jsxs)(`div`,{style:{width:`100%`,minHeight:n?void 0:t,height:n?`100%`:void 0,borderRadius:n?10:12,background:`#f8f9fc`,border:`1px dashed #cbd5e1`,color:`#64748b`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:n?4:10,textAlign:`center`},children:[(0,Q.jsx)(Z.Text,{style:{color:`#64748b`,fontSize:n?11:13},children:e}),r]}),i7=({label:e,value:t})=>(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:120},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:e}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:c4e(t)?`-`:t})]}),a7=()=>(0,aS.default)().startOf(`day`),o7=()=>(0,aS.default)().endOf(`day`),u4e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(1),[c]=(0,C.useState)(20),[l,u]=(0,C.useState)(``),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(``),[h,g]=(0,C.useState)(``),[_,v]=(0,C.useState)([]),[y,b]=(0,C.useState)(0),[x,S]=(0,C.useState)(null),[w,T]=(0,C.useState)(K5),[E,D]=(0,C.useState)(!1),O=(0,C.useRef)(null),[k,A]=(0,C.useState)([a7(),o7()]),[j,M]=(0,C.useState)([a7(),o7()]),N=(0,C.useCallback)(async()=>{a(!0);try{let e=await GJe({userId:d.trim()||void 0,status:l||void 0,engineId:p||void 0,includeMediaReferences:h===``?void 0:h===`true`,startDate:j?.[0]?.format?.(`YYYY-MM-DD`),endDate:j?.[1]?.format?.(`YYYY-MM-DD`),page:o,pageSize:c});t((e.items||[]).map(e=>({id:e.id,userId:e.userId,username:e.username,projectId:e.projectId,projectName:e.projectName,industry:e.industry,originalPrompt:e.originalPrompt,optimizedPrompt:e.optimizedPrompt,duration:e.duration,aspectRatio:e.aspectRatio,resolution:e.resolution,status:e.status,videoUrl:e.videoUrl,videoCoverUrl:e.videoCoverUrl,references:e.references,creditsCost:e.creditsCost||0,textCreditsCost:e.textCreditsCost||0,textTokensUsed:e.textTokensUsed||0,videoTokensUsed:e.videoTokensUsed||0,errorMessage:e.errorMessage,createdAt:e.createdAt,generatedAt:e.generatedAt,genType:e.genType,imageSize:e.imageSize,imageUrl:e.imageUrl,imageTokensUsed:e.imageTokensUsed||0,imageProportion:e.imageProportion,imagePx:e.imagePx,engineId:e.engineId,engineName:e.engineName,engineSnapshot:e.engineSnapshot,includeMediaReferences:e.includeMediaReferences}))),r(e.total||0)}catch{X.error(`加载记录失败`)}finally{a(!1)}},[l,d,p,h,o,c,j]);(0,C.useEffect)(()=>{N()},[N,y]),(0,C.useEffect)(()=>{Promise.all([V0({includeDeleted:!0}),z0({includeDeleted:!0})]).then(([e,t])=>{let n=[...e||[],...t||[]],r=new Set;v(n.reduce((e,t)=>{let n=String(t?.id||``);if(!n||r.has(n))return e;r.add(n);let i=t?.deletedAt?`(已删除)`:``;return e.push({value:n,label:t?.name?`${t.name}${i} (${n})`:`${n}${i}`}),e},[]))}).catch(()=>v([]))},[]),(0,C.useEffect)(()=>{if(!x){T(K5);return}let e=(x.references||[]).reduce((e,t,n)=>{let r=e7(t);return e[t7(t,n)]=$5(r),e},{});O.current&&(O.current.pause(),O.current.currentTime=0),D(!1),T({image:$5(x.imageUrl),video:$5(x.videoUrl),videoCover:$5(x.videoCoverUrl),references:e})},[x]);let P=()=>{s(1),M(k),b(e=>e+1)},F=()=>{u(``),f(``),m(``),g(``);let e=[a7(),o7()];A(e),M(e),s(1),b(e=>e+1)},I=(0,C.useCallback)(e=>{S(e)},[]),L=()=>{O.current&&O.current.pause(),D(!1),S(null)},R=e=>{T(t=>({...t,...e}))},z=(e,t)=>{T(n=>({...n,references:{...n.references,[e]:t}}))},B=(e,t=`素材`)=>{if(!e){X.warning(`${t}链接为空,暂无法查看`);return}if(J5(e)){X.warning(`本地临时素材已失效,暂无法查看`);return}if(Q5(e)){X.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(Y5(e),`_blank`,`noopener,noreferrer`)},V=()=>{if(x?.videoUrl){if(Q5(x.videoUrl)){R({video:`invalid`}),X.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}D(!0),window.setTimeout(()=>{O.current?.play().catch(()=>{D(!1),R({video:`invalid`}),X.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},H=(0,C.useMemo)(()=>[{title:`用户`,key:`user`,width:120,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:13},children:t.username||`未知用户`}),(0,Q.jsx)(`div`,{style:{fontSize:11,color:`#94a3b8`},children:X5(t.userId)})]})},{title:`项目`,dataIndex:`projectName`,width:120,ellipsis:!0,render:e=>(0,Q.jsx)(Z.Text,{style:{fontSize:13},children:e||`-`})},{title:`行业`,dataIndex:`industry`,width:100,ellipsis:!0,render:e=>(0,Q.jsx)(rI,{color:`cyan`,children:e||`-`})},{title:`类型`,dataIndex:`genType`,width:90,ellipsis:!0,render:e=>{let t=q5[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(rI,{color:t.color,icon:t.icon,children:t.text})}},{title:`提示词`,key:`prompt`,ellipsis:!0,render:(e,t)=>(0,Q.jsx)(xb,{title:t.originalPrompt,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#475569`},ellipsis:!0,children:t.originalPrompt||`-`})})},{title:`参数`,key:`params`,width:160,render:(e,t)=>t.genType===`video`?(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(rI,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(rI,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(rI,{children:t.resolution}):null,!t.duration&&!t.aspectRatio&&!t.resolution?(0,Q.jsx)(rI,{color:`default`,children:`待配置`}):null,t.engineName||t.engineId?(0,Q.jsx)(rI,{color:`purple`,children:t.engineName||X5(t.engineId||``)}):null,(0,Q.jsxs)(rI,{color:t.includeMediaReferences?`green`:`default`,children:[t.includeMediaReferences?`携带附件`:`不携带附件`,t.references?.length?`(${t.references.length})`:``]})]}):(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(rI,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(rI,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(rI,{children:t.imagePx}):null,!t.imageSize&&!t.imageProportion&&!t.imagePx?(0,Q.jsx)(rI,{color:`default`,children:`待配置`}):null,t.engineName||t.engineId?(0,Q.jsx)(rI,{color:`purple`,children:t.engineName||X5(t.engineId||``)}):null,(0,Q.jsxs)(rI,{color:t.includeMediaReferences?`green`:`default`,children:[t.includeMediaReferences?`携带附件`:`不携带附件`,t.references?.length?`(${t.references.length})`:``]})]})},{title:`积分`,key:`credits`,width:120,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12},children:[t.textCreditsCost>0?(0,Q.jsxs)(`div`,{style:{color:`#f59e0b`},children:[`文字: `,t.textCreditsCost]}):null,t.creditsCost>0?(0,Q.jsxs)(`div`,{style:{color:`#6366f1`},children:[t.genType===`video`?`视频`:`图片`,`: `,t.creditsCost]}):null,t.textCreditsCost===0&&t.creditsCost===0?(0,Q.jsx)(Z.Text,{style:{color:`#94a3b8`},children:`0`}):null]})},{title:`状态`,dataIndex:`status`,width:90,render:e=>{let t=W5({status:e}),n=t.isActive?(0,Q.jsx)(pm,{spin:!0}):t.isSuccess?(0,Q.jsx)(xV,{}):t.isFailure?(0,Q.jsx)(LV,{}):(0,Q.jsx)(Xk,{});return(0,Q.jsx)(rI,{color:t.color,icon:n,children:t.label})}},{title:`阶段`,dataIndex:`pipelineStage`,width:150,render:e=>(0,Q.jsx)(rI,{color:U5(e),children:H5(e)})},{title:`时间`,key:`time`,width:150,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:Z5(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,Z5(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:90,fixed:`right`,render:(e,t)=>(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>I(t),children:`详情`})}],[I]),U=x?q5[x.genType||``]||{text:x.genType||`-`,color:`default`,icon:null}:null,W=x?W5(x):null,ee=()=>{if(!x||x.genType!==`image`||!W5(x).isSuccess)return null;if(!x.imageUrl)return(0,Q.jsx)(r7,{text:`此图片任务暂无结果图片`,minHeight:260});if(w.image===`invalid`)return(0,Q.jsx)(r7,{text:n7(x.imageUrl,`图片`),minHeight:260});let e=Y5(x.imageUrl);return(0,Q.jsxs)(`div`,{title:`点击新页面查看图片`,onClick:()=>B(x.imageUrl,`生成图片`),style:{position:`relative`,width:`100%`,minHeight:260,borderRadius:12,background:`#f8f9fc`,border:`1px solid #e2e8f0`,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`,cursor:`pointer`},children:[(0,Q.jsx)(`img`,{src:e,alt:`生成图片`,onLoad:()=>R({image:`valid`}),onError:()=>R({image:`invalid`}),style:{display:w.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${x.id}-${e}`),w.image===`checking`?(0,Q.jsx)(r7,{text:`图片加载检测中...`,minHeight:260}):null]})},te=()=>{if(!x||E||w.video===`invalid`)return null;let e=x.videoUrl?(0,Q.jsx)(rS,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(RY,{}),onClick:V,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!x.videoCoverUrl)return(0,Q.jsx)(`div`,{style:{position:`absolute`,inset:0,borderRadius:12,overflow:`hidden`,background:`#f8f9fc`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,Q.jsx)(r7,{text:`此视频无封面`,minHeight:340,action:e})});if(w.videoCover===`invalid`)return(0,Q.jsx)(r7,{text:n7(x.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=Y5(x.videoCoverUrl);return(0,Q.jsxs)(`div`,{style:{position:`absolute`,inset:0,borderRadius:12,overflow:`hidden`,background:`#f8f9fc`,border:`1px solid #e2e8f0`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:[(0,Q.jsx)(`img`,{src:t,alt:`视频封面`,onLoad:()=>R({videoCover:`valid`}),onError:()=>R({videoCover:`invalid`}),style:{display:w.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${x.id}-cover-${t}`),w.videoCover===`checking`?(0,Q.jsx)(r7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,w.videoCover===`valid`?(0,Q.jsx)(`div`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,background:`rgba(15,23,42,0.18)`},children:e}):null]})},ne=()=>{if(!x||x.genType!==`video`||!W5(x).isSuccess)return null;if(!x.videoUrl)return(0,Q.jsx)(r7,{text:`此视频任务暂无结果视频`,minHeight:340});if(w.video===`invalid`)return(0,Q.jsx)(r7,{text:n7(x.videoUrl,`视频`),minHeight:340});let e=Y5(x.videoUrl);return(0,Q.jsxs)(`div`,{style:{position:`relative`,width:`100%`,height:340,borderRadius:12,background:`#000`,overflow:`hidden`,border:`1px solid #e2e8f0`},children:[(0,Q.jsx)(`video`,{ref:O,src:e,preload:`metadata`,controls:E,onLoadedMetadata:()=>R({video:`valid`}),onCanPlay:()=>R({video:`valid`}),onPlaying:()=>{D(!0),R({video:`valid`})},onPause:()=>D(!1),onEnded:()=>D(!1),onError:()=>{D(!1),R({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!E,pointerEvents:E?`auto`:`none`}},`${x.id}-${e}`),te()]})},re=(e,t)=>{let n=e7(e),r=l4e(e),i=t7(e,t),a=w.references[i]||$5(n),o=r===`image`,s=r===`video`,c=typeof e.name==`string`&&e.name?e.name:`参考素材 ${t+1}`;if(!n)return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsx)(`div`,{style:{width:94,height:94},children:(0,Q.jsx)(r7,{text:`无链接`,compact:!0})}),(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})]},i);if(a===`invalid`)return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsx)(`div`,{style:{width:94,height:94},children:(0,Q.jsx)(r7,{text:J5(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(xb,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=Y5(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>B(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&B(n,s?`视频素材`:o?`图片素材`:`素材`)},style:{width:94,height:94,borderRadius:10,overflow:`hidden`,border:`1px solid #e2e8f0`,background:`#f8f9fc`,position:`relative`,display:`flex`,alignItems:`center`,justifyContent:`center`,cursor:`pointer`},children:[o?(0,Q.jsx)(`img`,{src:l,alt:c,onLoad:()=>z(i,`valid`),onError:()=>z(i,`invalid`),style:{display:a===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`cover`}}):null,s?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`video`,{src:l,preload:`metadata`,onLoadedMetadata:()=>z(i,`valid`),onError:()=>z(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(RY,{style:{fontSize:18}}),(0,Q.jsx)(`div`,{children:`视频素材`}),(0,Q.jsx)(`div`,{style:{fontSize:10,color:`#94a3b8`,marginTop:2},children:`点击查看`})]})]}):null,!o&&!s?(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[`文件素材`,(0,Q.jsx)(`div`,{style:{fontSize:10,color:`#94a3b8`,marginTop:2},children:`点击查看`})]}):null,a===`checking`&&o?(0,Q.jsx)(`div`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,background:`#f8f9fc`},children:(0,Q.jsx)(pm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(xb,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16,flexWrap:`wrap`,gap:12},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(k1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`生成记录管理`}),(0,Q.jsxs)(rI,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Wy,{placeholder:`状态筛选`,allowClear:!0,style:{width:120},value:l||void 0,onChange:e=>{u(e||``),s(1)},options:[{value:`optimizing`,label:`优化中`},{value:`prompt_optimized`,label:`待生成`},{value:`generating`,label:`生成中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`}]}),(0,Q.jsx)(Wy,{placeholder:`引擎筛选`,allowClear:!0,showSearch:!0,optionFilterProp:`label`,style:{width:220},value:p||void 0,onChange:e=>{m(e||``),s(1)},options:_}),(0,Q.jsx)(Wy,{placeholder:`附件状态`,allowClear:!0,style:{width:130},value:h||void 0,onChange:e=>{g(e||``),s(1)},options:[{value:`true`,label:`携带附件`},{value:`false`,label:`不携带附件`}]}),(0,Q.jsx)(Fj,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(Vy,{style:{color:`#94a3b8`}}),style:{width:200},value:d,onChange:e=>f(e.target.value),onPressEnter:P,allowClear:!0}),(0,Q.jsx)(eA.RangePicker,{value:k,onChange:e=>{e&&e[0]&&e[1]?A([e[0].startOf(`day`),e[1].endOf(`day`)]):A(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(rS,{type:`primary`,onClick:P,style:{borderRadius:8},children:`搜索`}),(0,Q.jsx)(rS,{onClick:F,style:{borderRadius:8},children:`重置`})]})]}),(0,Q.jsx)(ZF,{columns:H,dataSource:e,rowKey:`id`,loading:i,scroll:{x:1120},pagination:{current:o,pageSize:c,total:n,onChange:s,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[x?.genType===`video`?(0,Q.jsx)(k1,{}):(0,Q.jsx)(VW,{}),(0,Q.jsx)(`span`,{children:`生成记录详情`})]}),open:!!x,onCancel:L,footer:null,width:900,destroyOnClose:!0,children:x?(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,flexWrap:`wrap`},children:[(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:150,padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`用户`}),(0,Q.jsx)(Z.Text,{strong:!0,children:x.username||`-`})]}),(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:150,padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`项目`}),(0,Q.jsx)(Z.Text,{strong:!0,children:x.projectName||`-`})]}),(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:150,padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`类型 / 状态`}),(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[U?(0,Q.jsx)(rI,{color:U.color,icon:U.icon,children:U.text}):null,W?(0,Q.jsx)(rI,{color:W.color,icon:W.isActive?(0,Q.jsx)(pm,{spin:!0}):W.isSuccess?(0,Q.jsx)(xV,{}):W.isFailure?(0,Q.jsx)(LV,{}):(0,Q.jsx)(Xk,{}),children:W.label}):null,x.pipelineStage?(0,Q.jsx)(rI,{color:U5(x.pipelineStage),children:H5(x.pipelineStage)}):null,x.videoUpscaleEnabled?(0,Q.jsx)(rI,{color:`purple`,children:`已启用超分`}):null]})]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:`原始提示词`}),(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,border:`1px solid #f0f0f5`},children:(0,Q.jsx)(Z.Text,{style:{fontSize:13,color:`#475569`,lineHeight:1.7},children:x.originalPrompt||`-`})})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:`优化后提示词`}),(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`rgba(99,102,241,0.02)`,border:`1px solid rgba(99,102,241,0.1)`},children:(0,Q.jsx)(Z.Text,{style:{fontSize:13,color:`#1a1a2e`,lineHeight:1.7},children:x.optimizedPrompt||`-`})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(i7,{label:`文字积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#f59e0b`},children:x.textCreditsCost||0}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,x.textTokensUsed||0,` tokens)`]})]})}),(0,Q.jsx)(i7,{label:`${x.genType===`image`?`图片`:`视频`}积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:x.creditsCost||0}),x.genType===`video`&&x.videoTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,x.videoTokensUsed,` tokens)`]}):null,x.genType===`image`&&x.imageTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,x.imageTokensUsed,` tokens)`]}):null]})}),(0,Q.jsx)(i7,{label:`总积分`,value:(x.textCreditsCost||0)+(x.creditsCost||0)})]}),x.genType===`video`?x.duration||x.aspectRatio||x.resolution?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(i7,{label:`时长`,value:x.duration?`${x.duration}秒`:`-`}),(0,Q.jsx)(i7,{label:`比例`,value:x.aspectRatio||`-`}),(0,Q.jsx)(i7,{label:`分辨率`,value:x.resolution||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(rI,{color:`default`,children:`视频参数待用户配置`})}):null,x.genType===`image`?x.imageSize||x.imageProportion||x.imagePx?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(i7,{label:`尺寸`,value:x.imagePx||`-`}),(0,Q.jsx)(i7,{label:`比例`,value:x.imageProportion||`-`}),(0,Q.jsx)(i7,{label:`分辨率`,value:x.imageSize||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(rI,{color:`default`,children:`图片参数待用户配置`})}):null,!x?.references||x.references.length===0?null:(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:`参考内容`}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:10,flexWrap:`wrap`},children:x.references.map((e,t)=>re(e,t))})]}),W5(x).isSuccess?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:x.genType===`video`?`生成视频`:`生成图片`}),x.genType===`video`?ne():ee()]}):null,W5(x).isFailure&&x.errorMessage?(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`rgba(239,68,68,0.04)`,border:`1px solid rgba(239,68,68,0.15)`},children:(0,Q.jsxs)(Z.Text,{style:{fontSize:12,color:`#ef4444`},children:[`错误信息: `,x.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,Z5(x.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,Z5(x.generatedAt)]})]})]}):(0,Q.jsx)(Dy,{description:`暂无详情`})})]})},d4e=(e,t)=>e<=1?6:e===2||e===4?3:e===3?t<2?3:6:t<3?2:3,f4e=({task:e,resolveUrl:t,onPreview:n})=>{let r=Math.max(1,Math.min(5,Number(e.generationCount||e.childItems?.length||1))),i=[...e.childItems||[]].sort((e,t)=>Number(e.generationIndex||0)-Number(t.generationIndex||0)),a=i.length?i:r>1?Array.from({length:r},(t,n)=>({...e,id:`${e.id}-${n+1}`,generationIndex:n+1,childItems:[]})):[e];return(0,Q.jsx)(`div`,{style:{width:`100%`,height:430,display:`grid`,gridTemplateColumns:`repeat(6, minmax(0,1fr))`,gridAutoRows:`minmax(0,1fr)`,gap:a.length>1?8:0},children:a.map((e,r)=>{let i=W5(e),o=e.genType===`video`,s=t(o?e.videoUrl:e.imageUrl),c=t(e.videoCoverUrl),l=i.isActive;return(0,Q.jsxs)(`div`,{style:{gridColumn:`span ${d4e(a.length,r)}`,minWidth:0,minHeight:0,border:`1px solid #edf0f5`,borderRadius:10,overflow:`hidden`,position:`relative`,background:`#f8f9fc`},children:[s&&i.isSuccess?(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>n(s,o?`video`:`image`,`生成结果 ${e.generationIndex||r+1}`),style:{width:`100%`,height:`100%`,padding:0,border:0,background:`transparent`,cursor:`pointer`,position:`relative`},children:[o?c?(0,Q.jsx)(`img`,{src:c,alt:`视频封面`,style:{width:`100%`,height:`100%`,objectFit:`contain`}}):(0,Q.jsx)(`video`,{src:s,muted:!0,preload:`metadata`,style:{width:`100%`,height:`100%`,objectFit:`contain`}}):(0,Q.jsx)(`img`,{src:s,alt:`生成图片`,style:{width:`100%`,height:`100%`,objectFit:`contain`}}),o?(0,Q.jsx)(IY,{style:{position:`absolute`,left:`50%`,top:`50%`,transform:`translate(-50%,-50%)`,color:`#fff`,fontSize:38,filter:`drop-shadow(0 3px 8px rgba(0,0,0,.35))`}}):null]}):(0,Q.jsxs)(`div`,{style:{width:`100%`,height:`100%`,display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,gap:9,padding:12,textAlign:`center`},children:[l?(0,Q.jsx)(oM,{size:`small`}):(0,Q.jsx)(Dy,{image:Dy.PRESENTED_IMAGE_SIMPLE,description:null}),(0,Q.jsx)(rI,{color:i.color,children:i.label}),e.errorMessage&&!l?(0,Q.jsx)(Z.Text,{type:`danger`,style:{fontSize:11},children:e.errorMessage}):null]}),a.length>1?(0,Q.jsxs)(`span`,{style:{position:`absolute`,top:6,left:6,padding:`1px 7px`,borderRadius:10,color:`#fff`,background:`rgba(17,24,39,.58)`,fontSize:11},children:[`#`,e.generationIndex||r+1]}):null]},e.id)})})},{RangePicker:p4e}=eA,s7=`https://ceshi.apiforeign.minzhongzc.com`.replace(/\/api\/?$/i,``).replace(/\/$/,``),c7=20,m4e=e=>e&&(e.name||e.modelName||e.id)||null,l7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},u7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(VW,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(k1,{})}},h4e=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),d7=e=>!!e&&/^blob:/i.test(e.trim()),f7=e=>{if(!e)return``;let t=String(e).trim();return t?h4e(t)?t:s7?`${s7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},g4e=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,p7=e=>e?v2(e):`-`,_4e=e=>e==null||e===``,m7=e=>{if(!e||d7(e))return!1;try{let t=new URL(f7(e),window.location.origin),n=t.searchParams.get(`exp`)||t.searchParams.get(`expires`)||t.searchParams.get(`expire`)||t.searchParams.get(`expires_at`)||t.searchParams.get(`x-expires`);if(!n)return!1;let r=Number(n);if(!Number.isFinite(r))return!1;let i=r>1e10?r:r*1e3;return Date.now()>=i}catch{return!1}},h7=e=>e?d7(e)||m7(e)?`invalid`:`checking`:`empty`,g7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},_7=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=g7(e)?.toLowerCase()||``;return t.includes(`video`)||/\.(mp4|mov|webm|m4v)(\?|$)/i.test(n)?`video`:t.includes(`image`)||/\.(png|jpe?g|webp|gif|bmp|svg)(\?|$)/i.test(n)?`image`:t||`unknown`},v7=(e,t)=>`${t}-${g7(e)||`empty`}`,y7=({text:e,minHeight:t=240,compact:n=!1,action:r})=>(0,Q.jsxs)(`div`,{style:{width:`100%`,minHeight:n?void 0:t,height:n?`100%`:void 0,borderRadius:n?10:12,background:`#f8f9fc`,border:`1px dashed #cbd5e1`,color:`#64748b`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:n?4:10,textAlign:`center`},children:[(0,Q.jsx)(Z.Text,{style:{color:`#64748b`,fontSize:n?11:13},children:e}),r]}),b7=({label:e,value:t})=>(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:120},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:e}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:_4e(t)?`-`:t})]}),x7=()=>(0,aS.default)().startOf(`day`),S7=()=>(0,aS.default)().endOf(`day`),v4e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(1),[c,l]=(0,C.useState)(``),[u,d]=(0,C.useState)(``),[f,p]=(0,C.useState)(``),[m,h]=(0,C.useState)(``),[g,_]=(0,C.useState)(``),[v,y]=(0,C.useState)(``),[b,x]=(0,C.useState)(``),[S,w]=(0,C.useState)(``),[T,E]=(0,C.useState)([x7(),S7()]),[D,O]=(0,C.useState)([x7(),S7()]),[k,A]=(0,C.useState)(0),[j,M]=(0,C.useState)(!1),[N,P]=(0,C.useState)([]),[F,I]=(0,C.useState)([]),[L,R]=(0,C.useState)(null),[z,B]=(0,C.useState)(l7),[V,H]=(0,C.useState)(!1),U=(0,C.useRef)(null),[W,ee]=(0,C.useState)(null),te=(0,C.useCallback)(async()=>{a(!0);try{let e=await KJe({genType:u||void 0,status:c||void 0,userId:v||void 0,userName:b||void 0,engineId:S||void 0,createdStart:D?.[0]?.format?.(`YYYY-MM-DDTHH:mm:ss`),createdEnd:D?.[1]?.format?.(`YYYY-MM-DDTHH:mm:ss`),page:o,pageSize:c7});t(e.items||[]),r(e.total||0)}catch(e){X.error(e?.message||`加载创作记录失败`)}finally{a(!1)}},[u,c,o,v,b,S,D]);(0,C.useEffect)(()=>{te()},[te,k]),(0,C.useEffect)(()=>{let e=!1;return(async()=>{M(!0);try{let[t,n]=await Promise.all([V0({includeDeleted:!0}),z0({includeDeleted:!0})]);e||(P(t||[]),I(n||[]))}catch(t){e||X.error(t?.message||`加载模型引擎列表失败`)}finally{e||M(!1)}})(),()=>{e=!0}},[]);let ne=(0,C.useMemo)(()=>{let e=(e,t)=>{let n=!!e.deletedAt,r=t===`image`?`图片`:`视频`,i=`[${r}]${n?`[已删除]`:``} ${[e.name,e.modelName,e.provider,e.id].filter(Boolean).join(` / `)}`;return{value:e.id,label:i,searchText:[e.id,e.name,e.modelName,e.provider,r,n?`已删除`:``].filter(Boolean).join(` `).toLowerCase()}},t=[...N.map(t=>e(t,`image`)),...F.map(t=>e(t,`video`))];return Array.from(new Map(t.map(e=>[e.value,e])).values())},[N,F]);(0,C.useEffect)(()=>{if(!L){B(l7);return}let e=(L.mediaReferences||[]).reduce((e,t,n)=>{let r=g7(t);return e[v7(t,n)]=h7(r),e},{});U.current&&(U.current.pause(),U.current.currentTime=0),H(!1),B({image:h7(L.imageUrl),video:h7(L.videoUrl),videoCover:h7(L.videoCoverUrl),references:e})},[L]);let re=()=>{s(1),y(m.trim()),x(g.trim()),w(f),O(T),A(e=>e+1)},ie=()=>{l(``),d(``),p(``),h(``),_(``),y(``),x(``),w(``);let e=[x7(),S7()];E(e),O(e),s(1),A(e=>e+1)},ae=(0,C.useCallback)(e=>{R(e)},[]),G=()=>{U.current&&U.current.pause(),H(!1),R(null)},oe=(e,t)=>{B(n=>({...n,references:{...n.references,[e]:t}}))},se=(e,t=`素材`)=>{if(!e){X.warning(`${t}链接为空,暂无法查看`);return}if(d7(e)){X.warning(`本地临时素材已失效,暂无法查看`);return}if(m7(e)){X.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(f7(e),`_blank`,`noopener,noreferrer`)},ce=(e,t,n)=>{if(d7(e)){X.warning(`本地临时素材已失效,暂无法查看`);return}if(m7(e)){X.warning(`链接已超时,请刷新列表或重新搜索后再查看`);return}ee({url:f7(e),type:t,title:n})},le=()=>ee(null),ue=(0,C.useMemo)(()=>[{title:`用户`,key:`user`,width:150,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:13},children:t.userName||`未知用户`}),(0,Q.jsx)(`div`,{style:{fontSize:11,color:`#94a3b8`},children:g4e(t.userId)})]})},{title:`类型`,dataIndex:`genType`,width:90,render:e=>{let t=u7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(rI,{color:t.color,icon:t.icon,children:t.text})}},{title:`生成数量`,key:`generationCount`,width:150,render:(e,t)=>{let n=Math.max(1,Number(t.generationCount||1));if(n===1)return(0,Q.jsx)(rI,{children:`1份`});let r=t.childItems||[],i=r.filter(e=>W5(e).isSuccess).length,a=r.filter(e=>W5(e).isFailure).length,o=r.filter(e=>(e.displayStatus||e.status)===`deleted`).length;return(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[(0,Q.jsxs)(rI,{color:`purple`,children:[n,`份`]}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#64748b`},children:[i,`完成`,a?` / ${a}失败`:``,o?` / ${o}删除`:``]})]})}},{title:`引擎`,key:`engine`,width:160,render:(e,t)=>{let n=m4e(t.engineSnapshot);return(0,Q.jsx)(xb,{title:t.engineId||`未知引擎`,placement:`topLeft`,children:(0,Q.jsx)(rI,{icon:(0,Q.jsx)(iZ,{}),color:`cyan`,children:n||t.engineId||`-`})})}},{title:`附件`,key:`references`,width:100,render:(e,t)=>{let n=t.mediaReferences||[];return n.length===0?(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`},children:`无`}):(0,Q.jsx)(bA,{size:2,wrap:!0,children:n.map((e,t)=>{let n=g7(e),r=_7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)(xb,{title:i,children:(0,Q.jsx)(rS,{size:`small`,type:`text`,icon:r===`video`?(0,Q.jsx)(k1,{style:{color:`#6366f1`}}):r===`audio`?(0,Q.jsx)(SR,{style:{color:`#f59e0b`}}):(0,Q.jsx)(VW,{style:{color:`#8b5cf6`}}),style:{width:28,height:28,padding:0},onClick:e=>{e.stopPropagation(),ce(n,r===`video`?`video`:`image`,i)}})},t):null})})}},{title:`结果`,key:`result`,width:90,render:(e,t)=>W5(t).isSuccess?t.genType===`video`&&t.videoUrl?(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(RY,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),ce(t.videoUrl,`video`,`生成视频`)},children:`看视频`}):t.genType===`image`&&t.imageUrl?(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(VW,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),ce(t.imageUrl,`image`,`生成图片`)},children:`看图片`}):(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`},children:`无`}):(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`},children:`-`})},{title:`提示词`,key:`prompt`,ellipsis:!0,render:(e,t)=>(0,Q.jsx)(xb,{title:t.originalPrompt,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#475569`},ellipsis:!0,children:t.originalPrompt||`-`})})},{title:`参数`,key:`params`,width:180,render:(e,t)=>t.genType===`video`?t.duration||t.aspectRatio||t.resolution?(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(rI,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(rI,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(rI,{children:t.resolution}):null]}):(0,Q.jsx)(rI,{color:`default`,children:`无参数`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(rI,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(rI,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(rI,{children:t.imagePx}):null]}):(0,Q.jsx)(rI,{color:`default`,children:`无参数`})},{title:`积分`,key:`credits`,width:130,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12},children:[(0,Q.jsxs)(`div`,{style:{color:`#6366f1`},children:[`总: `,t.creditsCost||0]}),t.textCreditsCost>0?(0,Q.jsxs)(`div`,{style:{color:`#f59e0b`},children:[`文字: `,t.textCreditsCost]}):null]})},{title:`状态`,dataIndex:`status`,width:100,render:e=>{let t=W5({status:e}),n=t.isActive?(0,Q.jsx)(pm,{spin:!0}):t.isSuccess?(0,Q.jsx)(xV,{}):t.isFailure?(0,Q.jsx)(LV,{}):(0,Q.jsx)(Xk,{});return(0,Q.jsx)(rI,{color:t.color,icon:n,children:t.label})}},{title:`阶段`,dataIndex:`pipelineStage`,width:120,render:e=>(0,Q.jsx)(rI,{color:U5(e),children:H5(e)})},{title:`时间`,key:`time`,width:170,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:p7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,p7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:90,fixed:`right`,render:(e,t)=>(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>ae(t),children:`详情`})}],[ae]),de=L?u7[L.genType]||{text:L.genType||`-`,color:`default`,icon:null}:null,fe=L?W5(L):null,pe=(e,t)=>{let n=g7(e),r=_7(e),i=v7(e,t),a=z.references[i]||h7(n),o=r===`image`,s=r===`video`,c=typeof e.name==`string`&&e.name?e.name:`参考素材 ${t+1}`;if(!n)return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsx)(`div`,{style:{width:94,height:94},children:(0,Q.jsx)(y7,{text:`无链接`,compact:!0})}),(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})]},i);if(a===`invalid`)return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsx)(`div`,{style:{width:94,height:94},children:(0,Q.jsx)(y7,{text:d7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(xb,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=f7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>se(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&se(n,s?`视频素材`:o?`图片素材`:`素材`)},style:{width:94,height:94,borderRadius:10,overflow:`hidden`,border:`1px solid #e2e8f0`,background:`#f8f9fc`,position:`relative`,display:`flex`,alignItems:`center`,justifyContent:`center`,cursor:`pointer`},children:[o?(0,Q.jsx)(`img`,{src:l,alt:c,onLoad:()=>oe(i,`valid`),onError:()=>oe(i,`invalid`),style:{display:a===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`cover`}}):null,s?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`video`,{src:l,preload:`metadata`,onLoadedMetadata:()=>oe(i,`valid`),onError:()=>oe(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(RY,{style:{fontSize:18}}),(0,Q.jsx)(`div`,{children:`视频素材`}),(0,Q.jsx)(`div`,{style:{fontSize:10,color:`#94a3b8`,marginTop:2},children:`点击查看`})]})]}):null,!o&&!s?(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[`文件素材`,(0,Q.jsx)(`div`,{style:{fontSize:10,color:`#94a3b8`,marginTop:2},children:`点击查看`})]}):null,a===`checking`&&o?(0,Q.jsx)(`div`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,background:`#f8f9fc`},children:(0,Q.jsx)(pm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(xb,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16,flexWrap:`wrap`,gap:12},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RY,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`创作记录管理`}),(0,Q.jsxs)(rI,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`状态筛选`,value:c||void 0,style:{width:140},onChange:e=>{l(e||``),s(1)},options:[{value:`generating`,label:`生成中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`}]}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`类型筛选`,value:u||void 0,style:{width:120},onChange:e=>{d(e||``),s(1)},options:[{value:`image`,label:`图片`},{value:`video`,label:`视频`}]}),(0,Q.jsx)(Wy,{allowClear:!0,showSearch:!0,loading:j,placeholder:`引擎筛选`,value:f||void 0,style:{width:260},onChange:e=>{p(e||``),s(1),w(e||``)},filterOption:(e,t)=>String(t?.searchText||t?.label||``).toLowerCase().includes(e.trim().toLowerCase()),options:ne}),(0,Q.jsx)(p4e,{value:T,onChange:e=>{e&&e[0]&&e[1]?E([e[0].startOf(`day`),e[1].endOf(`day`)]):E(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(Fj,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(Vy,{style:{color:`#94a3b8`}}),style:{width:150},value:m,onChange:e=>h(e.target.value),onPressEnter:re,allowClear:!0}),(0,Q.jsx)(Fj,{placeholder:`用户名搜索`,prefix:(0,Q.jsx)(Vy,{style:{color:`#94a3b8`}}),style:{width:150},value:g,onChange:e=>_(e.target.value),onPressEnter:re,allowClear:!0}),(0,Q.jsx)(rS,{type:`primary`,onClick:re,style:{borderRadius:8},children:`搜索`}),(0,Q.jsx)(rS,{onClick:ie,style:{borderRadius:8},children:`重置`})]})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:i,columns:ue,dataSource:e,scroll:{x:1650},pagination:{current:o,pageSize:c7,total:n,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:e=>s(e)}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[L?.genType===`video`?(0,Q.jsx)(k1,{}):(0,Q.jsx)(VW,{}),(0,Q.jsx)(`span`,{children:`创作记录详情`})]}),open:!!L,onCancel:G,footer:null,width:900,destroyOnClose:!0,children:L?(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginTop:12},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:12,flexWrap:`wrap`},children:[de?(0,Q.jsx)(rI,{color:de.color,icon:de.icon,children:de.text}):null,fe?(0,Q.jsx)(rI,{color:fe.color,icon:fe.isActive?(0,Q.jsx)(pm,{spin:!0}):fe.isSuccess?(0,Q.jsx)(xV,{}):fe.isFailure?(0,Q.jsx)(LV,{}):(0,Q.jsx)(Xk,{}),children:fe.label}):null,L.pipelineStage?(0,Q.jsx)(rI,{color:U5(L.pipelineStage),children:H5(L.pipelineStage)}):null]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`用户名称`,value:L.userName||`未知用户`}),(0,Q.jsx)(b7,{label:`用户ID`,value:L.userId||`-`}),(0,Q.jsx)(b7,{label:`任务ID`,value:L.id}),(0,Q.jsx)(b7,{label:`生成数量`,value:`${L.generationCount||1} 份`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:`原始提示词`}),(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,lineHeight:1.6},children:L.originalPrompt||`-`})]}),L.genType===`video`?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`时长`,value:L.duration?`${L.duration}秒`:`-`}),(0,Q.jsx)(b7,{label:`画面比例`,value:L.aspectRatio||`-`}),(0,Q.jsx)(b7,{label:`分辨率`,value:L.resolution||`-`})]}):(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`图片档位`,value:L.imageSize||`-`}),(0,Q.jsx)(b7,{label:`图片比例`,value:L.imageProportion||`-`}),(0,Q.jsx)(b7,{label:`像素尺寸`,value:L.imagePx||`-`})]}),L.engineSnapshot?(0,Q.jsxs)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:8},children:`引擎快照`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`引擎名称`,value:L.engineSnapshot.name||`-`}),(0,Q.jsx)(b7,{label:`服务商`,value:L.engineSnapshot.provider||`-`}),(0,Q.jsx)(b7,{label:`模型`,value:L.engineSnapshot.modelName||`-`}),(0,Q.jsx)(b7,{label:`引擎ID`,value:L.engineSnapshot.id||L.engineId||`-`})]})]}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`总积分`,value:(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:L.creditsCost||0})}),(0,Q.jsx)(b7,{label:`文字积分`,value:`${L.textCreditsCost||0} (${L.textTokensUsed||0} tokens)`}),(0,Q.jsx)(b7,{label:`图片 tokens`,value:L.imageTokensUsed??0}),(0,Q.jsx)(b7,{label:`视频 tokens`,value:L.videoTokensUsed??0})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`第三方任务ID`,value:L.providerTaskId||L.seedanceTaskId||`-`}),(0,Q.jsx)(b7,{label:`轮询次数`,value:L.pollCount??0}),(0,Q.jsx)(b7,{label:`重试次数`,value:L.retryCount??0})]}),!L?.mediaReferences||L.mediaReferences.length===0?null:(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:`参考内容`}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:10,flexWrap:`wrap`},children:L.mediaReferences.map((e,t)=>pe(e,t))})]}),L.mediaReferences&&L.mediaReferences.length>0?(0,Q.jsxs)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:8},children:`附件快速查看(点击新窗口打开)`}),(0,Q.jsx)(bA,{size:8,wrap:!0,children:L.mediaReferences.map((e,t)=>{let n=g7(e),r=_7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)(rS,{size:`small`,icon:r===`video`?(0,Q.jsx)(RY,{}):(0,Q.jsx)(Wq,{}),onClick:()=>ce(n,r===`video`?`video`:`image`,i),children:i},t):null})})]}):null,(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:[`生成资源(共 `,L.generationCount||1,` 份)`]}),(0,Q.jsx)(f4e,{task:L,resolveUrl:f7,onPreview:ce})]}),fe?.isFailure&&L.errorMessage?(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`rgba(239,68,68,0.04)`,border:`1px solid rgba(239,68,68,0.15)`},children:(0,Q.jsxs)(Z.Text,{style:{fontSize:12,color:`#ef4444`},children:[`错误信息: `,L.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,p7(L.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,p7(L.generatedAt)]})]})]}):(0,Q.jsx)(Dy,{description:`暂无详情`})}),(0,Q.jsx)(vM,{title:W?.title||`资源预览`,open:!!W,onCancel:le,footer:null,width:W?.type===`video`?800:600,destroyOnHidden:!0,children:W?W.type===`video`?(0,Q.jsx)(`video`,{src:W.url,controls:!0,autoPlay:!0,style:{width:`100%`,maxHeight:600,background:`#000`,borderRadius:8}},W.url):(0,Q.jsx)(`img`,{src:W.url,alt:W.title,style:{width:`100%`,maxHeight:600,objectFit:`contain`,borderRadius:8}}):null})]})},C7=20,y4e=[{value:`pending`,label:`已创建`},{value:`waiting_user`,label:`等待用户操作`},{value:`processing`,label:`处理中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`},{value:`cancelled`,label:`已取消`}],b4e={pending:{color:`default`,text:`已创建`},waiting_user:{color:`processing`,text:`等待用户操作`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`已完成`},failed:{color:`error`,text:`失败`},cancelled:{color:`default`,text:`已取消`}},x4e={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},w7=e=>e?v2(e):`-`,T7=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,S4e=({status:e})=>{if(!e)return(0,Q.jsx)(rI,{children:`-`});let t=b4e[e]||{color:`blue`,text:e};return(0,Q.jsx)(rI,{color:t.color,children:t.text})},C4e=()=>{let e=Qe(),[t,n]=(0,C.useState)([]),[r,i]=(0,C.useState)(0),[a,o]=(0,C.useState)(!1),[s,c]=(0,C.useState)(1),[l,u]=(0,C.useState)(``),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(``),[h,g]=(0,C.useState)(``),[_,v]=(0,C.useState)(null),[y,b]=(0,C.useState)(``),[x,S]=(0,C.useState)(``),[w,T]=(0,C.useState)(``),[E,D]=(0,C.useState)(null),[O,k]=(0,C.useState)(0),A=(0,C.useCallback)(async()=>{o(!0);try{let e=await qJe({status:l||void 0,keyword:y||void 0,userId:x||void 0,userName:w||void 0,createdStart:E?.[0]?.toISOString?.(),createdEnd:E?.[1]?.toISOString?.(),page:s,pageSize:C7});n(e.items||[]),i(e.total||0)}catch(e){X.error(e?.message||`加载爆款开头复刻任务失败`)}finally{o(!1)}},[s,E,y,x,w,l]);(0,C.useEffect)(()=>{A()},[A,O]);let j=()=>{b(d.trim()),S(p.trim()),T(h.trim()),D(_),c(1)};return(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16,flexWrap:`wrap`,gap:12},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RY,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`爆款开头复刻`}),(0,Q.jsxs)(rI,{color:`purple`,children:[r,` 条记录`]})]}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>k(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`任务状态`,style:{width:160},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:y4e}),(0,Q.jsx)(Fj,{allowClear:!0,prefix:(0,Q.jsx)(Vy,{}),placeholder:`关键词:标题/项目名/核心点`,style:{width:260},value:d,onChange:e=>f(e.target.value),onPressEnter:j}),(0,Q.jsx)(Fj,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:p,onChange:e=>m(e.target.value),onPressEnter:j}),(0,Q.jsx)(Fj,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:h,onChange:e=>g(e.target.value),onPressEnter:j}),(0,Q.jsx)(eA.RangePicker,{showTime:!0,value:_,onChange:v,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(Vy,{}),onClick:j,children:`搜索`}),(0,Q.jsx)(rS,{onClick:()=>{u(``),f(``),m(``),g(``),v(null),b(``),S(``),T(``),D(null),c(1),k(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:C7,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1380},columns:[{title:`项目ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(xb,{title:e,children:T7(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(bA,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:T7(t.userId)})]})},{title:`项目信息`,width:260,render:(e,t)=>(0,Q.jsxs)(bA,{direction:`vertical`,size:2,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.title||t.targetProjectName||`-`}),(0,Q.jsxs)(Z.Text,{type:`secondary`,ellipsis:!0,style:{maxWidth:240},children:[`素材:`,t.sourceProjectName||`-`]}),(0,Q.jsxs)(Z.Text,{type:`secondary`,ellipsis:!0,style:{maxWidth:240},children:[`核心:`,t.coreContentPoint||`-`]})]})},{title:`状态`,dataIndex:`status`,width:130,render:e=>(0,Q.jsx)(S4e,{status:e})},{title:`流程版本`,dataIndex:`flowVersion`,width:100,render:e=>(0,Q.jsx)(rI,{color:e===`v2`?`blue`:`default`,children:String(e||`v1`).toUpperCase()})},{title:`当前步骤`,dataIndex:`currentStepCode`,width:140,render:e=>x4e[e]||e||`-`},{title:`图片结果`,dataIndex:`finalImageUrl`,width:90,render:e=>e?(0,Q.jsx)(rI,{color:`success`,children:`有`}):(0,Q.jsx)(rI,{children:`无`})},{title:`视频结果`,dataIndex:`finalVideoUrl`,width:90,render:e=>e?(0,Q.jsx)(rI,{color:`success`,children:`有`}):(0,Q.jsx)(rI,{children:`无`})},{title:`错误信息`,dataIndex:`errorMessage`,width:220,ellipsis:!0,render:e=>e||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:w7},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:w7},{title:`操作`,fixed:`right`,width:110,render:(t,n)=>(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>e(`/hot-opening-replications/${n.id}?flow_version=${n.flowVersion===`v2`?`v2`:`v1`}`),children:`详情`})}]})]})},E7=({value:e,maxHeight:t=420})=>e==null||e===``?(0,Q.jsx)(Dy,{image:Dy.PRESENTED_IMAGE_SIMPLE,description:`暂无 JSON 数据`}):(0,Q.jsx)(`pre`,{style:{margin:0,padding:12,maxHeight:t,overflow:`auto`,background:`#0f172a`,color:`#e2e8f0`,borderRadius:8,fontSize:12,lineHeight:1.6},children:JSON.stringify(e,null,2)}),w4e=({input:e,output:t,raw:n,inputLabel:r=`查看 input_json`,outputLabel:i=`查看 output_json`,rawLabel:a=`查看原始 JSON`})=>{let o=[];return e!==void 0&&o.push({key:`input`,label:r,children:(0,Q.jsx)(E7,{value:e})}),t!==void 0&&o.push({key:`output`,label:i,children:(0,Q.jsx)(E7,{value:t})}),n!==void 0&&o.push({key:`raw`,label:a,children:(0,Q.jsx)(E7,{value:n})}),o.length?(0,Q.jsx)(zh,{size:`small`,style:{marginTop:12},items:o}):null};async function T4e(e){try{if(navigator.clipboard&&typeof navigator.clipboard.writeText==`function`)return await navigator.clipboard.writeText(e),!0;let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.left=`-9999px`,t.style.top=`0`,document.body.appendChild(t),t.focus(),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}var E4e=`https://ceshi.apiforeign.minzhongzc.com`.replace(/\/api\/?$/i,``).replace(/\/$/,``);function D4e(e){if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${E4e}${t.startsWith(`/`)?t:`/${t}`}`:``}var D7=({url:e,type:t,height:n=260,emptyDescription:r=`暂无资源`,errorDescription:i=`资源加载失败,可能文件不存在、签名过期或访问权限受限。`})=>{let a=(0,C.useMemo)(()=>D4e(e),[e]),[o,s]=(0,C.useState)(!1);(0,C.useEffect)(()=>{s(!1)},[a]);let c=a?(0,Q.jsxs)(bA,{wrap:!0,style:{marginTop:8},children:[(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(hI,{}),onClick:async()=>{if(!a)return;let e=await T4e(a);X.success(e?`资源地址已复制`:`复制失败,请手动复制`)},children:`复制地址`}),(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(Wq,{}),onClick:()=>window.open(a,`_blank`,`noopener,noreferrer`),children:`新窗口打开`}),(0,Q.jsx)(Z.Text,{copyable:{text:a},type:`secondary`,style:{maxWidth:460},ellipsis:!0,children:a})]}):null;return a?(0,Q.jsxs)(`div`,{children:[o?(0,Q.jsx)(ff,{type:`warning`,showIcon:!0,message:`资源预览失败`,description:i,style:{marginBottom:8}}):null,t===`image`?(0,Q.jsx)(xj,{src:a,onError:()=>s(!0),style:{width:`100%`,maxHeight:n,objectFit:`contain`,borderRadius:12,background:`#f8fafc`,border:`1px solid #f1f5f9`},fallback:``,preview:!o}):(0,Q.jsx)(`video`,{src:a,controls:!0,preload:`metadata`,onError:()=>s(!0),style:{width:`100%`,maxHeight:n,borderRadius:12,background:`#0f172a`,border:`1px solid #f1f5f9`}}),c]}):(0,Q.jsx)(`div`,{children:(0,Q.jsx)(`div`,{style:{height:n,borderRadius:12,border:`1px dashed #cbd5e1`,display:`flex`,alignItems:`center`,justifyContent:`center`,background:`#f8fafc`},children:(0,Q.jsx)(Dy,{image:Dy.PRESENTED_IMAGE_SIMPLE,description:r})})})},O7={pending:{text:`待处理`,color:`default`},waiting_user:{text:`等待用户操作`,color:`processing`},processing:{text:`处理中`,color:`warning`},completed:{text:`已完成`,color:`success`},failed:{text:`失败`,color:`error`},cancelled:{text:`已取消`,color:`default`},canceled:{text:`已取消`,color:`default`},timeout:{text:`已超时`,color:`error`},queued:{text:`已入队`,color:`processing`},preparing:{text:`准备中`,color:`processing`},creating_provider_task:{text:`创建远端任务`,color:`processing`},provider_result_staged:{text:`供应商结果已暂存`,color:`processing`},waiting_remote:{text:`等待远端结果`,color:`processing`},polling:{text:`轮询远端结果`,color:`processing`},result_ready:{text:`结果已就绪`,color:`success`},download_queued:{text:`下载已入队`,color:`processing`},downloading:{text:`下载中`,color:`processing`},done:{text:`已完成`,color:`success`},download_failed:{text:`下载失败`,color:`error`},retry_waiting:{text:`等待重试`,color:`orange`},upscale_queued:{text:`超分已入队`,color:`purple`},upscale_processing:{text:`本地超分处理中`,color:`purple`},upscale_polling:{text:`轮询远程超分`,color:`purple`},upscale_downloading:{text:`下载超分结果`,color:`purple`},upscale_finalizing:{text:`超分结果最终化`,color:`purple`},upscale_retry_waiting:{text:`超分等待重试`,color:`orange`},upscale_failed:{text:`超分失败`,color:`error`},pending_analysis:{text:`等待分析`,color:`default`},analyzing:{text:`分析中`,color:`processing`},analysis_completed:{text:`分析完成`,color:`success`},analysis_failed:{text:`分析失败`,color:`error`},splitting:{text:`拆镜中`,color:`warning`},split_completed:{text:`拆镜完成`,color:`success`},partial_failed:{text:`部分失败`,color:`orange`},none:{text:`未拆镜`,color:`default`},not_required:{text:`无需处理`,color:`default`},not_started:{text:`未开始`,color:`default`},project_created:{text:`已创建项目`,color:`processing`},true:{text:`是`,color:`success`},false:{text:`否`,color:`default`}},k7={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},A7={hot_opening_replicate:`爆款开头复刻`,shot_replicate:`拆镜复刻`},j7={ai_suggestion:{text:`AI 建议`,color:`purple`},custom:{text:`自定义`,color:`cyan`},original:{text:`原视频`,color:`blue`}};function M7(e){return e?A7[e]||e:`-`}function N7(e){return e?k7[e]||e:`-`}function O4e(e){return e?O7[e]?.text||k7[e]||A7[e]||j7[e]?.text||e:`-`}function k4e(e){return e?O7[e]?.color||j7[e]?.color||`blue`:`default`}var P7=({status:e,tooltipRaw:t=!0})=>{if(e==null||e===``)return(0,Q.jsx)(rI,{children:`-`});let n=String(e),r=O4e(n),i=(0,Q.jsx)(rI,{color:k4e(n),children:r});return!t||r===n?i:(0,Q.jsx)(xb,{title:n,children:i})};function F7(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function I7(e,...t){for(let n of t){let t=e[n];if(t!=null&&String(t).trim()!==``)return String(t)}return``}function L7(e,t,...n){for(let t of n){let n=e[t];if(n===!0||n===!1)return n;if(n===`true`)return!0;if(n===`false`)return!1}return t}function A4e(e,...t){for(let n of t){let t=e[n];if(typeof t==`number`&&Number.isFinite(t)&&t>0)return t;if(typeof t==`string`&&t.trim()){let e=Number(t);if(Number.isFinite(e)&&e>0)return e}}}function R7(e){if(!F7(e))return null;let t=I7(e,`key`);return t?{key:t,label:I7(e,`label`)||t,type:I7(e,`type`)||void 0,enabled:L7(e,!0,`enabled`),editable:L7(e,!0,`editable`),maxLength:A4e(e,`maxLength`,`max_length`)}:null}function z7(e){if(!F7(e))return null;let t=e.data;return F7(t)?t:Array.isArray(e.sections)?e:null}function j4e(e){return!!z7(e)}function M4e(e){let t=z7(e);return(Array.isArray(t?.sections)?t.sections:[]).map(e=>{let t=R7(e);if(!t||!F7(e))return null;let n=Array.isArray(e.children)?e.children.map(R7).filter(Boolean):[],r=Array.isArray(e.itemFields)?e.itemFields.map(R7).filter(Boolean):Array.isArray(e.item_fields)?e.item_fields.map(R7).filter(Boolean):[];return{...t,contentKey:I7(e,`contentKey`,`content_key`)||void 0,children:n,itemFields:r}}).filter(e=>!!e&&e.enabled)}function N4e(e){return F7(e)?Object.entries(e).filter(([e])=>![`schemaVersion`,`schemaUsage`,`schema_version`,`schema_usage`].includes(e)).map(([e,t])=>Array.isArray(t)&&t.every(F7)?{key:e,label:e,type:`flow`,enabled:!0,editable:!1,itemFields:Array.from(new Set(t.flatMap(e=>Object.keys(e)))).filter(e=>e!==`时间段`).map(e=>({key:e,label:e,enabled:!0,editable:!1})),children:[]}:F7(t)?{key:e,label:e,type:`object`,enabled:!0,editable:!1,children:Object.keys(t).map(e=>({key:e,label:e,enabled:!0,editable:!1})),itemFields:[]}:{key:e,label:e,type:`text`,enabled:!0,editable:!1,children:[],itemFields:[]}):[]}var B7=e=>!!e&&typeof e==`object`&&!Array.isArray(e),V7=e=>typeof e==`string`&&e.length>80,H7=e=>e==null||e===``?(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`}):typeof e==`boolean`?e?`是`:`否`:typeof e==`number`?e:typeof e==`string`?(0,Q.jsx)(Z.Paragraph,{style:{marginBottom:0,whiteSpace:`pre-wrap`},children:e}):(0,Q.jsx)(E7,{value:e,maxHeight:220}),U7=e=>e?(0,Q.jsx)(rI,{color:`processing`,children:`可编辑`}):(0,Q.jsx)(rI,{color:`default`,children:`只读`}),W7=(e,t)=>e[t],P4e=(e,t)=>{let n=W7(e,t.key);if(!B7(n))return(0,Q.jsx)(E7,{value:n??{},maxHeight:220});let r=t.children.filter(e=>e.enabled);return r.length?(0,Q.jsx)(iA,{size:`small`,column:2,bordered:!0,children:r.map(e=>(0,Q.jsx)(iA.Item,{label:(0,Q.jsxs)(bA,{size:4,children:[e.label,U7(e.editable)]}),span:V7(n[e.key])||B7(n[e.key])||Array.isArray(n[e.key])?2:1,children:H7(n[e.key])},e.key))}):(0,Q.jsx)(E7,{value:n,maxHeight:220})},F4e=(e,t)=>{let n=e.itemFields.filter(e=>e.enabled);return n.length?[{key:`时间段`,label:`时间段`,enabled:!0,editable:!1},...n]:Array.from(new Set(t.flatMap(e=>Object.keys(e)))).map(e=>({key:e,label:e,enabled:!0,editable:!1}))},I4e=(e,t)=>{let n=W7(e,t.key);if(!Array.isArray(n)||!n.every(B7))return(0,Q.jsx)(E7,{value:n??[],maxHeight:260});let r=n,i=F4e(t,r);return(0,Q.jsx)(ZF,{size:`small`,rowKey:(e,n)=>`${t.key}-${n}`,columns:i.map(e=>({title:(0,Q.jsxs)(bA,{size:4,children:[e.label,U7(e.editable)]}),dataIndex:e.key,key:e.key,width:V7(r.find(t=>t[e.key])?.[e.key])?320:160,render:e=>H7(e)})),dataSource:r,pagination:!1,scroll:{x:Math.max(900,i.length*180)},tableLayout:`fixed`})},L4e=(e,t)=>H7(W7(e,t.key)),R4e=({schema:e,finalPrompt:t,schemaConfigSnapshot:n,schemaConfigSource:r,schemaConfigVersion:i,schemaConfigIsFallback:a})=>{let o=!!e&&Object.keys(e).length>0;if(!o&&!t)return(0,Q.jsx)(Dy,{description:`暂无视频提词 schema`});let s=o?e:{},c=j4e(n),l=(c?M4e(n):N4e(s)).filter(e=>e.key in s).map(e=>({key:e.key,label:(0,Q.jsxs)(bA,{size:8,wrap:!0,children:[(0,Q.jsx)(`span`,{children:e.label}),U7(e.editable),c?null:(0,Q.jsx)(rI,{color:`warning`,children:`管理后台兜底展示`})]}),children:e.type===`object`?P4e(s,e):e.type===`flow`?I4e(s,e):L4e(s,e)}));return(0,Q.jsxs)(bA,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,Q.jsx)(aO,{size:`small`,title:`Schema 配置来源`,children:(0,Q.jsxs)(iA,{size:`small`,column:3,bordered:!0,children:[(0,Q.jsx)(iA.Item,{label:`来源`,children:r||n?.source||(c?`-`:`viewer_fallback`)}),(0,Q.jsx)(iA.Item,{label:`版本`,children:i||n?.version||`-`}),(0,Q.jsx)(iA.Item,{label:`历史兜底`,children:a||!c?(0,Q.jsx)(rI,{color:`warning`,children:`是`}):(0,Q.jsx)(rI,{color:`success`,children:`否`})})]})}),t?(0,Q.jsx)(aO,{size:`small`,title:`最终视频提示词`,children:(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:t})}):null,l.length?(0,Q.jsx)(zh,{size:`small`,items:l}):o?(0,Q.jsx)(aO,{size:`small`,title:`视频提词 Schema`,children:(0,Q.jsx)(E7,{value:s,maxHeight:360})}):null,o?(0,Q.jsx)(zh,{size:`small`,items:[{key:`raw_schema`,label:`原始 JSON / 历史脏字段排查`,children:(0,Q.jsx)(E7,{value:s,maxHeight:420})}]}):null]})},z4e=[`material_input`,`image_prompt_optimize`,`image_generate`,`video_prompt_optimize`,`video_generate`],B4e=[`material_input`,`video_prompt_optimize`,`video_generate`],V4e={material_input:`参考素材、项目名称和核心内容点`,image_prompt_optimize:`图片 AI 提词优化结果`,image_generate:`图片引擎、生成参数和结果图`,video_prompt_optimize:`视频 JSON schema、动作流程和最终提词`,video_generate:`视频引擎、生成参数、封面和结果视频`},G7=e=>e?v2(e):`-`,K7=e=>e?e.length>18?`${e.slice(0,10)}...${e.slice(-4)}`:e:`-`,H4e=({text:e=`-`})=>(0,Q.jsx)(Z.Text,{type:`secondary`,children:e}),q7=({step:e})=>e?(0,Q.jsx)(w4e,{input:e.input,output:e.output}):null,J7=({index:e,stepCode:t,step:n,current:r})=>(0,Q.jsxs)(bA,{wrap:!0,size:8,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`第${e}步:${N7(t)}`}),(0,Q.jsx)(P7,{status:n?.status||`not_started`}),r?(0,Q.jsx)(rI,{color:`blue`,children:`当前步骤`}):null,(0,Q.jsx)(Z.Text,{type:`secondary`,children:V4e[t]||t}),n?.updatedAt?(0,Q.jsxs)(Z.Text,{type:`secondary`,children:[`更新时间:`,G7(n.updatedAt)]}):null,n?.chatTaskId?(0,Q.jsx)(xb,{title:n.chatTaskId,children:(0,Q.jsxs)(rI,{children:[`Chat:`,K7(n.chatTaskId)]})}):null]}),U4e=(e,t)=>{if(!e)return[];let n=new Set;return n.add(`material_input`),e.currentStepCode&&n.add(e.currentStepCode),Object.values(t).forEach(e=>{(e.status===`failed`||e.errorMessage)&&n.add(e.stepCode)}),e.errorMessage&&n.add(e.currentStepCode||`material_input`),Array.from(n)},Y7=(e,t=`错误信息`)=>e?(0,Q.jsx)(ff,{type:`error`,showIcon:!0,message:t,description:e,style:{marginTop:12,marginBottom:12}}):null,W4e=(e,t=`暂无提词`)=>e?(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:e}):(0,Q.jsx)(H4e,{text:t}),X7=({moduleType:e=`shot_replicate`})=>{let{projectId:t}=nt(),n=Qe(),[r]=jn(),i=r.get(`flow_version`)===`v2`?`v2`:`v1`,[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!1),l=(0,C.useCallback)(async()=>{if(t){c(!0);try{o(e===`hot_opening_replicate`?await JJe(t,i):await $Je(t,i))}catch(e){X.error(e?.message||`加载复刻项目详情失败`)}finally{c(!1)}}},[i,e,t]);(0,C.useEffect)(()=>{l()},[l]);let u=(0,C.useMemo)(()=>{let e={};return(a?.steps||[]).forEach(t=>{e[t.stepCode]=t}),e},[a]),d=a?.module||e,f=M7(d),p=a?.flowVersion===`v2`,m=p?B4e:z4e,h=(0,C.useMemo)(()=>m.map(e=>{let t=u[e],n=`wait`;return t?.status===`completed`?n=`finish`:t?.status===`processing`?n=`process`:t?.status===`failed`&&(n=`error`),{title:N7(e),description:t?(0,Q.jsx)(P7,{status:t.status}):`未创建`,status:n}}),[m,u]),g=(0,C.useMemo)(()=>U4e(a,u),[a,u]);if(s&&!a)return(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(oM,{size:`large`})});if(!a)return(0,Q.jsx)(aO,{style:{margin:24},children:(0,Q.jsx)(Dy,{description:`未找到复刻项目详情`})});let _=u.material_input,v=u.image_prompt_optimize,y=u.image_generate,b=u.video_prompt_optimize,x=u.video_generate,S=a.imageGeneration?.resultImageUrl||a.finalImageUrl,w=a.videoGeneration?.resultVideoCoverUrl||a.finalVideoCoverUrl,T=a.videoGeneration?.resultVideoUrl||a.finalVideoUrl,E=[{key:`material_input`,label:(0,Q.jsx)(J7,{index:1,stepCode:`material_input`,step:_,current:a.currentStepCode===`material_input`}),children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`模块类型`,children:(0,Q.jsx)(P7,{status:d})}),(0,Q.jsx)(iA.Item,{label:`素材步骤ID`,children:a.material?.materialStepId||`-`}),(0,Q.jsx)(iA.Item,{label:`参考素材项目名`,children:a.material?.sourceProjectName||`-`}),(0,Q.jsx)(iA.Item,{label:`生成项目名称`,children:a.material?.targetProjectName||`-`}),(0,Q.jsx)(iA.Item,{label:`核心内容点`,span:2,children:a.material?.coreContentPoint||`-`})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(aO,{size:`small`,title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RY,{}),`素材视频`]}),children:(0,Q.jsx)(D7,{type:`video`,url:a.material?.materialVideoUrl,emptyDescription:`暂无素材视频`})}),(0,Q.jsx)(aO,{size:`small`,title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(VW,{}),`素材图片`]}),children:(0,Q.jsx)(D7,{type:`image`,url:a.material?.materialImageUrl,emptyDescription:`暂无素材图片`})})]}),Y7(_?.errorMessage),(0,Q.jsx)(q7,{step:_})]})},{key:`image_prompt_optimize`,label:(0,Q.jsx)(J7,{index:2,stepCode:`image_prompt_optimize`,step:v,current:a.currentStepCode===`image_prompt_optimize`}),children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`提词步骤ID`,children:a.imageGeneration?.promptStepId||`-`}),(0,Q.jsx)(iA.Item,{label:`步骤状态`,children:(0,Q.jsx)(P7,{status:v?.status||a.imageGeneration?.status})}),(0,Q.jsx)(iA.Item,{label:`图片提示词`,span:2,children:W4e(a.imageGeneration?.prompt,`暂无图片提示词`)})]}),Y7(v?.errorMessage||a.imageGeneration?.errorMessage),(0,Q.jsx)(q7,{step:v})]})},{key:`image_generate`,label:(0,Q.jsx)(J7,{index:3,stepCode:`image_generate`,step:y,current:a.currentStepCode===`image_generate`}),children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`生成步骤ID`,children:a.imageGeneration?.generateStepId||`-`}),(0,Q.jsx)(iA.Item,{label:`Chat任务ID`,children:a.imageGeneration?.chatTaskId||`-`}),(0,Q.jsx)(iA.Item,{label:`状态`,children:(0,Q.jsx)(P7,{status:a.imageGeneration?.status||y?.status})}),(0,Q.jsx)(iA.Item,{label:`图片引擎ID`,children:a.imageGeneration?.engineId||`-`}),(0,Q.jsx)(iA.Item,{label:`图片引擎名称`,children:a.imageGeneration?.engineName||`-`}),(0,Q.jsx)(iA.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(E7,{value:a.imageGeneration?.params||{},maxHeight:160})})]}),Y7(a.imageGeneration?.errorMessage||y?.errorMessage),(0,Q.jsx)(aO,{size:`small`,title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(VW,{}),`图片结果`]}),children:(0,Q.jsx)(D7,{type:`image`,url:S,height:360,emptyDescription:y?.status===`failed`||a.imageGeneration?.errorMessage?`图片生成失败,未返回图片地址`:`暂无图片结果`,errorDescription:`图片资源加载失败,可能图片文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(q7,{step:y})]})},{key:`video_prompt_optimize`,label:(0,Q.jsx)(J7,{index:p?2:4,stepCode:`video_prompt_optimize`,step:b,current:a.currentStepCode===`video_prompt_optimize`}),children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`提词步骤ID`,children:a.videoGeneration?.promptStepId||`-`}),(0,Q.jsx)(iA.Item,{label:`步骤状态`,children:(0,Q.jsx)(P7,{status:b?.status})}),(0,Q.jsx)(iA.Item,{label:`提词参数`,span:3,children:(0,Q.jsx)(E7,{value:a.videoGeneration?.promptParams||{},maxHeight:160})})]}),Y7(b?.errorMessage||a.videoGeneration?.errorMessage),(0,Q.jsx)(R4e,{schema:a.videoGeneration?.promptSchema,finalPrompt:a.videoGeneration?.finalPrompt,schemaConfigSnapshot:a.videoGeneration?.schemaConfigSnapshot,schemaConfigSource:a.videoGeneration?.schemaConfigSource,schemaConfigVersion:a.videoGeneration?.schemaConfigVersion,schemaConfigIsFallback:a.videoGeneration?.schemaConfigIsFallback}),(0,Q.jsx)(q7,{step:b})]})},{key:`video_generate`,label:(0,Q.jsx)(J7,{index:p?3:5,stepCode:`video_generate`,step:x,current:a.currentStepCode===`video_generate`}),children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`生成步骤ID`,children:a.videoGeneration?.generateStepId||`-`}),(0,Q.jsx)(iA.Item,{label:`Chat任务ID`,children:a.videoGeneration?.chatTaskId||`-`}),(0,Q.jsx)(iA.Item,{label:`状态`,children:(0,Q.jsx)(P7,{status:a.videoGeneration?.status||x?.status})}),(0,Q.jsx)(iA.Item,{label:`视频引擎ID`,children:a.videoGeneration?.engineId||`-`}),(0,Q.jsx)(iA.Item,{label:`视频引擎名称`,children:a.videoGeneration?.engineName||`-`}),(0,Q.jsx)(iA.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(E7,{value:a.videoGeneration?.params||{},maxHeight:160})})]}),Y7(a.videoGeneration?.errorMessage||x?.errorMessage),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(aO,{size:`small`,title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(VW,{}),`视频封面`]}),children:(0,Q.jsx)(D7,{type:`image`,url:w,emptyDescription:x?.status===`failed`||a.videoGeneration?.errorMessage?`视频生成失败,未返回封面`:`暂无视频封面`,errorDescription:`视频封面加载失败,可能文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(aO,{size:`small`,title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(k1,{}),`最终视频`]}),children:(0,Q.jsx)(D7,{type:`video`,url:T,emptyDescription:x?.status===`failed`||a.videoGeneration?.errorMessage?`视频生成失败,未返回视频地址`:`暂无最终视频`,errorDescription:`视频资源加载失败,可能文件不存在、签名过期或访问权限受限。`})})]}),(0,Q.jsx)(q7,{step:x})]})}],D=p?E.filter(e=>![`image_prompt_optimize`,`image_generate`].includes(String(e.key))):E;return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bA,{wrap:!0,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(rS,{icon:(0,Q.jsx)(iR,{}),onClick:()=>n(-1),children:`返回`}),(0,Q.jsxs)(Z.Title,{level:3,style:{margin:0},children:[f,`项目详情`]}),(0,Q.jsx)(P7,{status:a.status}),a.module&&a.module!==e?(0,Q.jsxs)(rI,{color:`gold`,children:[`接口模块:`,M7(a.module)]}):null]}),(0,Q.jsx)(rS,{onClick:l,loading:s,children:`刷新`})]}),(0,Q.jsx)(aO,{children:(0,Q.jsxs)(iA,{title:`基础信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`项目ID`,children:a.id}),(0,Q.jsx)(iA.Item,{label:`模块类型`,children:(0,Q.jsx)(P7,{status:d})}),(0,Q.jsx)(iA.Item,{label:`用户ID`,children:a.userId||`-`}),(0,Q.jsx)(iA.Item,{label:`用户名`,children:a.userName||`-`}),(0,Q.jsx)(iA.Item,{label:`标题`,children:a.title||`-`}),(0,Q.jsx)(iA.Item,{label:`当前步骤`,children:(0,Q.jsx)(xb,{title:a.currentStepCode||``,children:N7(a.currentStepCode)})}),(0,Q.jsx)(iA.Item,{label:`流程版本`,children:(0,Q.jsx)(rI,{color:p?`blue`:`default`,children:String(a.flowVersion||`v1`).toUpperCase()})}),(0,Q.jsx)(iA.Item,{label:`步骤数量`,children:a.stepCount||m.length}),(0,Q.jsx)(iA.Item,{label:`状态`,children:(0,Q.jsx)(P7,{status:a.status})}),(0,Q.jsx)(iA.Item,{label:`创建时间`,children:G7(a.createdAt)}),(0,Q.jsx)(iA.Item,{label:`更新时间`,children:G7(a.updatedAt)}),(0,Q.jsx)(iA.Item,{label:`完成时间`,children:G7(a.completedAt)}),a.errorMessage?(0,Q.jsx)(iA.Item,{label:`错误信息`,span:3,children:(0,Q.jsx)(ff,{type:`error`,showIcon:!0,message:a.errorMessage})}):null]})}),(0,Q.jsx)(aO,{title:`步骤进度`,children:(0,Q.jsx)(hN,{items:h})}),(0,Q.jsx)(aO,{title:`最终结果预览`,children:(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`,gap:16},children:[p?null:(0,Q.jsx)(aO,{size:`small`,title:`最终图片`,children:(0,Q.jsx)(D7,{type:`image`,url:a.finalImageUrl||a.imageGeneration?.resultImageUrl,height:220,emptyDescription:`暂无最终图片`})}),(0,Q.jsx)(aO,{size:`small`,title:`最终视频封面`,children:(0,Q.jsx)(D7,{type:`image`,url:a.finalVideoCoverUrl||a.videoGeneration?.resultVideoCoverUrl,height:220,emptyDescription:`暂无最终视频封面`})}),(0,Q.jsx)(aO,{size:`small`,title:`最终视频`,children:(0,Q.jsx)(D7,{type:`video`,url:a.finalVideoUrl||a.videoGeneration?.resultVideoUrl,height:220,emptyDescription:`暂无最终视频`})})]})}),(0,Q.jsx)(zh,{defaultActiveKey:g,items:D}),(0,Q.jsx)(zh,{items:[{key:`steps-table`,label:`完整步骤列表`,children:(0,Q.jsx)(ZF,{rowKey:`id`,size:`small`,pagination:!1,dataSource:a.steps||[],scroll:{x:1100},columns:[{title:`序号`,dataIndex:`stepIndex`,width:70},{title:`步骤`,dataIndex:`stepCode`,width:160,render:e=>(0,Q.jsx)(xb,{title:e,children:N7(e)})},{title:`状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(P7,{status:e})},{title:`版本`,dataIndex:`version`,width:70},{title:`当前有效`,dataIndex:`isCurrent`,width:90,render:e=>e?(0,Q.jsx)(rI,{color:`success`,children:`是`}):(0,Q.jsx)(rI,{children:`否`})},{title:`Chat任务`,dataIndex:`chatTaskId`,width:160,render:e=>(0,Q.jsx)(xb,{title:e||``,children:K7(e)})},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:G7},{title:`完成时间`,dataIndex:`completedAt`,width:170,render:G7},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0,render:e=>e||`-`}]})},{key:`raw-detail`,label:`完整详情原始 JSON`,children:(0,Q.jsx)(E7,{value:a,maxHeight:520})}]})]})})},G4e=()=>(0,Q.jsx)(X7,{moduleType:`hot_opening_replicate`}),K4e={pending_analysis:{text:`等待分析`,color:`default`,active:!0,terminal:!1},analyzing:{text:`分析中`,color:`processing`,active:!0,terminal:!1},analysis_completed:{text:`分析完成`,color:`blue`,active:!1,terminal:!1},analysis_failed:{text:`分析失败`,color:`error`,active:!1,terminal:!0},splitting:{text:`拆镜中`,color:`processing`,active:!0,terminal:!1},split_completed:{text:`拆镜完成`,color:`success`,active:!1,terminal:!0},partial_failed:{text:`部分失败`,color:`warning`,active:!1,terminal:!0},failed:{text:`失败`,color:`error`,active:!1,terminal:!0},deleted:{text:`已删除`,color:`default`,active:!1,terminal:!0}},q4e={not_required:{text:`无需分析`,color:`default`,active:!1,terminal:!0},pending:{text:`等待分析`,color:`default`,active:!0,terminal:!1},processing:{text:`分析中`,color:`processing`,active:!0,terminal:!1},completed:{text:`分析完成`,color:`success`,active:!1,terminal:!0},failed:{text:`分析失败`,color:`error`,active:!1,terminal:!0}},J4e={none:{text:`未拆镜`,color:`default`,active:!1,terminal:!0},pending:{text:`等待拆镜`,color:`default`,active:!0,terminal:!1},processing:{text:`拆镜中`,color:`processing`,active:!0,terminal:!1},retry_waiting:{text:`等待拆镜重试`,color:`orange`,active:!0,terminal:!1},completed:{text:`拆镜完成`,color:`success`,active:!1,terminal:!0},failed:{text:`拆镜失败`,color:`error`,active:!1,terminal:!0}},Y4e={not_started:{text:`未复刻`,color:`default`,active:!1,terminal:!0},project_created:{text:`已创建项目`,color:`processing`,active:!0,terminal:!1},pending:{text:`等待复刻`,color:`default`,active:!0,terminal:!1},waiting_user:{text:`等待用户操作`,color:`processing`,active:!0,terminal:!1},processing:{text:`复刻中`,color:`processing`,active:!0,terminal:!1},completed:{text:`复刻完成`,color:`success`,active:!1,terminal:!0},failed:{text:`复刻失败`,color:`error`,active:!1,terminal:!0},cancelled:{text:`已取消`,color:`default`,active:!1,terminal:!0},canceled:{text:`已取消`,color:`default`,active:!1,terminal:!0}},X4e=e=>String(e||``).trim().toLowerCase(),Z7=(e,t,n=`未知状态`)=>{let r=X4e(e);return{key:r,...t[r]||{text:r||n,color:`default`,active:!1,terminal:!1}}},Q7=e=>Z7(e,K4e),$7=e=>Z7(e,q4e),e9=e=>Z7(e,J4e),t9=e=>Z7(e,Y4e),n9=20,Z4e=[{value:`pending_analysis`,label:`等待分析`},{value:`analyzing`,label:`分析中`},{value:`analysis_completed`,label:`分析完成`},{value:`analysis_failed`,label:`分析失败`},{value:`splitting`,label:`拆镜中`},{value:`split_completed`,label:`拆镜完成`},{value:`partial_failed`,label:`部分失败`},{value:`failed`,label:`失败`}],Q4e=[{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],$4e=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],r9=e=>e?v2(e):`-`,i9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,a9=({status:e,kind:t=`task`})=>{if(!e)return(0,Q.jsx)(rI,{children:`-`});let n=t===`analysis`?$7(e):t===`split`?e9(e):Q7(e);return(0,Q.jsx)(rI,{color:n.color,children:n.text})},e3e=()=>{let e=Qe(),[t,n]=(0,C.useState)([]),[r,i]=(0,C.useState)(0),[a,o]=(0,C.useState)(!1),[s,c]=(0,C.useState)(1),[l,u]=(0,C.useState)(``),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(``),[h,g]=(0,C.useState)(``),[_,v]=(0,C.useState)(``),[y,b]=(0,C.useState)(``),[x,S]=(0,C.useState)(null),[w,T]=(0,C.useState)(``),[E,D]=(0,C.useState)(``),[O,k]=(0,C.useState)(``),[A,j]=(0,C.useState)(null),[M,N]=(0,C.useState)(0),P=(0,C.useCallback)(async()=>{o(!0);try{let e=await YJe({status:l||void 0,analysisStatus:d||void 0,splitStatus:p||void 0,keyword:w||void 0,userId:E||void 0,userName:O||void 0,createdStart:A?.[0]?.toISOString?.(),createdEnd:A?.[1]?.toISOString?.(),page:s,pageSize:n9});n(e.items||[]),i(e.total||0)}catch(e){X.error(e?.message||`加载拆镜复刻任务失败`)}finally{o(!1)}},[d,s,A,w,E,O,p,l]);(0,C.useEffect)(()=>{P()},[P,M]);let F=t.some(e=>Q7(e.status).active||$7(e.analysisStatus).active||e9(e.splitStatus).active);(0,C.useEffect)(()=>{if(!F)return;let e=()=>{document.visibilityState===`visible`&&P()},t=window.setInterval(e,3e4);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[F,P]);let I=()=>{T(h.trim()),D(_.trim()),k(y.trim()),j(x),c(1)};return(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16,flexWrap:`wrap`,gap:12},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(oV,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`拆镜复刻`}),(0,Q.jsxs)(rI,{color:`purple`,children:[r,` 条记录`]})]}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>N(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`总任务状态`,style:{width:150},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:Z4e}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:d||void 0,onChange:e=>{f(e||``),c(1)},options:Q4e}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`拆镜状态`,style:{width:140},value:p||void 0,onChange:e=>{m(e||``),c(1)},options:$4e}),(0,Q.jsx)(Fj,{allowClear:!0,prefix:(0,Q.jsx)(Vy,{}),placeholder:`关键词:标题/内容/分类/受众`,style:{width:260},value:h,onChange:e=>g(e.target.value),onPressEnter:I}),(0,Q.jsx)(Fj,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:_,onChange:e=>v(e.target.value),onPressEnter:I}),(0,Q.jsx)(Fj,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:y,onChange:e=>b(e.target.value),onPressEnter:I}),(0,Q.jsx)(eA.RangePicker,{showTime:!0,value:x,onChange:S,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(Vy,{}),onClick:I,children:`搜索`}),(0,Q.jsx)(rS,{onClick:()=>{u(``),f(``),m(``),g(``),v(``),b(``),S(null),T(``),D(``),k(``),j(null),c(1),N(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:n9,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1500},columns:[{title:`任务集ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(xb,{title:e,children:i9(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(bA,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:i9(t.userId)})]})},{title:`任务信息`,width:300,render:(e,t)=>(0,Q.jsxs)(bA,{direction:`vertical`,size:2,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.title||`-`}),(0,Q.jsxs)(Z.Text,{type:`secondary`,ellipsis:!0,style:{maxWidth:280},children:[`分类:`,t.originalVideoCategory||`-`]}),(0,Q.jsxs)(Z.Text,{type:`secondary`,ellipsis:!0,style:{maxWidth:280},children:[`受众:`,t.originalVideoAudience||`-`]})]})},{title:`总状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(a9,{status:e,kind:`task`})},{title:`分析状态`,dataIndex:`analysisStatus`,width:110,render:e=>(0,Q.jsx)(a9,{status:e,kind:`analysis`})},{title:`拆镜状态`,dataIndex:`splitStatus`,width:110,render:e=>(0,Q.jsx)(a9,{status:e,kind:`split`})},{title:`切片进度`,width:180,render:(e,t)=>{let n=t.segmentCount||0,r=t.completedSegmentCount||0;return(0,Q.jsx)(GM,{size:`small`,percent:n?Math.round(r/n*100):0,format:()=>`${r}/${n}`})}},{title:`失败片段`,dataIndex:`failedSegmentCount`,width:90,render:e=>e?(0,Q.jsx)(rI,{color:`error`,children:e}):(0,Q.jsx)(rI,{children:`0`})},{title:`视频时长`,dataIndex:`videoDurationSeconds`,width:100,render:e=>`${Number(e||0).toFixed(1)}s`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:r9},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:r9},{title:`操作`,fixed:`right`,width:120,render:(t,n)=>(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>e(`/shot-replications/task-sets/${n.id}`),children:`查看切片`})}]})]})},t3e=`https://ceshi.apiforeign.minzhongzc.com`.replace(/\/api\/?$/i,``).replace(/\/$/,``),o9=20,n3e=[{value:`ai_suggestion`,label:`AI 建议`},{value:`custom`,label:`自定义`}],r3e=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],i3e=[{value:`not_required`,label:`无需分析`},{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],a3e=[{value:`not_started`,label:`未复刻`},{value:`project_created`,label:`已创建项目`},{value:`processing`,label:`复刻中`},{value:`completed`,label:`复刻完成`},{value:`failed`,label:`复刻失败`}],o3e=e=>{if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${t3e}${t.startsWith(`/`)?t:`/${t}`}`:``},s9=e=>e?v2(e):`-`,c9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,l9=({status:e,kind:t=`task`})=>{if(!e)return(0,Q.jsx)(rI,{children:`-`});let n=t===`analysis`?$7(e):t===`split`?e9(e):t===`replicate`?t9(e):Q7(e);return(0,Q.jsx)(rI,{color:n.color,children:n.text})},u9=({value:e,maxHeight:t=420})=>(0,Q.jsx)(`pre`,{style:{margin:0,padding:12,maxHeight:t,overflow:`auto`,background:`#0f172a`,color:`#e2e8f0`,borderRadius:8,fontSize:12,lineHeight:1.6},children:JSON.stringify(e??{},null,2)}),d9=({url:e,height:t=280})=>e?(0,Q.jsx)(`video`,{src:o3e(e),controls:!0,preload:`metadata`,style:{width:`100%`,maxHeight:t,borderRadius:12,background:`#0f172a`}}):(0,Q.jsx)(Dy,{description:`暂无视频`,image:Dy.PRESENTED_IMAGE_SIMPLE}),s3e=({items:e=[]})=>(0,Q.jsx)(ZF,{rowKey:`index`,size:`small`,pagination:!1,dataSource:e,scroll:{x:!0},columns:[{title:`序号`,dataIndex:`index`,width:70},{title:`时间节点`,dataIndex:`timeNode`,width:120},{title:`开始`,dataIndex:`startSecond`,width:80,render:e=>`${Number(e||0).toFixed(2)}s`},{title:`结束`,dataIndex:`endSecond`,width:80,render:e=>`${Number(e||0).toFixed(2)}s`},{title:`内容`,dataIndex:`content`,ellipsis:!0},{title:`分类`,dataIndex:`category`,width:140},{title:`受众`,dataIndex:`audience`,ellipsis:!0}]}),c3e=()=>{let{taskSetId:e}=nt(),t=Qe(),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)([]),[o,s]=(0,C.useState)(0),[c,l]=(0,C.useState)(1),[u,d]=(0,C.useState)(!1),[f,p]=(0,C.useState)(!1),[m,h]=(0,C.useState)(0),[g,_]=(0,C.useState)(``),[v,y]=(0,C.useState)(``),[b,x]=(0,C.useState)(``),[S,w]=(0,C.useState)(``),[T,E]=(0,C.useState)(!1),[D,O]=(0,C.useState)(null),k=(0,C.useCallback)(async()=>{if(e){d(!0);try{r(await XJe(e))}catch(e){X.error(e?.message||`加载拆镜任务详情失败`)}finally{d(!1)}}},[e]),A=(0,C.useCallback)(async()=>{if(e){p(!0);try{let t=await ZJe(e,{sourceMode:g||void 0,splitStatus:v||void 0,analysisStatus:b||void 0,replicateStatus:S||void 0,page:c,pageSize:o9});a(t.items||[]),s(t.total||0)}catch(e){X.error(e?.message||`加载拆镜片段失败`)}finally{p(!1)}}},[b,c,S,g,v,e]);(0,C.useEffect)(()=>{k()},[k,m]),(0,C.useEffect)(()=>{A()},[A,m]);let j=!!(n&&(Q7(n.status).active||$7(n.analysisStatus).active||e9(n.splitStatus).active||i.some(e=>e9(e.splitStatus).active||$7(e.analysisStatus).active||t9(e.replicateStatus).active)));(0,C.useEffect)(()=>{if(!j)return;let e=()=>{document.visibilityState===`visible`&&(k(),A())},t=window.setInterval(e,2e4);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[j,k,A]);let M=async e=>{E(!0),O(null);try{O(await QJe(e))}catch(e){X.error(e?.message||`加载片段详情失败`)}};return u&&!n?(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(oM,{size:`large`})}):n?(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bA,{style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{icon:(0,Q.jsx)(iR,{}),onClick:()=>t(`/shot-replications`),children:`返回列表`}),(0,Q.jsx)(Z.Title,{level:3,style:{margin:0},children:`拆镜任务详情`}),(0,Q.jsx)(l9,{status:n.status})]}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>h(e=>e+1),children:`刷新`})]}),(0,Q.jsx)(aO,{children:(0,Q.jsxs)(iA,{title:`总任务信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`任务集ID`,children:n.id}),(0,Q.jsx)(iA.Item,{label:`用户ID`,children:n.userId||`-`}),(0,Q.jsx)(iA.Item,{label:`用户名`,children:n.userName||`-`}),(0,Q.jsx)(iA.Item,{label:`标题`,children:n.title||`-`}),(0,Q.jsxs)(iA.Item,{label:`视频时长`,children:[Number(n.videoDurationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(iA.Item,{label:`总状态`,children:(0,Q.jsx)(l9,{status:n.status,kind:`task`})}),(0,Q.jsx)(iA.Item,{label:`分析状态`,children:(0,Q.jsx)(l9,{status:n.analysisStatus,kind:`analysis`})}),(0,Q.jsx)(iA.Item,{label:`拆镜状态`,children:(0,Q.jsx)(l9,{status:n.splitStatus,kind:`split`})}),(0,Q.jsxs)(iA.Item,{label:`片段数量`,children:[n.completedSegmentCount,`/`,n.segmentCount,`,失败 `,n.failedSegmentCount]}),(0,Q.jsx)(iA.Item,{label:`原视频分类`,children:n.originalVideoCategory||`-`}),(0,Q.jsx)(iA.Item,{label:`创建时间`,children:s9(n.createdAt)}),(0,Q.jsx)(iA.Item,{label:`更新时间`,children:s9(n.updatedAt)}),(0,Q.jsx)(iA.Item,{label:`原视频内容`,span:3,children:n.originalVideoContent||`-`}),(0,Q.jsx)(iA.Item,{label:`原视频受众`,span:3,children:n.originalVideoAudience||`-`}),n.analysisErrorMessage?(0,Q.jsx)(iA.Item,{label:`分析错误`,span:3,children:(0,Q.jsx)(ff,{type:`error`,message:n.analysisErrorMessage})}):null,n.splitErrorMessage?(0,Q.jsx)(iA.Item,{label:`拆镜错误`,span:3,children:(0,Q.jsx)(ff,{type:`error`,message:n.splitErrorMessage})}):null]})}),(0,Q.jsx)(aO,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RY,{}),`原视频预览`]}),children:(0,Q.jsx)(d9,{url:n.videoUrl,height:360})}),(0,Q.jsxs)(aO,{title:`AI 建议拆镜列表`,children:[n.aiSuggestions?.length?(0,Q.jsx)(s3e,{items:n.aiSuggestions}):(0,Q.jsx)(Dy,{description:`暂无 AI 建议拆镜`}),(0,Q.jsx)(zh,{size:`small`,ghost:!0,style:{marginTop:12},items:[{key:`raw`,label:`查看原视频分析完整 JSON`,children:(0,Q.jsx)(u9,{value:n.analysisResultJson})}]})]}),(0,Q.jsxs)(aO,{title:`片段列表`,children:[(0,Q.jsxs)(bA,{wrap:!0,style:{marginBottom:16},children:[(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`片段来源`,style:{width:140},value:g||void 0,options:n3e,onChange:e=>{_(e||``),l(1)}}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`切割状态`,style:{width:140},value:v||void 0,options:r3e,onChange:e=>{y(e||``),l(1)}}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:b||void 0,options:i3e,onChange:e=>{x(e||``),l(1)}}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`复刻状态`,style:{width:150},value:S||void 0,options:a3e,onChange:e=>{w(e||``),l(1)}}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(Vy,{}),onClick:()=>h(e=>e+1),children:`筛选`}),(0,Q.jsx)(rS,{onClick:()=>{_(``),y(``),x(``),w(``),l(1),h(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:f,dataSource:i,pagination:{current:c,pageSize:o9,total:o,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:l},scroll:{x:1550},columns:[{title:`片段ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(xb,{title:e,children:c9(e)})},{title:`序号`,dataIndex:`segmentIndex`,width:70},{title:`来源`,dataIndex:`sourceMode`,width:100,render:e=>e===`ai_suggestion`?(0,Q.jsx)(rI,{color:`purple`,children:`AI建议`}):(0,Q.jsx)(rI,{color:`cyan`,children:`自定义`})},{title:`时间节点`,dataIndex:`timeNode`,width:130},{title:`时长`,dataIndex:`durationSeconds`,width:90,render:e=>`${Number(e||0).toFixed(2)}s`},{title:`切割`,dataIndex:`splitStatus`,width:100,render:e=>(0,Q.jsx)(l9,{status:e,kind:`split`})},{title:`分析`,dataIndex:`analysisStatus`,width:100,render:e=>(0,Q.jsx)(l9,{status:e,kind:`analysis`})},{title:`复刻`,dataIndex:`replicateStatus`,width:110,render:e=>(0,Q.jsx)(l9,{status:e,kind:`replicate`})},{title:`片段内容`,dataIndex:`segmentContent`,width:260,ellipsis:!0,render:e=>e||`-`},{title:`分类`,dataIndex:`segmentCategory`,width:120,render:e=>e||`-`},{title:`关联项目`,width:220,render:(e,n)=>n.moduleProjectId?(0,Q.jsxs)(bA,{direction:`vertical`,size:0,children:[(0,Q.jsx)(rS,{type:`link`,style:{padding:0},onClick:()=>t(`/shot-replications/projects/${n.moduleProjectId}?flow_version=${n.moduleProjectFlowVersion===`v2`?`v2`:`v1`}`),children:c9(n.moduleProjectId)}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:n.moduleProjectTitle||N7(n.moduleProjectCurrentStepCode)}),(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsx)(l9,{status:n.moduleProjectStatus,kind:`replicate`}),(0,Q.jsx)(rI,{color:n.moduleProjectFlowVersion===`v2`?`blue`:`default`,children:String(n.moduleProjectFlowVersion||`v1`).toUpperCase()})]})]}):(0,Q.jsx)(rI,{children:`未创建`})},{title:`错误`,dataIndex:`splitLastError`,width:220,ellipsis:!0,render:(e,t)=>e||t.analysisErrorMessage||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:s9},{title:`操作`,fixed:`right`,width:100,render:(e,t)=>(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>M(t.id),children:`详情`})}]})]})]}),(0,Q.jsx)(vhe,{title:`片段详情`,width:720,open:T,onClose:()=>E(!1),destroyOnClose:!0,children:D?(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`片段ID`,span:2,children:D.id}),(0,Q.jsx)(iA.Item,{label:`时间节点`,children:D.timeNode}),(0,Q.jsxs)(iA.Item,{label:`时长`,children:[Number(D.durationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(iA.Item,{label:`切割状态`,children:(0,Q.jsx)(l9,{status:D.splitStatus,kind:`split`})}),(0,Q.jsx)(iA.Item,{label:`分析状态`,children:(0,Q.jsx)(l9,{status:D.analysisStatus,kind:`analysis`})}),(0,Q.jsx)(iA.Item,{label:`复刻状态`,children:(0,Q.jsx)(l9,{status:D.replicateStatus,kind:`replicate`})}),(0,Q.jsx)(iA.Item,{label:`关联项目`,children:D.moduleProjectId?(0,Q.jsx)(rS,{type:`link`,onClick:()=>t(`/shot-replications/projects/${D.moduleProjectId}?flow_version=${D.moduleProjectFlowVersion===`v2`?`v2`:`v1`}`),children:D.moduleProjectId}):`-`}),(0,Q.jsx)(iA.Item,{label:`项目流程版本`,children:D.moduleProjectId?(0,Q.jsx)(rI,{color:D.moduleProjectFlowVersion===`v2`?`blue`:`default`,children:String(D.moduleProjectFlowVersion||`v1`).toUpperCase()}):`-`}),(0,Q.jsx)(iA.Item,{label:`片段内容`,span:2,children:D.segmentContent||`-`}),(0,Q.jsx)(iA.Item,{label:`片段分类`,children:D.segmentCategory||`-`}),(0,Q.jsx)(iA.Item,{label:`片段受众`,children:D.segmentAudience||`-`})]}),(0,Q.jsx)(aO,{size:`small`,title:`片段视频`,children:(0,Q.jsx)(d9,{url:D.segmentVideoUrl,height:300})}),D.splitLastError?(0,Q.jsx)(ff,{type:`error`,message:`切割错误`,description:D.splitLastError}):null,D.analysisErrorMessage?(0,Q.jsx)(ff,{type:`error`,message:`分析错误`,description:D.analysisErrorMessage}):null,(0,Q.jsx)(zh,{size:`small`,items:[{key:`analysis`,label:`片段分析 JSON`,children:(0,Q.jsx)(u9,{value:D.analysisJson})},{key:`suggestion`,label:`AI 建议原始 JSON`,children:(0,Q.jsx)(u9,{value:D.aiSuggestionJson})}]})]}):(0,Q.jsx)(oM,{})})]}):(0,Q.jsx)(aO,{style:{margin:24},children:(0,Q.jsx)(Dy,{description:`未找到拆镜任务详情`})})},{Title:l3e,Text:f9,Paragraph:u3e}=Z,{TextArea:p9}=Fj,m9=[{label:`对象`,value:`object`},{label:`数组`,value:`array`},{label:`字符串`,value:`string`},{label:`数字`,value:`number`},{label:`布尔`,value:`boolean`},{label:`流程数组`,value:`flow`}],h9=`画面属性`,d3e=new Set([`视频时长`,`视频比例`,`清晰度`,`帧率`,`推荐分辨率`]);function g9(e,t){return e===h9&&!!t&&d3e.has(t)}function _9(e){return e===h9}function f3e(e){return JSON.parse(JSON.stringify(e??null))}function v9(e,t,n,r){return!e||typeof e!=`object`?r:e[t]===void 0?e[n]===void 0?r:e[n]:e[t]}function p3e(e){return{key:String(e?.key||e?.label||`新流程字段`),label:String(e?.label||e?.key||`新流程字段`),enabled:e?.enabled??!0,editable:e?.editable??!0,maxLength:Number(v9(e,`maxLength`,`max_length`,800)||800),value:e?.value??``}}function y9(e){let t=String(e?.type||`string`),n={key:String(e?.key||e?.label||`新字段`),label:String(e?.label||e?.key||`新字段`),type:t,enabled:e?.enabled??!0,editable:e?.editable??!0,maxLength:Number(v9(e,`maxLength`,`max_length`,t===`flow`?800:1e3)||(t===`flow`?800:1e3))};if(t===`object`)n.children=Array.isArray(e?.children)?e.children.map(y9):[];else if(t===`flow`){n.contentKey=String(v9(e,`contentKey`,`content_key`,e?.key===`镜头流程`?`镜头内容`:`动作内容`));let t=v9(e,`contentAliases`,`content_aliases`,[]);n.contentAliases=Array.isArray(t)?t.map(e=>String(e)).filter(Boolean):[];let r=v9(e,`itemFields`,`item_fields`,[]);n.itemFields=Array.isArray(r)&&r.length>0?r.map(p3e):[{key:n.contentKey,label:n.contentKey,enabled:!0,editable:!0,maxLength:n.maxLength||800,value:``}]}else n.value=e?.value??(t===`array`?[]:t===`boolean`?!1:t===`number`?0:`无`);return n}function m3e(e){let t=Array.isArray(e?.segments)?e.segments:[],n=Array.isArray(e?.ratios)?e.ratios:[];return{minDuration:Number(v9(e,`minDuration`,`min_duration`,1)||1),maxDuration:Number(v9(e,`maxDuration`,`max_duration`,5)||5),ratios:n.map(e=>Number(e||0)),segments:t.map(e=>({stage:String(e?.stage||`新阶段`),description:String(e?.description||e?.desc||`阶段说明`)}))}}function b9(e){let t=Array.isArray(e?.sections)?e.sections:[],n=Array.isArray(e?.timePlanRules)?e.timePlanRules:Array.isArray(e?.time_plan_rules)?e.time_plan_rules:[];return{version:e?.version||`video_prompt_schema_config_v1`,enabled:e?.enabled??!0,sections:t.map(y9),timePlanRules:n.map(m3e)}}function x9(e,t){let n=_9(e.key),r=g9(t,e.key),i={key:e.key,label:e.label,type:r?`string`:e.type,enabled:n||r?!0:!!e.enabled,editable:r?!1:!!e.editable,max_length:e.maxLength};return e.type===`object`?i.children=(e.children||[]).map(t=>x9(t,e.key)):e.type===`flow`?(i.content_key=e.contentKey,i.content_aliases=e.contentAliases||[],i.item_fields=(e.itemFields||[]).map(e=>({key:e.key,label:e.label,enabled:!!e.enabled,editable:!!e.editable,max_length:e.maxLength,value:e.value??``}))):i.value=e.value,i}function S9(e,t){return{version:e.version,enabled:t,sections:(e.sections||[]).map(e=>x9(e)),time_plan_rules:(e.timePlanRules||[]).map(e=>({min_duration:e.minDuration,max_duration:e.maxDuration,ratios:e.ratios||[],segments:(e.segments||[]).map(e=>({stage:e.stage,description:e.description}))}))}}function C9(e){return e?.runtimeSchema||e?.runtime_schema||{}}function w9(e){let t=e?.timePlan||e?.time_plan||C9(e)?.动态时间规划||[];return Array.isArray(t)?t:[]}function h3e(e){return e?.schemaConfigSnapshot||e?.schema_config_snapshot||{}}function g3e(e,t){let n=new Blob([JSON.stringify(t,null,2)],{type:`application/json;charset=utf-8`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e,i.click(),URL.revokeObjectURL(r)}var T9=(e=`string`)=>({key:`新字段`,label:`新字段`,type:e,enabled:!0,editable:!0,maxLength:e===`flow`?800:1e3,value:e===`array`?[]:e===`boolean`?!1:e===`number`?0:`无`,children:e===`object`?[]:void 0,contentKey:e===`flow`?`动作内容`:void 0,contentAliases:e===`flow`?[`动作内容`,`动作`,`动作说明`,`内容`,`说明`]:void 0,itemFields:e===`flow`?[{key:`动作内容`,label:`动作内容`,enabled:!0,editable:!0,maxLength:800,value:``}]:void 0}),_3e=()=>({minDuration:1,maxDuration:5,ratios:[.2,.4,.4],segments:[{stage:`开场吸引`,description:`快速吸引注意力`},{stage:`核心展示`,description:`展示主体动作、核心卖点或主要视觉内容`},{stage:`收尾引导`,description:`给出行动引导并稳定落版`}]}),v3e=()=>{let[e,t]=(0,C.useState)(!1),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)(!0),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(null),[u,d]=(0,C.useState)(null),[f,p]=(0,C.useState)(!1),[m,h]=(0,C.useState)(null),[g]=Y.useForm(),_=(0,C.useRef)(null),v=c?.sections||[],y=c?.timePlanRules||[],b=async()=>{t(!0);try{let e=await eYe();a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),l(b9(e.data)),d(b9(e.defaultData??e.default_data))}catch(e){X.error(e?.message||`加载失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{b()},[]);let x=e=>{l(t=>{let n=b9(f3e(t));return e(n),n})},S=async()=>{if(c){r(!0);try{let e=await tYe({is_enabled:i,data:S9(c,i)});l(b9(e.data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),X.success(`保存成功`)}catch(e){X.error(e?.message||`保存失败`)}finally{r(!1)}}},w=async()=>{r(!0);try{let e=await nYe();l(b9(e.data)),d(b9(e.defaultData??e.default_data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),X.success(`已恢复默认配置`)}catch(e){X.error(e?.message||`恢复默认失败`)}finally{r(!1)}},T=async()=>{try{g3e(`video_prompt_schema_config.json`,await rYe())}catch(e){X.error(e?.message||`导出失败`)}},E=async e=>{let t=e.target.files?.[0];if(e.target.value=``,t)try{let e=await t.text(),n=JSON.parse(e),r=n.data||n,o=await iYe({is_enabled:!!(n.isEnabled??n.is_enabled??i),data:r});l(b9(o.data)),a(!!(o.isEnabled??o.is_enabled??o.data?.enabled??!1)),s(!!(o.usingDefault??o.using_default??!1)),X.success(`导入成功`)}catch(e){X.error(e?.message||`导入失败,请检查 JSON 格式`)}},D=()=>{g.setFieldsValue({duration:8,aspectRatio:`9:16`,resolution:`1080p`,frameRate:`30fps`}),h(null),p(!0)},O=async()=>{if(!c)return;let e=await g.validateFields();try{h(await aYe({is_enabled:i,data:S9(c,i),duration:Number(e.duration||8),aspect_ratio:e.aspectRatio,resolution:e.resolution,frame_rate:e.frameRate}))}catch(e){X.error(e?.message||`预览失败`)}},k=()=>{x(e=>{e.sections.push(T9(`object`))})},A=(e,t)=>{x(n=>{let r=n.sections[e];_9(r?.key)&&(delete t.key,delete t.type,delete t.enabled),n.sections[e]={...n.sections[e],...t},t.type===`object`&&(n.sections[e].children=n.sections[e].children||[]),t.type===`flow`&&(n.sections[e].contentKey=n.sections[e].contentKey||`动作内容`,n.sections[e].contentAliases=n.sections[e].contentAliases||[`动作内容`,`动作`,`动作说明`,`内容`,`说明`],n.sections[e].itemFields=n.sections[e].itemFields||[{key:`动作内容`,label:`动作内容`,enabled:!0,editable:!0,maxLength:800,value:``}])})},j=e=>{x(t=>{t.sections.splice(e,1)})},M=e=>{x(t=>{let n=t.sections[e];n.children=n.children||[],n.children.push(T9(`string`))})},N=(e,t,n)=>{x(r=>{let i=r.sections[e],a=i.children||[],o=a[t];g9(i?.key,o?.key)&&(delete n.key,delete n.type,delete n.enabled,n.editable=!1),a[t]={...a[t],...n},r.sections[e].children=a})},P=(e,t)=>{x(n=>{n.sections[e].children?.splice(t,1)})},F=e=>{x(t=>{let n=t.sections[e];n.itemFields=n.itemFields||[],n.itemFields.push({key:`新流程字段`,label:`新流程字段`,enabled:!0,editable:!0,maxLength:800,value:``})})},I=(e,t,n)=>{x(r=>{let i=r.sections[e].itemFields||[];i[t]={...i[t],...n},r.sections[e].itemFields=i})},L=(e,t)=>{x(n=>{n.sections[e].itemFields?.splice(t,1)})},R=()=>{x(e=>{e.timePlanRules.push(_3e())})},z=(e,t)=>{x(n=>{n.timePlanRules[e]={...n.timePlanRules[e],...t}})},B=e=>{x(t=>{t.timePlanRules.splice(e,1)})},V=(e,t,n)=>{x(r=>{let i=r.timePlanRules[e];n.ratio!==void 0&&(i.ratios[t]=Number(n.ratio||0)),n.stage!==void 0&&(i.segments[t].stage=n.stage),n.description!==void 0&&(i.segments[t].description=n.description)})},H=e=>{x(t=>{let n=t.timePlanRules[e];n.ratios.push(1),n.segments.push({stage:`新阶段`,description:`阶段说明`})})},U=(e,t)=>{x(n=>{let r=n.timePlanRules[e];r.ratios.splice(t,1),r.segments.splice(t,1)})},W=(0,C.useMemo)(()=>v.map((e,t)=>({key:`section-${t}`,label:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(f9,{strong:!0,children:e.label||e.key||`未命名分组`}),e.key&&e.key!==e.label&&(0,Q.jsxs)(rI,{color:`blue`,children:[`key: `,e.key]}),(0,Q.jsx)(rI,{children:e.type}),_9(e.key)&&(0,Q.jsx)(rI,{color:`red`,children:`系统锁定`}),!e.enabled&&!_9(e.key)&&(0,Q.jsx)(rI,{color:`default`,children:`已禁用`})]}),children:(0,Q.jsxs)(bA,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsxs)(XM,{gutter:12,align:`middle`,children:[(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(Fj,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:_9(e.key),onChange:e=>A(t,{key:e.target.value})})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(Fj,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>A(t,{label:e.target.value})})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(Wy,{value:e.type,options:m9,style:{width:`100%`},disabled:_9(e.key),onChange:e=>A(t,{type:e})})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsxs)(bA,{children:[`启用`,(0,Q.jsx)(vN,{checked:_9(e.key)?!0:e.enabled,disabled:_9(e.key),onChange:e=>A(t,{enabled:e})})]})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsxs)(bA,{children:[`可编辑`,(0,Q.jsx)(vN,{checked:e.editable,onChange:e=>A(t,{editable:e})})]})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(ok,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>A(t,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(OO,{span:2,style:{textAlign:`right`},children:(0,Q.jsx)(xM,{title:`确认删除该分组?`,disabled:_9(e.key),onConfirm:()=>j(t),children:(0,Q.jsx)(rS,{danger:!0,icon:(0,Q.jsx)(oI,{}),disabled:_9(e.key)})})})]}),e.type===`object`&&(0,Q.jsx)(aO,{size:`small`,title:`对象字段`,extra:(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(ND,{}),onClick:()=>M(t),children:`新增字段`}),children:(0,Q.jsx)(bA,{direction:`vertical`,style:{width:`100%`},children:(e.children||[]).map((n,r)=>(0,Q.jsxs)(XM,{gutter:8,align:`middle`,children:[(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(Fj,{addonBefore:`key`,value:n.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:g9(e.key,n.key),onChange:e=>N(t,r,{key:e.target.value})})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(Fj,{addonBefore:`label`,value:n.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>N(t,r,{label:e.target.value})})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsx)(Wy,{value:n.type,options:m9.filter(e=>e.value!==`object`&&e.value!==`flow`),style:{width:`100%`},disabled:g9(e.key,n.key),onChange:e=>N(t,r,{type:e})})}),(0,Q.jsx)(OO,{span:2,children:(0,Q.jsxs)(bA,{children:[`启用`,(0,Q.jsx)(vN,{checked:g9(e.key,n.key)?!0:n.enabled,disabled:g9(e.key,n.key),onChange:e=>N(t,r,{enabled:e})})]})}),(0,Q.jsx)(OO,{span:2,children:(0,Q.jsxs)(bA,{children:[`编辑`,(0,Q.jsx)(vN,{checked:g9(e.key,n.key)?!1:n.editable,disabled:g9(e.key,n.key),onChange:e=>N(t,r,{editable:e})})]})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsx)(ok,{min:1,max:2e4,value:n.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>N(t,r,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(OO,{span:5,children:(0,Q.jsx)(Fj,{value:Array.isArray(n.value)?n.value.join(`/`):String(n.value??``),maxLength:n.maxLength||1e3,placeholder:`默认值`,onChange:e=>N(t,r,{value:n.type===`array`?e.target.value.split(`/`).filter(Boolean):e.target.value})})}),(0,Q.jsx)(OO,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)(rS,{danger:!0,size:`small`,icon:(0,Q.jsx)(oI,{}),disabled:g9(e.key,n.key),onClick:()=>P(t,r)})})]},`child-${t}-${r}`))})}),e.type===`flow`&&(0,Q.jsxs)(aO,{size:`small`,title:`流程数组对象字段`,extra:(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(ND,{}),onClick:()=>F(t),children:`新增流程字段`}),children:[(0,Q.jsxs)(XM,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(OO,{span:6,children:(0,Q.jsx)(Fj,{addonBefore:`内容字段`,value:e.contentKey,maxLength:64,onChange:e=>A(t,{contentKey:e.target.value})})}),(0,Q.jsx)(OO,{span:18,children:(0,Q.jsx)(Fj,{addonBefore:`别名 / 分隔`,value:(e.contentAliases||[]).join(`/`),onChange:e=>A(t,{contentAliases:e.target.value.split(`/`).map(e=>e.trim()).filter(Boolean)})})})]}),(0,Q.jsx)(bA,{direction:`vertical`,style:{width:`100%`},children:(e.itemFields||[]).map((e,n)=>(0,Q.jsxs)(XM,{gutter:8,align:`middle`,children:[(0,Q.jsx)(OO,{span:5,children:(0,Q.jsx)(Fj,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`流程对象字段名`,onChange:e=>I(t,n,{key:e.target.value})})}),(0,Q.jsx)(OO,{span:5,children:(0,Q.jsx)(Fj,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>I(t,n,{label:e.target.value})})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsxs)(bA,{children:[`启用`,(0,Q.jsx)(vN,{checked:e.enabled,onChange:e=>I(t,n,{enabled:e})})]})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsxs)(bA,{children:[`编辑`,(0,Q.jsx)(vN,{checked:e.editable,onChange:e=>I(t,n,{editable:e})})]})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(ok,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>I(t,n,{maxLength:Number(e||800)})})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsx)(Fj,{value:String(e.value??``),maxLength:e.maxLength||800,placeholder:`默认值`,onChange:e=>I(t,n,{value:e.target.value})})}),(0,Q.jsx)(OO,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)(rS,{danger:!0,size:`small`,icon:(0,Q.jsx)(oI,{}),onClick:()=>L(t,n)})})]},`flow-${t}-${n}`))})]}),e.type!==`object`&&e.type!==`flow`&&(0,Q.jsx)(aO,{size:`small`,title:`默认值`,children:(0,Q.jsx)(p9,{rows:3,value:Array.isArray(e.value)?e.value.join(` +`),tierCode:e.tierCode,tierRank:e.tierRank,billingCycle:e.billingCycle,monthlyGrantCredits:e.monthlyGrantCredits,firstPurchasePrice:e.firstPurchasePrice,regularPrice:e.regularPrice,activityPrice:e.activityPrice,activityRange:e.activityStartAt&&e.activityEndAt?[(0,aS.default)(e.activityStartAt),(0,aS.default)(e.activityEndAt)]:void 0,renewalEnabled:t,price:e.price,grantCredits:e.grantCredits,validityMonths:e.validityMonths??1,sortOrder:e.sortOrder,isActive:e.isActive});return}f.setFieldsValue({productCode:void 0,name:void 0,description:void 0,featuresText:void 0,isActive:!0,sortOrder:0,billingCycle:`monthly`,tierRank:1,renewalEnabled:t,validityMonths:1})},g=async()=>{try{let t=await f.validateFields(),n=t.activityRange||[],i={product_code:t.productCode,product_type:e,name:t.name,description:t.description||null,features:String(t.featuresText||``).split(` +`).map(e=>e.trim()).filter(Boolean),credit_level:`general`,currency:`CNY`,is_active:t.isActive??!0,sort_order:t.sortOrder??0};e===`subscription`?Object.assign(i,{tier_code:t.tierCode,tier_rank:t.tierRank,billing_cycle:t.billingCycle,monthly_grant_credits:t.monthlyGrantCredits,first_purchase_price:t.firstPurchasePrice,regular_price:t.regularPrice,activity_price:t.activityPrice??null,activity_start_at:n[0]?.toISOString()||null,activity_end_at:n[1]?.toISOString()||null,renewal_enabled:u,price:t.regularPrice}):Object.assign(i,{price:t.price,grant_credits:t.grantCredits,validity_months:t.validityMonths});let a=o?await NYe(o.id,i):await MYe(i);if(e===`subscription`&&a.renewalEnabled!==u)throw Error(`续费开关保存结果与提交值不一致,请刷新后重试`);o?p(a):r(e=>[...e,a].sort((e,t)=>{let n=Number(e.sortOrder||0)-Number(t.sortOrder||0);return n===0?e.id.localeCompare(t.id):n})),X.success(o?`商品已更新`:`商品已创建`),l(!1),s(null),d(!0),f.resetFields()}catch(e){if(e?.errorFields)return;X.error(e?.message||`保存失败`)}},_=async(e,t)=>{let n=e.renewalEnabled===!0,r={...e,renewalEnabled:t};p(r),o?.id===e.id&&(s(r),d(t),f.setFieldValue(`renewalEnabled`,t));try{let n=await PYe(e.id,t);if(n.renewalEnabled!==t)throw Error(`续费开关保存结果与提交值不一致`);p(n),o?.id===e.id&&(s(n),d(n.renewalEnabled===!0),f.setFieldValue(`renewalEnabled`,n.renewalEnabled===!0)),X.success(t?`已开启续费`:`已关闭续费`)}catch(t){let r={...e,renewalEnabled:n};p(r),o?.id===e.id&&(s(r),d(n),f.setFieldValue(`renewalEnabled`,n)),X.error(t?.message||`更新续费状态失败`)}},v=(0,C.useMemo)(()=>e===`subscription`?[{title:`套餐`,key:`name`,render:(e,t)=>(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(Z.Text,{type:`secondary`,children:t.productCode})})]})},{title:`等级`,key:`tier`,render:(e,t)=>(0,Q.jsxs)(rI,{children:[t.tierCode||`-`,` / `,t.tierRank??`-`]})},{title:`周期`,dataIndex:`billingCycle`,render:e=>e?Y2e[e]||e:`-`},{title:`每月积分`,dataIndex:`monthlyGrantCredits`,render:e=>Number(e||0).toLocaleString()},{title:`首充价`,dataIndex:`firstPurchasePrice`,render:e=>F5(e)},{title:`原价`,dataIndex:`regularPrice`,render:e=>F5(e)},{title:`活动价`,key:`activity`,render:(e,t)=>t.activityPrice==null?`-`:(0,Q.jsx)(rI,{color:`red`,children:F5(t.activityPrice)})},{title:`允许续费`,dataIndex:`renewalEnabled`,render:(e,t)=>(0,Q.jsx)(vN,{checked:e===!0,checkedChildren:`开启`,unCheckedChildren:`关闭`,onChange:e=>void _(t,e)})},{title:`状态`,dataIndex:`isActive`,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`上架`:`下架`})},{title:`操作`,key:`action`,render:(e,t)=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(cI,{}),onClick:()=>h(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确认下架该商品?`,onConfirm:async()=>{await s2(t.id),X.success(`已下架`),await m()},children:(0,Q.jsx)(rS,{type:`link`,danger:!0,icon:(0,Q.jsx)(GQ,{}),children:`下架`})})]})}]:[{title:`增值包`,key:`name`,render:(e,t)=>(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(Z.Text,{type:`secondary`,children:t.productCode})})]})},{title:`积分`,dataIndex:`grantCredits`,render:e=>Number(e||0).toLocaleString()},{title:`价格`,dataIndex:`price`,render:e=>F5(e)},{title:`有效期`,dataIndex:`validityMonths`,render:e=>`${Number(e||1)} 个月`},{title:`状态`,dataIndex:`isActive`,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`上架`:`下架`})},{title:`操作`,key:`action`,render:(e,t)=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(cI,{}),onClick:()=>h(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确认下架该商品?`,onConfirm:async()=>{await s2(t.id),X.success(`已下架`),await m()},children:(0,Q.jsx)(rS,{type:`link`,danger:!0,icon:(0,Q.jsx)(GQ,{}),children:`下架`})})]})}],[e,n]);return(0,Q.jsxs)(aO,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(KZ,{}),`积分产品`]}),extra:(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>h(),children:e===`subscription`?`新增订阅套餐`:`新增积分增值包`}),children:[(0,Q.jsx)(rO,{activeKey:e,onChange:e=>t(e),items:[{key:`subscription`,label:`订阅套餐`},{key:`credit_addon`,label:`积分增值包`}]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:i,dataSource:n,columns:v,scroll:{x:1200}}),(0,Q.jsx)(vM,{open:c,title:o?`编辑积分商品`:`新增积分商品`,onOk:g,onCancel:()=>{l(!1),s(null),d(!0),f.resetFields()},width:760,destroyOnClose:!0,children:(0,Q.jsxs)(Y,{form:f,layout:`vertical`,children:[(0,Q.jsxs)(bA,{align:`start`,style:{width:`100%`},size:16,children:[(0,Q.jsx)(Y.Item,{name:`productCode`,label:`商品编码`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{disabled:!!o})}),(0,Q.jsx)(Y.Item,{name:`name`,label:`商品名称`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{style:{width:260}})}),(0,Q.jsx)(Y.Item,{name:`sortOrder`,label:`排序`,children:(0,Q.jsx)(ok,{})}),(0,Q.jsx)(Y.Item,{name:`isActive`,label:`上架`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{})})]}),e===`subscription`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(bA,{align:`start`,style:{width:`100%`},size:16,children:[(0,Q.jsx)(Y.Item,{name:`tierCode`,label:`套餐等级编码`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{})}),(0,Q.jsx)(Y.Item,{name:`tierRank`,label:`等级顺序`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:1})}),(0,Q.jsx)(Y.Item,{name:`billingCycle`,label:`订阅周期`,rules:[{required:!0}],children:(0,Q.jsx)(Wy,{style:{width:140},options:[{value:`monthly`,label:`月`},{value:`quarterly`,label:`季`},{value:`yearly`,label:`年`}]})}),(0,Q.jsx)(Y.Item,{name:`monthlyGrantCredits`,label:`每月发放积分`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:.01})})]}),(0,Q.jsxs)(bA,{align:`start`,size:16,children:[(0,Q.jsx)(Y.Item,{name:`firstPurchasePrice`,label:`首充价格`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:0,precision:2})}),(0,Q.jsx)(Y.Item,{name:`regularPrice`,label:`原价/续费价`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:0,precision:2})}),(0,Q.jsx)(Y.Item,{name:`activityPrice`,label:`活动价`,children:(0,Q.jsx)(ok,{min:0,precision:2})}),(0,Q.jsx)(Y.Item,{name:`activityRange`,label:`活动周期`,children:(0,Q.jsx)(eA.RangePicker,{showTime:!0})}),(0,Q.jsx)(Y.Item,{label:`允许续费`,tooltip:`关闭后,已失去首订资格的用户不会在客户端看到该套餐,也不能通过接口续费或升级购买。`,children:(0,Q.jsx)(vN,{checked:u,checkedChildren:`开启`,unCheckedChildren:`关闭`,onChange:e=>{d(e),f.setFieldValue(`renewalEnabled`,e)}})})]})]}):(0,Q.jsxs)(bA,{align:`start`,size:16,children:[(0,Q.jsx)(Y.Item,{name:`grantCredits`,label:`积分数量`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:.01})}),(0,Q.jsx)(Y.Item,{name:`price`,label:`价格`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:0,precision:2})}),(0,Q.jsx)(Y.Item,{name:`validityMonths`,label:`有效期`,rules:[{required:!0,message:`请选择有效期`}],children:(0,Q.jsx)(Wy,{style:{width:140},options:Array.from({length:36},(e,t)=>({value:t+1,label:`${t+1} 个月`}))})})]}),(0,Q.jsx)(Y.Item,{name:`description`,label:`说明`,children:(0,Q.jsx)(Fj.TextArea,{rows:2})}),(0,Q.jsx)(Y.Item,{name:`featuresText`,label:`权益说明(每行一项)`,children:(0,Q.jsx)(Fj.TextArea,{rows:4})})]})})]})},Z2e=[{value:`generation_record_text_prompt_optimize`,label:`AI创作-提示词优化`},{value:`hot_opening_image_prompt_optimize`,label:`爆款开头复刻-图片提示词优化`},{value:`hot_opening_video_prompt_optimize`,label:`爆款开头复刻-视频提示词优化`},{value:`shot_image_prompt_optimize`,label:`拆镜复刻-图片提示词优化`},{value:`shot_video_prompt_optimize`,label:`拆镜复刻-视频提示词优化`},{value:`shot_original_video_analysis`,label:`拆镜复刻-原视频AI分析`},{value:`shot_segment_video_analysis`,label:`拆镜复刻-片段视频AI分析`}],Q2e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(!1),[c]=Y.useForm(),l=async()=>{s(!0);try{t(await zYe())}finally{s(!1)}};(0,C.useEffect)(()=>{l()},[]);let u=e=>{r(e||null),a(!0),c.resetFields(),c.setFieldsValue(e?{scene_code:e.sceneCode,pre_deduct_credits:e.preDeductCredits,is_active:e.isActive}:{is_active:!0,pre_deduct_credits:5})};return(0,Q.jsxs)(aO,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(iZ,{}),`LLM固定预扣配置`]}),extra:(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>u(),children:`新增场景`}),children:[(0,Q.jsx)(ZF,{rowKey:`id`,loading:o,dataSource:e,columns:[{title:`功能`,dataIndex:`sceneName`},{title:`场景编码`,dataIndex:`sceneCode`},{title:`固定预扣积分`,dataIndex:`preDeductCredits`},{title:`版本`,dataIndex:`version`},{title:`状态`,dataIndex:`isActive`,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,render:(e,t)=>(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(cI,{}),onClick:()=>u(t),children:`编辑`})}]}),(0,Q.jsx)(vM,{open:i,title:n?`编辑LLM场景预扣`:`新增LLM场景预扣`,onOk:async()=>{try{let e=await c.validateFields();n?await VYe(n.id,e):await BYe(e),X.success(`已保存`),a(!1),l()}catch(e){e?.errorFields||X.error(e?.message||`保存失败`)}},onCancel:()=>a(!1),children:(0,Q.jsxs)(Y,{form:c,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`scene_code`,label:`业务功能`,rules:[{required:!0}],children:(0,Q.jsx)(Wy,{disabled:!!n,options:Z2e})}),(0,Q.jsx)(Y.Item,{name:`pre_deduct_credits`,label:`固定预扣积分`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:.01,precision:2,style:{width:`100%`}})}),(0,Q.jsx)(Y.Item,{name:`is_active`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{})})]})})]})},I5={pre_deducted:{label:`已预扣`,color:`blue`},processing:{label:`处理中`,color:`processing`},succeeded:{label:`业务成功`,color:`success`},final_failed:{label:`最终失败`,color:`error`},refunded:{label:`已退款`,color:`purple`},refund_failed:{label:`退款失败`,color:`red`}},$2e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(1),[o,s]=(0,C.useState)(),[c,l]=(0,C.useState)(``),[u,d]=(0,C.useState)(!1),f=async()=>{d(!0);try{let e=await HYe({page:i,pageSize:20,status:o,userId:c||void 0});t(e.items),r(e.total)}finally{d(!1)}};return(0,C.useEffect)(()=>{f()},[i,o]),(0,Q.jsx)(aO,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RK,{}),`LLM调用与积分审计`]}),extra:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Fj.Search,{allowClear:!0,placeholder:`用户ID`,value:c,onChange:e=>l(e.target.value),onSearch:()=>{a(1),f()}}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`最终状态`,value:o,onChange:e=>{s(e),a(1)},options:Object.entries(I5).map(([e,t])=>({value:e,label:t.label}))})]}),children:(0,Q.jsx)(ZF,{rowKey:`id`,loading:u,dataSource:e,pagination:{current:i,pageSize:20,total:n,onChange:a},expandable:{expandedRowRender:e=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(txe,{items:(e.calls||[]).map(e=>({color:e.status===`succeeded`?`green`:e.status===`started`?`blue`:`red`,children:(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(Z.Text,{strong:!0,children:[b2(e.requestStartedAt),` 第 `,e.callSequence,` 次调用:`,e.status===`succeeded`?`成功`:e.status===`started`?`处理中`:e.status===`timeout`?`超时`:`失败`]}),(0,Q.jsxs)(`div`,{children:[`完成时间:`,e.responseReceivedAt?b2(e.responseReceivedAt):`-`]}),(0,Q.jsxs)(`div`,{children:[`模型:`,e.modelNameSnapshot||`-`,` 耗时:`,e.durationMs==null?`-`:`${e.durationMs}ms`]}),e.tokenUnavailableReason?(0,Q.jsxs)(`div`,{children:[`Token:`,e.tokenUnavailableReason]}):(0,Q.jsxs)(`div`,{children:[`输入 Token:`,e.inputTokens??0,` 输出 Token:`,e.outputTokens??0,` 总 Token:`,e.totalTokens??0]}),e.errorMessage&&(0,Q.jsxs)(Z.Text,{type:`danger`,children:[`错误:`,e.errorMessage]}),e.postprocessStatus===`succeeded`&&(0,Q.jsx)(`div`,{children:`后续处理:成功`}),e.postprocessError&&(0,Q.jsxs)(`div`,{children:[`后续处理:失败,`,e.postprocessError]})]})}))}),(0,Q.jsx)(iA,{bordered:!0,size:`small`,column:4,items:[{key:`scene`,label:`功能`,children:e.sceneNameSnapshot},{key:`credit`,label:`固定预扣`,children:e.preDeductCredits},{key:`calls`,label:`调用`,children:`${e.totalCallCount}(成功 ${e.successfulCallCount} / 失败 ${e.failedCallCount})`},{key:`tokens`,label:`累计 Token`,children:e.totalTokens},{key:`refundA`,label:`有效积分退回`,children:e.refundAvailableCredits},{key:`refundE`,label:`过期积分退回`,children:e.refundExpiredCredits},{key:`error`,label:`最终错误`,children:e.finalErrorMessage||`-`}]})]})},columns:[{title:`功能`,dataIndex:`sceneNameSnapshot`},{title:`用户`,dataIndex:`userId`},{title:`业务对象`,render:(e,t)=>`${t.ownerType}:${t.ownerId}`},{title:`模型`,dataIndex:`modelNameSnapshot`},{title:`预扣`,dataIndex:`preDeductCredits`},{title:`调用/Token`,render:(e,t)=>`${t.totalCallCount} / ${t.totalTokens}`},{title:`状态`,dataIndex:`status`,render:e=>{let t=I5[e]||{label:e,color:`default`};return(0,Q.jsx)(rI,{color:t.color,children:t.label})}},{title:`请求时间`,dataIndex:`requestTime`,render:e=>v2(e)}]})})},e4e={POST:`green`,PUT:`blue`,DELETE:`red`},t4e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(1),c=async e=>{a(!0);try{let n=await Y0({page:e||o});t(n.items||[]),r(n.total||0)}catch{X.error(`加载操作日志失败`)}finally{a(!1)}};return(0,C.useEffect)(()=>{c()},[]),(0,Q.jsx)(`div`,{children:(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RK,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`操作日志`})]}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>c(),children:`刷新`})]}),(0,Q.jsx)(ZF,{columns:[{title:`操作人`,dataIndex:`username`,width:120,render:e=>(0,Q.jsx)(Z.Text,{strong:!0,children:e})},{title:`操作`,dataIndex:`action`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`方法`,dataIndex:`method`,width:80,render:e=>(0,Q.jsx)(rI,{color:e4e[e]||`default`,children:e})},{title:`路径`,dataIndex:`path`,width:220,ellipsis:!0,render:e=>(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:e})},{title:`时间`,dataIndex:`createdAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:v2(e)})}],dataSource:e,rowKey:`id`,loading:i,pagination:{current:o,pageSize:20,total:n,showTotal:e=>`共 ${e} 条记录`,onChange:e=>{s(e),c(e)}},scroll:{x:800}})]})})},n4e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(1),[c,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)(!1),[f,p]=(0,C.useState)(!1),[m,h]=(0,C.useState)(null),[g]=Y.useForm(),[_]=Y.useForm(),v=async e=>{a(!0);try{let n=await LJe(e||o);t(n.items||[]),r(n.total||0)}catch{X.error(`加载应用管理列表失败`)}finally{a(!1)}},y=async()=>{try{let e=await g.validateFields();await RJe({app_id:e.app_id,secret:e.secret,open_type:e.open_type,max_count:e.max_count,auth_url:e.auth_url,company:e.company}),X.success(`创建成功`),l(!1),g.resetFields(),v()}catch(e){X.error(e?.message||`创建失败`)}},b=async e=>{try{h(await X0(e)),d(!0)}catch(e){X.error(e?.message||`获取详情失败`)}},x=async e=>{try{let t=await X0(e);h(t),_.setFieldsValue({appId:t.appId,secret:t.secret,openType:t.openType,maxCount:t.maxCount,authUrl:t.authUrl,company:t.company}),p(!0)}catch(e){X.error(e?.message||`获取详情失败`)}},S=async()=>{if(m)try{let e=await _.validateFields();await zJe(m.id,{app_id:e.app_id,secret:e.secret,open_type:e.open_type,count:e.count,auth_url:e.auth_url,company:e.company}),X.success(`更新成功`),p(!1),_.resetFields(),v()}catch(e){X.error(e?.message||`更新失败`)}},w=e=>{vM.confirm({title:`确认删除`,content:`确定要删除这个应用管理吗?`,okText:`删除`,okType:`danger`,cancelText:`取消`,onOk:async()=>{try{await BJe(e),X.success(`删除成功`),v()}catch(e){X.error(e?.message||`删除失败`)}}})};return(0,C.useEffect)(()=>{v()},[]),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(SJ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`应用管理列表`})]}),(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>v(),children:`刷新`}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>l(!0),children:`创建`})]})]}),(0,Q.jsx)(ZF,{columns:[{title:`ID`,dataIndex:`id`,width:120,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`应用ID`,dataIndex:`appId`,width:120,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`应用密钥`,dataIndex:`secret`,width:120,render:e=>{if(!e)return`-`;let t=e.length>12?`${e.slice(0,6)}...${e.slice(-4)}`:e;return(0,Q.jsx)(xb,{title:e,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12},children:t})})}},{title:`开户方式`,dataIndex:`openType`,width:90,render:e=>(0,Q.jsx)(Z.Text,{children:{1:`千川`,2:`广告`,3:`本地推`,4:`星图`,5:`快手代理商`,6:`巨量星图`,7:`巨量服务单`,8:`腾讯服务单`,9:`腾讯营销K2`,10:`腾讯营销K3`}[e]||e})},{title:`归属公司`,dataIndex:`company`,width:120,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`授权次数`,dataIndex:`maxCount`,width:90,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`状态`,dataIndex:`status`,width:80,render:e=>(0,Q.jsx)(rI,{color:e===1?`green`:`red`,children:e===1?`正常`:`禁用`})},{title:`授权URL`,dataIndex:`authUrl`,width:200,render:e=>e?(0,Q.jsx)(xb,{title:e,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12},ellipsis:!0,children:e.length>30?`${e.slice(0,27)}...`:e})}):`-`},{title:`创建人`,dataIndex:`createBy`,width:120,render:e=>(0,Q.jsx)(Z.Text,{children:e})},{title:`创建时间`,dataIndex:`createdAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:v2(e)})},{title:`更新时间`,dataIndex:`updatedAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:v2(e)})},{title:`操作`,width:120,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{icon:(0,Q.jsx)(Ej,{}),size:`small`,onClick:()=>b(t.id),children:`详情`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(cI,{}),size:`small`,onClick:()=>x(t.id),children:`更新`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(oI,{}),size:`small`,danger:!0,onClick:()=>w(t.id),children:`删除`})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:{current:o,pageSize:20,total:n,showTotal:e=>`共 ${e} 条记录`,onChange:e=>{s(e),v(e)}},scroll:{x:`max-content`}})]}),(0,Q.jsx)(vM,{title:`创建应用管理`,open:c,onOk:y,onCancel:()=>{l(!1),g.resetFields()},okText:`创建`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(Y,{form:g,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(Y.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(Y.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Wy,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Wy.Option,{value:1,children:`千川`}),(0,Q.jsx)(Wy.Option,{value:2,children:`广告`}),(0,Q.jsx)(Wy.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Wy.Option,{value:4,children:`星图`}),(0,Q.jsx)(Wy.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Wy.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Wy.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Wy.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Wy.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Wy.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(Y.Item,{name:`max_count`,label:`最大授权用户数`,initialValue:100,children:(0,Q.jsx)(ok,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(Y.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(Fj,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(Y.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用归属公司名称`})})]})}),(0,Q.jsx)(vM,{title:`应用管理详情`,open:u,onCancel:()=>{d(!1),h(null)},okText:`关闭`,cancelText:`取消`,width:600,children:m&&(0,Q.jsxs)(`div`,{style:{lineHeight:`2`},children:[(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`ID:`}),` `,m.id]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`应用ID:`}),` `,m.appId]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`应用密钥:`}),` `,m.secret]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`开户方式:`}),` `,{1:`千川`,2:`广告`,3:`本地推`,4:`星图`,5:`快手代理商`,6:`巨量星图`,7:`巨量服务单`,8:`腾讯服务单`,9:`腾讯营销K2`,10:`腾讯营销K3`}[m.openType]||m.openType]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`归属公司:`}),` `,m.company||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`授权次数:`}),` `,m.maxCount]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`状态:`}),` `,m.status===1?`正常`:`禁用`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`授权URL:`}),` `,m.authUrl||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建人:`}),` `,m.createBy]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建时间:`}),` `,v2(m.createdAt)]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`更新时间:`}),` `,v2(m.updatedAt)]})]})}),(0,Q.jsx)(vM,{title:`更新应用管理`,open:f,onOk:S,onCancel:()=>{p(!1),_.resetFields(),h(null)},okText:`更新`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(Y,{form:_,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`appId`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(Y.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(Y.Item,{name:`openType`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Wy,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Wy.Option,{value:1,children:`千川`}),(0,Q.jsx)(Wy.Option,{value:2,children:`广告`}),(0,Q.jsx)(Wy.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Wy.Option,{value:4,children:`星图`}),(0,Q.jsx)(Wy.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Wy.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Wy.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Wy.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Wy.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Wy.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(Y.Item,{name:`maxCount`,label:`最大授权用户数`,children:(0,Q.jsx)(ok,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(Y.Item,{name:`authUrl`,label:`应用授权链接`,children:(0,Q.jsx)(Fj,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(Y.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(Fj,{placeholder:`请输入应用归属公司名称`})})]})})]})},L5=new Set([`pending`,`optimizing`,`generating`]),r4e=new Set([`queued`,`preparing`,`creating_provider_task`,`provider_result_staged`,`waiting_remote`,`polling`,`result_ready`,`download_queued`,`downloading`,`retry_waiting`,`recovery_inconsistent`,`upscale_queued`,`upscale_processing`,`upscale_polling`,`upscale_downloading`,`upscale_finalizing`,`upscale_retry_waiting`]),R5=new Set([`completed`,`done`]),z5=new Set([`failed`,`timeout`,`download_failed`,`upscale_failed`]),i4e=new Set([...R5,...z5,`deleted`]),a4e={pending:`待处理`,optimizing:`提词处理中`,prompt_optimized:`待生成`,generating:`生成中`,queued:`已入队`,preparing:`准备中`,creating_provider_task:`创建供应商任务`,provider_result_staged:`供应商结果已暂存`,waiting_remote:`等待供应商结果`,polling:`轮询供应商结果`,result_ready:`远程结果已就绪`,download_queued:`下载已入队`,downloading:`下载中`,retry_waiting:`下载等待重试`,recovery_inconsistent:`恢复证据异常`,upscale_queued:`超分已入队`,upscale_processing:`本地超分处理中`,upscale_polling:`轮询远程超分`,upscale_downloading:`下载超分结果`,upscale_finalizing:`超分结果最终化`,upscale_retry_waiting:`超分等待重试`,completed:`已完成`,done:`已完成`,timeout:`任务超时`,download_failed:`下载失败`,upscale_failed:`超分失败`,failed:`失败`,deleted:`已删除`},o4e={pending:`default`,optimizing:`processing`,prompt_optimized:`blue`,generating:`warning`,queued:`processing`,preparing:`processing`,creating_provider_task:`processing`,provider_result_staged:`processing`,waiting_remote:`processing`,polling:`processing`,result_ready:`processing`,download_queued:`processing`,downloading:`processing`,retry_waiting:`orange`,recovery_inconsistent:`orange`,upscale_queued:`purple`,upscale_processing:`purple`,upscale_polling:`purple`,upscale_downloading:`purple`,upscale_finalizing:`purple`,upscale_retry_waiting:`orange`,completed:`success`,done:`success`,failed:`error`,timeout:`error`,download_failed:`error`,upscale_failed:`error`,deleted:`default`},B5=e=>String(e||``).trim().toLowerCase(),V5=(e,t)=>e.find(e=>t.has(e))||``,H5=e=>{let t=B5(e);return a4e[t]||t||`未知状态`},U5=e=>o4e[B5(e)]||`default`,W5=e=>{let t=B5(e.status),n=B5(e.displayStatus),r=B5(e.pipelineStage),i=[r,n,t].filter(Boolean),a=V5(i,z5),o=V5(i,R5),s=V5(i,new Set([`deleted`])),c=a||s||o||r||n||t||`pending`,l=z5.has(c),u=R5.has(c),d=typeof e.shouldPoll==`boolean`?e.shouldPoll:!l&&!u&&c!==`deleted`&&(r4e.has(r)||L5.has(t)||L5.has(n));return{status:t,displayStatus:n,pipelineStage:r,effectiveKey:c,label:H5(c),color:U5(c),isActive:d,isSuccess:u,isFailure:l,isTerminal:i4e.has(c)}},G5=`https://ceshi.apiforeign.minzhongzc.com`.replace(/\/api\/?$/i,``).replace(/\/$/,``),K5={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},q5={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(VW,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(k1,{})}},s4e=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),J5=e=>!!e&&/^blob:/i.test(e.trim()),Y5=e=>{if(!e)return``;let t=String(e).trim();return t?s4e(t)?t:G5?`${G5}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},X5=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,Z5=e=>e?v2(e):`-`,c4e=e=>e==null||e===``,Q5=e=>{if(!e||J5(e))return!1;try{let t=new URL(Y5(e),window.location.origin),n=t.searchParams.get(`exp`)||t.searchParams.get(`expires`)||t.searchParams.get(`expire`)||t.searchParams.get(`expires_at`)||t.searchParams.get(`x-expires`);if(!n)return!1;let r=Number(n);if(!Number.isFinite(r))return!1;let i=r>1e10?r:r*1e3;return Date.now()>=i}catch{return!1}},$5=e=>e?J5(e)||Q5(e)?`invalid`:`checking`:`empty`,e7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},l4e=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=e7(e)?.toLowerCase()||``;return t.includes(`video`)||/\.(mp4|mov|webm|m4v)(\?|$)/i.test(n)?`video`:t.includes(`image`)||/\.(png|jpe?g|webp|gif|bmp|svg)(\?|$)/i.test(n)?`image`:t||`unknown`},t7=(e,t)=>`${t}-${e7(e)||`empty`}`,n7=(e,t=`资源`)=>J5(e)?`本地临时素材已失效`:Q5(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,r7=({text:e,minHeight:t=240,compact:n=!1,action:r})=>(0,Q.jsxs)(`div`,{style:{width:`100%`,minHeight:n?void 0:t,height:n?`100%`:void 0,borderRadius:n?10:12,background:`#f8f9fc`,border:`1px dashed #cbd5e1`,color:`#64748b`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:n?4:10,textAlign:`center`},children:[(0,Q.jsx)(Z.Text,{style:{color:`#64748b`,fontSize:n?11:13},children:e}),r]}),i7=({label:e,value:t})=>(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:120},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:e}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:c4e(t)?`-`:t})]}),a7=()=>(0,aS.default)().startOf(`day`),o7=()=>(0,aS.default)().endOf(`day`),u4e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(1),[c]=(0,C.useState)(20),[l,u]=(0,C.useState)(``),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(``),[h,g]=(0,C.useState)(``),[_,v]=(0,C.useState)([]),[y,b]=(0,C.useState)(0),[x,S]=(0,C.useState)(null),[w,T]=(0,C.useState)(K5),[E,D]=(0,C.useState)(!1),O=(0,C.useRef)(null),[k,A]=(0,C.useState)([a7(),o7()]),[j,M]=(0,C.useState)([a7(),o7()]),N=(0,C.useCallback)(async()=>{a(!0);try{let e=await GJe({userId:d.trim()||void 0,status:l||void 0,engineId:p||void 0,includeMediaReferences:h===``?void 0:h===`true`,startDate:j?.[0]?.format?.(`YYYY-MM-DD`),endDate:j?.[1]?.format?.(`YYYY-MM-DD`),page:o,pageSize:c});t((e.items||[]).map(e=>({id:e.id,userId:e.userId,username:e.username,projectId:e.projectId,projectName:e.projectName,industry:e.industry,originalPrompt:e.originalPrompt,optimizedPrompt:e.optimizedPrompt,duration:e.duration,aspectRatio:e.aspectRatio,resolution:e.resolution,status:e.status,videoUrl:e.videoUrl,videoCoverUrl:e.videoCoverUrl,references:e.references,creditsCost:e.creditsCost||0,textCreditsCost:e.textCreditsCost||0,textTokensUsed:e.textTokensUsed||0,videoTokensUsed:e.videoTokensUsed||0,errorMessage:e.errorMessage,createdAt:e.createdAt,generatedAt:e.generatedAt,genType:e.genType,imageSize:e.imageSize,imageUrl:e.imageUrl,imageTokensUsed:e.imageTokensUsed||0,imageProportion:e.imageProportion,imagePx:e.imagePx,engineId:e.engineId,engineName:e.engineName,engineSnapshot:e.engineSnapshot,includeMediaReferences:e.includeMediaReferences}))),r(e.total||0)}catch{X.error(`加载记录失败`)}finally{a(!1)}},[l,d,p,h,o,c,j]);(0,C.useEffect)(()=>{N()},[N,y]),(0,C.useEffect)(()=>{Promise.all([V0({includeDeleted:!0}),z0({includeDeleted:!0})]).then(([e,t])=>{let n=[...e||[],...t||[]],r=new Set;v(n.reduce((e,t)=>{let n=String(t?.id||``);if(!n||r.has(n))return e;r.add(n);let i=t?.deletedAt?`(已删除)`:``;return e.push({value:n,label:t?.name?`${t.name}${i} (${n})`:`${n}${i}`}),e},[]))}).catch(()=>v([]))},[]),(0,C.useEffect)(()=>{if(!x){T(K5);return}let e=(x.references||[]).reduce((e,t,n)=>{let r=e7(t);return e[t7(t,n)]=$5(r),e},{});O.current&&(O.current.pause(),O.current.currentTime=0),D(!1),T({image:$5(x.imageUrl),video:$5(x.videoUrl),videoCover:$5(x.videoCoverUrl),references:e})},[x]);let P=()=>{s(1),M(k),b(e=>e+1)},F=()=>{u(``),f(``),m(``),g(``);let e=[a7(),o7()];A(e),M(e),s(1),b(e=>e+1)},I=(0,C.useCallback)(e=>{S(e)},[]),L=()=>{O.current&&O.current.pause(),D(!1),S(null)},R=e=>{T(t=>({...t,...e}))},z=(e,t)=>{T(n=>({...n,references:{...n.references,[e]:t}}))},B=(e,t=`素材`)=>{if(!e){X.warning(`${t}链接为空,暂无法查看`);return}if(J5(e)){X.warning(`本地临时素材已失效,暂无法查看`);return}if(Q5(e)){X.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(Y5(e),`_blank`,`noopener,noreferrer`)},V=()=>{if(x?.videoUrl){if(Q5(x.videoUrl)){R({video:`invalid`}),X.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}D(!0),window.setTimeout(()=>{O.current?.play().catch(()=>{D(!1),R({video:`invalid`}),X.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},H=(0,C.useMemo)(()=>[{title:`用户`,key:`user`,width:120,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:13},children:t.username||`未知用户`}),(0,Q.jsx)(`div`,{style:{fontSize:11,color:`#94a3b8`},children:X5(t.userId)})]})},{title:`项目`,dataIndex:`projectName`,width:120,ellipsis:!0,render:e=>(0,Q.jsx)(Z.Text,{style:{fontSize:13},children:e||`-`})},{title:`行业`,dataIndex:`industry`,width:100,ellipsis:!0,render:e=>(0,Q.jsx)(rI,{color:`cyan`,children:e||`-`})},{title:`类型`,dataIndex:`genType`,width:90,ellipsis:!0,render:e=>{let t=q5[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(rI,{color:t.color,icon:t.icon,children:t.text})}},{title:`提示词`,key:`prompt`,ellipsis:!0,render:(e,t)=>(0,Q.jsx)(xb,{title:t.originalPrompt,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#475569`},ellipsis:!0,children:t.originalPrompt||`-`})})},{title:`参数`,key:`params`,width:160,render:(e,t)=>t.genType===`video`?(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(rI,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(rI,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(rI,{children:t.resolution}):null,!t.duration&&!t.aspectRatio&&!t.resolution?(0,Q.jsx)(rI,{color:`default`,children:`待配置`}):null,t.engineName||t.engineId?(0,Q.jsx)(rI,{color:`purple`,children:t.engineName||X5(t.engineId||``)}):null,(0,Q.jsxs)(rI,{color:t.includeMediaReferences?`green`:`default`,children:[t.includeMediaReferences?`携带附件`:`不携带附件`,t.references?.length?`(${t.references.length})`:``]})]}):(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(rI,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(rI,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(rI,{children:t.imagePx}):null,!t.imageSize&&!t.imageProportion&&!t.imagePx?(0,Q.jsx)(rI,{color:`default`,children:`待配置`}):null,t.engineName||t.engineId?(0,Q.jsx)(rI,{color:`purple`,children:t.engineName||X5(t.engineId||``)}):null,(0,Q.jsxs)(rI,{color:t.includeMediaReferences?`green`:`default`,children:[t.includeMediaReferences?`携带附件`:`不携带附件`,t.references?.length?`(${t.references.length})`:``]})]})},{title:`积分`,key:`credits`,width:120,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12},children:[t.textCreditsCost>0?(0,Q.jsxs)(`div`,{style:{color:`#f59e0b`},children:[`文字: `,t.textCreditsCost]}):null,t.creditsCost>0?(0,Q.jsxs)(`div`,{style:{color:`#6366f1`},children:[t.genType===`video`?`视频`:`图片`,`: `,t.creditsCost]}):null,t.textCreditsCost===0&&t.creditsCost===0?(0,Q.jsx)(Z.Text,{style:{color:`#94a3b8`},children:`0`}):null]})},{title:`状态`,dataIndex:`status`,width:90,render:e=>{let t=W5({status:e}),n=t.isActive?(0,Q.jsx)(pm,{spin:!0}):t.isSuccess?(0,Q.jsx)(xV,{}):t.isFailure?(0,Q.jsx)(LV,{}):(0,Q.jsx)(Xk,{});return(0,Q.jsx)(rI,{color:t.color,icon:n,children:t.label})}},{title:`阶段`,dataIndex:`pipelineStage`,width:150,render:e=>(0,Q.jsx)(rI,{color:U5(e),children:H5(e)})},{title:`时间`,key:`time`,width:150,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:Z5(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,Z5(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:90,fixed:`right`,render:(e,t)=>(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>I(t),children:`详情`})}],[I]),U=x?q5[x.genType||``]||{text:x.genType||`-`,color:`default`,icon:null}:null,W=x?W5(x):null,ee=()=>{if(!x||x.genType!==`image`||!W5(x).isSuccess)return null;if(!x.imageUrl)return(0,Q.jsx)(r7,{text:`此图片任务暂无结果图片`,minHeight:260});if(w.image===`invalid`)return(0,Q.jsx)(r7,{text:n7(x.imageUrl,`图片`),minHeight:260});let e=Y5(x.imageUrl);return(0,Q.jsxs)(`div`,{title:`点击新页面查看图片`,onClick:()=>B(x.imageUrl,`生成图片`),style:{position:`relative`,width:`100%`,minHeight:260,borderRadius:12,background:`#f8f9fc`,border:`1px solid #e2e8f0`,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`,cursor:`pointer`},children:[(0,Q.jsx)(`img`,{src:e,alt:`生成图片`,onLoad:()=>R({image:`valid`}),onError:()=>R({image:`invalid`}),style:{display:w.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${x.id}-${e}`),w.image===`checking`?(0,Q.jsx)(r7,{text:`图片加载检测中...`,minHeight:260}):null]})},te=()=>{if(!x||E||w.video===`invalid`)return null;let e=x.videoUrl?(0,Q.jsx)(rS,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(RY,{}),onClick:V,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!x.videoCoverUrl)return(0,Q.jsx)(`div`,{style:{position:`absolute`,inset:0,borderRadius:12,overflow:`hidden`,background:`#f8f9fc`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,Q.jsx)(r7,{text:`此视频无封面`,minHeight:340,action:e})});if(w.videoCover===`invalid`)return(0,Q.jsx)(r7,{text:n7(x.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=Y5(x.videoCoverUrl);return(0,Q.jsxs)(`div`,{style:{position:`absolute`,inset:0,borderRadius:12,overflow:`hidden`,background:`#f8f9fc`,border:`1px solid #e2e8f0`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:[(0,Q.jsx)(`img`,{src:t,alt:`视频封面`,onLoad:()=>R({videoCover:`valid`}),onError:()=>R({videoCover:`invalid`}),style:{display:w.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${x.id}-cover-${t}`),w.videoCover===`checking`?(0,Q.jsx)(r7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,w.videoCover===`valid`?(0,Q.jsx)(`div`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,background:`rgba(15,23,42,0.18)`},children:e}):null]})},ne=()=>{if(!x||x.genType!==`video`||!W5(x).isSuccess)return null;if(!x.videoUrl)return(0,Q.jsx)(r7,{text:`此视频任务暂无结果视频`,minHeight:340});if(w.video===`invalid`)return(0,Q.jsx)(r7,{text:n7(x.videoUrl,`视频`),minHeight:340});let e=Y5(x.videoUrl);return(0,Q.jsxs)(`div`,{style:{position:`relative`,width:`100%`,height:340,borderRadius:12,background:`#000`,overflow:`hidden`,border:`1px solid #e2e8f0`},children:[(0,Q.jsx)(`video`,{ref:O,src:e,preload:`metadata`,controls:E,onLoadedMetadata:()=>R({video:`valid`}),onCanPlay:()=>R({video:`valid`}),onPlaying:()=>{D(!0),R({video:`valid`})},onPause:()=>D(!1),onEnded:()=>D(!1),onError:()=>{D(!1),R({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!E,pointerEvents:E?`auto`:`none`}},`${x.id}-${e}`),te()]})},re=(e,t)=>{let n=e7(e),r=l4e(e),i=t7(e,t),a=w.references[i]||$5(n),o=r===`image`,s=r===`video`,c=typeof e.name==`string`&&e.name?e.name:`参考素材 ${t+1}`;if(!n)return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsx)(`div`,{style:{width:94,height:94},children:(0,Q.jsx)(r7,{text:`无链接`,compact:!0})}),(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})]},i);if(a===`invalid`)return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsx)(`div`,{style:{width:94,height:94},children:(0,Q.jsx)(r7,{text:J5(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(xb,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=Y5(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>B(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&B(n,s?`视频素材`:o?`图片素材`:`素材`)},style:{width:94,height:94,borderRadius:10,overflow:`hidden`,border:`1px solid #e2e8f0`,background:`#f8f9fc`,position:`relative`,display:`flex`,alignItems:`center`,justifyContent:`center`,cursor:`pointer`},children:[o?(0,Q.jsx)(`img`,{src:l,alt:c,onLoad:()=>z(i,`valid`),onError:()=>z(i,`invalid`),style:{display:a===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`cover`}}):null,s?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`video`,{src:l,preload:`metadata`,onLoadedMetadata:()=>z(i,`valid`),onError:()=>z(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(RY,{style:{fontSize:18}}),(0,Q.jsx)(`div`,{children:`视频素材`}),(0,Q.jsx)(`div`,{style:{fontSize:10,color:`#94a3b8`,marginTop:2},children:`点击查看`})]})]}):null,!o&&!s?(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[`文件素材`,(0,Q.jsx)(`div`,{style:{fontSize:10,color:`#94a3b8`,marginTop:2},children:`点击查看`})]}):null,a===`checking`&&o?(0,Q.jsx)(`div`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,background:`#f8f9fc`},children:(0,Q.jsx)(pm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(xb,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16,flexWrap:`wrap`,gap:12},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(k1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`生成记录管理`}),(0,Q.jsxs)(rI,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Wy,{placeholder:`状态筛选`,allowClear:!0,style:{width:120},value:l||void 0,onChange:e=>{u(e||``),s(1)},options:[{value:`optimizing`,label:`优化中`},{value:`prompt_optimized`,label:`待生成`},{value:`generating`,label:`生成中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`}]}),(0,Q.jsx)(Wy,{placeholder:`引擎筛选`,allowClear:!0,showSearch:!0,optionFilterProp:`label`,style:{width:220},value:p||void 0,onChange:e=>{m(e||``),s(1)},options:_}),(0,Q.jsx)(Wy,{placeholder:`附件状态`,allowClear:!0,style:{width:130},value:h||void 0,onChange:e=>{g(e||``),s(1)},options:[{value:`true`,label:`携带附件`},{value:`false`,label:`不携带附件`}]}),(0,Q.jsx)(Fj,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(Vy,{style:{color:`#94a3b8`}}),style:{width:200},value:d,onChange:e=>f(e.target.value),onPressEnter:P,allowClear:!0}),(0,Q.jsx)(eA.RangePicker,{value:k,onChange:e=>{e&&e[0]&&e[1]?A([e[0].startOf(`day`),e[1].endOf(`day`)]):A(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(rS,{type:`primary`,onClick:P,style:{borderRadius:8},children:`搜索`}),(0,Q.jsx)(rS,{onClick:F,style:{borderRadius:8},children:`重置`})]})]}),(0,Q.jsx)(ZF,{columns:H,dataSource:e,rowKey:`id`,loading:i,scroll:{x:1120},pagination:{current:o,pageSize:c,total:n,onChange:s,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[x?.genType===`video`?(0,Q.jsx)(k1,{}):(0,Q.jsx)(VW,{}),(0,Q.jsx)(`span`,{children:`生成记录详情`})]}),open:!!x,onCancel:L,footer:null,width:900,destroyOnClose:!0,children:x?(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,flexWrap:`wrap`},children:[(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:150,padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`用户`}),(0,Q.jsx)(Z.Text,{strong:!0,children:x.username||`-`})]}),(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:150,padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`项目`}),(0,Q.jsx)(Z.Text,{strong:!0,children:x.projectName||`-`})]}),(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:150,padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`类型 / 状态`}),(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[U?(0,Q.jsx)(rI,{color:U.color,icon:U.icon,children:U.text}):null,W?(0,Q.jsx)(rI,{color:W.color,icon:W.isActive?(0,Q.jsx)(pm,{spin:!0}):W.isSuccess?(0,Q.jsx)(xV,{}):W.isFailure?(0,Q.jsx)(LV,{}):(0,Q.jsx)(Xk,{}),children:W.label}):null,x.pipelineStage?(0,Q.jsx)(rI,{color:U5(x.pipelineStage),children:H5(x.pipelineStage)}):null,x.videoUpscaleEnabled?(0,Q.jsx)(rI,{color:`purple`,children:`已启用超分`}):null]})]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:`原始提示词`}),(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,border:`1px solid #f0f0f5`},children:(0,Q.jsx)(Z.Text,{style:{fontSize:13,color:`#475569`,lineHeight:1.7},children:x.originalPrompt||`-`})})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:`优化后提示词`}),(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`rgba(99,102,241,0.02)`,border:`1px solid rgba(99,102,241,0.1)`},children:(0,Q.jsx)(Z.Text,{style:{fontSize:13,color:`#1a1a2e`,lineHeight:1.7},children:x.optimizedPrompt||`-`})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(i7,{label:`文字积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#f59e0b`},children:x.textCreditsCost||0}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,x.textTokensUsed||0,` tokens)`]})]})}),(0,Q.jsx)(i7,{label:`${x.genType===`image`?`图片`:`视频`}积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:x.creditsCost||0}),x.genType===`video`&&x.videoTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,x.videoTokensUsed,` tokens)`]}):null,x.genType===`image`&&x.imageTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,x.imageTokensUsed,` tokens)`]}):null]})}),(0,Q.jsx)(i7,{label:`总积分`,value:(x.textCreditsCost||0)+(x.creditsCost||0)})]}),x.genType===`video`?x.duration||x.aspectRatio||x.resolution?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(i7,{label:`时长`,value:x.duration?`${x.duration}秒`:`-`}),(0,Q.jsx)(i7,{label:`比例`,value:x.aspectRatio||`-`}),(0,Q.jsx)(i7,{label:`分辨率`,value:x.resolution||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(rI,{color:`default`,children:`视频参数待用户配置`})}):null,x.genType===`image`?x.imageSize||x.imageProportion||x.imagePx?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(i7,{label:`尺寸`,value:x.imagePx||`-`}),(0,Q.jsx)(i7,{label:`比例`,value:x.imageProportion||`-`}),(0,Q.jsx)(i7,{label:`分辨率`,value:x.imageSize||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(rI,{color:`default`,children:`图片参数待用户配置`})}):null,!x?.references||x.references.length===0?null:(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:`参考内容`}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:10,flexWrap:`wrap`},children:x.references.map((e,t)=>re(e,t))})]}),W5(x).isSuccess?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:x.genType===`video`?`生成视频`:`生成图片`}),x.genType===`video`?ne():ee()]}):null,W5(x).isFailure&&x.errorMessage?(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`rgba(239,68,68,0.04)`,border:`1px solid rgba(239,68,68,0.15)`},children:(0,Q.jsxs)(Z.Text,{style:{fontSize:12,color:`#ef4444`},children:[`错误信息: `,x.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,Z5(x.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,Z5(x.generatedAt)]})]})]}):(0,Q.jsx)(Dy,{description:`暂无详情`})})]})},d4e=(e,t)=>e<=1?6:e===2||e===4?3:e===3?t<2?3:6:t<3?2:3,f4e=({task:e,resolveUrl:t,onPreview:n})=>{let r=Math.max(1,Math.min(5,Number(e.generationCount||e.childItems?.length||1))),i=[...e.childItems||[]].sort((e,t)=>Number(e.generationIndex||0)-Number(t.generationIndex||0)),a=i.length?i:r>1?Array.from({length:r},(t,n)=>({...e,id:`${e.id}-${n+1}`,generationIndex:n+1,childItems:[]})):[e];return(0,Q.jsx)(`div`,{style:{width:`100%`,height:430,display:`grid`,gridTemplateColumns:`repeat(6, minmax(0,1fr))`,gridAutoRows:`minmax(0,1fr)`,gap:a.length>1?8:0},children:a.map((e,r)=>{let i=W5(e),o=e.genType===`video`,s=t(o?e.videoUrl:e.imageUrl),c=t(e.videoCoverUrl),l=i.isActive;return(0,Q.jsxs)(`div`,{style:{gridColumn:`span ${d4e(a.length,r)}`,minWidth:0,minHeight:0,border:`1px solid #edf0f5`,borderRadius:10,overflow:`hidden`,position:`relative`,background:`#f8f9fc`},children:[s&&i.isSuccess?(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>n(s,o?`video`:`image`,`生成结果 ${e.generationIndex||r+1}`),style:{width:`100%`,height:`100%`,padding:0,border:0,background:`transparent`,cursor:`pointer`,position:`relative`},children:[o?c?(0,Q.jsx)(`img`,{src:c,alt:`视频封面`,style:{width:`100%`,height:`100%`,objectFit:`contain`}}):(0,Q.jsx)(`video`,{src:s,muted:!0,preload:`metadata`,style:{width:`100%`,height:`100%`,objectFit:`contain`}}):(0,Q.jsx)(`img`,{src:s,alt:`生成图片`,style:{width:`100%`,height:`100%`,objectFit:`contain`}}),o?(0,Q.jsx)(IY,{style:{position:`absolute`,left:`50%`,top:`50%`,transform:`translate(-50%,-50%)`,color:`#fff`,fontSize:38,filter:`drop-shadow(0 3px 8px rgba(0,0,0,.35))`}}):null]}):(0,Q.jsxs)(`div`,{style:{width:`100%`,height:`100%`,display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,gap:9,padding:12,textAlign:`center`},children:[l?(0,Q.jsx)(oM,{size:`small`}):(0,Q.jsx)(Dy,{image:Dy.PRESENTED_IMAGE_SIMPLE,description:null}),(0,Q.jsx)(rI,{color:i.color,children:i.label}),e.errorMessage&&!l?(0,Q.jsx)(Z.Text,{type:`danger`,style:{fontSize:11},children:e.errorMessage}):null]}),a.length>1?(0,Q.jsxs)(`span`,{style:{position:`absolute`,top:6,left:6,padding:`1px 7px`,borderRadius:10,color:`#fff`,background:`rgba(17,24,39,.58)`,fontSize:11},children:[`#`,e.generationIndex||r+1]}):null]},e.id)})})},{RangePicker:p4e}=eA,s7=`https://ceshi.apiforeign.minzhongzc.com`.replace(/\/api\/?$/i,``).replace(/\/$/,``),c7=20,m4e=e=>e&&(e.name||e.modelName||e.id)||null,l7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},u7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(VW,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(k1,{})}},h4e=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),d7=e=>!!e&&/^blob:/i.test(e.trim()),f7=e=>{if(!e)return``;let t=String(e).trim();return t?h4e(t)?t:s7?`${s7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},g4e=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,p7=e=>e?v2(e):`-`,_4e=e=>e==null||e===``,m7=e=>{if(!e||d7(e))return!1;try{let t=new URL(f7(e),window.location.origin),n=t.searchParams.get(`exp`)||t.searchParams.get(`expires`)||t.searchParams.get(`expire`)||t.searchParams.get(`expires_at`)||t.searchParams.get(`x-expires`);if(!n)return!1;let r=Number(n);if(!Number.isFinite(r))return!1;let i=r>1e10?r:r*1e3;return Date.now()>=i}catch{return!1}},h7=e=>e?d7(e)||m7(e)?`invalid`:`checking`:`empty`,g7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},_7=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=g7(e)?.toLowerCase()||``;return t.includes(`video`)||/\.(mp4|mov|webm|m4v)(\?|$)/i.test(n)?`video`:t.includes(`image`)||/\.(png|jpe?g|webp|gif|bmp|svg)(\?|$)/i.test(n)?`image`:t||`unknown`},v7=(e,t)=>`${t}-${g7(e)||`empty`}`,y7=({text:e,minHeight:t=240,compact:n=!1,action:r})=>(0,Q.jsxs)(`div`,{style:{width:`100%`,minHeight:n?void 0:t,height:n?`100%`:void 0,borderRadius:n?10:12,background:`#f8f9fc`,border:`1px dashed #cbd5e1`,color:`#64748b`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:n?4:10,textAlign:`center`},children:[(0,Q.jsx)(Z.Text,{style:{color:`#64748b`,fontSize:n?11:13},children:e}),r]}),b7=({label:e,value:t})=>(0,Q.jsxs)(`div`,{style:{flex:1,minWidth:120},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:e}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:_4e(t)?`-`:t})]}),x7=()=>(0,aS.default)().startOf(`day`),S7=()=>(0,aS.default)().endOf(`day`),v4e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(1),[c,l]=(0,C.useState)(``),[u,d]=(0,C.useState)(``),[f,p]=(0,C.useState)(``),[m,h]=(0,C.useState)(``),[g,_]=(0,C.useState)(``),[v,y]=(0,C.useState)(``),[b,x]=(0,C.useState)(``),[S,w]=(0,C.useState)(``),[T,E]=(0,C.useState)([x7(),S7()]),[D,O]=(0,C.useState)([x7(),S7()]),[k,A]=(0,C.useState)(0),[j,M]=(0,C.useState)(!1),[N,P]=(0,C.useState)([]),[F,I]=(0,C.useState)([]),[L,R]=(0,C.useState)(null),[z,B]=(0,C.useState)(l7),[V,H]=(0,C.useState)(!1),U=(0,C.useRef)(null),[W,ee]=(0,C.useState)(null),te=(0,C.useCallback)(async()=>{a(!0);try{let e=await KJe({genType:u||void 0,status:c||void 0,userId:v||void 0,userName:b||void 0,engineId:S||void 0,createdStart:D?.[0]?.format?.(`YYYY-MM-DDTHH:mm:ss`),createdEnd:D?.[1]?.format?.(`YYYY-MM-DDTHH:mm:ss`),page:o,pageSize:c7});t(e.items||[]),r(e.total||0)}catch(e){X.error(e?.message||`加载创作记录失败`)}finally{a(!1)}},[u,c,o,v,b,S,D]);(0,C.useEffect)(()=>{te()},[te,k]),(0,C.useEffect)(()=>{let e=!1;return(async()=>{M(!0);try{let[t,n]=await Promise.all([V0({includeDeleted:!0}),z0({includeDeleted:!0})]);e||(P(t||[]),I(n||[]))}catch(t){e||X.error(t?.message||`加载模型引擎列表失败`)}finally{e||M(!1)}})(),()=>{e=!0}},[]);let ne=(0,C.useMemo)(()=>{let e=(e,t)=>{let n=!!e.deletedAt,r=t===`image`?`图片`:`视频`,i=`[${r}]${n?`[已删除]`:``} ${[e.name,e.modelName,e.provider,e.id].filter(Boolean).join(` / `)}`;return{value:e.id,label:i,searchText:[e.id,e.name,e.modelName,e.provider,r,n?`已删除`:``].filter(Boolean).join(` `).toLowerCase()}},t=[...N.map(t=>e(t,`image`)),...F.map(t=>e(t,`video`))];return Array.from(new Map(t.map(e=>[e.value,e])).values())},[N,F]);(0,C.useEffect)(()=>{if(!L){B(l7);return}let e=(L.mediaReferences||[]).reduce((e,t,n)=>{let r=g7(t);return e[v7(t,n)]=h7(r),e},{});U.current&&(U.current.pause(),U.current.currentTime=0),H(!1),B({image:h7(L.imageUrl),video:h7(L.videoUrl),videoCover:h7(L.videoCoverUrl),references:e})},[L]);let re=()=>{s(1),y(m.trim()),x(g.trim()),w(f),O(T),A(e=>e+1)},ie=()=>{l(``),d(``),p(``),h(``),_(``),y(``),x(``),w(``);let e=[x7(),S7()];E(e),O(e),s(1),A(e=>e+1)},ae=(0,C.useCallback)(e=>{R(e)},[]),G=()=>{U.current&&U.current.pause(),H(!1),R(null)},oe=(e,t)=>{B(n=>({...n,references:{...n.references,[e]:t}}))},se=(e,t=`素材`)=>{if(!e){X.warning(`${t}链接为空,暂无法查看`);return}if(d7(e)){X.warning(`本地临时素材已失效,暂无法查看`);return}if(m7(e)){X.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(f7(e),`_blank`,`noopener,noreferrer`)},ce=(e,t,n)=>{if(d7(e)){X.warning(`本地临时素材已失效,暂无法查看`);return}if(m7(e)){X.warning(`链接已超时,请刷新列表或重新搜索后再查看`);return}ee({url:f7(e),type:t,title:n})},le=()=>ee(null),ue=(0,C.useMemo)(()=>[{title:`用户`,key:`user`,width:150,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:13},children:t.userName||`未知用户`}),(0,Q.jsx)(`div`,{style:{fontSize:11,color:`#94a3b8`},children:g4e(t.userId)})]})},{title:`类型`,dataIndex:`genType`,width:90,render:e=>{let t=u7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(rI,{color:t.color,icon:t.icon,children:t.text})}},{title:`生成数量`,key:`generationCount`,width:150,render:(e,t)=>{let n=Math.max(1,Number(t.generationCount||1));if(n===1)return(0,Q.jsx)(rI,{children:`1份`});let r=t.childItems||[],i=r.filter(e=>W5(e).isSuccess).length,a=r.filter(e=>W5(e).isFailure).length,o=r.filter(e=>(e.displayStatus||e.status)===`deleted`).length;return(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[(0,Q.jsxs)(rI,{color:`purple`,children:[n,`份`]}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#64748b`},children:[i,`完成`,a?` / ${a}失败`:``,o?` / ${o}删除`:``]})]})}},{title:`引擎`,key:`engine`,width:160,render:(e,t)=>{let n=m4e(t.engineSnapshot);return(0,Q.jsx)(xb,{title:t.engineId||`未知引擎`,placement:`topLeft`,children:(0,Q.jsx)(rI,{icon:(0,Q.jsx)(iZ,{}),color:`cyan`,children:n||t.engineId||`-`})})}},{title:`附件`,key:`references`,width:100,render:(e,t)=>{let n=t.mediaReferences||[];return n.length===0?(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`},children:`无`}):(0,Q.jsx)(bA,{size:2,wrap:!0,children:n.map((e,t)=>{let n=g7(e),r=_7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)(xb,{title:i,children:(0,Q.jsx)(rS,{size:`small`,type:`text`,icon:r===`video`?(0,Q.jsx)(k1,{style:{color:`#6366f1`}}):r===`audio`?(0,Q.jsx)(SR,{style:{color:`#f59e0b`}}):(0,Q.jsx)(VW,{style:{color:`#8b5cf6`}}),style:{width:28,height:28,padding:0},onClick:e=>{e.stopPropagation(),ce(n,r===`video`?`video`:`image`,i)}})},t):null})})}},{title:`结果`,key:`result`,width:90,render:(e,t)=>W5(t).isSuccess?t.genType===`video`&&t.videoUrl?(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(RY,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),ce(t.videoUrl,`video`,`生成视频`)},children:`看视频`}):t.genType===`image`&&t.imageUrl?(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(VW,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),ce(t.imageUrl,`image`,`生成图片`)},children:`看图片`}):(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`},children:`无`}):(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`},children:`-`})},{title:`提示词`,key:`prompt`,ellipsis:!0,render:(e,t)=>(0,Q.jsx)(xb,{title:t.originalPrompt,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#475569`},ellipsis:!0,children:t.originalPrompt||`-`})})},{title:`参数`,key:`params`,width:180,render:(e,t)=>t.genType===`video`?t.duration||t.aspectRatio||t.resolution?(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(rI,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(rI,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(rI,{children:t.resolution}):null]}):(0,Q.jsx)(rI,{color:`default`,children:`无参数`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(bA,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(rI,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(rI,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(rI,{children:t.imagePx}):null]}):(0,Q.jsx)(rI,{color:`default`,children:`无参数`})},{title:`积分`,key:`credits`,width:130,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12},children:[(0,Q.jsxs)(`div`,{style:{color:`#6366f1`},children:[`总: `,t.creditsCost||0]}),t.textCreditsCost>0?(0,Q.jsxs)(`div`,{style:{color:`#f59e0b`},children:[`文字: `,t.textCreditsCost]}):null]})},{title:`状态`,dataIndex:`status`,width:100,render:e=>{let t=W5({status:e}),n=t.isActive?(0,Q.jsx)(pm,{spin:!0}):t.isSuccess?(0,Q.jsx)(xV,{}):t.isFailure?(0,Q.jsx)(LV,{}):(0,Q.jsx)(Xk,{});return(0,Q.jsx)(rI,{color:t.color,icon:n,children:t.label})}},{title:`阶段`,dataIndex:`pipelineStage`,width:120,render:e=>(0,Q.jsx)(rI,{color:U5(e),children:H5(e)})},{title:`时间`,key:`time`,width:170,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:p7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,p7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:90,fixed:`right`,render:(e,t)=>(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>ae(t),children:`详情`})}],[ae]),de=L?u7[L.genType]||{text:L.genType||`-`,color:`default`,icon:null}:null,fe=L?W5(L):null,pe=(e,t)=>{let n=g7(e),r=_7(e),i=v7(e,t),a=z.references[i]||h7(n),o=r===`image`,s=r===`video`,c=typeof e.name==`string`&&e.name?e.name:`参考素材 ${t+1}`;if(!n)return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsx)(`div`,{style:{width:94,height:94},children:(0,Q.jsx)(y7,{text:`无链接`,compact:!0})}),(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})]},i);if(a===`invalid`)return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsx)(`div`,{style:{width:94,height:94},children:(0,Q.jsx)(y7,{text:d7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(xb,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=f7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>se(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&se(n,s?`视频素材`:o?`图片素材`:`素材`)},style:{width:94,height:94,borderRadius:10,overflow:`hidden`,border:`1px solid #e2e8f0`,background:`#f8f9fc`,position:`relative`,display:`flex`,alignItems:`center`,justifyContent:`center`,cursor:`pointer`},children:[o?(0,Q.jsx)(`img`,{src:l,alt:c,onLoad:()=>oe(i,`valid`),onError:()=>oe(i,`invalid`),style:{display:a===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`cover`}}):null,s?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`video`,{src:l,preload:`metadata`,onLoadedMetadata:()=>oe(i,`valid`),onError:()=>oe(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(RY,{style:{fontSize:18}}),(0,Q.jsx)(`div`,{children:`视频素材`}),(0,Q.jsx)(`div`,{style:{fontSize:10,color:`#94a3b8`,marginTop:2},children:`点击查看`})]})]}):null,!o&&!s?(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[`文件素材`,(0,Q.jsx)(`div`,{style:{fontSize:10,color:`#94a3b8`,marginTop:2},children:`点击查看`})]}):null,a===`checking`&&o?(0,Q.jsx)(`div`,{style:{position:`absolute`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,background:`#f8f9fc`},children:(0,Q.jsx)(pm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(xb,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16,flexWrap:`wrap`,gap:12},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RY,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`创作记录管理`}),(0,Q.jsxs)(rI,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`状态筛选`,value:c||void 0,style:{width:140},onChange:e=>{l(e||``),s(1)},options:[{value:`generating`,label:`生成中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`}]}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`类型筛选`,value:u||void 0,style:{width:120},onChange:e=>{d(e||``),s(1)},options:[{value:`image`,label:`图片`},{value:`video`,label:`视频`}]}),(0,Q.jsx)(Wy,{allowClear:!0,showSearch:!0,loading:j,placeholder:`引擎筛选`,value:f||void 0,style:{width:260},onChange:e=>{p(e||``),s(1),w(e||``)},filterOption:(e,t)=>String(t?.searchText||t?.label||``).toLowerCase().includes(e.trim().toLowerCase()),options:ne}),(0,Q.jsx)(p4e,{value:T,onChange:e=>{e&&e[0]&&e[1]?E([e[0].startOf(`day`),e[1].endOf(`day`)]):E(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(Fj,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(Vy,{style:{color:`#94a3b8`}}),style:{width:150},value:m,onChange:e=>h(e.target.value),onPressEnter:re,allowClear:!0}),(0,Q.jsx)(Fj,{placeholder:`用户名搜索`,prefix:(0,Q.jsx)(Vy,{style:{color:`#94a3b8`}}),style:{width:150},value:g,onChange:e=>_(e.target.value),onPressEnter:re,allowClear:!0}),(0,Q.jsx)(rS,{type:`primary`,onClick:re,style:{borderRadius:8},children:`搜索`}),(0,Q.jsx)(rS,{onClick:ie,style:{borderRadius:8},children:`重置`})]})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:i,columns:ue,dataSource:e,scroll:{x:1650},pagination:{current:o,pageSize:c7,total:n,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:e=>s(e)}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[L?.genType===`video`?(0,Q.jsx)(k1,{}):(0,Q.jsx)(VW,{}),(0,Q.jsx)(`span`,{children:`创作记录详情`})]}),open:!!L,onCancel:G,footer:null,width:900,destroyOnClose:!0,children:L?(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginTop:12},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:12,flexWrap:`wrap`},children:[de?(0,Q.jsx)(rI,{color:de.color,icon:de.icon,children:de.text}):null,fe?(0,Q.jsx)(rI,{color:fe.color,icon:fe.isActive?(0,Q.jsx)(pm,{spin:!0}):fe.isSuccess?(0,Q.jsx)(xV,{}):fe.isFailure?(0,Q.jsx)(LV,{}):(0,Q.jsx)(Xk,{}),children:fe.label}):null,L.pipelineStage?(0,Q.jsx)(rI,{color:U5(L.pipelineStage),children:H5(L.pipelineStage)}):null]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`用户名称`,value:L.userName||`未知用户`}),(0,Q.jsx)(b7,{label:`用户ID`,value:L.userId||`-`}),(0,Q.jsx)(b7,{label:`任务ID`,value:L.id}),(0,Q.jsx)(b7,{label:`生成数量`,value:`${L.generationCount||1} 份`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:`原始提示词`}),(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,lineHeight:1.6},children:L.originalPrompt||`-`})]}),L.genType===`video`?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`时长`,value:L.duration?`${L.duration}秒`:`-`}),(0,Q.jsx)(b7,{label:`画面比例`,value:L.aspectRatio||`-`}),(0,Q.jsx)(b7,{label:`分辨率`,value:L.resolution||`-`})]}):(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`图片档位`,value:L.imageSize||`-`}),(0,Q.jsx)(b7,{label:`图片比例`,value:L.imageProportion||`-`}),(0,Q.jsx)(b7,{label:`像素尺寸`,value:L.imagePx||`-`})]}),L.engineSnapshot?(0,Q.jsxs)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:8},children:`引擎快照`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`引擎名称`,value:L.engineSnapshot.name||`-`}),(0,Q.jsx)(b7,{label:`服务商`,value:L.engineSnapshot.provider||`-`}),(0,Q.jsx)(b7,{label:`模型`,value:L.engineSnapshot.modelName||`-`}),(0,Q.jsx)(b7,{label:`引擎ID`,value:L.engineSnapshot.id||L.engineId||`-`})]})]}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`总积分`,value:(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:L.creditsCost||0})}),(0,Q.jsx)(b7,{label:`文字积分`,value:`${L.textCreditsCost||0} (${L.textTokensUsed||0} tokens)`}),(0,Q.jsx)(b7,{label:`图片 tokens`,value:L.imageTokensUsed??0}),(0,Q.jsx)(b7,{label:`视频 tokens`,value:L.videoTokensUsed??0})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(b7,{label:`第三方任务ID`,value:L.providerTaskId||L.seedanceTaskId||`-`}),(0,Q.jsx)(b7,{label:`轮询次数`,value:L.pollCount??0}),(0,Q.jsx)(b7,{label:`重试次数`,value:L.retryCount??0})]}),!L?.mediaReferences||L.mediaReferences.length===0?null:(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:`参考内容`}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:10,flexWrap:`wrap`},children:L.mediaReferences.map((e,t)=>pe(e,t))})]}),L.mediaReferences&&L.mediaReferences.length>0?(0,Q.jsxs)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:8},children:`附件快速查看(点击新窗口打开)`}),(0,Q.jsx)(bA,{size:8,wrap:!0,children:L.mediaReferences.map((e,t)=>{let n=g7(e),r=_7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)(rS,{size:`small`,icon:r===`video`?(0,Q.jsx)(RY,{}):(0,Q.jsx)(Wq,{}),onClick:()=>ce(n,r===`video`?`video`:`image`,i),children:i},t):null})})]}):null,(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:[`生成资源(共 `,L.generationCount||1,` 份)`]}),(0,Q.jsx)(f4e,{task:L,resolveUrl:f7,onPreview:ce})]}),fe?.isFailure&&L.errorMessage?(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`rgba(239,68,68,0.04)`,border:`1px solid rgba(239,68,68,0.15)`},children:(0,Q.jsxs)(Z.Text,{style:{fontSize:12,color:`#ef4444`},children:[`错误信息: `,L.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,p7(L.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,p7(L.generatedAt)]})]})]}):(0,Q.jsx)(Dy,{description:`暂无详情`})}),(0,Q.jsx)(vM,{title:W?.title||`资源预览`,open:!!W,onCancel:le,footer:null,width:W?.type===`video`?800:600,destroyOnHidden:!0,children:W?W.type===`video`?(0,Q.jsx)(`video`,{src:W.url,controls:!0,autoPlay:!0,style:{width:`100%`,maxHeight:600,background:`#000`,borderRadius:8}},W.url):(0,Q.jsx)(`img`,{src:W.url,alt:W.title,style:{width:`100%`,maxHeight:600,objectFit:`contain`,borderRadius:8}}):null})]})},C7=20,y4e=[{value:`pending`,label:`已创建`},{value:`waiting_user`,label:`等待用户操作`},{value:`processing`,label:`处理中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`},{value:`cancelled`,label:`已取消`}],b4e={pending:{color:`default`,text:`已创建`},waiting_user:{color:`processing`,text:`等待用户操作`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`已完成`},failed:{color:`error`,text:`失败`},cancelled:{color:`default`,text:`已取消`}},x4e={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},w7=e=>e?v2(e):`-`,T7=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,S4e=({status:e})=>{if(!e)return(0,Q.jsx)(rI,{children:`-`});let t=b4e[e]||{color:`blue`,text:e};return(0,Q.jsx)(rI,{color:t.color,children:t.text})},C4e=()=>{let e=Qe(),[t,n]=(0,C.useState)([]),[r,i]=(0,C.useState)(0),[a,o]=(0,C.useState)(!1),[s,c]=(0,C.useState)(1),[l,u]=(0,C.useState)(``),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(``),[h,g]=(0,C.useState)(``),[_,v]=(0,C.useState)(null),[y,b]=(0,C.useState)(``),[x,S]=(0,C.useState)(``),[w,T]=(0,C.useState)(``),[E,D]=(0,C.useState)(null),[O,k]=(0,C.useState)(0),A=(0,C.useCallback)(async()=>{o(!0);try{let e=await qJe({status:l||void 0,keyword:y||void 0,userId:x||void 0,userName:w||void 0,createdStart:E?.[0]?.toISOString?.(),createdEnd:E?.[1]?.toISOString?.(),page:s,pageSize:C7});n(e.items||[]),i(e.total||0)}catch(e){X.error(e?.message||`加载爆款开头复刻任务失败`)}finally{o(!1)}},[s,E,y,x,w,l]);(0,C.useEffect)(()=>{A()},[A,O]);let j=()=>{b(d.trim()),S(p.trim()),T(h.trim()),D(_),c(1)};return(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16,flexWrap:`wrap`,gap:12},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RY,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`爆款开头复刻`}),(0,Q.jsxs)(rI,{color:`purple`,children:[r,` 条记录`]})]}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>k(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`任务状态`,style:{width:160},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:y4e}),(0,Q.jsx)(Fj,{allowClear:!0,prefix:(0,Q.jsx)(Vy,{}),placeholder:`关键词:标题/项目名/核心点`,style:{width:260},value:d,onChange:e=>f(e.target.value),onPressEnter:j}),(0,Q.jsx)(Fj,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:p,onChange:e=>m(e.target.value),onPressEnter:j}),(0,Q.jsx)(Fj,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:h,onChange:e=>g(e.target.value),onPressEnter:j}),(0,Q.jsx)(eA.RangePicker,{showTime:!0,value:_,onChange:v,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(Vy,{}),onClick:j,children:`搜索`}),(0,Q.jsx)(rS,{onClick:()=>{u(``),f(``),m(``),g(``),v(null),b(``),S(``),T(``),D(null),c(1),k(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:C7,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1380},columns:[{title:`项目ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(xb,{title:e,children:T7(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(bA,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:T7(t.userId)})]})},{title:`项目信息`,width:260,render:(e,t)=>(0,Q.jsxs)(bA,{direction:`vertical`,size:2,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.title||t.targetProjectName||`-`}),(0,Q.jsxs)(Z.Text,{type:`secondary`,ellipsis:!0,style:{maxWidth:240},children:[`素材:`,t.sourceProjectName||`-`]}),(0,Q.jsxs)(Z.Text,{type:`secondary`,ellipsis:!0,style:{maxWidth:240},children:[`核心:`,t.coreContentPoint||`-`]})]})},{title:`状态`,dataIndex:`status`,width:130,render:e=>(0,Q.jsx)(S4e,{status:e})},{title:`流程版本`,dataIndex:`flowVersion`,width:100,render:e=>(0,Q.jsx)(rI,{color:e===`v2`?`blue`:`default`,children:String(e||`v1`).toUpperCase()})},{title:`当前步骤`,dataIndex:`currentStepCode`,width:140,render:e=>x4e[e]||e||`-`},{title:`图片结果`,dataIndex:`finalImageUrl`,width:90,render:e=>e?(0,Q.jsx)(rI,{color:`success`,children:`有`}):(0,Q.jsx)(rI,{children:`无`})},{title:`视频结果`,dataIndex:`finalVideoUrl`,width:90,render:e=>e?(0,Q.jsx)(rI,{color:`success`,children:`有`}):(0,Q.jsx)(rI,{children:`无`})},{title:`错误信息`,dataIndex:`errorMessage`,width:220,ellipsis:!0,render:e=>e||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:w7},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:w7},{title:`操作`,fixed:`right`,width:110,render:(t,n)=>(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>e(`/hot-opening-replications/${n.id}?flow_version=${n.flowVersion===`v2`?`v2`:`v1`}`),children:`详情`})}]})]})},E7=({value:e,maxHeight:t=420})=>e==null||e===``?(0,Q.jsx)(Dy,{image:Dy.PRESENTED_IMAGE_SIMPLE,description:`暂无 JSON 数据`}):(0,Q.jsx)(`pre`,{style:{margin:0,padding:12,maxHeight:t,overflow:`auto`,background:`#0f172a`,color:`#e2e8f0`,borderRadius:8,fontSize:12,lineHeight:1.6},children:JSON.stringify(e,null,2)}),w4e=({input:e,output:t,raw:n,inputLabel:r=`查看 input_json`,outputLabel:i=`查看 output_json`,rawLabel:a=`查看原始 JSON`})=>{let o=[];return e!==void 0&&o.push({key:`input`,label:r,children:(0,Q.jsx)(E7,{value:e})}),t!==void 0&&o.push({key:`output`,label:i,children:(0,Q.jsx)(E7,{value:t})}),n!==void 0&&o.push({key:`raw`,label:a,children:(0,Q.jsx)(E7,{value:n})}),o.length?(0,Q.jsx)(zh,{size:`small`,style:{marginTop:12},items:o}):null};async function T4e(e){try{if(navigator.clipboard&&typeof navigator.clipboard.writeText==`function`)return await navigator.clipboard.writeText(e),!0;let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.left=`-9999px`,t.style.top=`0`,document.body.appendChild(t),t.focus(),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}var E4e=`https://ceshi.apiforeign.minzhongzc.com`.replace(/\/api\/?$/i,``).replace(/\/$/,``);function D4e(e){if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${E4e}${t.startsWith(`/`)?t:`/${t}`}`:``}var D7=({url:e,type:t,height:n=260,emptyDescription:r=`暂无资源`,errorDescription:i=`资源加载失败,可能文件不存在、签名过期或访问权限受限。`})=>{let a=(0,C.useMemo)(()=>D4e(e),[e]),[o,s]=(0,C.useState)(!1);(0,C.useEffect)(()=>{s(!1)},[a]);let c=a?(0,Q.jsxs)(bA,{wrap:!0,style:{marginTop:8},children:[(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(hI,{}),onClick:async()=>{if(!a)return;let e=await T4e(a);X.success(e?`资源地址已复制`:`复制失败,请手动复制`)},children:`复制地址`}),(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(Wq,{}),onClick:()=>window.open(a,`_blank`,`noopener,noreferrer`),children:`新窗口打开`}),(0,Q.jsx)(Z.Text,{copyable:{text:a},type:`secondary`,style:{maxWidth:460},ellipsis:!0,children:a})]}):null;return a?(0,Q.jsxs)(`div`,{children:[o?(0,Q.jsx)(ff,{type:`warning`,showIcon:!0,message:`资源预览失败`,description:i,style:{marginBottom:8}}):null,t===`image`?(0,Q.jsx)(xj,{src:a,onError:()=>s(!0),style:{width:`100%`,maxHeight:n,objectFit:`contain`,borderRadius:12,background:`#f8fafc`,border:`1px solid #f1f5f9`},fallback:``,preview:!o}):(0,Q.jsx)(`video`,{src:a,controls:!0,preload:`metadata`,onError:()=>s(!0),style:{width:`100%`,maxHeight:n,borderRadius:12,background:`#0f172a`,border:`1px solid #f1f5f9`}}),c]}):(0,Q.jsx)(`div`,{children:(0,Q.jsx)(`div`,{style:{height:n,borderRadius:12,border:`1px dashed #cbd5e1`,display:`flex`,alignItems:`center`,justifyContent:`center`,background:`#f8fafc`},children:(0,Q.jsx)(Dy,{image:Dy.PRESENTED_IMAGE_SIMPLE,description:r})})})},O7={pending:{text:`待处理`,color:`default`},waiting_user:{text:`等待用户操作`,color:`processing`},processing:{text:`处理中`,color:`warning`},completed:{text:`已完成`,color:`success`},failed:{text:`失败`,color:`error`},cancelled:{text:`已取消`,color:`default`},canceled:{text:`已取消`,color:`default`},timeout:{text:`已超时`,color:`error`},queued:{text:`已入队`,color:`processing`},preparing:{text:`准备中`,color:`processing`},creating_provider_task:{text:`创建远端任务`,color:`processing`},provider_result_staged:{text:`供应商结果已暂存`,color:`processing`},waiting_remote:{text:`等待远端结果`,color:`processing`},polling:{text:`轮询远端结果`,color:`processing`},result_ready:{text:`结果已就绪`,color:`success`},download_queued:{text:`下载已入队`,color:`processing`},downloading:{text:`下载中`,color:`processing`},done:{text:`已完成`,color:`success`},download_failed:{text:`下载失败`,color:`error`},retry_waiting:{text:`等待重试`,color:`orange`},upscale_queued:{text:`超分已入队`,color:`purple`},upscale_processing:{text:`本地超分处理中`,color:`purple`},upscale_polling:{text:`轮询远程超分`,color:`purple`},upscale_downloading:{text:`下载超分结果`,color:`purple`},upscale_finalizing:{text:`超分结果最终化`,color:`purple`},upscale_retry_waiting:{text:`超分等待重试`,color:`orange`},upscale_failed:{text:`超分失败`,color:`error`},pending_analysis:{text:`等待分析`,color:`default`},analyzing:{text:`分析中`,color:`processing`},analysis_completed:{text:`分析完成`,color:`success`},analysis_failed:{text:`分析失败`,color:`error`},splitting:{text:`拆镜中`,color:`warning`},split_completed:{text:`拆镜完成`,color:`success`},partial_failed:{text:`部分失败`,color:`orange`},none:{text:`未拆镜`,color:`default`},not_required:{text:`无需处理`,color:`default`},not_started:{text:`未开始`,color:`default`},project_created:{text:`已创建项目`,color:`processing`},true:{text:`是`,color:`success`},false:{text:`否`,color:`default`}},k7={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},A7={hot_opening_replicate:`爆款开头复刻`,shot_replicate:`拆镜复刻`},j7={ai_suggestion:{text:`AI 建议`,color:`purple`},custom:{text:`自定义`,color:`cyan`},original:{text:`原视频`,color:`blue`}};function M7(e){return e?A7[e]||e:`-`}function N7(e){return e?k7[e]||e:`-`}function O4e(e){return e?O7[e]?.text||k7[e]||A7[e]||j7[e]?.text||e:`-`}function k4e(e){return e?O7[e]?.color||j7[e]?.color||`blue`:`default`}var P7=({status:e,tooltipRaw:t=!0})=>{if(e==null||e===``)return(0,Q.jsx)(rI,{children:`-`});let n=String(e),r=O4e(n),i=(0,Q.jsx)(rI,{color:k4e(n),children:r});return!t||r===n?i:(0,Q.jsx)(xb,{title:n,children:i})};function F7(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function I7(e,...t){for(let n of t){let t=e[n];if(t!=null&&String(t).trim()!==``)return String(t)}return``}function L7(e,t,...n){for(let t of n){let n=e[t];if(n===!0||n===!1)return n;if(n===`true`)return!0;if(n===`false`)return!1}return t}function A4e(e,...t){for(let n of t){let t=e[n];if(typeof t==`number`&&Number.isFinite(t)&&t>0)return t;if(typeof t==`string`&&t.trim()){let e=Number(t);if(Number.isFinite(e)&&e>0)return e}}}function R7(e){if(!F7(e))return null;let t=I7(e,`key`);return t?{key:t,label:I7(e,`label`)||t,type:I7(e,`type`)||void 0,enabled:L7(e,!0,`enabled`),editable:L7(e,!0,`editable`),maxLength:A4e(e,`maxLength`,`max_length`)}:null}function z7(e){if(!F7(e))return null;let t=e.data;return F7(t)?t:Array.isArray(e.sections)?e:null}function j4e(e){return!!z7(e)}function M4e(e){let t=z7(e);return(Array.isArray(t?.sections)?t.sections:[]).map(e=>{let t=R7(e);if(!t||!F7(e))return null;let n=Array.isArray(e.children)?e.children.map(R7).filter(Boolean):[],r=Array.isArray(e.itemFields)?e.itemFields.map(R7).filter(Boolean):Array.isArray(e.item_fields)?e.item_fields.map(R7).filter(Boolean):[];return{...t,contentKey:I7(e,`contentKey`,`content_key`)||void 0,children:n,itemFields:r}}).filter(e=>!!e&&e.enabled)}function N4e(e){return F7(e)?Object.entries(e).filter(([e])=>![`schemaVersion`,`schemaUsage`,`schema_version`,`schema_usage`].includes(e)).map(([e,t])=>Array.isArray(t)&&t.every(F7)?{key:e,label:e,type:`flow`,enabled:!0,editable:!1,itemFields:Array.from(new Set(t.flatMap(e=>Object.keys(e)))).filter(e=>e!==`时间段`).map(e=>({key:e,label:e,enabled:!0,editable:!1})),children:[]}:F7(t)?{key:e,label:e,type:`object`,enabled:!0,editable:!1,children:Object.keys(t).map(e=>({key:e,label:e,enabled:!0,editable:!1})),itemFields:[]}:{key:e,label:e,type:`text`,enabled:!0,editable:!1,children:[],itemFields:[]}):[]}var B7=e=>!!e&&typeof e==`object`&&!Array.isArray(e),V7=e=>typeof e==`string`&&e.length>80,H7=e=>e==null||e===``?(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`}):typeof e==`boolean`?e?`是`:`否`:typeof e==`number`?e:typeof e==`string`?(0,Q.jsx)(Z.Paragraph,{style:{marginBottom:0,whiteSpace:`pre-wrap`},children:e}):(0,Q.jsx)(E7,{value:e,maxHeight:220}),U7=e=>e?(0,Q.jsx)(rI,{color:`processing`,children:`可编辑`}):(0,Q.jsx)(rI,{color:`default`,children:`只读`}),W7=(e,t)=>e[t],P4e=(e,t)=>{let n=W7(e,t.key);if(!B7(n))return(0,Q.jsx)(E7,{value:n??{},maxHeight:220});let r=t.children.filter(e=>e.enabled);return r.length?(0,Q.jsx)(iA,{size:`small`,column:2,bordered:!0,children:r.map(e=>(0,Q.jsx)(iA.Item,{label:(0,Q.jsxs)(bA,{size:4,children:[e.label,U7(e.editable)]}),span:V7(n[e.key])||B7(n[e.key])||Array.isArray(n[e.key])?2:1,children:H7(n[e.key])},e.key))}):(0,Q.jsx)(E7,{value:n,maxHeight:220})},F4e=(e,t)=>{let n=e.itemFields.filter(e=>e.enabled);return n.length?[{key:`时间段`,label:`时间段`,enabled:!0,editable:!1},...n]:Array.from(new Set(t.flatMap(e=>Object.keys(e)))).map(e=>({key:e,label:e,enabled:!0,editable:!1}))},I4e=(e,t)=>{let n=W7(e,t.key);if(!Array.isArray(n)||!n.every(B7))return(0,Q.jsx)(E7,{value:n??[],maxHeight:260});let r=n,i=F4e(t,r);return(0,Q.jsx)(ZF,{size:`small`,rowKey:(e,n)=>`${t.key}-${n}`,columns:i.map(e=>({title:(0,Q.jsxs)(bA,{size:4,children:[e.label,U7(e.editable)]}),dataIndex:e.key,key:e.key,width:V7(r.find(t=>t[e.key])?.[e.key])?320:160,render:e=>H7(e)})),dataSource:r,pagination:!1,scroll:{x:Math.max(900,i.length*180)},tableLayout:`fixed`})},L4e=(e,t)=>H7(W7(e,t.key)),R4e=({schema:e,finalPrompt:t,schemaConfigSnapshot:n,schemaConfigSource:r,schemaConfigVersion:i,schemaConfigIsFallback:a})=>{let o=!!e&&Object.keys(e).length>0;if(!o&&!t)return(0,Q.jsx)(Dy,{description:`暂无视频提词 schema`});let s=o?e:{},c=j4e(n),l=(c?M4e(n):N4e(s)).filter(e=>e.key in s).map(e=>({key:e.key,label:(0,Q.jsxs)(bA,{size:8,wrap:!0,children:[(0,Q.jsx)(`span`,{children:e.label}),U7(e.editable),c?null:(0,Q.jsx)(rI,{color:`warning`,children:`管理后台兜底展示`})]}),children:e.type===`object`?P4e(s,e):e.type===`flow`?I4e(s,e):L4e(s,e)}));return(0,Q.jsxs)(bA,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,Q.jsx)(aO,{size:`small`,title:`Schema 配置来源`,children:(0,Q.jsxs)(iA,{size:`small`,column:3,bordered:!0,children:[(0,Q.jsx)(iA.Item,{label:`来源`,children:r||n?.source||(c?`-`:`viewer_fallback`)}),(0,Q.jsx)(iA.Item,{label:`版本`,children:i||n?.version||`-`}),(0,Q.jsx)(iA.Item,{label:`历史兜底`,children:a||!c?(0,Q.jsx)(rI,{color:`warning`,children:`是`}):(0,Q.jsx)(rI,{color:`success`,children:`否`})})]})}),t?(0,Q.jsx)(aO,{size:`small`,title:`最终视频提示词`,children:(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:t})}):null,l.length?(0,Q.jsx)(zh,{size:`small`,items:l}):o?(0,Q.jsx)(aO,{size:`small`,title:`视频提词 Schema`,children:(0,Q.jsx)(E7,{value:s,maxHeight:360})}):null,o?(0,Q.jsx)(zh,{size:`small`,items:[{key:`raw_schema`,label:`原始 JSON / 历史脏字段排查`,children:(0,Q.jsx)(E7,{value:s,maxHeight:420})}]}):null]})},z4e=[`material_input`,`image_prompt_optimize`,`image_generate`,`video_prompt_optimize`,`video_generate`],B4e=[`material_input`,`video_prompt_optimize`,`video_generate`],V4e={material_input:`参考素材、项目名称和核心内容点`,image_prompt_optimize:`图片 AI 提词优化结果`,image_generate:`图片引擎、生成参数和结果图`,video_prompt_optimize:`视频 JSON schema、动作流程和最终提词`,video_generate:`视频引擎、生成参数、封面和结果视频`},G7=e=>e?v2(e):`-`,K7=e=>e?e.length>18?`${e.slice(0,10)}...${e.slice(-4)}`:e:`-`,H4e=({text:e=`-`})=>(0,Q.jsx)(Z.Text,{type:`secondary`,children:e}),q7=({step:e})=>e?(0,Q.jsx)(w4e,{input:e.input,output:e.output}):null,J7=({index:e,stepCode:t,step:n,current:r})=>(0,Q.jsxs)(bA,{wrap:!0,size:8,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`第${e}步:${N7(t)}`}),(0,Q.jsx)(P7,{status:n?.status||`not_started`}),r?(0,Q.jsx)(rI,{color:`blue`,children:`当前步骤`}):null,(0,Q.jsx)(Z.Text,{type:`secondary`,children:V4e[t]||t}),n?.updatedAt?(0,Q.jsxs)(Z.Text,{type:`secondary`,children:[`更新时间:`,G7(n.updatedAt)]}):null,n?.chatTaskId?(0,Q.jsx)(xb,{title:n.chatTaskId,children:(0,Q.jsxs)(rI,{children:[`Chat:`,K7(n.chatTaskId)]})}):null]}),U4e=(e,t)=>{if(!e)return[];let n=new Set;return n.add(`material_input`),e.currentStepCode&&n.add(e.currentStepCode),Object.values(t).forEach(e=>{(e.status===`failed`||e.errorMessage)&&n.add(e.stepCode)}),e.errorMessage&&n.add(e.currentStepCode||`material_input`),Array.from(n)},Y7=(e,t=`错误信息`)=>e?(0,Q.jsx)(ff,{type:`error`,showIcon:!0,message:t,description:e,style:{marginTop:12,marginBottom:12}}):null,W4e=(e,t=`暂无提词`)=>e?(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:e}):(0,Q.jsx)(H4e,{text:t}),X7=({moduleType:e=`shot_replicate`})=>{let{projectId:t}=nt(),n=Qe(),[r]=jn(),i=r.get(`flow_version`)===`v2`?`v2`:`v1`,[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!1),l=(0,C.useCallback)(async()=>{if(t){c(!0);try{o(e===`hot_opening_replicate`?await JJe(t,i):await $Je(t,i))}catch(e){X.error(e?.message||`加载复刻项目详情失败`)}finally{c(!1)}}},[i,e,t]);(0,C.useEffect)(()=>{l()},[l]);let u=(0,C.useMemo)(()=>{let e={};return(a?.steps||[]).forEach(t=>{e[t.stepCode]=t}),e},[a]),d=a?.module||e,f=M7(d),p=a?.flowVersion===`v2`,m=p?B4e:z4e,h=(0,C.useMemo)(()=>m.map(e=>{let t=u[e],n=`wait`;return t?.status===`completed`?n=`finish`:t?.status===`processing`?n=`process`:t?.status===`failed`&&(n=`error`),{title:N7(e),description:t?(0,Q.jsx)(P7,{status:t.status}):`未创建`,status:n}}),[m,u]),g=(0,C.useMemo)(()=>U4e(a,u),[a,u]);if(s&&!a)return(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(oM,{size:`large`})});if(!a)return(0,Q.jsx)(aO,{style:{margin:24},children:(0,Q.jsx)(Dy,{description:`未找到复刻项目详情`})});let _=u.material_input,v=u.image_prompt_optimize,y=u.image_generate,b=u.video_prompt_optimize,x=u.video_generate,S=a.imageGeneration?.resultImageUrl||a.finalImageUrl,w=a.videoGeneration?.resultVideoCoverUrl||a.finalVideoCoverUrl,T=a.videoGeneration?.resultVideoUrl||a.finalVideoUrl,E=[{key:`material_input`,label:(0,Q.jsx)(J7,{index:1,stepCode:`material_input`,step:_,current:a.currentStepCode===`material_input`}),children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`模块类型`,children:(0,Q.jsx)(P7,{status:d})}),(0,Q.jsx)(iA.Item,{label:`素材步骤ID`,children:a.material?.materialStepId||`-`}),(0,Q.jsx)(iA.Item,{label:`参考素材项目名`,children:a.material?.sourceProjectName||`-`}),(0,Q.jsx)(iA.Item,{label:`生成项目名称`,children:a.material?.targetProjectName||`-`}),(0,Q.jsx)(iA.Item,{label:`核心内容点`,span:2,children:a.material?.coreContentPoint||`-`})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(aO,{size:`small`,title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RY,{}),`素材视频`]}),children:(0,Q.jsx)(D7,{type:`video`,url:a.material?.materialVideoUrl,emptyDescription:`暂无素材视频`})}),(0,Q.jsx)(aO,{size:`small`,title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(VW,{}),`素材图片`]}),children:(0,Q.jsx)(D7,{type:`image`,url:a.material?.materialImageUrl,emptyDescription:`暂无素材图片`})})]}),Y7(_?.errorMessage),(0,Q.jsx)(q7,{step:_})]})},{key:`image_prompt_optimize`,label:(0,Q.jsx)(J7,{index:2,stepCode:`image_prompt_optimize`,step:v,current:a.currentStepCode===`image_prompt_optimize`}),children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`提词步骤ID`,children:a.imageGeneration?.promptStepId||`-`}),(0,Q.jsx)(iA.Item,{label:`步骤状态`,children:(0,Q.jsx)(P7,{status:v?.status||a.imageGeneration?.status})}),(0,Q.jsx)(iA.Item,{label:`图片提示词`,span:2,children:W4e(a.imageGeneration?.prompt,`暂无图片提示词`)})]}),Y7(v?.errorMessage||a.imageGeneration?.errorMessage),(0,Q.jsx)(q7,{step:v})]})},{key:`image_generate`,label:(0,Q.jsx)(J7,{index:3,stepCode:`image_generate`,step:y,current:a.currentStepCode===`image_generate`}),children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`生成步骤ID`,children:a.imageGeneration?.generateStepId||`-`}),(0,Q.jsx)(iA.Item,{label:`Chat任务ID`,children:a.imageGeneration?.chatTaskId||`-`}),(0,Q.jsx)(iA.Item,{label:`状态`,children:(0,Q.jsx)(P7,{status:a.imageGeneration?.status||y?.status})}),(0,Q.jsx)(iA.Item,{label:`图片引擎ID`,children:a.imageGeneration?.engineId||`-`}),(0,Q.jsx)(iA.Item,{label:`图片引擎名称`,children:a.imageGeneration?.engineName||`-`}),(0,Q.jsx)(iA.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(E7,{value:a.imageGeneration?.params||{},maxHeight:160})})]}),Y7(a.imageGeneration?.errorMessage||y?.errorMessage),(0,Q.jsx)(aO,{size:`small`,title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(VW,{}),`图片结果`]}),children:(0,Q.jsx)(D7,{type:`image`,url:S,height:360,emptyDescription:y?.status===`failed`||a.imageGeneration?.errorMessage?`图片生成失败,未返回图片地址`:`暂无图片结果`,errorDescription:`图片资源加载失败,可能图片文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(q7,{step:y})]})},{key:`video_prompt_optimize`,label:(0,Q.jsx)(J7,{index:p?2:4,stepCode:`video_prompt_optimize`,step:b,current:a.currentStepCode===`video_prompt_optimize`}),children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`提词步骤ID`,children:a.videoGeneration?.promptStepId||`-`}),(0,Q.jsx)(iA.Item,{label:`步骤状态`,children:(0,Q.jsx)(P7,{status:b?.status})}),(0,Q.jsx)(iA.Item,{label:`提词参数`,span:3,children:(0,Q.jsx)(E7,{value:a.videoGeneration?.promptParams||{},maxHeight:160})})]}),Y7(b?.errorMessage||a.videoGeneration?.errorMessage),(0,Q.jsx)(R4e,{schema:a.videoGeneration?.promptSchema,finalPrompt:a.videoGeneration?.finalPrompt,schemaConfigSnapshot:a.videoGeneration?.schemaConfigSnapshot,schemaConfigSource:a.videoGeneration?.schemaConfigSource,schemaConfigVersion:a.videoGeneration?.schemaConfigVersion,schemaConfigIsFallback:a.videoGeneration?.schemaConfigIsFallback}),(0,Q.jsx)(q7,{step:b})]})},{key:`video_generate`,label:(0,Q.jsx)(J7,{index:p?3:5,stepCode:`video_generate`,step:x,current:a.currentStepCode===`video_generate`}),children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`生成步骤ID`,children:a.videoGeneration?.generateStepId||`-`}),(0,Q.jsx)(iA.Item,{label:`Chat任务ID`,children:a.videoGeneration?.chatTaskId||`-`}),(0,Q.jsx)(iA.Item,{label:`状态`,children:(0,Q.jsx)(P7,{status:a.videoGeneration?.status||x?.status})}),(0,Q.jsx)(iA.Item,{label:`视频引擎ID`,children:a.videoGeneration?.engineId||`-`}),(0,Q.jsx)(iA.Item,{label:`视频引擎名称`,children:a.videoGeneration?.engineName||`-`}),(0,Q.jsx)(iA.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(E7,{value:a.videoGeneration?.params||{},maxHeight:160})})]}),Y7(a.videoGeneration?.errorMessage||x?.errorMessage),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(aO,{size:`small`,title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(VW,{}),`视频封面`]}),children:(0,Q.jsx)(D7,{type:`image`,url:w,emptyDescription:x?.status===`failed`||a.videoGeneration?.errorMessage?`视频生成失败,未返回封面`:`暂无视频封面`,errorDescription:`视频封面加载失败,可能文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(aO,{size:`small`,title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(k1,{}),`最终视频`]}),children:(0,Q.jsx)(D7,{type:`video`,url:T,emptyDescription:x?.status===`failed`||a.videoGeneration?.errorMessage?`视频生成失败,未返回视频地址`:`暂无最终视频`,errorDescription:`视频资源加载失败,可能文件不存在、签名过期或访问权限受限。`})})]}),(0,Q.jsx)(q7,{step:x})]})}],D=p?E.filter(e=>![`image_prompt_optimize`,`image_generate`].includes(String(e.key))):E;return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bA,{wrap:!0,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(rS,{icon:(0,Q.jsx)(iR,{}),onClick:()=>n(-1),children:`返回`}),(0,Q.jsxs)(Z.Title,{level:3,style:{margin:0},children:[f,`项目详情`]}),(0,Q.jsx)(P7,{status:a.status}),a.module&&a.module!==e?(0,Q.jsxs)(rI,{color:`gold`,children:[`接口模块:`,M7(a.module)]}):null]}),(0,Q.jsx)(rS,{onClick:l,loading:s,children:`刷新`})]}),(0,Q.jsx)(aO,{children:(0,Q.jsxs)(iA,{title:`基础信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`项目ID`,children:a.id}),(0,Q.jsx)(iA.Item,{label:`模块类型`,children:(0,Q.jsx)(P7,{status:d})}),(0,Q.jsx)(iA.Item,{label:`用户ID`,children:a.userId||`-`}),(0,Q.jsx)(iA.Item,{label:`用户名`,children:a.userName||`-`}),(0,Q.jsx)(iA.Item,{label:`标题`,children:a.title||`-`}),(0,Q.jsx)(iA.Item,{label:`当前步骤`,children:(0,Q.jsx)(xb,{title:a.currentStepCode||``,children:N7(a.currentStepCode)})}),(0,Q.jsx)(iA.Item,{label:`流程版本`,children:(0,Q.jsx)(rI,{color:p?`blue`:`default`,children:String(a.flowVersion||`v1`).toUpperCase()})}),(0,Q.jsx)(iA.Item,{label:`步骤数量`,children:a.stepCount||m.length}),(0,Q.jsx)(iA.Item,{label:`状态`,children:(0,Q.jsx)(P7,{status:a.status})}),(0,Q.jsx)(iA.Item,{label:`创建时间`,children:G7(a.createdAt)}),(0,Q.jsx)(iA.Item,{label:`更新时间`,children:G7(a.updatedAt)}),(0,Q.jsx)(iA.Item,{label:`完成时间`,children:G7(a.completedAt)}),a.errorMessage?(0,Q.jsx)(iA.Item,{label:`错误信息`,span:3,children:(0,Q.jsx)(ff,{type:`error`,showIcon:!0,message:a.errorMessage})}):null]})}),(0,Q.jsx)(aO,{title:`步骤进度`,children:(0,Q.jsx)(hN,{items:h})}),(0,Q.jsx)(aO,{title:`最终结果预览`,children:(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`,gap:16},children:[p?null:(0,Q.jsx)(aO,{size:`small`,title:`最终图片`,children:(0,Q.jsx)(D7,{type:`image`,url:a.finalImageUrl||a.imageGeneration?.resultImageUrl,height:220,emptyDescription:`暂无最终图片`})}),(0,Q.jsx)(aO,{size:`small`,title:`最终视频封面`,children:(0,Q.jsx)(D7,{type:`image`,url:a.finalVideoCoverUrl||a.videoGeneration?.resultVideoCoverUrl,height:220,emptyDescription:`暂无最终视频封面`})}),(0,Q.jsx)(aO,{size:`small`,title:`最终视频`,children:(0,Q.jsx)(D7,{type:`video`,url:a.finalVideoUrl||a.videoGeneration?.resultVideoUrl,height:220,emptyDescription:`暂无最终视频`})})]})}),(0,Q.jsx)(zh,{defaultActiveKey:g,items:D}),(0,Q.jsx)(zh,{items:[{key:`steps-table`,label:`完整步骤列表`,children:(0,Q.jsx)(ZF,{rowKey:`id`,size:`small`,pagination:!1,dataSource:a.steps||[],scroll:{x:1100},columns:[{title:`序号`,dataIndex:`stepIndex`,width:70},{title:`步骤`,dataIndex:`stepCode`,width:160,render:e=>(0,Q.jsx)(xb,{title:e,children:N7(e)})},{title:`状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(P7,{status:e})},{title:`版本`,dataIndex:`version`,width:70},{title:`当前有效`,dataIndex:`isCurrent`,width:90,render:e=>e?(0,Q.jsx)(rI,{color:`success`,children:`是`}):(0,Q.jsx)(rI,{children:`否`})},{title:`Chat任务`,dataIndex:`chatTaskId`,width:160,render:e=>(0,Q.jsx)(xb,{title:e||``,children:K7(e)})},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:G7},{title:`完成时间`,dataIndex:`completedAt`,width:170,render:G7},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0,render:e=>e||`-`}]})},{key:`raw-detail`,label:`完整详情原始 JSON`,children:(0,Q.jsx)(E7,{value:a,maxHeight:520})}]})]})})},G4e=()=>(0,Q.jsx)(X7,{moduleType:`hot_opening_replicate`}),K4e={pending_analysis:{text:`等待分析`,color:`default`,active:!0,terminal:!1},analyzing:{text:`分析中`,color:`processing`,active:!0,terminal:!1},analysis_completed:{text:`分析完成`,color:`blue`,active:!1,terminal:!1},analysis_failed:{text:`分析失败`,color:`error`,active:!1,terminal:!0},splitting:{text:`拆镜中`,color:`processing`,active:!0,terminal:!1},split_completed:{text:`拆镜完成`,color:`success`,active:!1,terminal:!0},partial_failed:{text:`部分失败`,color:`warning`,active:!1,terminal:!0},failed:{text:`失败`,color:`error`,active:!1,terminal:!0},deleted:{text:`已删除`,color:`default`,active:!1,terminal:!0}},q4e={not_required:{text:`无需分析`,color:`default`,active:!1,terminal:!0},pending:{text:`等待分析`,color:`default`,active:!0,terminal:!1},processing:{text:`分析中`,color:`processing`,active:!0,terminal:!1},completed:{text:`分析完成`,color:`success`,active:!1,terminal:!0},failed:{text:`分析失败`,color:`error`,active:!1,terminal:!0}},J4e={none:{text:`未拆镜`,color:`default`,active:!1,terminal:!0},pending:{text:`等待拆镜`,color:`default`,active:!0,terminal:!1},processing:{text:`拆镜中`,color:`processing`,active:!0,terminal:!1},retry_waiting:{text:`等待拆镜重试`,color:`orange`,active:!0,terminal:!1},completed:{text:`拆镜完成`,color:`success`,active:!1,terminal:!0},failed:{text:`拆镜失败`,color:`error`,active:!1,terminal:!0}},Y4e={not_started:{text:`未复刻`,color:`default`,active:!1,terminal:!0},project_created:{text:`已创建项目`,color:`processing`,active:!0,terminal:!1},pending:{text:`等待复刻`,color:`default`,active:!0,terminal:!1},waiting_user:{text:`等待用户操作`,color:`processing`,active:!0,terminal:!1},processing:{text:`复刻中`,color:`processing`,active:!0,terminal:!1},completed:{text:`复刻完成`,color:`success`,active:!1,terminal:!0},failed:{text:`复刻失败`,color:`error`,active:!1,terminal:!0},cancelled:{text:`已取消`,color:`default`,active:!1,terminal:!0},canceled:{text:`已取消`,color:`default`,active:!1,terminal:!0}},X4e=e=>String(e||``).trim().toLowerCase(),Z7=(e,t,n=`未知状态`)=>{let r=X4e(e);return{key:r,...t[r]||{text:r||n,color:`default`,active:!1,terminal:!1}}},Q7=e=>Z7(e,K4e),$7=e=>Z7(e,q4e),e9=e=>Z7(e,J4e),t9=e=>Z7(e,Y4e),n9=20,Z4e=[{value:`pending_analysis`,label:`等待分析`},{value:`analyzing`,label:`分析中`},{value:`analysis_completed`,label:`分析完成`},{value:`analysis_failed`,label:`分析失败`},{value:`splitting`,label:`拆镜中`},{value:`split_completed`,label:`拆镜完成`},{value:`partial_failed`,label:`部分失败`},{value:`failed`,label:`失败`}],Q4e=[{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],$4e=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],r9=e=>e?v2(e):`-`,i9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,a9=({status:e,kind:t=`task`})=>{if(!e)return(0,Q.jsx)(rI,{children:`-`});let n=t===`analysis`?$7(e):t===`split`?e9(e):Q7(e);return(0,Q.jsx)(rI,{color:n.color,children:n.text})},e3e=()=>{let e=Qe(),[t,n]=(0,C.useState)([]),[r,i]=(0,C.useState)(0),[a,o]=(0,C.useState)(!1),[s,c]=(0,C.useState)(1),[l,u]=(0,C.useState)(``),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(``),[h,g]=(0,C.useState)(``),[_,v]=(0,C.useState)(``),[y,b]=(0,C.useState)(``),[x,S]=(0,C.useState)(null),[w,T]=(0,C.useState)(``),[E,D]=(0,C.useState)(``),[O,k]=(0,C.useState)(``),[A,j]=(0,C.useState)(null),[M,N]=(0,C.useState)(0),P=(0,C.useCallback)(async()=>{o(!0);try{let e=await YJe({status:l||void 0,analysisStatus:d||void 0,splitStatus:p||void 0,keyword:w||void 0,userId:E||void 0,userName:O||void 0,createdStart:A?.[0]?.toISOString?.(),createdEnd:A?.[1]?.toISOString?.(),page:s,pageSize:n9});n(e.items||[]),i(e.total||0)}catch(e){X.error(e?.message||`加载拆镜复刻任务失败`)}finally{o(!1)}},[d,s,A,w,E,O,p,l]);(0,C.useEffect)(()=>{P()},[P,M]);let F=t.some(e=>Q7(e.status).active||$7(e.analysisStatus).active||e9(e.splitStatus).active);(0,C.useEffect)(()=>{if(!F)return;let e=()=>{document.visibilityState===`visible`&&P()},t=window.setInterval(e,3e4);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[F,P]);let I=()=>{T(h.trim()),D(_.trim()),k(y.trim()),j(x),c(1)};return(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16,flexWrap:`wrap`,gap:12},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(oV,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`拆镜复刻`}),(0,Q.jsxs)(rI,{color:`purple`,children:[r,` 条记录`]})]}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>N(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`总任务状态`,style:{width:150},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:Z4e}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:d||void 0,onChange:e=>{f(e||``),c(1)},options:Q4e}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`拆镜状态`,style:{width:140},value:p||void 0,onChange:e=>{m(e||``),c(1)},options:$4e}),(0,Q.jsx)(Fj,{allowClear:!0,prefix:(0,Q.jsx)(Vy,{}),placeholder:`关键词:标题/内容/分类/受众`,style:{width:260},value:h,onChange:e=>g(e.target.value),onPressEnter:I}),(0,Q.jsx)(Fj,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:_,onChange:e=>v(e.target.value),onPressEnter:I}),(0,Q.jsx)(Fj,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:y,onChange:e=>b(e.target.value),onPressEnter:I}),(0,Q.jsx)(eA.RangePicker,{showTime:!0,value:x,onChange:S,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(Vy,{}),onClick:I,children:`搜索`}),(0,Q.jsx)(rS,{onClick:()=>{u(``),f(``),m(``),g(``),v(``),b(``),S(null),T(``),D(``),k(``),j(null),c(1),N(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:n9,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1500},columns:[{title:`任务集ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(xb,{title:e,children:i9(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(bA,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:i9(t.userId)})]})},{title:`任务信息`,width:300,render:(e,t)=>(0,Q.jsxs)(bA,{direction:`vertical`,size:2,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.title||`-`}),(0,Q.jsxs)(Z.Text,{type:`secondary`,ellipsis:!0,style:{maxWidth:280},children:[`分类:`,t.originalVideoCategory||`-`]}),(0,Q.jsxs)(Z.Text,{type:`secondary`,ellipsis:!0,style:{maxWidth:280},children:[`受众:`,t.originalVideoAudience||`-`]})]})},{title:`总状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(a9,{status:e,kind:`task`})},{title:`分析状态`,dataIndex:`analysisStatus`,width:110,render:e=>(0,Q.jsx)(a9,{status:e,kind:`analysis`})},{title:`拆镜状态`,dataIndex:`splitStatus`,width:110,render:e=>(0,Q.jsx)(a9,{status:e,kind:`split`})},{title:`切片进度`,width:180,render:(e,t)=>{let n=t.segmentCount||0,r=t.completedSegmentCount||0;return(0,Q.jsx)(GM,{size:`small`,percent:n?Math.round(r/n*100):0,format:()=>`${r}/${n}`})}},{title:`失败片段`,dataIndex:`failedSegmentCount`,width:90,render:e=>e?(0,Q.jsx)(rI,{color:`error`,children:e}):(0,Q.jsx)(rI,{children:`0`})},{title:`视频时长`,dataIndex:`videoDurationSeconds`,width:100,render:e=>`${Number(e||0).toFixed(1)}s`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:r9},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:r9},{title:`操作`,fixed:`right`,width:120,render:(t,n)=>(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>e(`/shot-replications/task-sets/${n.id}`),children:`查看切片`})}]})]})},t3e=`https://ceshi.apiforeign.minzhongzc.com`.replace(/\/api\/?$/i,``).replace(/\/$/,``),o9=20,n3e=[{value:`ai_suggestion`,label:`AI 建议`},{value:`custom`,label:`自定义`}],r3e=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],i3e=[{value:`not_required`,label:`无需分析`},{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],a3e=[{value:`not_started`,label:`未复刻`},{value:`project_created`,label:`已创建项目`},{value:`processing`,label:`复刻中`},{value:`completed`,label:`复刻完成`},{value:`failed`,label:`复刻失败`}],o3e=e=>{if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${t3e}${t.startsWith(`/`)?t:`/${t}`}`:``},s9=e=>e?v2(e):`-`,c9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,l9=({status:e,kind:t=`task`})=>{if(!e)return(0,Q.jsx)(rI,{children:`-`});let n=t===`analysis`?$7(e):t===`split`?e9(e):t===`replicate`?t9(e):Q7(e);return(0,Q.jsx)(rI,{color:n.color,children:n.text})},u9=({value:e,maxHeight:t=420})=>(0,Q.jsx)(`pre`,{style:{margin:0,padding:12,maxHeight:t,overflow:`auto`,background:`#0f172a`,color:`#e2e8f0`,borderRadius:8,fontSize:12,lineHeight:1.6},children:JSON.stringify(e??{},null,2)}),d9=({url:e,height:t=280})=>e?(0,Q.jsx)(`video`,{src:o3e(e),controls:!0,preload:`metadata`,style:{width:`100%`,maxHeight:t,borderRadius:12,background:`#0f172a`}}):(0,Q.jsx)(Dy,{description:`暂无视频`,image:Dy.PRESENTED_IMAGE_SIMPLE}),s3e=({items:e=[]})=>(0,Q.jsx)(ZF,{rowKey:`index`,size:`small`,pagination:!1,dataSource:e,scroll:{x:!0},columns:[{title:`序号`,dataIndex:`index`,width:70},{title:`时间节点`,dataIndex:`timeNode`,width:120},{title:`开始`,dataIndex:`startSecond`,width:80,render:e=>`${Number(e||0).toFixed(2)}s`},{title:`结束`,dataIndex:`endSecond`,width:80,render:e=>`${Number(e||0).toFixed(2)}s`},{title:`内容`,dataIndex:`content`,ellipsis:!0},{title:`分类`,dataIndex:`category`,width:140},{title:`受众`,dataIndex:`audience`,ellipsis:!0}]}),c3e=()=>{let{taskSetId:e}=nt(),t=Qe(),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)([]),[o,s]=(0,C.useState)(0),[c,l]=(0,C.useState)(1),[u,d]=(0,C.useState)(!1),[f,p]=(0,C.useState)(!1),[m,h]=(0,C.useState)(0),[g,_]=(0,C.useState)(``),[v,y]=(0,C.useState)(``),[b,x]=(0,C.useState)(``),[S,w]=(0,C.useState)(``),[T,E]=(0,C.useState)(!1),[D,O]=(0,C.useState)(null),k=(0,C.useCallback)(async()=>{if(e){d(!0);try{r(await XJe(e))}catch(e){X.error(e?.message||`加载拆镜任务详情失败`)}finally{d(!1)}}},[e]),A=(0,C.useCallback)(async()=>{if(e){p(!0);try{let t=await ZJe(e,{sourceMode:g||void 0,splitStatus:v||void 0,analysisStatus:b||void 0,replicateStatus:S||void 0,page:c,pageSize:o9});a(t.items||[]),s(t.total||0)}catch(e){X.error(e?.message||`加载拆镜片段失败`)}finally{p(!1)}}},[b,c,S,g,v,e]);(0,C.useEffect)(()=>{k()},[k,m]),(0,C.useEffect)(()=>{A()},[A,m]);let j=!!(n&&(Q7(n.status).active||$7(n.analysisStatus).active||e9(n.splitStatus).active||i.some(e=>e9(e.splitStatus).active||$7(e.analysisStatus).active||t9(e.replicateStatus).active)));(0,C.useEffect)(()=>{if(!j)return;let e=()=>{document.visibilityState===`visible`&&(k(),A())},t=window.setInterval(e,2e4);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[j,k,A]);let M=async e=>{E(!0),O(null);try{O(await QJe(e))}catch(e){X.error(e?.message||`加载片段详情失败`)}};return u&&!n?(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(oM,{size:`large`})}):n?(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bA,{style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{icon:(0,Q.jsx)(iR,{}),onClick:()=>t(`/shot-replications`),children:`返回列表`}),(0,Q.jsx)(Z.Title,{level:3,style:{margin:0},children:`拆镜任务详情`}),(0,Q.jsx)(l9,{status:n.status})]}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>h(e=>e+1),children:`刷新`})]}),(0,Q.jsx)(aO,{children:(0,Q.jsxs)(iA,{title:`总任务信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`任务集ID`,children:n.id}),(0,Q.jsx)(iA.Item,{label:`用户ID`,children:n.userId||`-`}),(0,Q.jsx)(iA.Item,{label:`用户名`,children:n.userName||`-`}),(0,Q.jsx)(iA.Item,{label:`标题`,children:n.title||`-`}),(0,Q.jsxs)(iA.Item,{label:`视频时长`,children:[Number(n.videoDurationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(iA.Item,{label:`总状态`,children:(0,Q.jsx)(l9,{status:n.status,kind:`task`})}),(0,Q.jsx)(iA.Item,{label:`分析状态`,children:(0,Q.jsx)(l9,{status:n.analysisStatus,kind:`analysis`})}),(0,Q.jsx)(iA.Item,{label:`拆镜状态`,children:(0,Q.jsx)(l9,{status:n.splitStatus,kind:`split`})}),(0,Q.jsxs)(iA.Item,{label:`片段数量`,children:[n.completedSegmentCount,`/`,n.segmentCount,`,失败 `,n.failedSegmentCount]}),(0,Q.jsx)(iA.Item,{label:`原视频分类`,children:n.originalVideoCategory||`-`}),(0,Q.jsx)(iA.Item,{label:`创建时间`,children:s9(n.createdAt)}),(0,Q.jsx)(iA.Item,{label:`更新时间`,children:s9(n.updatedAt)}),(0,Q.jsx)(iA.Item,{label:`原视频内容`,span:3,children:n.originalVideoContent||`-`}),(0,Q.jsx)(iA.Item,{label:`原视频受众`,span:3,children:n.originalVideoAudience||`-`}),n.analysisErrorMessage?(0,Q.jsx)(iA.Item,{label:`分析错误`,span:3,children:(0,Q.jsx)(ff,{type:`error`,message:n.analysisErrorMessage})}):null,n.splitErrorMessage?(0,Q.jsx)(iA.Item,{label:`拆镜错误`,span:3,children:(0,Q.jsx)(ff,{type:`error`,message:n.splitErrorMessage})}):null]})}),(0,Q.jsx)(aO,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(RY,{}),`原视频预览`]}),children:(0,Q.jsx)(d9,{url:n.videoUrl,height:360})}),(0,Q.jsxs)(aO,{title:`AI 建议拆镜列表`,children:[n.aiSuggestions?.length?(0,Q.jsx)(s3e,{items:n.aiSuggestions}):(0,Q.jsx)(Dy,{description:`暂无 AI 建议拆镜`}),(0,Q.jsx)(zh,{size:`small`,ghost:!0,style:{marginTop:12},items:[{key:`raw`,label:`查看原视频分析完整 JSON`,children:(0,Q.jsx)(u9,{value:n.analysisResultJson})}]})]}),(0,Q.jsxs)(aO,{title:`片段列表`,children:[(0,Q.jsxs)(bA,{wrap:!0,style:{marginBottom:16},children:[(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`片段来源`,style:{width:140},value:g||void 0,options:n3e,onChange:e=>{_(e||``),l(1)}}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`切割状态`,style:{width:140},value:v||void 0,options:r3e,onChange:e=>{y(e||``),l(1)}}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:b||void 0,options:i3e,onChange:e=>{x(e||``),l(1)}}),(0,Q.jsx)(Wy,{allowClear:!0,placeholder:`复刻状态`,style:{width:150},value:S||void 0,options:a3e,onChange:e=>{w(e||``),l(1)}}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(Vy,{}),onClick:()=>h(e=>e+1),children:`筛选`}),(0,Q.jsx)(rS,{onClick:()=>{_(``),y(``),x(``),w(``),l(1),h(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:f,dataSource:i,pagination:{current:c,pageSize:o9,total:o,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:l},scroll:{x:1550},columns:[{title:`片段ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(xb,{title:e,children:c9(e)})},{title:`序号`,dataIndex:`segmentIndex`,width:70},{title:`来源`,dataIndex:`sourceMode`,width:100,render:e=>e===`ai_suggestion`?(0,Q.jsx)(rI,{color:`purple`,children:`AI建议`}):(0,Q.jsx)(rI,{color:`cyan`,children:`自定义`})},{title:`时间节点`,dataIndex:`timeNode`,width:130},{title:`时长`,dataIndex:`durationSeconds`,width:90,render:e=>`${Number(e||0).toFixed(2)}s`},{title:`切割`,dataIndex:`splitStatus`,width:100,render:e=>(0,Q.jsx)(l9,{status:e,kind:`split`})},{title:`分析`,dataIndex:`analysisStatus`,width:100,render:e=>(0,Q.jsx)(l9,{status:e,kind:`analysis`})},{title:`复刻`,dataIndex:`replicateStatus`,width:110,render:e=>(0,Q.jsx)(l9,{status:e,kind:`replicate`})},{title:`片段内容`,dataIndex:`segmentContent`,width:260,ellipsis:!0,render:e=>e||`-`},{title:`分类`,dataIndex:`segmentCategory`,width:120,render:e=>e||`-`},{title:`关联项目`,width:220,render:(e,n)=>n.moduleProjectId?(0,Q.jsxs)(bA,{direction:`vertical`,size:0,children:[(0,Q.jsx)(rS,{type:`link`,style:{padding:0},onClick:()=>t(`/shot-replications/projects/${n.moduleProjectId}?flow_version=${n.moduleProjectFlowVersion===`v2`?`v2`:`v1`}`),children:c9(n.moduleProjectId)}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:n.moduleProjectTitle||N7(n.moduleProjectCurrentStepCode)}),(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsx)(l9,{status:n.moduleProjectStatus,kind:`replicate`}),(0,Q.jsx)(rI,{color:n.moduleProjectFlowVersion===`v2`?`blue`:`default`,children:String(n.moduleProjectFlowVersion||`v1`).toUpperCase()})]})]}):(0,Q.jsx)(rI,{children:`未创建`})},{title:`错误`,dataIndex:`splitLastError`,width:220,ellipsis:!0,render:(e,t)=>e||t.analysisErrorMessage||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:s9},{title:`操作`,fixed:`right`,width:100,render:(e,t)=>(0,Q.jsx)(rS,{type:`link`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>M(t.id),children:`详情`})}]})]})]}),(0,Q.jsx)(vhe,{title:`片段详情`,width:720,open:T,onClose:()=>E(!1),destroyOnClose:!0,children:D?(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(iA,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(iA.Item,{label:`片段ID`,span:2,children:D.id}),(0,Q.jsx)(iA.Item,{label:`时间节点`,children:D.timeNode}),(0,Q.jsxs)(iA.Item,{label:`时长`,children:[Number(D.durationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(iA.Item,{label:`切割状态`,children:(0,Q.jsx)(l9,{status:D.splitStatus,kind:`split`})}),(0,Q.jsx)(iA.Item,{label:`分析状态`,children:(0,Q.jsx)(l9,{status:D.analysisStatus,kind:`analysis`})}),(0,Q.jsx)(iA.Item,{label:`复刻状态`,children:(0,Q.jsx)(l9,{status:D.replicateStatus,kind:`replicate`})}),(0,Q.jsx)(iA.Item,{label:`关联项目`,children:D.moduleProjectId?(0,Q.jsx)(rS,{type:`link`,onClick:()=>t(`/shot-replications/projects/${D.moduleProjectId}?flow_version=${D.moduleProjectFlowVersion===`v2`?`v2`:`v1`}`),children:D.moduleProjectId}):`-`}),(0,Q.jsx)(iA.Item,{label:`项目流程版本`,children:D.moduleProjectId?(0,Q.jsx)(rI,{color:D.moduleProjectFlowVersion===`v2`?`blue`:`default`,children:String(D.moduleProjectFlowVersion||`v1`).toUpperCase()}):`-`}),(0,Q.jsx)(iA.Item,{label:`片段内容`,span:2,children:D.segmentContent||`-`}),(0,Q.jsx)(iA.Item,{label:`片段分类`,children:D.segmentCategory||`-`}),(0,Q.jsx)(iA.Item,{label:`片段受众`,children:D.segmentAudience||`-`})]}),(0,Q.jsx)(aO,{size:`small`,title:`片段视频`,children:(0,Q.jsx)(d9,{url:D.segmentVideoUrl,height:300})}),D.splitLastError?(0,Q.jsx)(ff,{type:`error`,message:`切割错误`,description:D.splitLastError}):null,D.analysisErrorMessage?(0,Q.jsx)(ff,{type:`error`,message:`分析错误`,description:D.analysisErrorMessage}):null,(0,Q.jsx)(zh,{size:`small`,items:[{key:`analysis`,label:`片段分析 JSON`,children:(0,Q.jsx)(u9,{value:D.analysisJson})},{key:`suggestion`,label:`AI 建议原始 JSON`,children:(0,Q.jsx)(u9,{value:D.aiSuggestionJson})}]})]}):(0,Q.jsx)(oM,{})})]}):(0,Q.jsx)(aO,{style:{margin:24},children:(0,Q.jsx)(Dy,{description:`未找到拆镜任务详情`})})},{Title:l3e,Text:f9,Paragraph:u3e}=Z,{TextArea:p9}=Fj,m9=[{label:`对象`,value:`object`},{label:`数组`,value:`array`},{label:`字符串`,value:`string`},{label:`数字`,value:`number`},{label:`布尔`,value:`boolean`},{label:`流程数组`,value:`flow`}],h9=`画面属性`,d3e=new Set([`视频时长`,`视频比例`,`清晰度`,`帧率`,`推荐分辨率`]);function g9(e,t){return e===h9&&!!t&&d3e.has(t)}function _9(e){return e===h9}function f3e(e){return JSON.parse(JSON.stringify(e??null))}function v9(e,t,n,r){return!e||typeof e!=`object`?r:e[t]===void 0?e[n]===void 0?r:e[n]:e[t]}function p3e(e){return{key:String(e?.key||e?.label||`新流程字段`),label:String(e?.label||e?.key||`新流程字段`),enabled:e?.enabled??!0,editable:e?.editable??!0,maxLength:Number(v9(e,`maxLength`,`max_length`,800)||800),value:e?.value??``}}function y9(e){let t=String(e?.type||`string`),n={key:String(e?.key||e?.label||`新字段`),label:String(e?.label||e?.key||`新字段`),type:t,enabled:e?.enabled??!0,editable:e?.editable??!0,maxLength:Number(v9(e,`maxLength`,`max_length`,t===`flow`?800:1e3)||(t===`flow`?800:1e3))};if(t===`object`)n.children=Array.isArray(e?.children)?e.children.map(y9):[];else if(t===`flow`){n.contentKey=String(v9(e,`contentKey`,`content_key`,e?.key===`镜头流程`?`镜头内容`:`动作内容`));let t=v9(e,`contentAliases`,`content_aliases`,[]);n.contentAliases=Array.isArray(t)?t.map(e=>String(e)).filter(Boolean):[];let r=v9(e,`itemFields`,`item_fields`,[]);n.itemFields=Array.isArray(r)&&r.length>0?r.map(p3e):[{key:n.contentKey,label:n.contentKey,enabled:!0,editable:!0,maxLength:n.maxLength||800,value:``}]}else n.value=e?.value??(t===`array`?[]:t===`boolean`?!1:t===`number`?0:`无`);return n}function m3e(e){let t=Array.isArray(e?.segments)?e.segments:[],n=Array.isArray(e?.ratios)?e.ratios:[];return{minDuration:Number(v9(e,`minDuration`,`min_duration`,1)||1),maxDuration:Number(v9(e,`maxDuration`,`max_duration`,5)||5),ratios:n.map(e=>Number(e||0)),segments:t.map(e=>({stage:String(e?.stage||`新阶段`),description:String(e?.description||e?.desc||`阶段说明`)}))}}function b9(e){let t=Array.isArray(e?.sections)?e.sections:[],n=Array.isArray(e?.timePlanRules)?e.timePlanRules:Array.isArray(e?.time_plan_rules)?e.time_plan_rules:[];return{version:e?.version||`video_prompt_schema_config_v1`,enabled:e?.enabled??!0,sections:t.map(y9),timePlanRules:n.map(m3e)}}function x9(e,t){let n=_9(e.key),r=g9(t,e.key),i={key:e.key,label:e.label,type:r?`string`:e.type,enabled:n||r?!0:!!e.enabled,editable:r?!1:!!e.editable,max_length:e.maxLength};return e.type===`object`?i.children=(e.children||[]).map(t=>x9(t,e.key)):e.type===`flow`?(i.content_key=e.contentKey,i.content_aliases=e.contentAliases||[],i.item_fields=(e.itemFields||[]).map(e=>({key:e.key,label:e.label,enabled:!!e.enabled,editable:!!e.editable,max_length:e.maxLength,value:e.value??``}))):i.value=e.value,i}function S9(e,t){return{version:e.version,enabled:t,sections:(e.sections||[]).map(e=>x9(e)),time_plan_rules:(e.timePlanRules||[]).map(e=>({min_duration:e.minDuration,max_duration:e.maxDuration,ratios:e.ratios||[],segments:(e.segments||[]).map(e=>({stage:e.stage,description:e.description}))}))}}function C9(e){return e?.runtimeSchema||e?.runtime_schema||{}}function w9(e){let t=e?.timePlan||e?.time_plan||C9(e)?.动态时间规划||[];return Array.isArray(t)?t:[]}function h3e(e){return e?.schemaConfigSnapshot||e?.schema_config_snapshot||{}}function g3e(e,t){let n=new Blob([JSON.stringify(t,null,2)],{type:`application/json;charset=utf-8`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e,i.click(),URL.revokeObjectURL(r)}var T9=(e=`string`)=>({key:`新字段`,label:`新字段`,type:e,enabled:!0,editable:!0,maxLength:e===`flow`?800:1e3,value:e===`array`?[]:e===`boolean`?!1:e===`number`?0:`无`,children:e===`object`?[]:void 0,contentKey:e===`flow`?`动作内容`:void 0,contentAliases:e===`flow`?[`动作内容`,`动作`,`动作说明`,`内容`,`说明`]:void 0,itemFields:e===`flow`?[{key:`动作内容`,label:`动作内容`,enabled:!0,editable:!0,maxLength:800,value:``}]:void 0}),_3e=()=>({minDuration:1,maxDuration:5,ratios:[.2,.4,.4],segments:[{stage:`开场吸引`,description:`快速吸引注意力`},{stage:`核心展示`,description:`展示主体动作、核心卖点或主要视觉内容`},{stage:`收尾引导`,description:`给出行动引导并稳定落版`}]}),v3e=()=>{let[e,t]=(0,C.useState)(!1),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)(!0),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(null),[u,d]=(0,C.useState)(null),[f,p]=(0,C.useState)(!1),[m,h]=(0,C.useState)(null),[g]=Y.useForm(),_=(0,C.useRef)(null),v=c?.sections||[],y=c?.timePlanRules||[],b=async()=>{t(!0);try{let e=await eYe();a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),l(b9(e.data)),d(b9(e.defaultData??e.default_data))}catch(e){X.error(e?.message||`加载失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{b()},[]);let x=e=>{l(t=>{let n=b9(f3e(t));return e(n),n})},S=async()=>{if(c){r(!0);try{let e=await tYe({is_enabled:i,data:S9(c,i)});l(b9(e.data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),X.success(`保存成功`)}catch(e){X.error(e?.message||`保存失败`)}finally{r(!1)}}},w=async()=>{r(!0);try{let e=await nYe();l(b9(e.data)),d(b9(e.defaultData??e.default_data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),X.success(`已恢复默认配置`)}catch(e){X.error(e?.message||`恢复默认失败`)}finally{r(!1)}},T=async()=>{try{g3e(`video_prompt_schema_config.json`,await rYe())}catch(e){X.error(e?.message||`导出失败`)}},E=async e=>{let t=e.target.files?.[0];if(e.target.value=``,t)try{let e=await t.text(),n=JSON.parse(e),r=n.data||n,o=await iYe({is_enabled:!!(n.isEnabled??n.is_enabled??i),data:r});l(b9(o.data)),a(!!(o.isEnabled??o.is_enabled??o.data?.enabled??!1)),s(!!(o.usingDefault??o.using_default??!1)),X.success(`导入成功`)}catch(e){X.error(e?.message||`导入失败,请检查 JSON 格式`)}},D=()=>{g.setFieldsValue({duration:8,aspectRatio:`9:16`,resolution:`1080p`,frameRate:`30fps`}),h(null),p(!0)},O=async()=>{if(!c)return;let e=await g.validateFields();try{h(await aYe({is_enabled:i,data:S9(c,i),duration:Number(e.duration||8),aspect_ratio:e.aspectRatio,resolution:e.resolution,frame_rate:e.frameRate}))}catch(e){X.error(e?.message||`预览失败`)}},k=()=>{x(e=>{e.sections.push(T9(`object`))})},A=(e,t)=>{x(n=>{let r=n.sections[e];_9(r?.key)&&(delete t.key,delete t.type,delete t.enabled),n.sections[e]={...n.sections[e],...t},t.type===`object`&&(n.sections[e].children=n.sections[e].children||[]),t.type===`flow`&&(n.sections[e].contentKey=n.sections[e].contentKey||`动作内容`,n.sections[e].contentAliases=n.sections[e].contentAliases||[`动作内容`,`动作`,`动作说明`,`内容`,`说明`],n.sections[e].itemFields=n.sections[e].itemFields||[{key:`动作内容`,label:`动作内容`,enabled:!0,editable:!0,maxLength:800,value:``}])})},j=e=>{x(t=>{t.sections.splice(e,1)})},M=e=>{x(t=>{let n=t.sections[e];n.children=n.children||[],n.children.push(T9(`string`))})},N=(e,t,n)=>{x(r=>{let i=r.sections[e],a=i.children||[],o=a[t];g9(i?.key,o?.key)&&(delete n.key,delete n.type,delete n.enabled,n.editable=!1),a[t]={...a[t],...n},r.sections[e].children=a})},P=(e,t)=>{x(n=>{n.sections[e].children?.splice(t,1)})},F=e=>{x(t=>{let n=t.sections[e];n.itemFields=n.itemFields||[],n.itemFields.push({key:`新流程字段`,label:`新流程字段`,enabled:!0,editable:!0,maxLength:800,value:``})})},I=(e,t,n)=>{x(r=>{let i=r.sections[e].itemFields||[];i[t]={...i[t],...n},r.sections[e].itemFields=i})},L=(e,t)=>{x(n=>{n.sections[e].itemFields?.splice(t,1)})},R=()=>{x(e=>{e.timePlanRules.push(_3e())})},z=(e,t)=>{x(n=>{n.timePlanRules[e]={...n.timePlanRules[e],...t}})},B=e=>{x(t=>{t.timePlanRules.splice(e,1)})},V=(e,t,n)=>{x(r=>{let i=r.timePlanRules[e];n.ratio!==void 0&&(i.ratios[t]=Number(n.ratio||0)),n.stage!==void 0&&(i.segments[t].stage=n.stage),n.description!==void 0&&(i.segments[t].description=n.description)})},H=e=>{x(t=>{let n=t.timePlanRules[e];n.ratios.push(1),n.segments.push({stage:`新阶段`,description:`阶段说明`})})},U=(e,t)=>{x(n=>{let r=n.timePlanRules[e];r.ratios.splice(t,1),r.segments.splice(t,1)})},W=(0,C.useMemo)(()=>v.map((e,t)=>({key:`section-${t}`,label:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(f9,{strong:!0,children:e.label||e.key||`未命名分组`}),e.key&&e.key!==e.label&&(0,Q.jsxs)(rI,{color:`blue`,children:[`key: `,e.key]}),(0,Q.jsx)(rI,{children:e.type}),_9(e.key)&&(0,Q.jsx)(rI,{color:`red`,children:`系统锁定`}),!e.enabled&&!_9(e.key)&&(0,Q.jsx)(rI,{color:`default`,children:`已禁用`})]}),children:(0,Q.jsxs)(bA,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsxs)(XM,{gutter:12,align:`middle`,children:[(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(Fj,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:_9(e.key),onChange:e=>A(t,{key:e.target.value})})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(Fj,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>A(t,{label:e.target.value})})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(Wy,{value:e.type,options:m9,style:{width:`100%`},disabled:_9(e.key),onChange:e=>A(t,{type:e})})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsxs)(bA,{children:[`启用`,(0,Q.jsx)(vN,{checked:_9(e.key)?!0:e.enabled,disabled:_9(e.key),onChange:e=>A(t,{enabled:e})})]})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsxs)(bA,{children:[`可编辑`,(0,Q.jsx)(vN,{checked:e.editable,onChange:e=>A(t,{editable:e})})]})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(ok,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>A(t,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(OO,{span:2,style:{textAlign:`right`},children:(0,Q.jsx)(xM,{title:`确认删除该分组?`,disabled:_9(e.key),onConfirm:()=>j(t),children:(0,Q.jsx)(rS,{danger:!0,icon:(0,Q.jsx)(oI,{}),disabled:_9(e.key)})})})]}),e.type===`object`&&(0,Q.jsx)(aO,{size:`small`,title:`对象字段`,extra:(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(ND,{}),onClick:()=>M(t),children:`新增字段`}),children:(0,Q.jsx)(bA,{direction:`vertical`,style:{width:`100%`},children:(e.children||[]).map((n,r)=>(0,Q.jsxs)(XM,{gutter:8,align:`middle`,children:[(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(Fj,{addonBefore:`key`,value:n.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:g9(e.key,n.key),onChange:e=>N(t,r,{key:e.target.value})})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(Fj,{addonBefore:`label`,value:n.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>N(t,r,{label:e.target.value})})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsx)(Wy,{value:n.type,options:m9.filter(e=>e.value!==`object`&&e.value!==`flow`),style:{width:`100%`},disabled:g9(e.key,n.key),onChange:e=>N(t,r,{type:e})})}),(0,Q.jsx)(OO,{span:2,children:(0,Q.jsxs)(bA,{children:[`启用`,(0,Q.jsx)(vN,{checked:g9(e.key,n.key)?!0:n.enabled,disabled:g9(e.key,n.key),onChange:e=>N(t,r,{enabled:e})})]})}),(0,Q.jsx)(OO,{span:2,children:(0,Q.jsxs)(bA,{children:[`编辑`,(0,Q.jsx)(vN,{checked:g9(e.key,n.key)?!1:n.editable,disabled:g9(e.key,n.key),onChange:e=>N(t,r,{editable:e})})]})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsx)(ok,{min:1,max:2e4,value:n.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>N(t,r,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(OO,{span:5,children:(0,Q.jsx)(Fj,{value:Array.isArray(n.value)?n.value.join(`/`):String(n.value??``),maxLength:n.maxLength||1e3,placeholder:`默认值`,onChange:e=>N(t,r,{value:n.type===`array`?e.target.value.split(`/`).filter(Boolean):e.target.value})})}),(0,Q.jsx)(OO,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)(rS,{danger:!0,size:`small`,icon:(0,Q.jsx)(oI,{}),disabled:g9(e.key,n.key),onClick:()=>P(t,r)})})]},`child-${t}-${r}`))})}),e.type===`flow`&&(0,Q.jsxs)(aO,{size:`small`,title:`流程数组对象字段`,extra:(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(ND,{}),onClick:()=>F(t),children:`新增流程字段`}),children:[(0,Q.jsxs)(XM,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(OO,{span:6,children:(0,Q.jsx)(Fj,{addonBefore:`内容字段`,value:e.contentKey,maxLength:64,onChange:e=>A(t,{contentKey:e.target.value})})}),(0,Q.jsx)(OO,{span:18,children:(0,Q.jsx)(Fj,{addonBefore:`别名 / 分隔`,value:(e.contentAliases||[]).join(`/`),onChange:e=>A(t,{contentAliases:e.target.value.split(`/`).map(e=>e.trim()).filter(Boolean)})})})]}),(0,Q.jsx)(bA,{direction:`vertical`,style:{width:`100%`},children:(e.itemFields||[]).map((e,n)=>(0,Q.jsxs)(XM,{gutter:8,align:`middle`,children:[(0,Q.jsx)(OO,{span:5,children:(0,Q.jsx)(Fj,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`流程对象字段名`,onChange:e=>I(t,n,{key:e.target.value})})}),(0,Q.jsx)(OO,{span:5,children:(0,Q.jsx)(Fj,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>I(t,n,{label:e.target.value})})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsxs)(bA,{children:[`启用`,(0,Q.jsx)(vN,{checked:e.enabled,onChange:e=>I(t,n,{enabled:e})})]})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsxs)(bA,{children:[`编辑`,(0,Q.jsx)(vN,{checked:e.editable,onChange:e=>I(t,n,{editable:e})})]})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(ok,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>I(t,n,{maxLength:Number(e||800)})})}),(0,Q.jsx)(OO,{span:3,children:(0,Q.jsx)(Fj,{value:String(e.value??``),maxLength:e.maxLength||800,placeholder:`默认值`,onChange:e=>I(t,n,{value:e.target.value})})}),(0,Q.jsx)(OO,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)(rS,{danger:!0,size:`small`,icon:(0,Q.jsx)(oI,{}),onClick:()=>L(t,n)})})]},`flow-${t}-${n}`))})]}),e.type!==`object`&&e.type!==`flow`&&(0,Q.jsx)(aO,{size:`small`,title:`默认值`,children:(0,Q.jsx)(p9,{rows:3,value:Array.isArray(e.value)?e.value.join(` `):String(e.value??``),maxLength:e.maxLength||1e3,showCount:!0,onChange:n=>A(t,{value:e.type===`array`?n.target.value.split(` `).filter(Boolean):n.target.value})})})]})})),[v]);return e||!c?(0,Q.jsx)(oM,{}):(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsx)(aO,{children:(0,Q.jsxs)(bA,{direction:`vertical`,style:{width:`100%`},size:`large`,children:[(0,Q.jsxs)(XM,{justify:`space-between`,align:`middle`,children:[(0,Q.jsxs)(OO,{children:[(0,Q.jsx)(l3e,{level:3,style:{margin:0},children:`视频提词 Schema 配置`}),(0,Q.jsx)(u3e,{type:`secondary`,style:{marginBottom:0},children:`配置会被爆款开头复刻和拆镜复刻第 4 步视频 AI 提词共同复用。传给 AI 时只保留纯键值 schema,不携带显示名、启用、可编辑等管理字段。`})]}),(0,Q.jsx)(OO,{children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(f9,{children:`启用自定义配置`}),(0,Q.jsx)(vN,{checked:i,onChange:a}),o&&(0,Q.jsx)(rI,{color:`orange`,children:`当前使用默认配置兜底`}),u&&(0,Q.jsxs)(rI,{children:[`默认分组 `,u.sections.length]})]})})]}),(0,Q.jsx)(ff,{type:`info`,showIcon:!0,message:`长度限制策略`,description:`只对管理后台字段和用户可编辑字段做长度校验,不会自动裁剪 AI 生成结果或第 5 步最终视频 prompt。若供应商因为 prompt 过长拒绝,会按真实失败进入现有日志/退款/重试流程。`}),(0,Q.jsx)(ff,{type:`warning`,showIcon:!0,message:`预览说明`,description:`预览会跟随右上角「启用自定义配置」开关。关闭时会按默认 CLIENT_SCHEMA_V1 兜底预览;打开后才会按当前页面编辑的 sections 和秒数切片规则预览。`}),(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(yZ,{}),loading:n,onClick:S,children:`保存配置`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(Ej,{}),onClick:D,children:`预览运行时 Schema`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(JI,{}),onClick:T,children:`导出 JSON`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(u1,{}),onClick:()=>_.current?.click(),children:`导入 JSON`}),(0,Q.jsx)(xM,{title:`确认恢复默认配置?`,description:`会用 CLIENT_SCHEMA_V1 生成的默认配置覆盖当前配置。`,onConfirm:w,children:(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),children:`恢复默认`})}),(0,Q.jsx)(`input`,{ref:_,type:`file`,accept:`application/json,.json`,style:{display:`none`},onChange:E})]}),(0,Q.jsx)(rO,{items:[{key:`fields`,label:`Schema 字段配置`,children:(0,Q.jsxs)(bA,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsx)(ff,{type:`warning`,showIcon:!0,message:`字段说明`,description:`key 是最终传给 AI 和保存到 prompt_schema 的真实字段名,例如「素材理解」「动作流程」;label 只用于管理后台显示,帮助运营/管理员理解这个字段,不会传给 AI;启用关闭后该字段不会进入运行时 schema;可编辑关闭后用户在第 4 步修改时不能改这个字段。「画面属性」里的视频时长、视频比例、清晰度、帧率、推荐分辨率属于系统锁定参数,不能改 key、不能禁用、不能开放用户编辑。`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(ND,{}),onClick:k,children:`新增一级分组`}),(0,Q.jsx)(zh,{items:W})]})},{key:`time`,label:`秒数切片规则`,children:(0,Q.jsxs)(bA,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsx)(ff,{type:`info`,showIcon:!0,message:`切片规则说明`,description:`这里决定指定视频时长会被拆成几段,以及每段的阶段名称和说明。运行时会同步生成「动态时间规划」「动作流程」「镜头流程」三个数组,三者时间段保持一致。`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(ND,{}),onClick:R,children:`新增秒数规则`}),y.map((e,t)=>(0,Q.jsxs)(aO,{size:`small`,title:`${e.minDuration}-${e.maxDuration} 秒:${e.segments.length} 段`,extra:(0,Q.jsx)(rS,{danger:!0,size:`small`,icon:(0,Q.jsx)(oI,{}),onClick:()=>B(t),children:`删除规则`}),children:[(0,Q.jsxs)(XM,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(ok,{min:1,value:e.minDuration,addonBefore:`最小秒`,style:{width:`100%`},onChange:e=>z(t,{minDuration:Number(e||1)})})}),(0,Q.jsx)(OO,{span:4,children:(0,Q.jsx)(ok,{min:1,value:e.maxDuration,addonBefore:`最大秒`,style:{width:`100%`},onChange:e=>z(t,{maxDuration:Number(e||1)})})}),(0,Q.jsx)(OO,{span:16,children:(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(ND,{}),onClick:()=>H(t),children:`新增片段`})})]}),(0,Q.jsx)(bA,{direction:`vertical`,style:{width:`100%`},children:e.segments.map((n,r)=>(0,Q.jsxs)(XM,{gutter:8,align:`middle`,children:[(0,Q.jsx)(OO,{span:3,children:(0,Q.jsx)(ok,{min:.01,step:.01,value:e.ratios[r],addonBefore:`比例`,style:{width:`100%`},onChange:e=>V(t,r,{ratio:Number(e||.01)})})}),(0,Q.jsx)(OO,{span:5,children:(0,Q.jsx)(Fj,{value:n.stage,maxLength:64,placeholder:`阶段`,onChange:e=>V(t,r,{stage:e.target.value})})}),(0,Q.jsx)(OO,{span:15,children:(0,Q.jsx)(Fj,{value:n.description,maxLength:300,placeholder:`说明`,onChange:e=>V(t,r,{description:e.target.value})})}),(0,Q.jsx)(OO,{span:1,children:(0,Q.jsx)(rS,{danger:!0,size:`small`,icon:(0,Q.jsx)(oI,{}),onClick:()=>U(t,r)})})]},r))})]},t))]})},{key:`json`,label:`JSON 高级查看`,children:(0,Q.jsx)(p9,{rows:24,value:JSON.stringify(S9(c,i),null,2),readOnly:!0})}]})]})}),(0,Q.jsxs)(vM,{title:`预览运行时 Schema`,open:f,onCancel:()=>p(!1),width:980,footer:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{onClick:()=>p(!1),children:`关闭`}),(0,Q.jsx)(rS,{type:`primary`,onClick:O,children:`生成预览`})]}),children:[(0,Q.jsxs)(Y,{form:g,layout:`inline`,style:{marginBottom:16},children:[(0,Q.jsx)(Y.Item,{name:`duration`,label:`时长`,rules:[{required:!0}],children:(0,Q.jsx)(ok,{min:1,max:3600})}),(0,Q.jsx)(Y.Item,{name:`aspectRatio`,label:`比例`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{})}),(0,Q.jsx)(Y.Item,{name:`resolution`,label:`清晰度`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{})}),(0,Q.jsx)(Y.Item,{name:`frameRate`,label:`帧率`,rules:[{required:!0}],children:(0,Q.jsx)(Fj,{})})]}),(0,Q.jsx)(kO,{}),m?(0,Q.jsx)(rO,{items:[{key:`runtime`,label:`运行时 Schema`,children:(0,Q.jsx)(p9,{rows:24,value:JSON.stringify(C9(m),null,2),readOnly:!0})},{key:`timePlan`,label:`动态时间规划(${w9(m).length} 段)`,children:(0,Q.jsx)(p9,{rows:24,value:JSON.stringify(w9(m),null,2),readOnly:!0})},{key:`snapshot`,label:`配置快照`,children:(0,Q.jsx)(p9,{rows:24,value:JSON.stringify(h3e(m),null,2),readOnly:!0})}]}):(0,Q.jsx)(ff,{type:`info`,showIcon:!0,message:`点击生成预览后,可以看到传给 AI 的纯 schema、动态时间规划和本次配置快照。`})]})]})},{Title:y3e,Text:E9,Paragraph:b3e}=Z,x3e=[{key:`local_ffmpeg_crop_v1`,label:`本地 FFmpeg(crop)`},{key:`volc_standard_v1`,label:`火山画质增强(标准版)`},{key:`volc_professional_v1`,label:`火山画质增强(专业版)`},{key:`volc_large_model_v1`,label:`火山画质增强(大模型)`}],D9=[`480p`,`720p`,`1080p`,`2K`,`4K`].map(e=>({label:e,value:e})),S3e=()=>({targetResolution:`1080p`,providerGenerationResolution:`720p`,processorKey:`local_ffmpeg_crop_v1`,enabled:!0});function O9(e){return{enabled:!!e.enabled,version:Number(e.version||1),deleteSourceAfterSuccess:e.deleteSourceAfterSuccess!==!1,rules:Array.isArray(e.rules)?e.rules.map(e=>({...e})):[]}}function C3e(e){return{data:{enabled:e.enabled,version:e.version,delete_source_after_success:e.deleteSourceAfterSuccess,rules:e.rules.map(e=>({target_resolution:e.targetResolution,provider_generation_resolution:e.providerGenerationResolution,processor_key:e.processorKey,enabled:e.enabled}))}}}var w3e=()=>{let{message:e,modal:t}=xv.useApp(),[n,r]=(0,C.useState)(!0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(null),c=(0,C.useCallback)(async()=>{r(!0);try{s(O9((await jqe()).data))}catch(t){e.error(t instanceof Error?t.message:`读取视频超分配置失败`)}finally{r(!1)}},[e]);(0,C.useEffect)(()=>{c()},[c]);let l=(e,t)=>{s(n=>n&&{...n,rules:n.rules.map((n,r)=>r===e?{...n,...t}:n)})},u=e=>{s(t=>t&&{...t,rules:t.rules.filter((t,n)=>n!==e)})},d=()=>{s(e=>e&&{...e,rules:[...e.rules,S3e()]})},f=async()=>{if(!o)return;let t=o.rules.filter(e=>e.enabled).map(e=>e.targetResolution.trim().toLowerCase());if(new Set(t).size!==t.length){e.error(`同一个客户目标分辨率只能存在一条启用规则`);return}a(!0);try{let t=await Mqe(C3e(o));s(O9(t.data)),e.success(`视频超分配置已保存,版本 ${t.data.version}`)}catch(t){e.error(t instanceof Error?t.message:`保存失败`)}finally{a(!1)}};return n||!o?(0,Q.jsx)(`div`,{style:{minHeight:360,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,Q.jsx)(oM,{size:`large`})}):(0,Q.jsxs)(bA,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(aO,{children:[(0,Q.jsxs)(XM,{justify:`space-between`,align:`middle`,gutter:[16,16],children:[(0,Q.jsxs)(OO,{children:[(0,Q.jsx)(y3e,{level:3,style:{margin:0},children:`视频超分配置`}),(0,Q.jsx)(b3e,{type:`secondary`,style:{margin:`8px 0 0`},children:`规则只按客户选择的目标分辨率匹配。视频比例和最终像素由客户任务参数在创建任务时自动计算并固化快照。`})]}),(0,Q.jsx)(OO,{children:(0,Q.jsxs)(bA,{children:[(0,Q.jsxs)(rI,{children:[`配置版本 `,o.version]}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>void c(),children:`重新加载`}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(yZ,{}),loading:i,onClick:()=>void f(),children:`保存配置`})]})})]}),(0,Q.jsxs)(bA,{direction:`vertical`,size:14,style:{marginTop:20},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(E9,{strong:!0,children:`全局开启超分`}),(0,Q.jsx)(vN,{checked:o.enabled,onChange:e=>s({...o,enabled:e})}),(0,Q.jsx)(E9,{type:`secondary`,children:`关闭后新任务走原流程,已经创建的任务仍按自身快照执行。`})]}),(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(E9,{strong:!0,children:`超分成功后删除源视频`}),(0,Q.jsx)(vN,{checked:o.deleteSourceAfterSuccess,onChange:e=>s({...o,deleteSourceAfterSuccess:e})}),(0,Q.jsx)(E9,{type:`secondary`,children:`默认开启。关闭仅用于调试,会保留超分前源视频并持续占用服务器磁盘;超分失败时始终保留源视频。`})]})]})]}),(0,Q.jsx)(aO,{title:`目标分辨率规则`,extra:(0,Q.jsx)(rS,{icon:(0,Q.jsx)(ND,{}),onClick:d,children:`新增规则`}),children:o.rules.length===0?(0,Q.jsx)(Dy,{description:`暂无规则;未匹配规则的视频任务继续走原流程`}):(0,Q.jsx)(bA,{direction:`vertical`,size:12,style:{width:`100%`},children:o.rules.map((e,n)=>{let r=e.enabled&&o.rules.filter(t=>t.enabled&&t.targetResolution.toLowerCase()===e.targetResolution.toLowerCase()).length>1;return(0,Q.jsx)(aO,{size:`small`,children:(0,Q.jsxs)(XM,{gutter:[12,12],align:`bottom`,children:[(0,Q.jsxs)(OO,{xs:24,md:5,children:[(0,Q.jsx)(E9,{type:`secondary`,children:`客户选择分辨率`}),(0,Q.jsx)(Wy,{value:e.targetResolution,options:D9,style:{width:`100%`,marginTop:4},onChange:e=>l(n,{targetResolution:e}),status:r?`error`:void 0})]}),(0,Q.jsxs)(OO,{xs:24,md:5,children:[(0,Q.jsx)(E9,{type:`secondary`,children:`实际生成分辨率`}),(0,Q.jsx)(Wy,{value:e.providerGenerationResolution,options:D9,style:{width:`100%`,marginTop:4},onChange:e=>l(n,{providerGenerationResolution:e})})]}),(0,Q.jsxs)(OO,{xs:24,md:7,children:[(0,Q.jsx)(E9,{type:`secondary`,children:`处理方式`}),(0,Q.jsx)(Wy,{value:e.processorKey,options:x3e.map(e=>({value:e.key,label:e.label})),style:{width:`100%`,marginTop:4},onChange:e=>l(n,{processorKey:e})})]}),(0,Q.jsxs)(OO,{xs:12,md:2,children:[(0,Q.jsx)(E9,{type:`secondary`,children:`启用`}),(0,Q.jsx)(`div`,{style:{marginTop:8},children:(0,Q.jsx)(vN,{checked:e.enabled,onChange:e=>l(n,{enabled:e})})})]}),(0,Q.jsx)(OO,{xs:12,md:2,children:(0,Q.jsx)(rS,{danger:!0,icon:(0,Q.jsx)(oI,{}),onClick:()=>t.confirm({title:`删除这条超分规则?`,onOk:()=>u(n)})})}),(0,Q.jsx)(OO,{span:24,children:(0,Q.jsx)(E9,{type:`secondary`,children:`客户选择该目标分辨率时,无论横屏、竖屏或方形比例,都按本规则选择的实际分辨率生成;最终像素由任务比例自动计算。`})})]})},`${n}-${e.targetResolution}`)})})})]})},T3e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(1),[c,l]=(0,C.useState)(10),[u,d]=(0,C.useState)(null),[f,p]=(0,C.useState)(null),[m,h]=(0,C.useState)(!1),{user:g}=c2(),_=async()=>{a(!0);try{let e=new URLSearchParams;e.set(`page`,String(o)),e.set(`page_size`,String(c)),u!==null&&e.set(`is_handled`,String(u));let n=await E0.get(`/admin/contact-requests?${e.toString()}`);t(n.items),r(n.total)}catch(e){X.error(e?.message||`获取失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{_()},[o,c,u]);let v=async e=>{try{await E0.put(`/admin/contact-requests/${e}/handle`),X.success(`已标记为处理`),_()}catch(e){X.error(e?.message||`操作失败`)}},y=async e=>{try{await E0.delete(`/admin/contact-requests/${e}`),X.success(`已删除`),_()}catch(e){X.error(e?.message||`删除失败`)}},b=e=>{p(e),h(!0)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(kJ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`联系请求管理`}),(0,Q.jsxs)(rI,{color:`purple`,children:[`共 `,n,` 条记录`]})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,Q.jsx)(rS,{type:u===null?`primary`:`default`,onClick:()=>d(null),icon:(0,Q.jsx)(hG,{}),size:`small`,children:`全部`}),(0,Q.jsx)(rS,{type:u===!1?`primary`:`default`,onClick:()=>d(!1),size:`small`,children:`待处理`}),(0,Q.jsx)(rS,{type:u===!0?`primary`:`default`,onClick:()=>d(!0),size:`small`,children:`已处理`})]})]}),i?(0,Q.jsx)(`div`,{style:{textAlign:`center`,padding:40},children:`加载中...`}):e.length===0?(0,Q.jsx)(Dy,{description:`暂无联系请求`,style:{padding:`40px 0`}}):(0,Q.jsx)(ZF,{columns:[{title:`姓名`,dataIndex:`name`,key:`name`,width:100,render:e=>(0,Q.jsx)(Z.Text,{strong:!0,children:e})},{title:`手机号`,dataIndex:`phone`,key:`phone`,width:120},{title:`公司名称`,dataIndex:`companyName`,key:`companyName`,width:150,ellipsis:!0},{title:`行业`,dataIndex:`industry`,key:`industry`,width:120},{title:`状态`,dataIndex:`isHandled`,key:`isHandled`,width:80,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`orange`,children:e?`已处理`:`待处理`})},{title:`提交时间`,dataIndex:`createdAt`,key:`createdAt`,width:160,render:e=>v2(e)},{title:`操作`,key:`actions`,width:180,render:(e,t)=>(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>b(t),children:`查看`}),!t.isHandled&&(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(Ly,{}),onClick:()=>v(t.id),children:`标记处理`}),(0,Q.jsx)(xM,{title:`确定删除该记录?`,onConfirm:()=>y(t.id),children:(0,Q.jsx)(rS,{type:`link`,danger:!0,size:`small`,icon:(0,Q.jsx)(oI,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:{current:o,pageSize:c,total:n,onChange:(e,t)=>{s(e),l(t)},showSizeChanger:!0,showTotal:e=>`共 ${e} 条记录`},scroll:{x:900}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Ej,{}),`联系请求详情`]}),open:m,onCancel:()=>h(!1),footer:null,width:500,children:f&&(0,Q.jsxs)(`div`,{style:{padding:8},children:[(0,Q.jsxs)(`div`,{style:{marginBottom:16},children:[(0,Q.jsxs)(Z.Title,{level:4,style:{marginBottom:16},children:[f.name,(0,Q.jsx)(rI,{color:f.isHandled?`green`:`orange`,style:{marginLeft:12},children:f.isHandled?`已处理`:`待处理`})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`120px 1fr`,gap:12},children:[(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`手机号:`}),(0,Q.jsx)(Z.Text,{children:f.phone}),(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`公司名称:`}),(0,Q.jsx)(Z.Text,{children:f.companyName}),(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`行业:`}),(0,Q.jsx)(Z.Text,{children:f.industry}),(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`提交时间:`}),(0,Q.jsx)(Z.Text,{children:v2(f.createdAt)}),f.message&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`留言:`}),(0,Q.jsx)(Z.Text,{children:f.message})]})]})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:12},children:[!f.isHandled&&(0,Q.jsx)(rS,{type:`primary`,onClick:()=>{v(f.id),h(!1)},icon:(0,Q.jsx)(Ly,{}),children:`标记为已处理`}),(0,Q.jsx)(rS,{onClick:()=>h(!1),children:`关闭`})]})]})})]})},k9=`https://ceshi.apiforeign.minzhongzc.com`.replace(/\/$/,``).replace(/\/api\/?$/i,``).replace(/\/$/,``),E3e=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),A9=e=>{if(!e)return``;let t=String(e).trim();return t?E3e(t)?t:k9?`${k9}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},D3e=360,j9=280;function M9(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,e)):t}function O3e(e,t){let n=Math.max(0,e);if(!n)return{width:0,height:j9};if(!t?.width||!t?.height)return{width:n,height:j9};let r=Math.min(n/t.width,D3e/t.height);return{width:Math.max(1,Math.round(t.width*r)),height:Math.max(1,Math.round(t.height*r))}}function k3e(e,t){if(e.sizeMode===`px`&&e.widthPx)return M9(e.widthPx,1,Math.max(1,t));let n=M9(e.widthRatio??.18,.01,1);return Math.max(1,t*n)}function A3e(e){let t=e.marginX??24,n=e.marginY??24;switch(e.position){case`top_left`:return{left:t,top:n};case`top_center`:return{left:`50%`,top:n,transform:`translateX(-50%)`};case`top_right`:return{right:t,top:n};case`middle_left`:return{left:t,top:`50%`,transform:`translateY(-50%)`};case`center`:return{left:`50%`,top:`50%`,transform:`translate(-50%, -50%)`};case`middle_right`:return{right:t,top:`50%`,transform:`translateY(-50%)`};case`bottom_left`:return{left:t,bottom:n};case`bottom_center`:return{left:`50%`,bottom:n,transform:`translateX(-50%)`};default:return{right:t,bottom:n}}}function j3e(e){let t=e.textWatermark;return!t||!t.text?.trim()?null:{text:t.text.trim(),opacity_level:t.opacityLevel,font_size_px:t.fontSizePx,color:t.color,rotate_deg:t.rotateDeg,gap_x:t.gapX,gap_y:t.gapY,staggered:t.staggered}}var M3e=({mediaUrl:e,mediaType:t=`image`,watermarkUrl:n,config:r,onChange:i})=>{let a=(0,C.useRef)(null),o=(0,C.useRef)(null),s=(0,C.useRef)(null),c=(0,C.useRef)({x:0,y:0}),l=(0,C.useRef)(0),[u,d]=(0,C.useState)(0),[f,p]=(0,C.useState)(null),[m,h]=(0,C.useState)({width:0,height:0}),[g,_]=(0,C.useState)(!1),[v,y]=(0,C.useState)(``),[b,x]=(0,C.useState)(!1),[S,w]=(0,C.useState)(``),T=(0,C.useMemo)(()=>A9(e),[e]),E=(0,C.useMemo)(()=>A9(n),[n]),D=(0,C.useMemo)(()=>O3e(u,f),[u,f]),O=(0,C.useMemo)(()=>k3e(r,D.width),[r,D.width]),k=r.watermarkType===`repeated_text`;(0,C.useLayoutEffect)(()=>{if(!a.current)return;let e=()=>d(a.current?.clientWidth||0);e();let t=new ResizeObserver(e);return t.observe(a.current),()=>t.disconnect()},[]),(0,C.useLayoutEffect)(()=>{if(!s.current)return;let e=()=>{let e=s.current?.getBoundingClientRect();e&&h({width:e.width,height:e.height})};e();let t=new ResizeObserver(e);return t.observe(s.current),()=>t.disconnect()},[E,O]),(0,C.useEffect)(()=>{p(null),y(``),w(``)},[T,t]),(0,C.useEffect)(()=>{if(!k){y(``),x(!1),w(``);return}let e=j3e(r);if(!f?.width||!f.height||!e){y(``);return}let t=++l.current;x(!0),w(``);let n=window.setTimeout(async()=>{try{let n=await xYe({width:f.width,height:f.height,text_watermark:e});l.current===t&&y(n.previewLayerDataUrl)}catch(e){l.current===t&&(y(``),w(e instanceof Error?e.message:`文字水印预览生成失败`))}finally{l.current===t&&x(!1)}},300);return()=>window.clearTimeout(n)},[r,k,f]),(0,C.useEffect)(()=>{let e=e=>{if(!g||!o.current||!i||k)return;let t=o.current.getBoundingClientRect(),n=m.width||O,r=m.height||1,a=Math.max(1,t.width-n),s=Math.max(1,t.height-r),l=M9(e.clientX-t.left-c.current.x,0,a),u=M9(e.clientY-t.top-c.current.y,0,s);i({position:`custom`,customXRatio:Number((l/a).toFixed(4)),customYRatio:Number((u/s).toFixed(4))})},t=()=>_(!1);return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,t),window.addEventListener(`pointercancel`,t),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,t),window.removeEventListener(`pointercancel`,t)}},[g,k,i,m.height,m.width,O]);let A=(0,C.useMemo)(()=>{if(r.position!==`custom`)return A3e(r);let e=m.width||O,t=m.height||1,n=Math.max(0,D.width-e),i=Math.max(0,D.height-t),a=M9(r.customXRatio??.5,0,1),o=M9(r.customYRatio??.5,0,1);return{left:n*a,top:i*o,transform:`none`}},[r,D.height,D.width,m.height,m.width,O]);return(0,Q.jsx)(`div`,{ref:a,style:{position:`relative`,width:`100%`,minHeight:Math.max(j9,D.height),background:`#0f172a`,borderRadius:12,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`#94a3b8`},children:T?(0,Q.jsxs)(`div`,{ref:o,style:{position:`relative`,width:D.width||`100%`,height:D.height||j9,maxWidth:`100%`,overflow:`hidden`,background:`#000`},children:[t===`video`?(0,Q.jsx)(`video`,{src:T,controls:!0,onLoadedMetadata:e=>{let t=e.currentTarget;t.videoWidth&&t.videoHeight&&p({width:t.videoWidth,height:t.videoHeight})},style:{width:`100%`,height:`100%`,objectFit:`fill`,display:`block`}}):(0,Q.jsx)(`img`,{src:T,alt:`素材预览`,onLoad:e=>{let t=e.currentTarget;t.naturalWidth&&t.naturalHeight&&p({width:t.naturalWidth,height:t.naturalHeight})},style:{width:`100%`,height:`100%`,objectFit:`fill`,display:`block`}}),k&&v&&(0,Q.jsx)(`img`,{src:v,alt:`重复文字水印预览`,draggable:!1,style:{position:`absolute`,inset:0,width:`100%`,height:`100%`,objectFit:`fill`,zIndex:2,pointerEvents:`none`,userSelect:`none`}}),k&&(b||S)&&(0,Q.jsx)(`div`,{style:{position:`absolute`,left:12,bottom:12,zIndex:3,padding:`6px 10px`,borderRadius:8,background:`rgba(15, 23, 42, 0.82)`,color:`#e2e8f0`,fontSize:12},children:b?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(oM,{size:`small`}),` 正在生成精准预览...`]}):S}),!k&&E&&(0,Q.jsx)(`img`,{ref:s,src:E,alt:`水印预览`,draggable:!1,onLoad:e=>{let t=e.currentTarget.getBoundingClientRect();h({width:t.width,height:t.height})},onPointerDown:e=>{if(!i)return;e.preventDefault();let t=e.currentTarget.getBoundingClientRect();c.current={x:e.clientX-t.left,y:e.clientY-t.top},_(!0)},style:{position:`absolute`,zIndex:2,cursor:i?`move`:`default`,width:O,opacity:(r.opacityLevel??6)/10,userSelect:`none`,touchAction:`none`,pointerEvents:i?`auto`:`none`,...A}})]}):(0,Q.jsx)(`span`,{children:`上传素材后可预览水印效果`})})},N3e=[{label:`左上角`,value:`top_left`},{label:`顶部居中`,value:`top_center`},{label:`右上角`,value:`top_right`},{label:`左侧居中`,value:`middle_left`},{label:`正中间`,value:`center`},{label:`右侧居中`,value:`middle_right`},{label:`左下角`,value:`bottom_left`},{label:`底部居中`,value:`bottom_center`},{label:`右下角`,value:`bottom_right`},{label:`拖拽自定义`,value:`custom`}],N9={text:`民众智创`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0},P9=({value:e,onChange:t,watermarks:n,mediaUrl:r,mediaType:i})=>{let a=n=>t({...e,...n}),o=t=>{a({textWatermark:{...N9,...e.textWatermark||{},...t}})},s=n.find(t=>t.id===e.watermarkId)?.fileUrl,c={...N9,...e.textWatermark||{}};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(Y,{layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{label:`水印类型`,required:!0,children:(0,Q.jsxs)(sD.Group,{value:e.watermarkType||`image`,onChange:e=>{let t=e.target.value;a({watermarkType:t,textWatermark:t===`repeated_text`?c:null})},children:[(0,Q.jsx)(sD.Button,{value:`image`,children:`图片水印`}),(0,Q.jsx)(sD.Button,{value:`repeated_text`,children:`重复文字水印`})]})}),e.watermarkType===`repeated_text`?(0,Q.jsxs)(XM,{gutter:16,children:[(0,Q.jsx)(OO,{span:24,children:(0,Q.jsx)(Y.Item,{label:`水印文字`,required:!0,extra:`字体由后端固定开源可商用字体渲染,前端预览层和最终生成使用同一后端渲染逻辑。`,children:(0,Q.jsx)(Fj,{maxLength:64,showCount:!0,value:c.text,onChange:e=>o({text:e.target.value}),placeholder:`请输入重复水印文字`})})}),(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`文字透明度:${c.opacityLevel}/10`,required:!0,children:(0,Q.jsx)(jk,{min:1,max:10,step:1,value:c.opacityLevel,onChange:e=>o({opacityLevel:e})})})}),(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`字号(px)`,required:!0,children:(0,Q.jsx)(ok,{min:8,max:160,style:{width:`100%`},value:c.fontSizePx,onChange:e=>o({fontSizePx:Number(e||28)})})})}),(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`文字颜色`,required:!0,children:(0,Q.jsx)(Fme,{value:c.color,onChange:(e,t)=>o({color:t||`#ffffff`}),showText:!0,presets:[{label:`推荐`,colors:[`#ffffff`,`#000000`,`#ff4d4f`,`#1677ff`,`#52c41a`,`#faad14`,`#722ed1`,`#eb2f96`]}]})})}),(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`旋转角度`,required:!0,children:(0,Q.jsx)(ok,{min:-90,max:90,style:{width:`100%`},value:c.rotateDeg,onChange:e=>o({rotateDeg:Number(e??-30)})})})}),(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`横向间距`,required:!0,children:(0,Q.jsx)(ok,{min:20,max:2e3,style:{width:`100%`},value:c.gapX,onChange:e=>o({gapX:Number(e||220)})})})}),(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`纵向间距`,required:!0,children:(0,Q.jsx)(ok,{min:20,max:2e3,style:{width:`100%`},value:c.gapY,onChange:e=>o({gapY:Number(e||140)})})})}),(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`交错排列`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{checked:c.staggered,onChange:e=>o({staggered:e})})})})]}):(0,Q.jsxs)(XM,{gutter:16,children:[(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`水印图片`,required:!0,children:(0,Q.jsx)(Wy,{placeholder:`请选择水印`,value:e.watermarkId||void 0,onChange:e=>a({watermarkId:e}),options:n.map(e=>({label:`${e.name}${e.isDefault?`(默认)`:``}`,value:e.id}))})})}),(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`透明度:${e.opacityLevel}/10`,required:!0,children:(0,Q.jsx)(jk,{min:1,max:10,step:1,value:e.opacityLevel,onChange:e=>a({opacityLevel:e})})})}),(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`水印位置`,required:!0,children:(0,Q.jsx)(Wy,{value:e.position,onChange:e=>a({position:e}),options:N3e})})}),(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`大小模式`,required:!0,children:(0,Q.jsx)(Wy,{value:e.sizeMode,onChange:e=>a({sizeMode:e}),options:[{label:`按素材宽度比例`,value:`ratio`},{label:`固定像素宽度`,value:`px`}]})})}),e.sizeMode===`ratio`?(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`水印宽度比例`,required:!0,children:(0,Q.jsx)(ok,{min:.01,max:1,step:.01,style:{width:`100%`},value:e.widthRatio??.18,onChange:e=>a({widthRatio:Number(e||.18)})})})}):(0,Q.jsx)(OO,{span:12,children:(0,Q.jsx)(Y.Item,{label:`水印宽度(px)`,required:!0,children:(0,Q.jsx)(ok,{min:1,max:1e4,style:{width:`100%`},value:e.widthPx??200,onChange:e=>a({widthPx:Number(e||200)})})})}),(0,Q.jsx)(OO,{span:6,children:(0,Q.jsx)(Y.Item,{label:`横向边距`,children:(0,Q.jsx)(ok,{min:0,max:2e3,style:{width:`100%`},value:e.marginX,onChange:e=>a({marginX:Number(e||0)})})})}),(0,Q.jsx)(OO,{span:6,children:(0,Q.jsx)(Y.Item,{label:`纵向边距`,children:(0,Q.jsx)(ok,{min:0,max:2e3,style:{width:`100%`},value:e.marginY,onChange:e=>a({marginY:Number(e||0)})})})})]})]}),(0,Q.jsx)(M3e,{mediaUrl:r,mediaType:i,watermarkUrl:s,config:e,onChange:e=>a(e)})]})},P3e={image:`图片`,video:`视频`,audio:`音频`};function F3e(e){if(e.type.startsWith(`image/`))return`image`;if(e.type.startsWith(`video/`))return`video`;if(e.type.startsWith(`audio/`))return`audio`;let t=e.name.toLowerCase();return/\.(jpg|jpeg|png|webp|gif)$/.test(t)?`image`:/\.(mp4|mov|m4v|webm)$/.test(t)?`video`:/\.(mp3|wav|m4a|aac)$/.test(t)?`audio`:null}function I3e(e,t){return t!==`video`&&t!==`audio`?Promise.resolve(null):new Promise(n=>{let r=URL.createObjectURL(e),i=document.createElement(t===`video`?`video`:`audio`);i.preload=`metadata`,i.onloadedmetadata=()=>{let e=Number.isFinite(i.duration)?Number(i.duration.toFixed(3)):null;URL.revokeObjectURL(r),n(e)},i.onerror=()=>{URL.revokeObjectURL(r),n(null)},i.src=r})}var F9=({value:e,onChange:t,disabled:n})=>{let r=(0,C.useMemo)(()=>e||[],[e]),[i,a]=(0,C.useState)(!1),o=(e,n)=>{t(r.map((t,r)=>r===e?{...t,...n}:t))},s=e=>{t(r.filter((t,n)=>n!==e))},c=async e=>{let n=F3e(e);if(!n||![`image`,`video`,`audio`].includes(n))return X.warning(`附件仅支持图片、视频、音频`),ZI.LIST_IGNORE;a(!0);try{let i=await I3e(e,n),a=(await F0(e,{scene:`home_material_reference`,resourceType:n,durationSeconds:i})).mediaReference;if(!a||![`image`,`video`,`audio`].includes(a.type))throw Error(`上传返回附件格式异常`);t([...r,{url:a.url,type:a.type,name:a.name||e.name,duration:a.duration??i,source:a.source,uploadResourceId:a.uploadResourceId,displayUrl:a.displayUrl||a.url,previewUrl:a.previewUrl||a.displayUrl||a.url,role:a.role||`reference_${a.type}`}]),X.success(`附件上传成功`)}catch(e){X.error(e?.message||`附件上传失败`)}finally{a(!1)}return ZI.LIST_IGNORE};return(0,Q.jsxs)(bA,{direction:`vertical`,style:{width:`100%`},size:12,children:[(0,Q.jsx)(ZI,{beforeUpload:e=>c(e),showUploadList:!1,disabled:n||i,accept:`image/*,video/*,audio/*`,children:(0,Q.jsx)(rS,{icon:(0,Q.jsx)(u1,{}),loading:i,disabled:n||i,children:`上传附件`})}),r.length===0?(0,Q.jsx)(`div`,{style:{color:`#999`,fontSize:13},children:`暂无附件。可上传图片、视频、音频,保存后会随前台素材接口返回。`}):(0,Q.jsx)(bA,{direction:`vertical`,style:{width:`100%`},size:10,children:r.map((e,t)=>{let r=A9(e.previewUrl||e.displayUrl||e.url),i=A9(e.displayUrl||e.url);return(0,Q.jsx)(aO,{size:`small`,bodyStyle:{padding:12},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:12,alignItems:`flex-start`},children:[(0,Q.jsxs)(`div`,{style:{width:120,minHeight:72,flexShrink:0,borderRadius:8,overflow:`hidden`,background:`#f6f7fb`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:[e.type===`image`&&(0,Q.jsx)(xj,{width:120,height:72,style:{objectFit:`cover`},src:r}),e.type===`video`&&(0,Q.jsx)(`video`,{src:i,style:{width:120,height:72,objectFit:`cover`,background:`#000`},controls:!0}),e.type===`audio`&&(0,Q.jsx)(`audio`,{src:i,controls:!0,style:{width:112}})]}),(0,Q.jsxs)(bA,{direction:`vertical`,style:{flex:1,minWidth:0},size:8,children:[(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(rI,{color:e.type===`image`?`blue`:e.type===`video`?`purple`:`green`,children:P3e[e.type]||e.type}),e.uploadResourceId&&(0,Q.jsxs)(rI,{children:[`资源ID:`,e.uploadResourceId]})]}),(0,Q.jsx)(Fj,{size:`small`,value:e.name||``,placeholder:`附件名称`,disabled:n,onChange:e=>o(t,{name:e.target.value||null})}),(0,Q.jsx)(Fj,{size:`small`,value:e.role||``,placeholder:`附件角色,如 reference_image`,disabled:n,onChange:e=>o(t,{role:e.target.value||null})}),(e.type===`video`||e.type===`audio`)&&(0,Q.jsx)(ok,{size:`small`,min:0,precision:3,style:{width:180},value:e.duration??null,placeholder:`时长(秒)`,disabled:n,onChange:e=>o(t,{duration:e===null?null:Number(e)})}),(0,Q.jsx)(Fj,{size:`small`,value:e.url,disabled:!0})]}),(0,Q.jsx)(rS,{danger:!0,size:`small`,icon:(0,Q.jsx)(oI,{}),disabled:n,onClick:()=>s(t),children:`删除`})]})},`${e.url}-${t}`)})})]})},I9={draft:{text:`草稿`,color:`default`},processing:{text:`处理中`,color:`processing`},success:{text:`成功`,color:`success`},failed:{text:`失败`,color:`error`}},L9={text:`民众智创`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0},L3e={watermarkType:`image`,watermarkId:null,opacityLevel:6,position:`bottom_right`,customXRatio:null,customYRatio:null,sizeMode:`ratio`,widthRatio:.18,widthPx:null,marginX:24,marginY:24,textWatermark:L9},R3e={image:`图片`,video:`视频`,audio:`音频`};function z3e(e){return{text:e?.text||L9.text,opacityLevel:e?.opacityLevel??e?.opacity_level??L9.opacityLevel,fontSizePx:e?.fontSizePx??e?.font_size_px??L9.fontSizePx,color:e?.color||L9.color,rotateDeg:e?.rotateDeg??e?.rotate_deg??L9.rotateDeg,gapX:e?.gapX??e?.gap_x??L9.gapX,gapY:e?.gapY??e?.gap_y??L9.gapY,staggered:e?.staggered??L9.staggered}}function R9(e,t){let n=e||{},r=n.watermarkType||n.watermark_type||`image`;return{watermarkType:r,watermarkId:r===`repeated_text`?null:n.watermarkId||n.watermark_id||t||null,opacityLevel:n.opacityLevel||n.opacity_level||6,position:n.position||`bottom_right`,customXRatio:n.customXRatio??n.custom_x_ratio??null,customYRatio:n.customYRatio??n.custom_y_ratio??null,sizeMode:n.sizeMode||n.size_mode||`ratio`,widthRatio:n.widthRatio??n.width_ratio??.18,widthPx:n.widthPx??n.width_px??null,marginX:n.marginX??n.margin_x??24,marginY:n.marginY??n.margin_y??24,textWatermark:z3e(n.textWatermark||n.text_watermark)}}function z9(e){return e.watermarkType===`repeated_text`?!!e.textWatermark?.text?.trim():!!e.watermarkId}function B3e(e,t=48){let n=(e||``).trim();return n?n.length>t?`${n.slice(0,t)}...`:n:``}function V3e(e){let t=e||[];return t.length===0?(0,Q.jsx)(Z.Text,{type:`secondary`,children:`暂无附件`}):(0,Q.jsx)(bA,{direction:`vertical`,style:{width:`100%`},size:12,children:t.map((e,t)=>{let n=A9(e.displayUrl||e.url),r=A9(e.previewUrl||e.displayUrl||e.url);return(0,Q.jsxs)(`div`,{style:{border:`1px solid #f0f0f5`,borderRadius:8,padding:12,display:`flex`,gap:12},children:[(0,Q.jsxs)(`div`,{style:{width:140,minHeight:80,flexShrink:0,background:`#f6f7fb`,borderRadius:8,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:[e.type===`image`&&(0,Q.jsx)(xj,{width:140,height:80,style:{objectFit:`cover`},src:r}),e.type===`video`&&(0,Q.jsx)(`video`,{src:n,controls:!0,style:{width:140,height:80,objectFit:`cover`,background:`#000`}}),e.type===`audio`&&(0,Q.jsx)(`audio`,{src:n,controls:!0,style:{width:132}})]}),(0,Q.jsxs)(bA,{direction:`vertical`,size:6,style:{flex:1,minWidth:0},children:[(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(rI,{children:R3e[e.type]||e.type}),e.duration!==void 0&&e.duration!==null&&(0,Q.jsxs)(rI,{children:[e.duration,`s`]}),e.role&&(0,Q.jsx)(rI,{children:e.role})]}),(0,Q.jsx)(Z.Text,{strong:!0,children:e.name||`未命名附件`}),(0,Q.jsx)(Z.Text,{copyable:!0,ellipsis:!0,style:{maxWidth:620},children:e.url})]})]},`${e.url}-${t}`)})})}var H3e=({categories:e,watermarks:t,reloadKey:n})=>{let[r,i]=(0,C.useState)([]),[a,o]=(0,C.useState)(0),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)({page:1,pageSize:20}),[d,f]=(0,C.useState)(null),[p,m]=(0,C.useState)(null),[h,g]=(0,C.useState)(L3e),[_,v]=(0,C.useState)(!1),[y,b]=(0,C.useState)(null),[x,S]=(0,C.useState)(``),[w,T]=(0,C.useState)([]),[E,D]=(0,C.useState)(!1),O=async()=>{c(!0);try{let e=await gYe(l);i(e.items),o(e.total)}finally{c(!1)}};(0,C.useEffect)(()=>{O()},[l,n]),(0,C.useEffect)(()=>{let e=r.filter(e=>e.status===`processing`);if(e.length===0)return;let t=window.setInterval(async()=>{(await Promise.all(e.map(e=>_Ye(e.id).catch(()=>null)))).some(e=>e&&e.status!==`processing`)&&O()},2500);return()=>window.clearInterval(t)},[r]);let k=e=>{m(e),g(R9(e.watermarkConfig,e.watermarkId))},A=e=>{b(e),S(e.generationPrompt||``),T(e.mediaReferences||[])},j=e=>e.mediaType===`image`?A9(e.watermarkedUrl||e.originalUrl):A9(e.coverUrl||``),M=e=>A9(e.watermarkedUrl||e.originalUrl),N=e=>{vM.confirm({title:`确认删除该素材?`,content:e.title||e.id,okText:`删除`,okButtonProps:{danger:!0},cancelText:`取消`,async onOk(){await CYe(e.id),X.success(`删除成功`),await O()}})};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(bA,{style:{marginBottom:16},wrap:!0,children:[(0,Q.jsx)(Wy,{allowClear:!0,style:{width:180},placeholder:`行业`,value:l.categoryId,onChange:e=>u(t=>({...t,categoryId:e,page:1})),options:e.map(e=>({label:e.name,value:e.id}))}),(0,Q.jsx)(Wy,{allowClear:!0,style:{width:140},placeholder:`素材类型`,value:l.mediaType,onChange:e=>u(t=>({...t,mediaType:e,page:1})),options:[{label:`图片`,value:`image`},{label:`视频`,value:`video`}]}),(0,Q.jsx)(Wy,{allowClear:!0,style:{width:140},placeholder:`处理状态`,value:l.status,onChange:e=>u(t=>({...t,status:e,page:1})),options:Object.entries(I9).map(([e,t])=>({value:e,label:t.text}))}),(0,Q.jsx)(rS,{onClick:O,children:`刷新`})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:s,dataSource:r,pagination:{current:l.page,pageSize:l.pageSize,total:a,onChange:(e,t)=>u(n=>({...n,page:e,pageSize:t}))},scroll:{x:1380},columns:[{title:`预览`,width:110,render:(e,t)=>{let n=j(t);if(t.mediaType===`image`)return n?(0,Q.jsx)(xj,{width:86,height:64,style:{objectFit:`cover`,borderRadius:6},src:n}):`-`;let r=M(t),i=A9(t.coverUrl||``);return r?(0,Q.jsx)(`video`,{src:r,poster:i||void 0,muted:!0,preload:`metadata`,style:{width:100,height:64,objectFit:`cover`,borderRadius:6,background:`#000`}}):`-`}},{title:`标题`,dataIndex:`title`,render:e=>e||(0,Q.jsx)(`span`,{style:{color:`#999`},children:`未命名素材`})},{title:`行业`,dataIndex:`categoryName`},{title:`类型`,dataIndex:`mediaType`,render:e=>e===`image`?`图片`:`视频`},{title:`状态`,dataIndex:`status`,render:e=>(0,Q.jsx)(rI,{color:I9[e]?.color,children:I9[e]?.text||e})},{title:`生成提词`,width:210,render:(e,t)=>t.generationPrompt?(0,Q.jsx)(xb,{title:t.generationPrompt,children:(0,Q.jsx)(Z.Text,{children:B3e(t.generationPrompt)})}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`未设置`})},{title:`附件`,width:90,render:(e,t)=>(0,Q.jsx)(rI,{color:(t.mediaReferences?.length||0)>0?`blue`:`default`,children:t.mediaReferences?.length||0})},{title:`水印`,render:(e,t)=>R9(t.watermarkConfig,t.watermarkId).watermarkType===`repeated_text`?`重复文字水印`:t.watermarkName||`图片水印`},{title:`排序`,dataIndex:`sortOrder`},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0},{title:`操作`,width:170,align:`center`,render:(e,t)=>(0,Q.jsxs)(bA,{size:8,children:[(0,Q.jsx)(rS,{size:`small`,onClick:()=>f(t),children:`查看`}),(0,Q.jsx)(SA,{trigger:[`click`],menu:{items:[{key:`generation_config`,icon:(0,Q.jsx)(cI,{}),label:`编辑生成配置`},{key:`regenerate`,icon:(0,Q.jsx)(qM,{}),label:`重新生成水印`},{key:`delete`,icon:(0,Q.jsx)(oI,{}),label:`删除素材`,danger:!0}],onClick:({key:e})=>{e===`generation_config`&&A(t),e===`regenerate`&&k(t),e===`delete`&&N(t)}},children:(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(YJ,{}),children:`更多`})})]})}]}),(0,Q.jsx)(vM,{title:`素材详情`,open:!!d,onCancel:()=>f(null),footer:null,width:960,destroyOnHidden:!0,children:d&&(0,Q.jsxs)(bA,{direction:`vertical`,style:{width:`100%`},size:`large`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:`原素材:`}),d.originalUrl?A9(d.originalUrl):`-`]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:`水印素材:`}),d.watermarkedUrl?A9(d.watermarkedUrl):`-`]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:`生成提词:`}),(0,Q.jsx)(`div`,{style:{marginTop:8,padding:12,borderRadius:8,background:`#f8fafc`,whiteSpace:`pre-wrap`},children:d.generationPrompt||`未设置`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:`附件 / 参考素材:`}),(0,Q.jsx)(`div`,{style:{marginTop:8},children:V3e(d.mediaReferences)})]}),d.mediaType===`image`?(0,Q.jsx)(xj,{src:A9(d.watermarkedUrl||d.originalUrl)}):(0,Q.jsx)(`video`,{src:M(d),poster:A9(d.coverUrl||``)||void 0,controls:!0,style:{width:`100%`,background:`#000`}})]})}),(0,Q.jsx)(vM,{title:`编辑生成配置`,open:!!y,onCancel:()=>!E&&b(null),onOk:async()=>{if(!(!y||E)){D(!0);try{await bYe(y.id,{category_id:y.categoryId,title:y.title||null,is_active:y.isActive,sort_order:y.sortOrder,generation_prompt:x.trim()||null,media_references:w}),X.success(`生成配置已保存`),b(null),await O()}finally{D(!1)}}},confirmLoading:E,cancelButtonProps:{disabled:E},width:920,destroyOnHidden:!0,children:(0,Q.jsxs)(bA,{direction:`vertical`,style:{width:`100%`},size:16,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`生成提词`}),(0,Q.jsx)(Fj.TextArea,{rows:6,maxLength:8e3,showCount:!0,value:x,disabled:E,placeholder:`请输入用于生成该素材的提示词`,onChange:e=>S(e.target.value),style:{marginTop:8}})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`附件 / 参考素材`}),(0,Q.jsx)(`div`,{style:{marginTop:8},children:(0,Q.jsx)(F9,{value:w,onChange:T,disabled:E})})]})]})}),(0,Q.jsx)(vM,{title:`重新生成水印`,open:!!p,onCancel:()=>!_&&m(null),onOk:async()=>{if(!(!p||_)){if(!z9(h)){X.warning(h.watermarkType===`repeated_text`?`请输入重复文字水印内容`:`请选择水印图片`);return}v(!0);try{await SYe(p.id,{watermark_type:h.watermarkType,watermark_id:h.watermarkType===`image`?h.watermarkId:null,opacity_level:h.opacityLevel,position:h.position,custom_x_ratio:h.customXRatio,custom_y_ratio:h.customYRatio,size_mode:h.sizeMode,width_ratio:h.widthRatio,width_px:h.widthPx,margin_x:h.marginX,margin_y:h.marginY,text_watermark:h.watermarkType===`repeated_text`&&h.textWatermark?{text:h.textWatermark.text,opacity_level:h.textWatermark.opacityLevel,font_size_px:h.textWatermark.fontSizePx,color:h.textWatermark.color,rotate_deg:h.textWatermark.rotateDeg,gap_x:h.textWatermark.gapX,gap_y:h.textWatermark.gapY,staggered:h.textWatermark.staggered}:null,wait:!1}),X.success(`已提交重新生成`),m(null),await O()}finally{v(!1)}}},confirmLoading:_,okButtonProps:{disabled:_||!z9(h)},cancelButtonProps:{disabled:_},width:980,destroyOnHidden:!0,children:p&&(0,Q.jsx)(P9,{value:h,onChange:g,watermarks:t,mediaUrl:A9(p.originalUrl||p.watermarkedUrl),mediaType:p.mediaType})})]})},U3e=vqe,W3e=[{label:`通用应用`,value:`AppstoreOutlined`},{label:`图片素材`,value:`PictureOutlined`},{label:`视频素材`,value:`VideoCameraOutlined`},{label:`电商购物`,value:`ShoppingOutlined`},{label:`门店商铺`,value:`ShopOutlined`},{label:`美妆护肤`,value:`SkinOutlined`},{label:`餐饮食品`,value:`CoffeeOutlined`},{label:`家居生活`,value:`HomeOutlined`},{label:`汽车出行`,value:`CarOutlined`},{label:`医疗健康`,value:`MedicineBoxOutlined`},{label:`教育培训`,value:`BookOutlined`},{label:`数码科技`,value:`LaptopOutlined`},{label:`旅游定位`,value:`EnvironmentOutlined`},{label:`摄影影像`,value:`CameraOutlined`},{label:`礼品活动`,value:`GiftOutlined`},{label:`热门爆款`,value:`FireOutlined`},{label:`品牌服务`,value:`CustomerServiceOutlined`},{label:`营销增长`,value:`RocketOutlined`},{label:`机构企业`,value:`BankOutlined`},{label:`娱乐休闲`,value:`SmileOutlined`}];function B9(e,t){if(!e)return(0,Q.jsx)(`span`,{style:{color:`#999`},children:`未设置`});let n=U3e[e];return(0,Q.jsxs)(bA,{size:6,children:[n?(0,Q.jsx)(n,{}):null,(0,Q.jsx)(`span`,{children:t||e}),(0,Q.jsx)(`span`,{style:{color:`#999`},children:e})]})}var G3e=({onChanged:e})=>{let[t,n]=(0,C.useState)([]),[r,i]=(0,C.useState)(0),[a,o]=(0,C.useState)(!1),[s,c]=(0,C.useState)(1),[l,u]=(0,C.useState)(!1),[d,f]=(0,C.useState)(null),[p]=Y.useForm(),m=async()=>{o(!0);try{let e=await r2({page:s,pageSize:20});n(e.items),i(e.total)}finally{o(!1)}};(0,C.useEffect)(()=>{m()},[s]);let h=e=>{f(e||null),p.setFieldsValue(e?{name:e.name,key:e.key,description:e.description,icon:e.icon,is_active:e.isActive,sort_order:e.sortOrder}:{is_active:!0,sort_order:0}),u(!0)};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{marginBottom:16,display:`flex`,justifyContent:`space-between`},children:[(0,Q.jsx)(`div`,{}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>h(),children:`新增行业`})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,total:r,pageSize:20,onChange:c},columns:[{title:`行业名称`,dataIndex:`name`},{title:`Key`,dataIndex:`key`},{title:`图标`,dataIndex:`icon`,render:e=>B9(e)},{title:`启用`,dataIndex:`isActive`,render:e=>e?`启用`:`禁用`},{title:`素材数`,dataIndex:`assetCount`},{title:`图片/视频`,render:(e,t)=>`${t.imageCount}/${t.videoCount}`},{title:`排序`,dataIndex:`sortOrder`},{title:`操作`,render:(t,n)=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(cI,{}),onClick:()=>h(n),children:`编辑`}),(0,Q.jsx)(xM,{title:`确认删除该行业?`,onConfirm:async()=>{await fYe(n.id),X.success(`删除成功`),await m(),e?.()},children:(0,Q.jsx)(rS,{size:`small`,danger:!0,icon:(0,Q.jsx)(oI,{}),children:`删除`})})]})}]}),(0,Q.jsx)(vM,{title:d?`编辑行业`:`新增行业`,open:l,onOk:async()=>{await dYe({...await p.validateFields(),id:d?.id}),X.success(`保存成功`),u(!1),await m(),e?.()},onCancel:()=>u(!1),destroyOnHidden:!0,children:(0,Q.jsxs)(Y,{form:p,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`name`,label:`行业名称`,rules:[{required:!0,message:`请输入行业名称`}],children:(0,Q.jsx)(Fj,{})}),(0,Q.jsx)(Y.Item,{name:`key`,label:`行业Key`,rules:[{required:!0,message:`请输入行业Key`},{pattern:/^[A-Za-z0-9_-]+$/,message:`只允许字母、数字、下划线、中划线`}],children:(0,Q.jsx)(Fj,{})}),(0,Q.jsx)(Y.Item,{name:`description`,label:`描述`,children:(0,Q.jsx)(Fj.TextArea,{rows:3})}),(0,Q.jsx)(Y.Item,{name:`icon`,label:`图标`,children:(0,Q.jsx)(Wy,{allowClear:!0,showSearch:!0,placeholder:`请选择行业图标`,optionFilterProp:`searchText`,filterOption:(e,t)=>{let n=String(t?.searchText||``).toLowerCase(),r=String(t?.value||``).toLowerCase(),i=e.toLowerCase();return n.includes(i)||r.includes(i)},options:W3e.map(e=>({value:e.value,searchText:`${e.label} ${e.value}`,label:B9(e.value,e.label)}))})}),(0,Q.jsx)(Y.Item,{name:`sort_order`,label:`排序`,children:(0,Q.jsx)(ok,{min:0,style:{width:`100%`}})}),(0,Q.jsx)(Y.Item,{name:`is_active`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{})})]})})]})},V9={watermarkType:`image`,watermarkId:null,opacityLevel:6,position:`bottom_right`,customXRatio:null,customYRatio:null,sizeMode:`ratio`,widthRatio:.18,widthPx:null,marginX:24,marginY:24,textWatermark:{text:`民众智创`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0}};function K3e(e){return e.watermarkType===`repeated_text`?!!e.textWatermark?.text?.trim():!!e.watermarkId}var q3e=({open:e,onClose:t,categories:n,watermarks:r,onSuccess:i})=>{let[a]=Y.useForm(),[o,s]=(0,C.useState)(null),[c,l]=(0,C.useState)([]),[u,d]=(0,C.useState)(`image`),[f,p]=(0,C.useState)(V9),[m,h]=(0,C.useState)(!1),[g,_]=(0,C.useState)(``),[v,y]=(0,C.useState)([]),b=()=>{s(null),l([]),d(`image`),_(``),h(!1),y([])};(0,C.useEffect)(()=>{if(e){b();let e=r.find(e=>e.isDefault)||r[0];p({...V9,watermarkId:e?.id||null}),a.setFieldsValue({media_type:`image`,is_active:!0,sort_order:0,title:void 0,generation_prompt:void 0})}},[e,r,a]),(0,C.useEffect)(()=>()=>{g.startsWith(`blob:`)&&URL.revokeObjectURL(g)},[g]);let x=(0,C.useMemo)(()=>g||void 0,[g]),S=e=>{let t=e.type.startsWith(`image/`),n=e.type.startsWith(`video/`);if(u===`image`&&!t)return X.warning(`当前素材类型为图片,请选择图片文件`),ZI.LIST_IGNORE;if(u===`video`&&!n)return X.warning(`当前素材类型为视频,请选择视频文件`),ZI.LIST_IGNORE;g.startsWith(`blob:`)&&URL.revokeObjectURL(g);let r=URL.createObjectURL(e);return s(e),_(r),l([{uid:e.name,name:e.name,status:`done`,originFileObj:e}]),!1},w=()=>{s(null),l([]),g.startsWith(`blob:`)&&URL.revokeObjectURL(g),_(``)};return(0,Q.jsxs)(vM,{title:`上传首页素材`,open:e,onCancel:()=>{m||t()},onOk:async()=>{if(m)return;let e=await a.validateFields();if(!o){X.warning(`请选择素材文件`);return}if(f.watermarkType===`image`&&!f.watermarkId){X.warning(`请选择水印图片`);return}if(f.watermarkType===`repeated_text`&&!f.textWatermark?.text?.trim()){X.warning(`请输入重复文字水印内容`);return}h(!0);try{let n=await yYe({categoryId:e.category_id,file:o,mediaType:u,title:e.title?.trim()||null,generationPrompt:e.generation_prompt?.trim()||null,mediaReferences:v,watermarkType:f.watermarkType,watermarkId:f.watermarkType===`image`?f.watermarkId:null,opacityLevel:f.opacityLevel,position:f.position,customXRatio:f.customXRatio,customYRatio:f.customYRatio,sizeMode:f.sizeMode,widthRatio:f.widthRatio,widthPx:f.widthPx,marginX:f.marginX,marginY:f.marginY,textWatermark:f.watermarkType===`repeated_text`?f.textWatermark:null,isActive:e.is_active,sortOrder:e.sort_order,wait:!1});X.success(n.message||`已提交水印处理`),i(),t()}finally{h(!1)}},confirmLoading:m,okButtonProps:{disabled:m||!o||!K3e(f)},cancelButtonProps:{disabled:m},width:980,destroyOnHidden:!0,children:[(0,Q.jsxs)(Y,{form:a,layout:`vertical`,children:[(0,Q.jsx)(Y.Item,{name:`category_id`,label:`行业`,rules:[{required:!0,message:`请选择行业`}],children:(0,Q.jsx)(Wy,{options:n.map(e=>({label:e.name,value:e.id})),disabled:m})}),(0,Q.jsx)(Y.Item,{name:`media_type`,label:`素材类型`,rules:[{required:!0}],children:(0,Q.jsx)(Wy,{value:u,onChange:e=>{d(e),w()},disabled:m,options:[{label:`图片`,value:`image`},{label:`视频`,value:`video`}]})}),(0,Q.jsx)(Y.Item,{label:`素材文件`,required:!0,children:(0,Q.jsx)(ZI,{beforeUpload:e=>S(e),onRemove:w,fileList:c,maxCount:1,accept:u===`image`?`image/*`:`video/*`,disabled:m,children:(0,Q.jsxs)(rS,{icon:(0,Q.jsx)(u1,{}),loading:m,disabled:m,children:[`选择`,u===`image`?`图片`:`视频`]})})}),(0,Q.jsx)(Y.Item,{name:`title`,label:`素材标题`,extra:`选填;不填时后台显示“未命名素材”,不会再自动使用文件名作为标题。`,children:(0,Q.jsx)(Fj,{disabled:m})}),(0,Q.jsx)(Y.Item,{name:`generation_prompt`,label:`生成提词`,extra:`选填;会随前台素材接口返回。`,children:(0,Q.jsx)(Fj.TextArea,{rows:5,maxLength:8e3,showCount:!0,disabled:m,placeholder:`请输入用于生成该素材的提示词`})}),(0,Q.jsx)(Y.Item,{label:`附件 / 参考素材`,children:(0,Q.jsx)(F9,{value:v,onChange:y,disabled:m})}),(0,Q.jsx)(Y.Item,{name:`sort_order`,label:`排序`,children:(0,Q.jsx)(ok,{min:0,style:{width:`100%`},disabled:m})}),(0,Q.jsx)(Y.Item,{name:`is_active`,label:`前台展示`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{disabled:m})})]}),(0,Q.jsx)(P9,{value:f,onChange:p,watermarks:r,mediaUrl:x,mediaType:u})]})},J3e=({open:e=!0,onClose:t,embedded:n=!1,onChanged:r})=>{let[i,a]=(0,C.useState)([]),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)(null),[f,p]=(0,C.useState)(null),[m,h]=(0,C.useState)([]),[g,_]=(0,C.useState)(``),[v,y]=(0,C.useState)(!1),[b]=Y.useForm(),x=async()=>{s(!0);try{a((await i2({page:1,pageSize:200})).items)}finally{s(!1)}};(0,C.useEffect)(()=>{e&&x()},[e]),(0,C.useEffect)(()=>()=>{g.startsWith(`blob:`)&&URL.revokeObjectURL(g)},[g]);let S=()=>{p(null),h([]),_(``),y(!1)},w=()=>{d(null),S(),b.setFieldsValue({name:``,is_default:!1,is_active:!0}),l(!0)},T=e=>{d(e),S(),_(A9(e.fileUrl)),b.setFieldsValue({name:e.name,is_default:e.isDefault,is_active:e.isActive}),l(!0)},E=()=>{v||(l(!1),S())},D=e=>{if(!e.type.startsWith(`image/`))return X.warning(`请选择图片文件`),ZI.LIST_IGNORE;g.startsWith(`blob:`)&&URL.revokeObjectURL(g);let t=URL.createObjectURL(e);return p(e),_(t),h([{uid:e.name,name:e.name,status:`done`,originFileObj:e}]),!1},O=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{marginBottom:16,display:`flex`,justifyContent:`space-between`},children:[(0,Q.jsx)(`div`,{}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:w,children:`上传水印`})]}),(0,Q.jsx)(ZF,{rowKey:`id`,loading:o,dataSource:i,pagination:{pageSize:20},columns:[{title:`预览`,dataIndex:`fileUrl`,render:e=>(0,Q.jsx)(xj,{width:80,src:A9(e)})},{title:`名称`,dataIndex:`name`},{title:`尺寸`,render:(e,t)=>t.width&&t.height?`${t.width}×${t.height}`:`-`},{title:`默认`,dataIndex:`isDefault`,render:e=>e?`是`:`否`},{title:`启用`,dataIndex:`isActive`,render:e=>e?`启用`:`禁用`},{title:`操作`,render:(e,t)=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{size:`small`,icon:(0,Q.jsx)(cI,{}),onClick:()=>T(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确认删除该水印?`,onConfirm:async()=>{await hYe(t.id),X.success(`删除成功`),await x(),r?.()},children:(0,Q.jsx)(rS,{size:`small`,danger:!0,icon:(0,Q.jsx)(oI,{}),children:`删除`})})]})}]}),(0,Q.jsx)(vM,{title:u?`编辑水印`:`上传水印`,open:c,onOk:async()=>{if(v)return;let e=await b.validateFields();if(!u&&!f){X.warning(`请选择水印图片`);return}y(!0);try{u?await mYe(u.id,{name:e.name,is_default:e.is_default,is_active:e.is_active}):f&&await pYe(f,e.name,e.is_default),X.success(`保存成功`),l(!1),S(),await x(),r?.()}finally{y(!1)}},onCancel:E,confirmLoading:v,okButtonProps:{disabled:v||!u&&!f},cancelButtonProps:{disabled:v},destroyOnHidden:!0,children:(0,Q.jsxs)(Y,{form:b,layout:`vertical`,children:[!u&&(0,Q.jsxs)(Y.Item,{label:`水印图片`,required:!0,children:[(0,Q.jsx)(ZI,{beforeUpload:e=>D(e),onRemove:()=>{p(null),h([]),g.startsWith(`blob:`)&&URL.revokeObjectURL(g),_(``)},fileList:m,maxCount:1,accept:`image/png,image/jpeg,image/webp`,disabled:v,children:(0,Q.jsx)(rS,{icon:(0,Q.jsx)(u1,{}),loading:v,disabled:v,children:`选择图片`})}),g&&(0,Q.jsx)(`div`,{style:{marginTop:12},children:(0,Q.jsx)(xj,{src:g,alt:`水印预览`,width:180,style:{maxHeight:120,objectFit:`contain`,background:`#0f172a`,borderRadius:8,padding:8}})})]}),u&&g&&(0,Q.jsx)(Y.Item,{label:`当前水印`,children:(0,Q.jsx)(xj,{src:g,alt:`当前水印`,width:180,style:{maxHeight:120,objectFit:`contain`,background:`#0f172a`,borderRadius:8,padding:8}})}),(0,Q.jsx)(Y.Item,{name:`name`,label:`水印名称`,rules:[{required:!0,message:`请输入水印名称`}],children:(0,Q.jsx)(Fj,{disabled:v})}),(0,Q.jsx)(Y.Item,{name:`is_default`,label:`默认水印`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{disabled:v})}),(0,Q.jsx)(Y.Item,{name:`is_active`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{disabled:v})})]})})]});return n?O:(0,Q.jsx)(vM,{title:`水印库`,open:e,onCancel:t,footer:null,width:900,destroyOnHidden:!0,children:O})},Y3e=()=>{let[e]=Y.useForm(),[t,n]=(0,C.useState)(!1),[r,i]=(0,C.useState)([]),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)(0),d=async()=>{let[e,t]=await Promise.all([r2({page:1,pageSize:200}),i2({page:1,pageSize:200,isActive:!0})]);i(e.items),o(t.items)},f=async()=>{n(!0);try{let t=await lYe();e.setFieldsValue(t)}finally{n(!1)}};(0,C.useEffect)(()=>{f(),d()},[]);let p=async()=>{await uYe(await e.validateFields()),X.success(`配置已保存`)},m=async()=>{await d(),u(e=>e+1)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(aO,{style:{marginBottom:16},loading:t,children:(0,Q.jsxs)(Y,{form:e,layout:`inline`,initialValues:{enabled:!1,title:`行业素材案例`,subtitle:`精选图片与视频素材展示`,showOriginalInAdmin:!0},children:[(0,Q.jsx)(Y.Item,{name:`enabled`,label:`首页展示`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{})}),(0,Q.jsx)(Y.Item,{name:`title`,label:`标题`,rules:[{required:!0,message:`请输入标题`}],children:(0,Q.jsx)(Fj,{style:{width:220}})}),(0,Q.jsx)(Y.Item,{name:`subtitle`,label:`副标题`,children:(0,Q.jsx)(Fj,{style:{width:320}})}),(0,Q.jsx)(Y.Item,{name:`showOriginalInAdmin`,label:`后台展示原素材`,valuePropName:`checked`,children:(0,Q.jsx)(vN,{})}),(0,Q.jsx)(Y.Item,{children:(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(yZ,{}),onClick:p,children:`保存配置`})})]})}),(0,Q.jsx)(aO,{title:`首页素材行业装修`,extra:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{onClick:m,children:`刷新`}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>c(!0),children:`上传素材`})]}),children:(0,Q.jsx)(rO,{items:[{key:`assets`,label:`素材管理`,children:(0,Q.jsx)(H3e,{categories:r,watermarks:a,reloadKey:l})},{key:`categories`,label:`行业类别`,children:(0,Q.jsx)(G3e,{onChanged:m})},{key:`watermarks`,label:`水印库`,children:(0,Q.jsx)(J3e,{embedded:!0,onChanged:m})}]})}),(0,Q.jsx)(q3e,{open:s,onClose:()=>c(!1),categories:r,watermarks:a,onSuccess:m})]})},X3e=[{id:`AD_APP_ACTIVATE`,name:`AD_APP_ACTIVATE`,label:`应用-激活`,description:`应用激活行为`},{id:`AD_APP_AUTH`,name:`AD_APP_AUTH`,label:`应用-授信`,description:`应用授信行为`},{id:`AD_APP_BOOK`,name:`AD_APP_BOOK`,label:`应用-预约表单`,description:`应用预约表单`},{id:`AD_APP_BUY`,name:`AD_APP_BUY`,label:`应用-APP内付费`,description:`APP内付费行为`},{id:`AD_APP_CLICKS`,name:`AD_APP_CLICKS`,label:`应用-点击量`,description:`应用点击量`},{id:`AD_APP_DETAIL`,name:`AD_APP_DETAIL`,label:`应用-APP内详情页到站UV`,description:`APP内详情页到站UV`},{id:`AD_APP_DOWNLOADED`,name:`AD_APP_DOWNLOADED`,label:`应用-下载完成`,description:`应用下载完成`},{id:`AD_APP_INSTALLED`,name:`AD_APP_INSTALLED`,label:`应用-安装完成`,description:`应用安装完成`},{id:`AD_APP_KEY_BEHAVIOR`,name:`AD_APP_KEY_BEHAVIOR`,label:`应用-关键行为`,description:`应用关键行为`},{id:`AD_APP_ORDER`,name:`AD_APP_ORDER`,label:`应用-APP内下单`,description:`APP内下单行为`},{id:`AD_APP_PAY`,name:`AD_APP_PAY`,label:`应用-付费`,description:`应用付费行为`},{id:`AD_APP_PRE_AUTH`,name:`AD_APP_PRE_AUTH`,label:`应用-预授信`,description:`应用预授信行为`},{id:`AD_APP_PRE_DOWNLOAD`,name:`AD_APP_PRE_DOWNLOAD`,label:`应用-预约下载`,description:`应用预约下载`},{id:`AD_APP_PUSH_ORDER`,name:`AD_APP_PUSH_ORDER`,label:`应用-首次发单(乘客)`,description:`首次发单行为`},{id:`AD_APP_REGISTER`,name:`AD_APP_REGISTER`,label:`应用-注册`,description:`应用注册行为`},{id:`AD_APP_SHOW`,name:`AD_APP_SHOW`,label:`应用-展示量`,description:`应用展示量`},{id:`AD_APP_SUBMIT`,name:`AD_APP_SUBMIT`,label:`应用-提交认证`,description:`应用提交认证`},{id:`AD_APP_VIEW`,name:`AD_APP_VIEW`,label:`应用-APP内访问`,description:`APP内访问行为`},{id:`AD_CLUE_AUTH`,name:`AD_CLUE_AUTH`,label:`销售线索收集-授信`,description:`销售线索授信`},{id:`AD_CLUE_BUTTON`,name:`AD_CLUE_BUTTON`,label:`销售线索收集-按钮跳转`,description:`按钮跳转`},{id:`AD_CLUE_CLICKS`,name:`AD_CLUE_CLICKS`,label:`销售线索收集-点击量`,description:`点击量`},{id:`AD_CLUE_CONFIRM`,name:`AD_CLUE_CONFIRM`,label:`销售线索收集-回访-信息确认`,description:`回访信息确认`},{id:`AD_CLUE_CONSULT`,name:`AD_CLUE_CONSULT`,label:`销售线索收集-有效咨询`,description:`有效咨询`},{id:`AD_CLUE_CONSULT_MSG`,name:`AD_CLUE_CONSULT_MSG`,label:`销售线索收集-留资咨询`,description:`留资咨询`},{id:`AD_CLUE_COUPON`,name:`AD_CLUE_COUPON`,label:`销售线索收集-卡券领取`,description:`卡券领取`},{id:`AD_CLUE_CUSTOMER`,name:`AD_CLUE_CUSTOMER`,label:`销售线索收集-有效获客`,description:`有效获客`},{id:`AD_CLUE_CVT`,name:`AD_CLUE_CVT`,label:`销售线索收集-多转化`,description:`多转化`},{id:`AD_CLUE_DONE`,name:`AD_CLUE_DONE`,label:`销售线索收集-完件`,description:`完件`},{id:`AD_CLUE_FORM`,name:`AD_CLUE_FORM`,label:`销售线索收集-表单提交`,description:`表单提交`},{id:`AD_CLUE_FRIENDS`,name:`AD_CLUE_FRIENDS`,label:`销售线索收集-回访-加为好友`,description:`回访加为好友`},{id:`AD_CLUE_INSURANCE`,name:`AD_CLUE_INSURANCE`,label:`销售线索收集-保险支付`,description:`保险支付`},{id:`AD_CLUE_INTENTION`,name:`AD_CLUE_INTENTION`,label:`销售线索收集-存在意向`,description:`存在意向`},{id:`AD_CLUE_INTENTION_FORM`,name:`AD_CLUE_INTENTION_FORM`,label:`销售线索收集-意向表单`,description:`意向表单`},{id:`AD_CLUE_INTENTION_TEL`,name:`AD_CLUE_INTENTION_TEL`,label:`销售线索收集-意向话单`,description:`意向话单`},{id:`AD_CLUE_MESSAGE`,name:`AD_CLUE_MESSAGE`,label:`销售线索收集-私信消息`,description:`私信消息`},{id:`AD_CLUE_MONEY`,name:`AD_CLUE_MONEY`,label:`销售线索收集-放款`,description:`放款`},{id:`AD_CLUE_MSG`,name:`AD_CLUE_MSG`,label:`销售线索收集-私信留资`,description:`私信留资`},{id:`AD_CLUE_PAGE`,name:`AD_CLUE_PAGE`,label:`销售线索收集-访问目标页面`,description:`访问目标页面`},{id:`AD_CLUE_PAY`,name:`AD_CLUE_PAY`,label:`销售线索收集-付费`,description:`付费`},{id:`AD_CLUE_PRE_AUTH`,name:`AD_CLUE_PRE_AUTH`,label:`销售线索收集-预授信`,description:`预授信`},{id:`AD_CLUE_PROTENTIAL_DEAL`,name:`AD_CLUE_PROTENTIAL_DEAL`,label:`销售线索收集-回访-高潜成交`,description:`回访高潜成交`},{id:`AD_CLUE_PUSH_ORDER`,name:`AD_CLUE_PUSH_ORDER`,label:`销售线索收集-首次发单(乘客)`,description:`首次发单`},{id:`AD_CLUE_REGISTER`,name:`AD_CLUE_REGISTER`,label:`销售线索收集-注册`,description:`注册`},{id:`AD_CLUE_SHOW`,name:`AD_CLUE_SHOW`,label:`销售线索收集-展示量`,description:`展示量`},{id:`AD_CLUE_SUBMIT`,name:`AD_CLUE_SUBMIT`,label:`销售线索收集-提交认证`,description:`提交认证`},{id:`AD_CLUE_TEL`,name:`AD_CLUE_TEL`,label:`销售线索收集-智能电话确认接通`,description:`智能电话确认接通`},{id:`AD_CLUE_TEL_CALL`,name:`AD_CLUE_TEL_CALL`,label:`销售线索收集-电话接通`,description:`电话接通`},{id:`AD_CLUE_WX_ADD`,name:`AD_CLUE_WX_ADD`,label:`销售线索收集-微信-添加企业微信`,description:`添加企业微信`},{id:`AD_CLUE_WX_COPY`,name:`AD_CLUE_WX_COPY`,label:`销售线索收集-微信复制`,description:`微信复制`},{id:`AD_CLUE_WX_MSG`,name:`AD_CLUE_WX_MSG`,label:`销售线索收集-微信-用户首次消息`,description:`用户首次消息`},{id:`AD_ECP_APP_BUY`,name:`AD_ECP_APP_BUY`,label:`电商-app内下单`,description:`电商app内下单`},{id:`AD_ECP_APP_DETAIL`,name:`AD_ECP_APP_DETAIL`,label:`电商-app内详情页到站uv`,description:`电商app内详情页到站uv`},{id:`AD_ECP_APP_VIEW`,name:`AD_ECP_APP_VIEW`,label:`电商-app内访问`,description:`电商app内访问`},{id:`AD_ECP_BUTTON`,name:`AD_ECP_BUTTON`,label:`电商-按钮跳转`,description:`电商按钮跳转`},{id:`AD_ECP_INTEREST`,name:`AD_ECP_INTEREST`,label:`电商-引流电商种草`,description:`引流电商种草`},{id:`AD_ECP_SHOP`,name:`AD_ECP_SHOP`,label:`电商-调起店铺`,description:`调起店铺`},{id:`AD_ECP_SHOP_STAY`,name:`AD_ECP_SHOP_STAY`,label:`电商-店铺停留`,description:`店铺停留`},{id:`AD_MINIAPP_ACTIVATE`,name:`AD_MINIAPP_ACTIVATE`,label:`快应用-激活`,description:`快应用激活`},{id:`AD_MINIAPP_KEY_BEHAVIOR`,name:`AD_MINIAPP_KEY_BEHAVIOR`,label:`快应用-关键行为`,description:`快应用关键行为`},{id:`AD_MINIAPP_PAY`,name:`AD_MINIAPP_PAY`,label:`快应用-付费`,description:`快应用付费`},{id:`AD_MINIAPP_REGISTER`,name:`AD_MINIAPP_REGISTER`,label:`快应用-注册`,description:`快应用注册`},{id:`AD_NATIVE_ACTIVATE`,name:`AD_NATIVE_ACTIVATE`,label:`原声互动-激活`,description:`原声互动激活`},{id:`AD_NATIVE_CLICKS`,name:`AD_NATIVE_CLICKS`,label:`原声互动-组件点击`,description:`组件点击`},{id:`AD_NATIVE_FANS_GROUP`,name:`AD_NATIVE_FANS_GROUP`,label:`原声互动-粉丝入群`,description:`粉丝入群`},{id:`AD_NATIVE_FOLLOW`,name:`AD_NATIVE_FOLLOW`,label:`原声互动-帐号关注`,description:`帐号关注`},{id:`AD_NATIVE_INTERACTIVE`,name:`AD_NATIVE_INTERACTIVE`,label:`原声互动-互动`,description:`互动`},{id:`AD_NATIVE_LIVE`,name:`AD_NATIVE_LIVE`,label:`原声互动-预约直播`,description:`预约直播`},{id:`AD_NATIVE_LIVE_DONATE`,name:`AD_NATIVE_LIVE_DONATE`,label:`原声互动-直播间营销捐赠`,description:`直播间营销捐赠`},{id:`AD_NATIVE_LIVE_PAY`,name:`AD_NATIVE_LIVE_PAY`,label:`原声互动-直播间打赏`,description:`直播间打赏`},{id:`AD_NATIVE_LIVE_STAY`,name:`AD_NATIVE_LIVE_STAY`,label:`原声互动-直播间停留`,description:`直播间停留`},{id:`AD_NATIVE_LIVE_VIEW`,name:`AD_NATIVE_LIVE_VIEW`,label:`原声互动-直播间观看`,description:`直播间观看`},{id:`AD_NATIVE_PAY`,name:`AD_NATIVE_PAY`,label:`原声互动-付费`,description:`原声互动付费`},{id:`AD_PRODUCT_ACTIVATE`,name:`AD_PRODUCT_ACTIVATE`,label:`商品-激活`,description:`商品激活`},{id:`AD_PRODUCT_APP_BUY`,name:`AD_PRODUCT_APP_BUY`,label:`商品-app内下单`,description:`商品app内下单`},{id:`AD_PRODUCT_APP_DETAIL`,name:`AD_PRODUCT_APP_DETAIL`,label:`商品-app内详情页到站uv`,description:`商品app内详情页到站uv`},{id:`AD_PRODUCT_APP_PAY`,name:`AD_PRODUCT_APP_PAY`,label:`商品-app内付费`,description:`商品app内付费`},{id:`AD_PRODUCT_APP_VIEW`,name:`AD_PRODUCT_APP_VIEW`,label:`商品-app内访问`,description:`商品app内访问`},{id:`AD_PRODUCT_FORM`,name:`AD_PRODUCT_FORM`,label:`商品-表单提交`,description:`商品表单提交`},{id:`AD_PRODUCT_KEY_BEHAVIOR`,name:`AD_PRODUCT_KEY_BEHAVIOR`,label:`商品-关键行为`,description:`商品关键行为`},{id:`AD_PRODUCT_PAY`,name:`AD_PRODUCT_PAY`,label:`商品-付费`,description:`商品付费`},{id:`AD_TINYAPP_ACTIVATE`,name:`AD_TINYAPP_ACTIVATE`,label:`小程序-激活`,description:`小程序激活`},{id:`AD_TINYAPP_KEY_BEHAVIOR`,name:`AD_TINYAPP_KEY_BEHAVIOR`,label:`小程序-关键行为`,description:`小程序关键行为`},{id:`AD_TINYAPP_PAY`,name:`AD_TINYAPP_PAY`,label:`小程序-付费`,description:`小程序付费`},{id:`QC_LIVE_BUY`,name:`QC_LIVE_BUY`,label:`直播投放-直播间下单`,description:`直播间下单`},{id:`QC_LIVE_CHECK`,name:`QC_LIVE_CHECK`,label:`直播投放-直播间结算`,description:`直播间结算`},{id:`QC_LIVE_COMMENTS`,name:`QC_LIVE_COMMENTS`,label:`直播投放-直播间评论`,description:`直播间评论`},{id:`QC_LIVE_DEAL`,name:`QC_LIVE_DEAL`,label:`直播投放-直播间成交`,description:`直播间成交`},{id:`QC_LIVE_ENTRY`,name:`QC_LIVE_ENTRY`,label:`直播投放-进入直播间`,description:`进入直播间`},{id:`QC_LIVE_FANS`,name:`QC_LIVE_FANS`,label:`直播投放-直播间粉丝提升`,description:`直播间粉丝提升`},{id:`QC_LIVE_HIT`,name:`QC_LIVE_HIT`,label:`直播投放-直播加热`,description:`直播加热`},{id:`QC_LIVE_PRODUCT_CLICKS`,name:`QC_LIVE_PRODUCT_CLICKS`,label:`直播投放-直播间商品点击`,description:`直播间商品点击`},{id:`QC_LIVE_ROI_CHECK`,name:`QC_LIVE_ROI_CHECK`,label:`直播投放-结算roi`,description:`结算roi`},{id:`QC_LIVE_ROI_DEAL`,name:`QC_LIVE_ROI_DEAL`,label:`直播投放-支付roi-直播间成交`,description:`支付roi直播间成交`},{id:`QC_LIVE_ROI_QC`,name:`QC_LIVE_ROI_QC`,label:`直播投放-支付roi-千川直接+间接订单`,description:`支付roi千川订单`},{id:`QC_PRODUCT_BUY`,name:`QC_PRODUCT_BUY`,label:`商品投放-商品购买`,description:`商品购买`},{id:`QC_PRODUCT_COMMENTS`,name:`QC_PRODUCT_COMMENTS`,label:`商品投放-点赞评论`,description:`点赞评论`},{id:`QC_PRODUCT_FANS`,name:`QC_PRODUCT_FANS`,label:`商品投放-粉丝提升`,description:`粉丝提升`},{id:`QC_PRODUCT_INTEREST`,name:`QC_PRODUCT_INTEREST`,label:`商品投放-人群种草`,description:`人群种草`},{id:`QC_PRODUCT_QC`,name:`QC_PRODUCT_QC`,label:`商品投放-千川直接+间接订单`,description:`千川订单`},{id:`QC_PRODUCT_ROI`,name:`QC_PRODUCT_ROI`,label:`商品投放-商品支付roi`,description:`商品支付roi`}],H9=e=>{if(!e)return``;let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)} ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`},{Text:Z3e}=Z,Q3e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)(1),[o,s]=(0,C.useState)(10),[c,l]=(0,C.useState)(0),[u,d]=(0,C.useState)(``),[f,p]=(0,C.useState)(``),[m,h]=(0,C.useState)(),[g,_]=(0,C.useState)({});(0,C.useEffect)(()=>{v()},[]);let v=async()=>{try{let e=localStorage.getItem(`preTestAreaData`);if(e){_(JSON.parse(e).cityCodeMap);return}let t=(await a2({level:`ONE_LEVEL`})).data||[],n={};await Promise.all(t.map(async e=>{let t=[];try{t=(await a2({level:`TWO_LEVEL`,parent_code:e.code})).data||[],t.forEach(e=>{n[e.code]=e.name})}catch(t){console.error(`获取省份 ${e.name} 的城市失败`,t)}}));let r={cityCodeMap:n};localStorage.setItem(`preTestAreaData`,JSON.stringify(r)),_(n)}catch(e){console.error(`加载区域数据失败:`,e),X.error(`加载区域数据失败`)}},y=[{title:`序号`,dataIndex:`index`,key:`index`,width:60,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:e})},{title:`ID`,dataIndex:`id`,key:`id`,width:120,render:e=>{if(!e)return`-`;let t=e.length>12?`${e.slice(0,6)}...${e.slice(-4)}`:e;return(0,Q.jsx)(xb,{title:e,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12},children:t})})}},{title:`投放平台`,dataIndex:`platform`,key:`platform`,width:100,render:e=>(0,Q.jsx)(rI,{color:e===`AD`?`blue`:e===`QIANCHUAN`?`green`:`orange`,style:{borderRadius:6,fontSize:12},children:e===`AD`?`AD`:e===`QIANCHUAN`?`千川`:`本地推`})},{title:`优化目标`,dataIndex:`externalAction`,key:`externalAction`,ellipsis:!0,width:200,render:e=>{if(!e)return(0,Q.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:13},children:`-`});let t=X3e.find(t=>t.name===e.trim());return(0,Q.jsx)(`span`,{style:{color:`#1e293b`,fontSize:13},children:t?t.label:e})}},{title:`目标转化成本`,dataIndex:`cpaBid`,key:`cpaBid`,width:100},{title:`受众年龄`,dataIndex:`audienceAge`,key:`audienceAge`,width:100},{title:`受众性别`,dataIndex:`audienceGender`,key:`audienceGender`,width:100},{title:`受众网络`,dataIndex:`audienceNetwork`,key:`audienceNetwork`,width:100},{title:`受众区域`,dataIndex:`audienceRegion`,key:`audienceRegion`,ellipsis:!0,width:300,render:e=>{let t=JSON.parse(e);if(!Array.isArray(t)||t.length===0)return(0,Q.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:13},children:`-`});let n=t.map(e=>{let t=String(e).padEnd(6,`0`);return g[t]||t});return(0,Q.jsx)(Fj.TextArea,{value:n.join(`, `)||`-`,readOnly:!0,autoSize:{minRows:1,maxRows:4},style:{resize:`none`,border:`none`,background:`transparent`,padding:0},placeholder:`-`})}},{title:`客户主体名称`,dataIndex:`cusName`,key:`cusName`,width:150},{title:`计费方式`,dataIndex:`pricingType`,key:`pricingType`,width:100},{title:`是否最优成本出价`,dataIndex:`costCap`,key:`costCap`,width:100},{title:`是否稳定成本出价`,dataIndex:`targetCost`,key:`targetCost`,width:100},{title:`是否最大转化出价`,dataIndex:`nobid`,key:`nobid`,width:100},{title:`目标点击成本`,dataIndex:`cpcBid`,key:`cpcBid`,width:100},{title:`预算金额`,dataIndex:`budget`,key:`budget`,width:100},{title:`名称`,dataIndex:`name`,key:`name`,width:150},{title:`备注`,dataIndex:`note`,key:`note`,width:150},{title:`用户ID`,dataIndex:`userId`,key:`userId`,width:110,render:e=>{if(!e)return`-`;let t=e.length>12?`${e.slice(0,6)}...${e.slice(-4)}`:e;return(0,Q.jsx)(xb,{title:e,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12},children:t})})}},{title:`用户手机号`,dataIndex:`userPhone`,key:`userPhone`,width:150},{title:`是否默认`,dataIndex:`isDefault`,key:`isDefault`,width:100,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`red`,children:e?`是`:`否`})},{title:`创建时间`,dataIndex:`createdAt`,key:`createdAt`,width:180,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:H9(e)})},{title:`更新时间`,dataIndex:`updatedAt`,key:`updatedAt`,width:180,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:H9(e)})}],b=async()=>{r(!0);try{let e=await EYe({id:u||void 0,phone:f||void 0,created_at:m?[m[0].format(`YYYY-MM-DD`),m[1].format(`YYYY-MM-DD`)]:void 0,page:i,page_size:o});t((e.data||[]).map((e,t)=>({...e,index:(i-1)*o+t+1}))),l(e.pagination.total||0)}catch(e){console.error(`加载数据失败:`,e)}finally{r(!1)}};(0,C.useEffect)(()=>{b()},[i,o]);let x=(e,t)=>{a(e),s(t)},S=()=>{a(1),b()};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:12},children:[(0,Q.jsx)(wA,{style:{color:`#6366f1`,fontSize:16}}),(0,Q.jsx)(Z3e,{strong:!0,style:{fontSize:16},children:`素材前测模板`})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:16},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:12,alignItems:`center`},children:[(0,Q.jsx)(Fj,{placeholder:`ID`,value:u,onChange:e=>d(e.target.value),style:{width:160},allowClear:!0,onPressEnter:S}),(0,Q.jsx)(Fj,{placeholder:`手机号`,value:f,onChange:e=>p(e.target.value),style:{width:160},allowClear:!0,onPressEnter:S}),(0,Q.jsx)(eA.RangePicker,{placeholder:[`开始日期`,`结束日期`],value:m,onChange:e=>{e&&e[0]&&e[1]?h([e[0],e[1]]):h(void 0)},style:{width:260}}),(0,Q.jsx)(rS,{type:`primary`,onClick:S,children:`搜索`})]})}),(0,Q.jsxs)(`div`,{style:{background:`#fff`,borderRadius:16,boxShadow:`0 4px 20px rgba(0,0,0,0.04)`,overflow:`hidden`},children:[(0,Q.jsx)(ZF,{dataSource:e,columns:y,loading:n,pagination:!1,rowKey:`id`,bordered:!1,scroll:{x:`max-content`},onRow:()=>({style:{cursor:`pointer`,transition:`background-color 0.15s`},onMouseEnter:e=>{e.currentTarget.style.backgroundColor=`#f8fafc`},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=`transparent`}})}),(0,Q.jsx)(`div`,{style:{padding:`16px`,textAlign:`right`},children:(0,Q.jsx)(Zj,{current:i,pageSize:o,total:c,showSizeChanger:!0,showTotal:e=>`共 ${e} 条记录`,pageSizeOptions:[`10`,`20`,`50`,`100`],onChange:x,size:`small`})})]})]})},U9=e=>{if(!e)return``;let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)} ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`},{Text:$3e}=Z,e6e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)(1),[o,s]=(0,C.useState)(10),[c,l]=(0,C.useState)(0),[u,d]=(0,C.useState)(``),[f,p]=(0,C.useState)(``),[m,h]=(0,C.useState)({}),[g,_]=(0,C.useState)([]),[v,y]=(0,C.useState)(void 0),b=[{title:`序号`,dataIndex:`index`,key:`index`,width:60,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:e})},{title:`ID`,dataIndex:`id`,key:`id`},{title:`前台用户ID`,dataIndex:`userId`,key:`userId`},{title:`前台用户手机号`,dataIndex:`userPhone`,key:`userPhone`},{title:`授权应用ID`,dataIndex:`appid`,key:`appid`},{title:`授权绑定账户ID`,dataIndex:`accountId`,key:`accountId`},{title:`授权绑定账户名称`,dataIndex:`accountName`,key:`accountName`},{title:`授权绑定账户角色`,dataIndex:`accountRole`,key:`accountRole`,render:e=>({ADVERTISER:`客户`,CUSTOMER_ADMIN:`普通版工作台-管理员`,CUSTOMER_OPERATOR:`普通版工作台-协作者`,AGENT:`代理商`,CHILD_AGENT:`二级代理商`,PLATFORM_ROLE_STAR:`星图账户`,PLATFORM_ROLE_SHOP_ACCOUNT:`抖音店铺账户`,PLATFORM_ROLE_QIANCHUAN_AGENT:`千川代理商`,PLATFORM_ROLE_STAR_AGENT:`星图代理商`,PLATFORM_ROLE_AWEME:`抖音号`,PLATFORM_ROLE_STAR_MCN:`星图MCN机构`,PLATFORM_ROLE_STAR_ISV:`星图服务商`,AGENT_SYSTEM_ACCOUNT:`代理商系统账户`,PLATFORM_ROLE_LOCAL_AGENT:`本地推代理商`,PLATFORM_ROLE_YUNTU_BRAND_ISV_ADMIN:`云图品牌服务商管理员`,PLATFORM_ROLE_LIFE:`抖音来客账户`,PLATFORM_ROLE_ENTERPRISE_BP_ADMIN:`升级版工作台管理员`,PLATFORM_ROLE_ENTERPRISE_BP_OPERATOR:`升级版工作台协作者`})[e]||e},{title:`授权登录账户用户ID`,dataIndex:`accountUserid`,key:`accountUserid`},{title:`授权登录账户用户名`,dataIndex:`accountUsername`,key:`accountUsername`},{title:`开户方式`,dataIndex:`openType`,key:`openType`,width:120,render:e=>(0,Q.jsx)(`span`,{style:{color:`#1e293b`},children:m[e]||e})},{title:`平台端口`,dataIndex:`portType`,key:`portType`,render:e=>({1:`巨量`,2:`磁力`,3:`巨量星图`,4:`服务单`,5:`腾讯`})[e]||e},{title:`授权刷新Token`,dataIndex:`refreshToken`,key:`refreshToken`},{title:`刷新Token过期时间`,dataIndex:`refreshTokenExpired`,key:`refreshTokenExpired`,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:U9(e)})},{title:`授权Token`,dataIndex:`accessToken`,key:`accessToken`},{title:`Token过期时间`,dataIndex:`accessTokenExpired`,key:`accessTokenExpired`,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:U9(e)})},{title:`创建时间`,dataIndex:`createdAt`,key:`createdAt`,width:180,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:U9(e)})},{title:`更新时间`,dataIndex:`updatedAt`,key:`updatedAt`,width:180,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:U9(e)})}],x=async()=>{try{let e=(await Q0()).data||[],t={},n=[];e.forEach(e=>{t[e.openType]=e.typeName,n.push({value:e.openType,label:e.typeName})}),h(t),_(n)}catch(e){console.error(`加载开户方式列表失败:`,e)}},S=async()=>{r(!0);try{let e=await wYe({account_id:u||void 0,account_userid:f||void 0,open_type:v,page:i,page_size:o});t((e.data||[]).map((e,t)=>({...e,index:(i-1)*o+t+1}))),l(e.pagination?.total||0)}catch(e){console.error(`加载数据失败:`,e)}finally{r(!1)}};(0,C.useEffect)(()=>{x(),S()},[i,o]);let w=()=>{a(1),S()};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:12},children:[(0,Q.jsx)(Zq,{style:{color:`#6366f1`,fontSize:16}}),(0,Q.jsx)($3e,{strong:!0,style:{fontSize:16},children:`投放平台授权列表`})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:16},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:12,alignItems:`center`},children:[(0,Q.jsx)(Fj,{placeholder:`授权绑定账户ID`,value:u,onChange:e=>d(e.target.value),style:{width:180},allowClear:!0,prefix:(0,Q.jsx)(Vy,{}),onPressEnter:w}),(0,Q.jsx)(Fj,{placeholder:`授权登录账户用户ID`,value:f,onChange:e=>p(e.target.value),style:{width:180},allowClear:!0,prefix:(0,Q.jsx)(Vy,{}),onPressEnter:w}),(0,Q.jsx)(Wy,{placeholder:`开户方式`,value:v,onChange:e=>y(e),style:{width:140},allowClear:!0,options:g}),(0,Q.jsx)(rS,{type:`primary`,onClick:w,children:`搜索`})]})}),(0,Q.jsx)(`div`,{style:{background:`#fff`,borderRadius:12,boxShadow:`0 1px 3px rgba(0,0,0,0.05)`},children:(0,Q.jsx)(ZF,{dataSource:e,columns:b,loading:n,rowKey:`id`,bordered:!1,scroll:{x:`max-content`},pagination:{current:i,pageSize:o,total:c,showSizeChanger:!0,showTotal:e=>`共 ${e} 条记录`,onChange:(e,t)=>{a(e),s(t)}}})})]})},W9=[{key:`is_ad_high_quality_material`,label:`AD优质`,noLabel:`AD非优质素材`,unknownLabel:`AD未知`,yesColor:`green`,noColor:`red`,unknownColor:`default`},{key:`is_ecp_high_quality_material`,label:`千川优质`,noLabel:`千川非优质素材`,unknownLabel:`千川未知`,yesColor:`green`,noColor:`red`,unknownColor:`default`},{key:`is_local_high_quality_material`,label:`本地推优质`,noLabel:`本地推非优质`,unknownLabel:`本地推未知`,yesColor:`green`,noColor:`red`,unknownColor:`default`},{key:`is_inefficient_material`,label:`低效`,noLabel:`非低效`,unknownLabel:`是否低效未知`,yesColor:`red`,noColor:`green`,unknownColor:`default`},{key:`is_first_publish_material`,label:`首发`,noLabel:`非首发`,unknownLabel:`是否首发未知`,yesColor:`blue`,noColor:`default`,unknownColor:`default`}],t6e=({preResult:e})=>{let[t,n]=(0,C.useState)(null),[r,i]=(0,C.useState)(!1);if(C.useEffect(()=>{if(!e){n(null),i(!1);return}try{n(JSON.parse(e)),i(!1)}catch{n(null),i(!0)}},[e]),!e||r||!t)return(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:`-`});let a=e=>{let n=W9.find(t=>t.key===e);if(!n)return null;let r=t[e],i=r===`YES`,a=r===`NO`;if(r===`UNKNOWN`)return null;let o,s;return i?(o=n.label,s=n.yesColor):a&&(o=n.noLabel,s=n.noColor),{tag:(0,Q.jsx)(rI,{color:s,style:{marginRight:6,fontSize:12,borderRadius:4},children:o},e),detail:{label:n.label.replace(`优质`,`优质素材`),value:o,color:s}}};return(0,Q.jsx)(Eb,{content:(0,Q.jsxs)(`div`,{style:{maxWidth:500,padding:`8px 0`},children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14,display:`block`,marginBottom:12,color:`#1e293b`},children:`前测结果详情`}),(0,Q.jsxs)(iA,{column:1,size:`small`,style:{marginBottom:12},children:[(0,Q.jsx)(iA.Item,{label:`视频ID`,labelStyle:{fontWeight:500,color:`#64748b`},contentStyle:{color:`#1e293b`},children:t.video_id}),(0,Q.jsx)(iA.Item,{label:`广告主ID`,labelStyle:{fontWeight:500,color:`#64748b`},contentStyle:{color:`#1e293b`},children:t.advertiser_id}),(0,Q.jsx)(iA.Item,{label:`素材ID`,labelStyle:{fontWeight:500,color:`#64748b`},contentStyle:{color:`#1e293b`},children:t.material_id})]}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:8},children:`质量评估`}),(0,Q.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:8,marginBottom:12},children:W9.map(e=>{let n=t[e.key],r=n===`YES`,i=n===`NO`;if(n===`UNKNOWN`)return null;let a,o;return r?(a=e.label,o=e.yesColor):i&&(a=e.noLabel,o=e.noColor),(0,Q.jsx)(rI,{color:o,style:{fontSize:12,borderRadius:4},children:a},e.key)})}),t.not_ad_high_quality_reason&&t.not_ad_high_quality_reason.length>0&&(0,Q.jsxs)(`div`,{style:{marginBottom:12},children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:12,color:`#ef4444`,display:`block`,marginBottom:8},children:`AD非优质原因`}),(0,Q.jsx)(lM,{dataSource:t.not_ad_high_quality_reason,renderItem:(e,t)=>(0,Q.jsxs)(lM.Item,{style:{padding:`4px 0`,fontSize:12,color:`#64748b`},children:[t+1,`. `,e]},t),size:`small`})]}),t.not_ecp_high_quality_reason&&t.not_ecp_high_quality_reason.length>0&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:12,color:`#ef4444`,display:`block`,marginBottom:8},children:`千川非优质原因`}),(0,Q.jsx)(lM,{dataSource:t.not_ecp_high_quality_reason,renderItem:(e,t)=>(0,Q.jsxs)(lM.Item,{style:{padding:`4px 0`,fontSize:12,color:`#64748b`},children:[t+1,`. `,e]},t),size:`small`})]})]}),title:null,trigger:`hover`,placement:`topLeft`,overlayStyle:{borderRadius:12,boxShadow:`0 8px 24px rgba(0,0,0,0.12)`},children:(0,Q.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:4},children:W9.map(e=>a(e.key)?.tag)})})},G9=e=>{if(!e)return``;let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)} ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`},{Text:n6e}=Z,r6e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)(1),[o,s]=(0,C.useState)(10),[c,l]=(0,C.useState)(0),[u,d]=(0,C.useState)(``),[f,p]=(0,C.useState)(``),[m,h]=(0,C.useState)(``),g=[{title:`序号`,dataIndex:`index`,key:`index`,width:60,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:e})},{title:`ID`,dataIndex:`id`,key:`id`},{title:`广告主账户ID`,dataIndex:`advertiserId`,key:`advertiserId`},{title:`素材ID`,dataIndex:`materialId`,key:`materialId`,width:180},{title:`上传ID`,dataIndex:`uploadId`,key:`uploadId`,render:e=>{if(!e)return`-`;let t=e.length>12?`${e.slice(0,6)}...${e.slice(-4)}`:e;return(0,Q.jsx)(xb,{title:e,placement:`topLeft`,children:(0,Q.jsx)(Z.Text,{style:{fontSize:12},children:t})})}},{title:`预测试模板ID`,dataIndex:`preTestTemplateId`,key:`preTestTemplateId`},{title:`授权ID`,dataIndex:`oauthId`,key:`oauthId`},{title:`目标标ID`,dataIndex:`targetId`,key:`targetId`},{title:`目标表`,dataIndex:`targetTable`,key:`targetTable`},{title:`任务ID`,dataIndex:`taskId`,key:`taskId`},{title:`用户ID`,dataIndex:`userId`,key:`userId`},{title:`备注`,dataIndex:`note`,key:`note`,width:200,render:e=>(0,Q.jsx)(Fj.TextArea,{value:e||``,readOnly:!0,autoSize:{minRows:1,maxRows:4},style:{color:`#94a3b8`,resize:`none`,border:`none`,background:`transparent`,padding:0},placeholder:`-`})},{title:`预测试结果`,dataIndex:`preResult`,key:`preResult`,width:120,render:e=>(0,Q.jsx)(t6e,{preResult:e})},{title:`资源类型`,dataIndex:`resourceType`,key:`resourceType`,width:100,render:e=>(0,Q.jsx)(rI,{color:e===`video`?`blue`:`green`,children:e===`video`?`视频`:`图片`})},{title:`状态`,dataIndex:`status`,key:`status`,width:100,render:e=>(0,Q.jsx)(rI,{color:e===`SUCCESS`?`green`:e===`PENDING`?`orange`:`red`,children:e===`SUCCESS`?`成功`:e===`PENDING`?`处理中`:`失败`})},{title:`创建时间`,dataIndex:`createdAt`,key:`createdAt`,width:180,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:G9(e)})},{title:`更新时间`,dataIndex:`updatedAt`,key:`updatedAt`,width:180,render:e=>(0,Q.jsx)(`span`,{style:{color:`#64748b`},children:G9(e)})}],_=async()=>{r(!0);try{let e=await TYe({material_id:u||void 0,upload_id:f||void 0,resource_type:m||void 0,page:i,page_size:o});t((e.data||[]).map((e,t)=>({...e,index:(i-1)*o+t+1}))),l(e.pagination?.total||0)}catch(e){console.error(`加载数据失败:`,e)}finally{r(!1)}};(0,C.useEffect)(()=>{_()},[i,o]);let v=()=>{a(1),_()};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:12},children:[(0,Q.jsx)(wA,{style:{color:`#6366f1`,fontSize:16}}),(0,Q.jsx)(n6e,{strong:!0,style:{fontSize:16},children:`素材ID列表`})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:16},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:12,alignItems:`center`},children:[(0,Q.jsx)(Fj,{placeholder:`素材ID`,value:u,onChange:e=>d(e.target.value),style:{width:160},allowClear:!0,onPressEnter:v}),(0,Q.jsx)(Fj,{placeholder:`上传ID`,value:f,onChange:e=>p(e.target.value),style:{width:160},allowClear:!0,onPressEnter:v}),(0,Q.jsx)(Fj,{placeholder:`文件名`,value:m,onChange:e=>h(e.target.value),style:{width:140},allowClear:!0,onPressEnter:v}),(0,Q.jsx)(Wy,{placeholder:`资源类型`,value:m,onChange:e=>h(e),style:{width:120},allowClear:!0,options:[{value:`image`,label:`图片`},{value:`video`,label:`视频`}]}),(0,Q.jsx)(rS,{type:`primary`,onClick:v,children:`搜索`})]})}),(0,Q.jsxs)(`div`,{style:{background:`#fff`,borderRadius:12,boxShadow:`0 1px 3px rgba(0,0,0,0.05)`},children:[(0,Q.jsx)(ZF,{dataSource:e,columns:g,loading:n,pagination:!1,rowKey:`id`,bordered:!1,scroll:{x:`max-content`}}),(0,Q.jsx)(`div`,{style:{padding:`16px`,textAlign:`right`},children:(0,Q.jsx)(Zj,{current:i,pageSize:o,total:c,showSizeChanger:!0,showTotal:e=>`共 ${e} 条记录`,onChange:(e,t)=>{a(e),s(t)},size:`small`})})]})]})},{Title:i6e,Text:K9}=Z,q9=20,a6e=[{label:`全部素材库`,value:``},{label:`真人认证`,value:`real_person`},{label:`虚拟人像`,value:`aigc_virtual`}],o6e=[{label:`全部类型`,value:``},{label:`图片`,value:`Image`},{label:`视频`,value:`Video`}],s6e=[{label:`全部项目状态`,value:``},{label:`可用`,value:`active`},{label:`认证中`,value:`validating`},{label:`认证失败`,value:`validate_failed`},{label:`创建远端组中`,value:`creating_remote_group`},{label:`创建远端组失败`,value:`create_group_failed`},{label:`已删除`,value:`deleted`}],c6e=[{label:`全部素材状态`,value:``},{label:`创建中`,value:`creating`},{label:`处理中`,value:`Processing`},{label:`可用`,value:`Active`},{label:`失败`,value:`Failed`},{label:`本地已删`,value:`local_deleted`},{label:`远端已删`,value:`remote_deleted`},{label:`删除失败`,value:`delete_failed`}],J9=e=>e===`real_person`?`真人认证`:e===`aigc_virtual`?`虚拟人像`:e||`-`,Y9=e=>e===`real_person`?`purple`:e===`aigc_virtual`?`cyan`:`default`,X9=e=>e===`Active`||e===`active`?`green`:e===`Processing`||e===`creating_remote_group`||e===`validating`||e===`creating`?`blue`:e===`Failed`||e===`failed`||e===`delete_failed`||e===`validate_failed`||e===`create_group_failed`?`red`:(e?.includes(`deleted`),`default`),l6e=e=>e===`Image`?`图片`:e===`Video`?`视频`:e||`-`,Z9=(e,t=10)=>e?e.length<=t*2+3?e:`${e.slice(0,t)}...${e.slice(-t)}`:`-`,Q9=async e=>{e&&(await navigator.clipboard?.writeText(e),X.success(`已复制`))},$9=e=>{if(!e)return``;let t=String(e).trim();return!t||t.startsWith(`asset://`)?``:A9(t)},u6e=({asset:e})=>{let t=$9(e.displayUrl||e.previewUrl||e.remoteUrl||e.sourceUrl),n=$9(e.videoCoverUrl||e.previewUrl||e.displayUrl||e.sourceUrl);return e.assetType===`Video`?(0,Q.jsxs)(`div`,{style:{width:72,height:52,borderRadius:10,overflow:`hidden`,background:`#f5f3ff`,display:`flex`,alignItems:`center`,justifyContent:`center`,position:`relative`},children:[n?(0,Q.jsx)(`img`,{src:n,style:{width:`100%`,height:`100%`,objectFit:`cover`}}):(0,Q.jsx)(RY,{style:{fontSize:24,color:`#8b5cf6`}}),t?(0,Q.jsx)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,style:{position:`absolute`,inset:0}}):null,(0,Q.jsx)(RY,{style:{position:`absolute`,color:`#fff`,fontSize:22,filter:`drop-shadow(0 1px 3px rgba(0,0,0,.45))`}})]}):t?(0,Q.jsx)(xj,{width:72,height:52,src:t,style:{objectFit:`cover`,borderRadius:10}}):(0,Q.jsx)(`div`,{style:{width:72,height:52,borderRadius:10,background:`#f5f5f5`}})},d6e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)([]),[i,a]=(0,C.useState)(0),[o,s]=(0,C.useState)(0),[c,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)(!1),[f,p]=(0,C.useState)(``),[m,h]=(0,C.useState)(``),[g,_]=(0,C.useState)(``),[v,y]=(0,C.useState)(``),[b,x]=(0,C.useState)(``),[S,w]=(0,C.useState)(),[T,E]=(0,C.useState)(1),[D,O]=(0,C.useState)(1),k=(0,C.useMemo)(()=>({keyword:f.trim()||void 0,libraryType:m||void 0,assetType:g||void 0,projectStatus:v||void 0,assetStatus:b||void 0}),[f,m,g,v,b]),A=async()=>{l(!0);try{let e=await DYe({keyword:k.keyword,libraryType:k.libraryType,status:k.projectStatus,page:T,pageSize:q9});t(e.items||[]),a(e.total||0)}catch(e){X.error(e?.message||`加载私域人像素材项目失败`)}finally{l(!1)}},j=async()=>{d(!0);try{let e=await OYe({projectId:S,keyword:k.keyword,libraryType:k.libraryType,assetType:k.assetType,status:k.assetStatus,page:D,pageSize:q9});r(e.items||[]),s(e.total||0)}catch(e){X.error(e?.message||`加载私域人像素材失败`)}finally{d(!1)}};(0,C.useEffect)(()=>{A()},[T,k.libraryType,k.projectStatus]),(0,C.useEffect)(()=>{j()},[S,D,k.libraryType,k.assetType,k.assetStatus]);let M=()=>{E(1),O(1),setTimeout(()=>{A(),j()},0)},N=()=>{p(``),h(``),_(``),y(``),x(``),w(void 0),E(1),O(1)},P=(0,C.useMemo)(()=>e.reduce((e,t)=>(e.asset+=t.assetCount||0,e.image+=t.imageAssetCount||0,e.video+=t.videoAssetCount||0,e.active+=t.activeAssetCount||0,e),{asset:0,image:0,video:0,active:0}),[e]),F=[{title:`项目名称`,dataIndex:`name`,width:200,fixed:`left`,render:(e,t)=>(0,Q.jsx)(rS,{type:`link`,onClick:()=>{w(t.id),O(1)},children:e})},{title:`类型`,dataIndex:`libraryType`,width:110,render:e=>(0,Q.jsx)(rI,{color:Y9(e),children:J9(e)})},{title:`用户ID`,dataIndex:`userId`,width:170,render:e=>(0,Q.jsx)(K9,{code:!0,copyable:!!e,children:e||`-`})},{title:`状态`,dataIndex:`status`,width:130,render:e=>(0,Q.jsx)(rI,{color:X9(e),children:e})},{title:`素材`,width:170,render:(e,t)=>(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsxs)(rI,{children:[`总 `,t.assetCount||0]}),(0,Q.jsxs)(rI,{color:`blue`,children:[`图 `,t.imageAssetCount||0]}),(0,Q.jsxs)(rI,{color:`geekblue`,children:[`视 `,t.videoAssetCount||0]})]})},{title:`Active`,dataIndex:`activeAssetCount`,width:90},{title:`ProjectName`,dataIndex:`remoteProjectName`,width:180,render:e=>(0,Q.jsx)(K9,{code:!0,copyable:!!e,children:e||`-`})},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:v2},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:v2}],I=[{title:`预览`,width:100,fixed:`left`,render:(e,t)=>(0,Q.jsx)(u6e,{asset:t})},{title:`素材名称`,dataIndex:`name`,width:180,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(K9,{strong:!0,children:e||`未命名素材`}),(0,Q.jsx)(`br`,{}),(0,Q.jsx)(K9,{type:`secondary`,children:l6e(t.assetType)})]})},{title:`库类型`,dataIndex:`libraryType`,width:110,render:e=>(0,Q.jsx)(rI,{color:Y9(e),children:J9(e)})},{title:`用户ID`,dataIndex:`userId`,width:170,render:e=>(0,Q.jsx)(K9,{code:!0,copyable:!!e,children:e||`-`})},{title:`本地项目`,dataIndex:`projectName`,width:160,render:e=>e||`-`},{title:`状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(rI,{color:X9(e),children:e})},{title:`AssetId`,dataIndex:`remoteAssetId`,width:190,render:e=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(K9,{code:!0,children:Z9(e)}),e?(0,Q.jsx)(rS,{size:`small`,type:`text`,icon:(0,Q.jsx)(hI,{}),onClick:()=>Q9(e)}):null]})},{title:`GroupId`,dataIndex:`remoteGroupId`,width:190,render:e=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(K9,{code:!0,children:Z9(e)}),e?(0,Q.jsx)(rS,{size:`small`,type:`text`,icon:(0,Q.jsx)(hI,{}),onClick:()=>Q9(e)}):null]})},{title:`轮询`,width:160,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(K9,{children:[`次数:`,t.pollCount||0]}),(0,Q.jsx)(`br`,{}),(0,Q.jsxs)(K9,{type:`secondary`,children:[`下次:`,v2(t.nextPollAt)]})]})},{title:`错误`,dataIndex:`errorMessage`,width:240,ellipsis:!0,render:e=>e?(0,Q.jsx)(xb,{title:e,children:(0,Q.jsx)(K9,{type:`danger`,children:e})}):`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:v2}];return(0,Q.jsxs)(`div`,{style:{padding:24,background:`#f7f7fb`,minHeight:`100%`},children:[(0,Q.jsxs)(bA,{style:{width:`100%`,justifyContent:`space-between`,marginBottom:16},align:`start`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(i6e,{level:3,style:{margin:0},children:`私域人像素材库`}),(0,Q.jsx)(K9,{type:`secondary`,children:`统一查看真人认证素材与虚拟人像素材,支持图片/视频资产状态排查。`})]}),(0,Q.jsxs)(bA,{wrap:!0,children:[(0,Q.jsx)(Fj,{allowClear:!0,prefix:(0,Q.jsx)(Vy,{}),placeholder:`搜索项目/素材`,value:f,onChange:e=>p(e.target.value),onPressEnter:M,style:{width:240}}),(0,Q.jsx)(Wy,{value:m,onChange:e=>{h(e),E(1),O(1)},options:a6e,style:{width:150}}),(0,Q.jsx)(Wy,{value:g,onChange:e=>{_(e),O(1)},options:o6e,style:{width:130}}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(Vy,{}),type:`primary`,onClick:M,children:`查询`}),(0,Q.jsx)(rS,{onClick:N,children:`重置`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:()=>{A(),j()},children:`刷新`})]})]}),(0,Q.jsxs)(bA,{size:16,wrap:!0,style:{marginBottom:16},children:[(0,Q.jsx)(aO,{style:{width:180},children:(0,Q.jsx)($M,{title:`项目数`,value:i})}),(0,Q.jsx)(aO,{style:{width:180},children:(0,Q.jsx)($M,{title:`当前页素材`,value:P.asset})}),(0,Q.jsx)(aO,{style:{width:180},children:(0,Q.jsx)($M,{title:`图片`,value:P.image})}),(0,Q.jsx)(aO,{style:{width:180},children:(0,Q.jsx)($M,{title:`视频`,value:P.video})}),(0,Q.jsx)(aO,{style:{width:180},children:(0,Q.jsx)($M,{title:`Active`,value:P.active})})]}),(0,Q.jsx)(aO,{title:`项目组`,style:{marginBottom:16,borderRadius:14},extra:(0,Q.jsx)(Wy,{value:v,onChange:e=>{y(e),E(1)},options:s6e,style:{width:180}}),children:(0,Q.jsx)(ZF,{rowKey:`id`,columns:F,dataSource:e,loading:c,pagination:{current:T,pageSize:q9,total:i,onChange:E},size:`small`,scroll:{x:1350}})}),(0,Q.jsx)(aO,{title:S?`项目素材明细`:`全部素材明细`,style:{borderRadius:14},extra:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Wy,{value:b,onChange:e=>{x(e),O(1)},options:c6e,style:{width:170}}),S?(0,Q.jsx)(rS,{size:`small`,onClick:()=>w(void 0),children:`查看全部`}):null]}),children:(0,Q.jsx)(ZF,{rowKey:`id`,columns:I,dataSource:n,loading:u,pagination:{current:D,pageSize:q9,total:o,onChange:O},size:`small`,scroll:{x:1700}})})]})},f6e=({open:e,keyId:t,companyName:n,quotaLimit:r,quotaUsed:i,quotaCycle:a,onCancel:o,onSuccess:s})=>{let[c,l]=(0,C.useState)(`adjust`),[u,d]=(0,C.useState)(0),[f,p]=(0,C.useState)(r),[m,h]=(0,C.useState)(a),[g,_]=(0,C.useState)(``),[v,y]=(0,C.useState)(!1),b=e=>e?{daily:`每日`,monthly:`每月`,one_time:`一次性`}[e]||e:`无限`,x=async()=>{y(!0);try{let e={action:c,reason:g||void 0};c===`adjust`&&(e.quotaLimitDelta=u),c===`set_limit`&&(e.quotaLimit=f),c===`change_cycle`&&(e.quotaCycle=m),await pJe(t,e),X.success(`配额调整成功`),s()}catch(e){X.error(e?.response?.data?.detail||`调整失败`)}finally{y(!1)}},S=()=>{l(`adjust`),d(0),p(r),h(a),_(``),o()},w=c===`adjust`?T((r||0)+u):c===`set_limit`?f:r;function T(e){return Math.round(e*100)/100}return(0,Q.jsx)(vM,{title:`调整配额`,open:e,onOk:x,onCancel:S,okText:`确认调整`,cancelText:`取消`,confirmLoading:v,width:480,children:(0,Q.jsxs)(bA,{direction:`vertical`,size:`middle`,style:{width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{type:`secondary`,children:`公司:`}),(0,Q.jsx)(Z.Text,{strong:!0,children:n})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{type:`secondary`,children:`当前:`}),(0,Q.jsxs)(rI,{color:`blue`,children:[`已用 `,i.toFixed(2),` 元`]}),(0,Q.jsxs)(rI,{color:`green`,children:[`限额 `,r==null?`无限`:`${r.toFixed(2)} 元`]}),(0,Q.jsx)(rI,{color:`purple`,children:b(a)})]}),(0,Q.jsx)(kO,{style:{margin:`8px 0`}}),(0,Q.jsx)(sD.Group,{value:c,onChange:e=>l(e.target.value),style:{width:`100%`},children:(0,Q.jsxs)(bA,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,Q.jsx)(sD,{value:`adjust`,children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Z.Text,{children:`增加总额`}),c===`adjust`&&(0,Q.jsx)(ok,{min:0,step:10,value:u,onChange:e=>d(e||0),addonAfter:`元`,style:{width:160}})]})}),(0,Q.jsx)(sD,{value:`reset_usage`,children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Z.Text,{children:`重置已用`}),c===`reset_usage`&&(0,Q.jsxs)(Z.Text,{type:`secondary`,children:[`(`,i.toFixed(2),` → 0.00 元)`]})]})}),(0,Q.jsx)(sD,{value:`set_limit`,children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Z.Text,{children:`设置限额`}),c===`set_limit`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ok,{min:0,step:10,value:f,onChange:p,addonAfter:`元`,placeholder:`留空=无限`,style:{width:160}}),(0,Q.jsxs)(Z.Text,{type:`secondary`,children:[`(当前:`,r==null?`无限`:`${r.toFixed(2)} 元`,`)`]})]})]})}),(0,Q.jsx)(sD,{value:`change_cycle`,children:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Z.Text,{children:`修改周期`}),c===`change_cycle`&&(0,Q.jsx)(Wy,{value:m,onChange:h,allowClear:!0,placeholder:`选择周期`,style:{width:140},options:[{label:`每日`,value:`daily`},{label:`每月`,value:`monthly`},{label:`一次性`,value:`one_time`},{label:`无限`,value:null}]})]})})]})}),c===`adjust`&&u>0&&(0,Q.jsxs)(`div`,{style:{padding:`8px 12px`,background:`#f0f5ff`,borderRadius:6,fontSize:13},children:[`调整后总额:`,(0,Q.jsx)(`strong`,{style:{color:`#1677ff`},children:w==null?`无限`:`${w.toFixed(2)} 元`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:`调整原因(可选)`}),(0,Q.jsx)(Fj.TextArea,{value:g,onChange:e=>_(e.target.value),placeholder:`请输入调整原因...`,rows:2,maxLength:500,style:{marginTop:4}})]})]})})},p6e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)(0),[o,s]=(0,C.useState)({open:!1,key:null}),[c,l]=(0,C.useState)({open:!1,key:null,usage:null}),[u,d]=(0,C.useState)({open:!1,key:null}),[f,p]=(0,C.useState)({items:[],total:0,page:1,loading:!1}),[m]=Y.useForm(),[h,g]=(0,C.useState)([]),[_,v]=(0,C.useState)([]),[y,b]=(0,C.useState)(!1),[x,S]=(0,C.useState)(!1),[w,T]=(0,C.useState)({projectLimit:0,assetLimit:0,storageMbLimit:0,projectUsed:0,assetUsed:0,storageMbUsed:0,enabled:!1,remark:null}),E=async()=>{r(!0);try{let[e,n]=await Promise.all([lJe({limit:100}),$0()]);t(e?.items||e||[]),a(e?.total||e?.length||0),g([...(n?.engine?.image||[]).map(e=>({id:e.id,name:e.name||e.modelName,modelName:e.modelName,genType:`image`})),...(n?.engine?.video||[]).map(e=>({id:e.id,name:e.name||e.modelName,modelName:e.modelName,genType:`video`}))])}catch{X.error(`加载失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{E()},[]);let D=async(e=null)=>{if(e){let t=(e.callableModels||[]).map(e=>e.engineId||e.engine_id);m.setFieldsValue({companyName:e.companyName||``,description:e.description||``,quotaLimit:e.quotaLimit||null,quotaCycle:e.quotaCycle||`monthly`,validUntil:e.validUntil?(0,aS.default)(e.validUntil):null,maxConcurrentVideoTasks:e.maxConcurrentVideoTasks||null,engineIds:t}),await Promise.all([R(e.id),(async()=>{try{let t=await gJe(e.id);T({projectLimit:t?.projectLimit??t?.project_limit??0,assetLimit:t?.assetLimit??t?.asset_limit??0,storageMbLimit:t?.storageMbLimit??t?.storage_mb_limit??0,projectUsed:t?.projectUsed??t?.project_used??0,assetUsed:t?.assetUsed??t?.asset_used??0,storageMbUsed:t?.storageMbUsed??t?.storage_mb_used??0,enabled:!!t?.enabled,remark:t?.remark??null})}catch{T({projectLimit:0,assetLimit:0,storageMbLimit:0,projectUsed:0,assetUsed:0,storageMbUsed:0,enabled:!1,remark:null})}})()])}else m.resetFields(),m.setFieldsValue({quotaCycle:`monthly`,quotaLimit:100,engineIds:[]}),b(!1),S(!1),v([]),T({projectLimit:0,assetLimit:0,storageMbLimit:0,projectUsed:0,assetUsed:0,storageMbUsed:0,enabled:!1,remark:null});s({open:!0,key:e})},O=async()=>{try{let e=await m.validateFields(),t=(e.engineIds||[]).map(e=>{let t=h.find(t=>t.id===e);return{engineId:e,engineType:t?.genType||`video`,modelName:t?.modelName||``}}),n={companyName:e.companyName,description:e.description||null,quotaLimit:e.quotaLimit||null,quotaCycle:e.quotaCycle||null,validUntil:e.validUntil?e.validUntil.toISOString?e.validUntil.toISOString():e.validUntil:null,maxConcurrentVideoTasks:e.maxConcurrentVideoTasks||null,callableModels:t};if(console.log(`API Key payload:`,JSON.stringify(n,null,2)),o.key?.id)await dJe(o.key.id,n);else{let e=await uJe(n);e?.apiKey&&vM.success({title:`API Key 创建成功`,content:(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{children:`请妥善保存以下 API Key,此信息仅显示一次:`}),(0,Q.jsx)(Z.Paragraph,{copyable:!0,style:{background:`#f5f5f5`,padding:12,borderRadius:8,fontFamily:`monospace`},children:e.apiKey})]})})}if(o.key?.id){await z(o.key.id);try{await _Je(o.key.id,{projectLimit:w.projectLimit||0,assetLimit:w.assetLimit||0,storageMbLimit:w.storageMbLimit||0,remark:w.remark??null})}catch(e){X.warning(e?.response?.data?.detail||`虚拟素材库配额保存失败`)}}X.success(`保存成功`),s({open:!1,key:null}),m.resetFields(),E()}catch(e){if(e?.errorFields)return;X.error(`保存失败`)}},k=async e=>{try{await fJe(e),X.success(`已删除`),E()}catch{X.error(`删除失败`)}},A=async e=>{try{let t=await vJe(e.id),n=t?.apiKey||t?.data?.apiKey;if(!n){X.error(`获取 API Key 失败`);return}if(navigator.clipboard&&typeof navigator.clipboard.writeText==`function`)try{await navigator.clipboard.writeText(n)}catch{j(n)}else j(n);X.success(`API Key 已复制到剪贴板`)}catch(e){let t=e?.response?.data?.detail||`复制失败`;X.error(t)}},j=e=>{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select(),document.execCommand(`copy`),document.body.removeChild(t)},M=async(e,t=1,n=20)=>{try{let r=await W0(e,30,t,n);l(e=>({...e,usage:r}))}catch{X.error(`加载使用统计失败`)}},N=async(e,t=1)=>{p(e=>({...e,loading:!0}));try{let n=((await Y0({page:t,pageSize:20,action:`quota_adjust`}))?.items||[]).filter(t=>t.path?.includes(e));p({items:n,total:n.length,page:t,loading:!1})}catch{X.error(`加载配额变更记录失败`),p(e=>({...e,loading:!1}))}},P=async e=>{try{l({open:!0,key:e,usage:await W0(e.id,30,1,20)}),N(e.id,1)}catch{X.error(`加载使用统计失败`)}},F=()=>{v([..._,{targetResolution:`1080p`,providerGenerationResolution:`720p`,processorKey:`volc_large_model_v1`}])},I=e=>{v(_.filter((t,n)=>n!==e))},L=(e,t,n)=>{let r=[..._];r[e]={...r[e],[t]:n},v(r)},R=async e=>{try{let t=await mJe(e);b(t?.data?.enabled||!1),S(t?.data?.deleteSourceAfterSuccess||!1),v(t?.data?.rules||[])}catch{b(!1),S(!1),v([])}},z=async e=>{try{await hJe(e,{data:{enabled:y,deleteSourceAfterSuccess:x,rules:_}}),X.success(`超分配置已保存`)}catch{X.error(`保存超分配置失败`)}},B=e=>e?{daily:`每日`,monthly:`每月`,one_time:`一次性`}[e]||e:`无限`;return(0,Q.jsxs)(bA,{direction:`vertical`,size:`large`,style:{width:`100%`},children:[(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(`div`,{style:{width:36,height:36,borderRadius:8,background:`linear-gradient(135deg, #6366f1, #8b5cf6)`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,Q.jsx)(AL,{style:{color:`#fff`,fontSize:18}})}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`API Key 管理`}),(0,Q.jsxs)(rI,{color:`purple`,children:[i,` 个`]})]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>D(),children:`创建 Key`})]})}),(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12},children:(0,Q.jsx)(ZF,{columns:[{title:`公司`,dataIndex:`companyName`,width:120,ellipsis:!0},{title:`api-key`,dataIndex:`apiKeyPrefix`,width:180,render:(e,t)=>(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsxs)(`code`,{style:{background:`#f5f5f5`,padding:`2px 6px`,borderRadius:4},children:[e,`****`]}),(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(hI,{}),onClick:()=>A(t)})]})},{title:`配额(元)`,dataIndex:`quotaLimit`,width:130,render:(e,t)=>{if(!t.quotaLimit)return(0,Q.jsx)(rI,{children:`无限`});let n=t.quotaUsed||0,r=t.quotaLimit||1;return(0,Q.jsx)(`div`,{style:{width:110},children:(0,Q.jsx)(GM,{percent:Math.min(100,Math.round(n/r*100)),size:`small`,format:()=>`${n.toFixed(1)}/${r}`})})}},{title:`周期`,dataIndex:`quotaCycle`,width:70,render:e=>(0,Q.jsx)(rI,{children:B(e)})},{title:`状态`,dataIndex:`isActive`,width:70,render:e=>(0,Q.jsx)(rI,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`有效期`,dataIndex:`validUntil`,width:100,render:e=>e?new Date(e).toLocaleDateString():`永久`},{title:`最后使用`,dataIndex:`lastUsedAt`,width:150,render:e=>e?new Date(e).toLocaleString():`-`},{title:`操作`,key:`actions`,fixed:`right`,width:260,render:(e,t)=>(0,Q.jsxs)(bA,{size:0,children:[(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(EU,{}),onClick:()=>d({open:!0,key:t}),children:`配额`}),(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>P(t),children:`统计`}),(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(cI,{}),onClick:()=>D(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确定删除?`,onConfirm:()=>k(t.id),children:(0,Q.jsx)(rS,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(oI,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1100}})}),(0,Q.jsxs)(vM,{title:o.key?`编辑 API Key`:`创建 API Key`,open:o.open,onOk:O,onCancel:()=>{s({open:!1,key:null}),m.resetFields()},okText:`保存`,cancelText:`取消`,width:760,children:[(0,Q.jsxs)(Y,{form:m,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(Y.Item,{name:`companyName`,label:`公司名称`,rules:[{required:!0,message:`请输入公司名称`}],children:(0,Q.jsx)(Fj,{placeholder:`公司名称`})}),(0,Q.jsx)(Y.Item,{name:`description`,label:`备注`,children:(0,Q.jsx)(Fj.TextArea,{placeholder:`备注信息`,rows:2})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`quotaLimit`,label:`配额总额(元)`,style:{flex:1},children:(0,Q.jsx)(ok,{min:0,step:10,style:{width:`100%`},placeholder:`留空=无限`})}),(0,Q.jsx)(Y.Item,{name:`quotaCycle`,label:`配额周期`,style:{flex:1},children:(0,Q.jsxs)(Wy,{children:[(0,Q.jsx)(Wy.Option,{value:`daily`,children:`每日`}),(0,Q.jsx)(Wy.Option,{value:`monthly`,children:`每月`}),(0,Q.jsx)(Wy.Option,{value:`one_time`,children:`一次性`})]})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`validUntil`,label:`有效期至`,style:{flex:1},children:(0,Q.jsx)(eA,{style:{width:`100%`},placeholder:`留空=永久`})}),(0,Q.jsx)(Y.Item,{name:`maxConcurrentVideoTasks`,label:`最大并发视频任务`,style:{flex:1},children:(0,Q.jsx)(ok,{min:1,style:{width:`100%`},placeholder:`留空=无限`})})]}),(0,Q.jsx)(Y.Item,{name:`engineIds`,label:`可调用模型`,children:(0,Q.jsx)(Wy,{mode:`multiple`,placeholder:`选择该 Key 可调用的模型(留空=允许所有已定价模型)`,allowClear:!0,showSearch:!0,optionFilterProp:`label`,style:{width:`100%`},options:(h||[]).map(e=>({label:`[${e.genType===`video`?`视频`:`图片`}] ${e.name||e.modelName||e.id}`,value:e.id})),notFoundContent:h.length===0?`暂无可用引擎`:null})})]}),o.key?.id&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(kO,{}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:`🎬 超分配置`}),(0,Q.jsxs)(`div`,{style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:12},children:[(0,Q.jsx)(Z.Text,{children:`启用超分:`}),(0,Q.jsx)(vN,{checked:y,onChange:b,checkedChildren:`启用`,unCheckedChildren:`关闭`})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:12},children:[(0,Q.jsx)(Z.Text,{children:`成功后删除源文件:`}),(0,Q.jsx)(vN,{checked:x,onChange:S,checkedChildren:`是`,unCheckedChildren:`否`})]}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:`超分规则:`}),(0,Q.jsx)(`div`,{style:{marginTop:8},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:[(_||[]).map((e,t)=>(0,Q.jsx)(aO,{size:`small`,style:{background:`#f8f9fc`},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`},children:[(0,Q.jsx)(Wy,{value:e.targetResolution,onChange:e=>L(t,`targetResolution`,e),style:{width:100},options:[`480p`,`720p`,`1080p`,`2K`,`4K`].map(e=>({label:e,value:e}))}),(0,Q.jsx)(`span`,{children:`→`}),(0,Q.jsx)(Wy,{value:e.providerGenerationResolution,onChange:e=>L(t,`providerGenerationResolution`,e),style:{width:100},options:[`480p`,`720p`,`1080p`].map(e=>({label:e,value:e}))}),(0,Q.jsx)(Wy,{value:e.processorKey,onChange:e=>L(t,`processorKey`,e),style:{width:140},options:[{label:`本地FFmpeg`,value:`local_ffmpeg_crop_v1`},{label:`火山标准版`,value:`volc_standard_v1`},{label:`火山专业版`,value:`volc_professional_v1`},{label:`火山大模型`,value:`volc_large_model_v1`}]}),(0,Q.jsx)(xM,{title:`确定删除此规则?`,onConfirm:()=>I(t),children:(0,Q.jsx)(rS,{type:`link`,danger:!0,size:`small`,icon:(0,Q.jsx)(oI,{})})})]})},t)),(0,Q.jsx)(rS,{type:`dashed`,size:`small`,icon:(0,Q.jsx)(ND,{}),onClick:F,children:`添加规则`})]})})]})]}),o.key?.id&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(kO,{}),(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:12},children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:14},children:`🧩 V3 虚拟素材库配额`}),(0,Q.jsx)(rI,{color:w.enabled?`green`:`default`,children:w.enabled?`已启用`:`未启用(全0=不可用)`})]}),(0,Q.jsxs)(`div`,{style:{padding:`12px 16px`,backgroundColor:`#f6ffed`,borderRadius:8,border:`1px solid #b7eb8f`},children:[(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:12},children:`默认 0 = 该 API Key 不可使用虚拟素材库功能。项目数或素材数任一上限 > 0 即启用(存储空间不再设置上限)。`}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:16},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{marginBottom:4,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`项目数上限`}),(0,Q.jsxs)(rI,{color:`blue`,children:[`已使用 `,w.projectUsed||0,` / `,w.projectLimit||0]})]}),(0,Q.jsx)(ok,{min:0,max:1e4,style:{width:`100%`},value:w.projectLimit,onChange:e=>T(t=>({...t,projectLimit:Number(e)||0})),addonBefore:`上限`,addonAfter:`个`}),(0,Q.jsx)(GM,{percent:w.projectLimit>0?Math.min(100,Math.round((w.projectUsed||0)*100/(w.projectLimit||1))):0,size:`small`,style:{marginTop:6},strokeColor:w.projectLimit>0&&(w.projectUsed||0)>=w.projectLimit?`#ff4d4f`:`#1677ff`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{marginBottom:4,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`素材数上限`}),(0,Q.jsxs)(rI,{color:`blue`,children:[`已使用 `,w.assetUsed||0,` / `,w.assetLimit||0]})]}),(0,Q.jsx)(ok,{min:0,max:1e6,style:{width:`100%`},value:w.assetLimit,onChange:e=>T(t=>({...t,assetLimit:Number(e)||0})),addonBefore:`上限`,addonAfter:`张`}),(0,Q.jsx)(GM,{percent:w.assetLimit>0?Math.min(100,Math.round((w.assetUsed||0)*100/(w.assetLimit||1))):0,size:`small`,style:{marginTop:6},strokeColor:w.assetLimit>0&&(w.assetUsed||0)>=w.assetLimit?`#ff4d4f`:`#1677ff`})]})]}),w.storageMbUsed>0&&(0,Q.jsxs)(`div`,{style:{marginTop:12,padding:`8px 12px`,background:`#f0f5ff`,borderRadius:6,fontSize:12,color:`#475569`},children:[`已使用存储空间:`,(0,Q.jsxs)(`strong`,{style:{color:`#1e40af`},children:[Number(w.storageMbUsed||0).toFixed(2),` MB`]}),`(无上限限制,仅供参考)`]}),(0,Q.jsxs)(`div`,{style:{marginTop:12},children:[(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:`备注(仅后台可见):`}),(0,Q.jsx)(Fj.TextArea,{rows:2,maxLength:500,placeholder:`可选:配额配置说明`,value:w.remark??``,onChange:e=>T(t=>({...t,remark:e.target.value||null})),style:{marginTop:4}})]})]})]})]}),(0,Q.jsx)(vM,{title:`API Key 详情 - ${c.key?.companyName||``}`,open:c.open,onCancel:()=>l({open:!1,key:null,usage:null}),footer:null,width:720,children:(0,Q.jsx)(rO,{defaultActiveKey:`usage`,items:[{key:`usage`,label:`使用统计`,children:c.usage&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(3, 1fr)`,gap:16,marginBottom:24},children:[(0,Q.jsxs)(aO,{children:[(0,Q.jsx)(Z.Text,{type:`secondary`,children:`总请求数`}),(0,Q.jsx)(Z.Title,{level:3,style:{margin:0},children:c.usage.totalRequests})]}),(0,Q.jsxs)(aO,{children:[(0,Q.jsx)(Z.Text,{type:`secondary`,children:`总消耗(元)`}),(0,Q.jsx)(Z.Title,{level:3,style:{margin:0},children:c.usage.totalCreditsCost?.toFixed(2)})]}),(0,Q.jsxs)(aO,{children:[(0,Q.jsx)(Z.Text,{type:`secondary`,children:`成功率`}),(0,Q.jsxs)(Z.Title,{level:3,style:{margin:0},children:[c.usage.totalRequests?(c.usage.successCount/c.usage.totalRequests*100).toFixed(1):0,`%`]})]})]}),(0,Q.jsx)(ZF,{columns:[{title:`时间`,dataIndex:`createdAt`,width:160,render:e=>e?new Date(e).toLocaleString():`-`},{title:`类型`,dataIndex:`genType`,width:70,render:e=>(0,Q.jsx)(rI,{color:e===`video`?`blue`:`green`,children:e===`video`?`视频`:`图片`})},{title:`模型`,dataIndex:`modelName`,width:140,ellipsis:!0},{title:`消耗(元)`,dataIndex:`creditsCost`,width:90,render:e=>e?.toFixed(2)||`0.00`},{title:`状态`,dataIndex:`status`,width:70,render:e=>(0,Q.jsx)(rI,{color:e===`success`?`green`:`red`,children:e===`success`?`成功`:`失败`})}],dataSource:c.usage.items||[],rowKey:`id`,pagination:{current:c.usage.page||1,pageSize:c.usage.pageSize||20,total:c.usage.total||0,onChange:(e,t)=>M(c.key?.id||``,e,t||20),showSizeChanger:!0,showTotal:e=>`共 ${e} 条`,size:`small`},size:`small`})]})},{key:`quota`,label:`配额变更`,children:(0,Q.jsx)(`div`,{children:(0,Q.jsx)(ZF,{columns:[{title:`时间`,dataIndex:`createdAt`,width:160,render:e=>e?new Date(e).toLocaleString():`-`},{title:`管理员`,dataIndex:`username`,width:100,ellipsis:!0},{title:`操作`,dataIndex:`action`,width:110,render:e=>(0,Q.jsx)(rI,{color:`blue`,children:{adjust:`增加总额`,reset_usage:`重置已用`,set_limit:`设置限额`,change_cycle:`修改周期`}[e?.split(`:`)[1]||e]||e})},{title:`变更详情`,dataIndex:`detail`,width:220,ellipsis:!0,render:(e,t)=>{let n=e;if(typeof e==`string`)try{n=JSON.parse(e)}catch{return e||`-`}if(!n||typeof n!=`object`)return`-`;let r=[];return(n.old_limit!=null||n.new_limit!=null)&&r.push(`限额: ${n.old_limit==null?`-`:n.old_limit.toFixed(2)} → ${n.new_limit==null?`无限`:n.new_limit.toFixed(2)}`),n.old_used!=null&&n.new_used!=null&&n.old_used!==n.new_used&&r.push(`已用: ${n.old_used.toFixed(2)} → ${n.new_used.toFixed(2)}`),(n.old_cycle!=null||n.new_cycle!=null)&&n.old_cycle!==n.new_cycle&&r.push(`周期: ${B(n.old_cycle)} → ${B(n.new_cycle)}`),r.length>0?(0,Q.jsx)(`span`,{style:{fontSize:12},children:r.join(` | `)}):`-`}},{title:`原因`,dataIndex:`detail`,width:120,ellipsis:!0,render:e=>{let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{}return t?.reason||`-`}}],dataSource:f.items,rowKey:(e,t)=>e.id||e.createdAt||t,loading:f.loading,pagination:!1,size:`small`,scroll:{x:700}})})}]})}),(0,Q.jsx)(f6e,{open:u.open,keyId:u.key?.id||``,companyName:u.key?.companyName||``,quotaLimit:u.key?.quotaLimit??null,quotaUsed:u.key?.quotaUsed||0,quotaCycle:u.key?.quotaCycle||null,onCancel:()=>d({open:!1,key:null}),onSuccess:()=>{d({open:!1,key:null}),E()}})]})},m6e=[`2K`,`4K`],h6e=[`480p`,`720p`,`1080p`],g6e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)([]),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)({open:!1,pricing:null}),[c]=Y.useForm(),l=Y.useWatch(`genType`,c)||`video`,u=Y.useWatch(`modelConfigId`,c),d=async()=>{a(!0);try{let[e,n]=await Promise.all([oJe(),$0()]);t(e);let i=(n?.engine?.image||[]).map(e=>({...e,genType:`image`})),a=(n?.engine?.video||[]).map(e=>({...e,genType:`video`}));r([...i,...a])}catch{X.error(`加载失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{d()},[]);let f=n.filter(e=>e.genType===l),p=n.find(e=>e.id===u),m=l===`video`?p?.supportedResolutions?.length?p.supportedResolutions:h6e:p?.supportedSizes?.length?Object.keys(p.supportedSizes):m6e,h=(e=null)=>{e?c.setFieldsValue({modelConfigId:e.modelConfigId,genType:e.genType,resolution:e.resolution,priceRatio:e.priceRatio,basePrice:e.basePrice,perSecondPrice:e.perSecondPrice,inputVideoRatio:e.inputVideoRatio,inputVideoBasePrice:e.inputVideoBasePrice,inputVideoPerSecondPrice:e.inputVideoPerSecondPrice,inputImageRatio:e.inputImageRatio,inputImageBasePrice:e.inputImageBasePrice,inputImagePerImagePrice:e.inputImagePerImagePrice}):(c.resetFields(),c.setFieldsValue({genType:`video`,priceRatio:1,basePrice:0,perSecondPrice:0,inputVideoRatio:1,inputVideoBasePrice:0,inputVideoPerSecondPrice:0,inputImageRatio:1,inputImageBasePrice:0,inputImagePerImagePrice:0})),s({open:!0,pricing:e})},g=async()=>{try{let e=await c.validateFields();await sJe({...o.pricing?.id?{id:o.pricing.id}:{},modelConfigId:e.modelConfigId,genType:e.genType,resolution:e.resolution,priceRatio:e.priceRatio,basePrice:e.basePrice,perSecondPrice:e.perSecondPrice||0,inputVideoRatio:e.inputVideoRatio||1,inputVideoBasePrice:e.inputVideoBasePrice||0,inputVideoPerSecondPrice:e.inputVideoPerSecondPrice||0,inputImageRatio:e.inputImageRatio||1,inputImageBasePrice:e.inputImageBasePrice||0,inputImagePerImagePrice:e.inputImagePerImagePrice||0}),X.success(`保存成功`),s({open:!1,pricing:null}),c.resetFields(),d()}catch(e){if(e?.errorFields)return;X.error(`保存失败`)}},_=async e=>{try{await cJe(e),X.success(`已删除`),d()}catch{X.error(`删除失败`)}};return(0,Q.jsxs)(bA,{direction:`vertical`,size:`large`,style:{width:`100%`},children:[(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(`div`,{style:{width:36,height:36,borderRadius:8,background:`linear-gradient(135deg, #6366f1, #8b5cf6)`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,Q.jsx)(EU,{style:{color:`#fff`,fontSize:18}})}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`API 模型价格配置`}),(0,Q.jsxs)(rI,{color:`purple`,children:[e.length,` 条`]})]}),(0,Q.jsx)(rS,{type:`primary`,icon:(0,Q.jsx)(ND,{}),onClick:()=>h(),children:`添加价格`})]})}),(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12},children:(0,Q.jsx)(ZF,{columns:[{title:`类型`,dataIndex:`genType`,width:80,render:e=>(0,Q.jsx)(rI,{color:e===`video`?`blue`:`green`,children:e===`video`?`视频`:`图片`})},{title:`引擎`,dataIndex:`modelConfigId`,width:160,render:e=>n.find(t=>t.id===e)?.name||e},{title:`分辨率`,dataIndex:`resolution`,width:80},{title:`价格系数`,dataIndex:`priceRatio`,width:90,render:e=>(0,Q.jsx)(`span`,{style:{color:e>=2?`#f5222d`:e>=1.5?`#faad14`:`#52c41a`},children:e})},{title:`基础价格(元)`,dataIndex:`basePrice`,width:110},{title:`每秒价格(元)`,dataIndex:`perSecondPrice`,width:120},{title:`传入视频(元)/每秒`,dataIndex:`inputVideoBasePrice`,width:120},{title:`传入图片(元)/每张`,dataIndex:`inputImageBasePrice`,width:120},{title:`操作`,key:`actions`,fixed:`right`,width:150,render:(e,t)=>(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(cI,{}),onClick:()=>h(t),children:`编辑`}),(0,Q.jsx)(xM,{title:`确定删除?`,onConfirm:()=>_(t.id),children:(0,Q.jsx)(rS,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(oI,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:!1,scroll:{x:1100}})}),(0,Q.jsx)(vM,{title:o.pricing?`编辑价格`:`添加价格`,open:o.open,onOk:g,onCancel:()=>{s({open:!1,pricing:null}),c.resetFields()},okText:`保存`,cancelText:`取消`,width:560,children:(0,Q.jsxs)(Y,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`genType`,label:`引擎类型`,rules:[{required:!0}],style:{flex:1},children:(0,Q.jsxs)(Wy,{onChange:()=>{c.setFieldsValue({modelConfigId:void 0,resolution:void 0})},children:[(0,Q.jsx)(Wy.Option,{value:`video`,children:`视频`}),(0,Q.jsx)(Wy.Option,{value:`image`,children:`图片`})]})}),(0,Q.jsx)(Y.Item,{name:`modelConfigId`,label:`引擎`,rules:[{required:!0}],style:{flex:1},children:(0,Q.jsx)(Wy,{placeholder:`选择引擎`,showSearch:!0,optionFilterProp:`label`,children:f.map(e=>(0,Q.jsx)(Wy.Option,{value:e.id,label:e.name,children:e.name},e.id))})})]}),(0,Q.jsx)(Y.Item,{name:`resolution`,label:`分辨率`,rules:[{required:!0}],children:(0,Q.jsx)(Wy,{placeholder:`选择分辨率`,children:m.map(e=>(0,Q.jsx)(Wy.Option,{value:e,children:e},e))})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(Y.Item,{name:`priceRatio`,label:`价格系数`,rules:[{required:!0}],style:{flex:1},children:(0,Q.jsx)(ok,{min:.01,step:.1,style:{width:`100%`}})}),(0,Q.jsx)(Y.Item,{name:`basePrice`,label:`基础价格(元)`,rules:[{required:!0}],style:{flex:1},children:(0,Q.jsx)(ok,{min:0,step:.1,style:{width:`100%`}})})]}),l===`video`&&(0,Q.jsx)(Y.Item,{name:`perSecondPrice`,label:`每秒价格(元)`,children:(0,Q.jsx)(ok,{min:0,step:.01,style:{width:`100%`}})}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:`传入媒体附加费`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,marginTop:8},children:[(0,Q.jsx)(Y.Item,{name:`inputVideoBasePrice`,label:`传入视频(元)/每秒`,style:{flex:1},children:(0,Q.jsx)(ok,{min:0,step:.1,style:{width:`100%`}})}),(0,Q.jsx)(Y.Item,{name:`inputImageBasePrice`,label:`传入图片(元)/每张`,style:{flex:1},children:(0,Q.jsx)(ok,{min:0,step:.1,style:{width:`100%`}})})]})]})})]})},_6e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)(0),[o,s]=(0,C.useState)(1),[c,l]=(0,C.useState)(50),[u,d]=(0,C.useState)(``),[f,p]=(0,C.useState)(void 0),[m,h]=(0,C.useState)(void 0),[g,_]=(0,C.useState)([null,null]),v=(0,C.useCallback)(async()=>{r(!0);try{let e={skip:(o-1)*c,limit:c};f&&(e.genType=f),m&&(e.status=m),g[0]&&(e.startDate=g[0].startOf(`day`).toISOString()),g[1]&&(e.endDate=g[1].endOf(`day`).toISOString()),u.trim()&&(e.search=u.trim());let n=await yJe(e);t(n?.items||[]),a(n?.total||0)}catch{X.error(`加载失败`)}finally{r(!1)}},[o,c,f,m,g,u]);(0,C.useEffect)(()=>{v()},[v]);let y=()=>{s(1),v()},b=()=>{let t=[[`时间`,`公司`,`api-key`,`类型`,`模型`,`时长(秒)`,`分辨率`,`消耗(元)`,`Token`,`耗时(ms)`,`状态`,`错误信息`],...e.map(e=>[e.createdAt?new Date(e.createdAt).toLocaleString():``,e.companyName||``,e.apiKeyPrefix||``,e.genType===`video`?`视频`:`图片`,e.modelName||``,e.duration||``,e.resolution||``,(e.creditsCost||0).toFixed(2),e.tokensUsed||``,e.requestDurationMs||``,e.status===`success`?`成功`:`失败`,e.errorMessage||``])].map(e=>e.map(e=>`"${String(e).replace(/"/g,`""`)}"`).join(`,`)).join(` `),n=new Blob([``+t],{type:`text/csv;charset=utf-8;`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`api_usage_${(0,aS.default)().format(`YYYYMMDD_HHmmss`)}.csv`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),X.success(`导出成功`)},x=[{title:`时间`,dataIndex:`createdAt`,width:160,render:e=>e?new Date(e).toLocaleString():`-`},{title:`公司`,dataIndex:`companyName`,width:120,render:e=>e||`-`},{title:`api-key`,dataIndex:`apiKeyPrefix`,width:110,render:e=>e?(0,Q.jsx)(`code`,{style:{background:`#f5f5f5`,padding:`2px 6px`,borderRadius:4},children:e}):`-`},{title:`类型`,dataIndex:`genType`,width:70,render:e=>(0,Q.jsx)(rI,{color:e===`video`?`blue`:`green`,children:e===`video`?`视频`:`图片`})},{title:`模型`,dataIndex:`modelName`,width:160,ellipsis:!0},{title:`消耗(元)`,dataIndex:`creditsCost`,width:90,render:e=>(0,Q.jsx)(`span`,{style:{color:e>0?`#f5222d`:`#52c41a`,fontWeight:500},children:e?.toFixed(2)||`0.00`})},{title:`Token`,dataIndex:`tokensUsed`,width:80,render:e=>e||`-`},{title:`耗时(ms)`,dataIndex:`requestDurationMs`,width:90,render:e=>e||`-`},{title:`状态`,dataIndex:`status`,width:80,render:e=>(0,Q.jsx)(rI,{color:e===`success`?`green`:`red`,children:e===`success`?`成功`:`失败`})},{title:`错误信息`,dataIndex:`errorMessage`,width:200,ellipsis:!0,render:e=>e?(0,Q.jsx)(`span`,{style:{color:`#f5222d`},children:e}):`-`}],S=e.reduce((e,t)=>e+(t.creditsCost||0),0),w=e.filter(e=>e.status===`success`).length,T=e.filter(e=>e.status===`failed`).length;return(0,Q.jsxs)(bA,{direction:`vertical`,size:`large`,style:{width:`100%`},children:[(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(`div`,{style:{width:36,height:36,borderRadius:8,background:`linear-gradient(135deg, #6366f1, #8b5cf6)`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,Q.jsx)(r$,{style:{color:`#fff`,fontSize:18}})}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`API 消耗列表`}),(0,Q.jsxs)(rI,{color:`purple`,children:[i,` 条`]})]}),(0,Q.jsxs)(bA,{children:[(0,Q.jsxs)(rI,{color:`blue`,children:[`本页消耗: `,S.toFixed(2),` 元`]}),(0,Q.jsxs)(rI,{color:`green`,children:[`成功: `,w]}),(0,Q.jsxs)(rI,{color:`red`,children:[`失败: `,T]}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(dW,{}),onClick:b,children:`导出`}),(0,Q.jsx)(rS,{icon:(0,Q.jsx)(qM,{}),onClick:y,children:`刷新`})]})]})}),(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12},children:(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:12,flexWrap:`wrap`,alignItems:`center`},children:[(0,Q.jsx)(Fj,{placeholder:`搜索公司名或 Key 前缀`,prefix:(0,Q.jsx)(Vy,{}),value:u,onChange:e=>d(e.target.value),onPressEnter:y,allowClear:!0,style:{width:220}}),(0,Q.jsxs)(Wy,{placeholder:`类型`,value:f,onChange:e=>{p(e),s(1)},allowClear:!0,style:{width:100},children:[(0,Q.jsx)(Wy.Option,{value:`video`,children:`视频`}),(0,Q.jsx)(Wy.Option,{value:`image`,children:`图片`})]}),(0,Q.jsxs)(Wy,{placeholder:`状态`,value:m,onChange:e=>{h(e),s(1)},allowClear:!0,style:{width:100},children:[(0,Q.jsx)(Wy.Option,{value:`success`,children:`成功`}),(0,Q.jsx)(Wy.Option,{value:`failed`,children:`失败`})]}),(0,Q.jsx)(eA.RangePicker,{value:g,onChange:e=>{_(e),s(1)}}),(0,Q.jsx)(rS,{type:`primary`,onClick:y,children:`筛选`})]})}),(0,Q.jsx)(aO,{variant:`outlined`,style:{borderRadius:12},children:(0,Q.jsx)(ZF,{columns:x,dataSource:e,rowKey:`id`,loading:n,pagination:{current:o,pageSize:c,total:i,onChange:(e,t)=>{s(e),l(t||50)},showSizeChanger:!0,showTotal:e=>`共 ${e} 条`},scroll:{x:1300}})})]})},v6e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(0),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(1),[c,l]=(0,C.useState)(10),[u,d]=(0,C.useState)(null),[f,p]=(0,C.useState)(``),[m,h]=(0,C.useState)([(0,aS.default)().startOf(`day`),(0,aS.default)().endOf(`day`)]),[g,_]=(0,C.useState)([(0,aS.default)().startOf(`day`),(0,aS.default)().endOf(`day`)]),[v,y]=(0,C.useState)(!1),[b,x]=(0,C.useState)(!1),[S,w]=(0,C.useState)(null),[T,E]=(0,C.useState)(!1),[D,O]=(0,C.useState)(``),[k,A]=(0,C.useState)(null),[j,M]=(0,C.useState)(!1),N=async()=>{a(!0);try{let e=await TJe({page:o,pageSize:c,status:u||void 0,phone:f||void 0,startDate:g?.[0]?.format?.(`YYYY-MM-DD`),endDate:g?.[1]?.format?.(`YYYY-MM-DD`)});t(e.items),r(e.total)}catch(e){X.error(e?.message||`获取失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{N()},[o,c,u,g]);let P=()=>{s(1),_(m)},F=()=>{d(null),p(``);let e=[(0,aS.default)().startOf(`day`),(0,aS.default)().endOf(`day`)];h(e),_(e),s(1)},I=async e=>{x(!0),y(!0);try{w(await EJe(e))}catch(e){X.error(e?.message||`获取详情失败`),y(!1)}finally{x(!1)}},L=async e=>{try{await G0(e,{status:`success`}),X.success(`已标记为开具成功`),N()}catch(e){X.error(e?.message||`操作失败`)}},R=e=>{A(e),O(``),E(!0)},z=async()=>{if(!D.trim()){X.warning(`请填写失败原因`);return}if(k){M(!0);try{await G0(k,{status:`failed`,failureReason:D.trim()}),X.success(`已标记为开具失败`),E(!1),A(null),O(``),N()}catch(e){X.error(e?.message||`操作失败`)}M(!1)}},B=(e,t)=>{s(e),l(t)},V=e=>{let t={processing:{color:`blue`,label:`开具中`},success:{color:`green`,label:`已开具`},failed:{color:`red`,label:`已失败`}}[e]||{color:`default`,label:e};return(0,Q.jsx)(rI,{color:t.color,children:t.label})};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(aO,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(wA,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`发票管理`}),(0,Q.jsxs)(rI,{color:`purple`,children:[`共 `,n,` 条记录`]})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,Q.jsx)(rS,{type:u===null?`primary`:`default`,onClick:()=>{d(null),s(1)},icon:(0,Q.jsx)(hG,{}),size:`small`,children:`全部`}),(0,Q.jsx)(rS,{type:u===`processing`?`primary`:`default`,onClick:()=>{d(`processing`),s(1)},size:`small`,children:`开具中`}),(0,Q.jsx)(rS,{type:u===`success`?`primary`:`default`,onClick:()=>{d(`success`),s(1)},size:`small`,children:`已开具`}),(0,Q.jsx)(rS,{type:u===`failed`?`primary`:`default`,onClick:()=>{d(`failed`),s(1)},size:`small`,children:`已失败`})]})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:12,marginBottom:16,flexWrap:`wrap`},children:[(0,Q.jsx)(Fj,{placeholder:`按用户手机号搜索`,value:f,onChange:e=>p(e.target.value),style:{width:200},allowClear:!0,onPressEnter:P}),(0,Q.jsx)(eA.RangePicker,{value:m,onChange:e=>{e&&e[0]&&e[1]?h([e[0].startOf(`day`),e[1].endOf(`day`)]):h(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(rS,{type:`primary`,onClick:P,children:`搜索`}),(0,Q.jsx)(rS,{onClick:F,children:`重置`})]}),i?(0,Q.jsx)(`div`,{style:{textAlign:`center`,padding:40},children:`加载中...`}):e.length===0?(0,Q.jsx)(Dy,{description:`暂无发票记录`,style:{padding:`40px 0`}}):(0,Q.jsx)(ZF,{columns:[{title:`发票编号`,dataIndex:`invoiceNo`,key:`invoiceNo`,width:180,render:e=>(0,Q.jsx)(`span`,{style:{fontFamily:`monospace`,fontSize:13},children:e})},{title:`用户`,dataIndex:`username`,key:`username`,width:100,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{children:(0,Q.jsx)(Z.Text,{strong:!0,children:t.username})}),(0,Q.jsx)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:t.phone})]})},{title:`抬头类型`,dataIndex:`headerType`,key:`headerType`,width:80,render:e=>e===`company`?`企业`:`个人`},{title:`抬头名称`,dataIndex:`headerName`,key:`headerName`,width:160,ellipsis:!0},{title:`邮箱`,dataIndex:`email`,key:`email`,width:160,ellipsis:!0},{title:`总金额`,dataIndex:`totalAmount`,key:`totalAmount`,width:100,align:`right`,render:e=>(0,Q.jsxs)(`span`,{style:{fontWeight:600},children:[`¥`,e.toFixed(2)]})},{title:`订单数`,dataIndex:`orderCount`,key:`orderCount`,width:70,align:`center`},{title:`状态`,dataIndex:`status`,key:`status`,width:90,render:e=>V(e)},{title:`创建时间`,dataIndex:`createdAt`,key:`createdAt`,width:160,render:e=>v2(e)},{title:`操作`,key:`actions`,width:260,render:(e,t)=>(0,Q.jsxs)(bA,{size:4,children:[(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(Ej,{}),onClick:()=>I(t.id),children:`详情`}),t.status===`processing`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(rS,{type:`link`,size:`small`,icon:(0,Q.jsx)(Ly,{}),onClick:()=>L(t.id),children:`开具成功`}),(0,Q.jsx)(rS,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(Ul,{}),onClick:()=>R(t.id),children:`开具失败`})]})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:{current:o,pageSize:c,total:n,onChange:B,showSizeChanger:!0,showTotal:e=>`共 ${e} 条记录`},scroll:{x:1400}})]}),(0,Q.jsx)(vM,{title:(0,Q.jsxs)(bA,{children:[(0,Q.jsx)(Ej,{}),`发票详情`]}),open:v,onCancel:()=>{y(!1),w(null)},footer:null,width:700,children:b?(0,Q.jsx)(`div`,{style:{textAlign:`center`,padding:40},children:`加载中...`}):S&&(0,Q.jsxs)(`div`,{style:{padding:8},children:[(0,Q.jsxs)(`div`,{style:{marginBottom:16},children:[(0,Q.jsxs)(Z.Title,{level:4,style:{marginBottom:16},children:[S.invoiceNo,(0,Q.jsx)(`span`,{style:{marginLeft:12},children:V(S.status)})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`120px 1fr`,gap:12},children:[(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`用户ID:`}),(0,Q.jsx)(Z.Text,{children:S.userId}),(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`抬头类型:`}),(0,Q.jsx)(Z.Text,{children:S.headerType===`company`?`企业`:`个人`}),(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`抬头名称:`}),(0,Q.jsx)(Z.Text,{children:S.headerName}),S.headerTaxNo&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`税号:`}),(0,Q.jsx)(Z.Text,{children:S.headerTaxNo})]}),(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`接收邮箱:`}),(0,Q.jsx)(Z.Text,{children:S.email}),(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`总金额:`}),(0,Q.jsxs)(Z.Text,{strong:!0,style:{color:`#ef4444`},children:[`¥`,S.totalAmount.toFixed(2)]}),(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`创建时间:`}),(0,Q.jsx)(Z.Text,{children:v2(S.createdAt)}),S.issuedAt&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`开票时间:`}),(0,Q.jsx)(Z.Text,{children:v2(S.issuedAt)})]}),S.failureReason&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{style:{color:`#64748b`},children:`失败原因:`}),(0,Q.jsx)(Z.Text,{type:`danger`,children:S.failureReason})]})]})]}),S.orders&&S.orders.length>0&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(Z.Text,{strong:!0,style:{display:`block`,marginBottom:8},children:[`关联订单(`,S.orders.length,` 笔)`]}),(0,Q.jsx)(ZF,{dataSource:S.orders,columns:[{title:`订单号`,dataIndex:`orderNo`,key:`orderNo`,render:e=>(0,Q.jsx)(`span`,{style:{fontFamily:`monospace`,fontSize:12},children:e})},{title:`金额`,dataIndex:`amount`,key:`amount`,align:`right`,render:e=>`¥${e.toFixed(2)}`},{title:`积分`,dataIndex:`credits`,key:`credits`,align:`right`}],rowKey:`id`,pagination:!1,size:`small`})]})]})}),(0,Q.jsxs)(vM,{title:`开具失败`,open:T,onCancel:()=>{E(!1),A(null),O(``)},onOk:z,okText:`确认`,cancelText:`取消`,confirmLoading:j,children:[(0,Q.jsx)(Z.Text,{style:{display:`block`,marginBottom:8},children:`请填写失败原因(用户可见):`}),(0,Q.jsx)(Fj.TextArea,{value:D,onChange:e=>O(e.target.value),placeholder:`例如:抬头信息有误,请重新提交`,rows:3,maxLength:500,showCount:!0})]})]})},y6e=({children:e})=>{let{user:t,loading:n,checkAuth:r}=c2();return(0,C.useEffect)(()=>{!localStorage.getItem(`auth_token`)&&!n&&!t&&(window.location.href=`/login`)},[t,n]),n?(0,Q.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,alignItems:`center`,height:`100vh`},children:(0,Q.jsx)(oM,{size:`large`})}):t?(0,Q.jsx)(Q.Fragment,{children:e}):(window.location.href=`/login`,null)};(0,v.createRoot)(document.getElementById(`root`)).render((0,Q.jsx)(()=>{let{checkAuth:e}=c2();return(0,C.useEffect)(()=>{e()},[]),(0,Q.jsx)(em,{locale:l0.default,theme:{token:{colorPrimary:`#6366f1`,borderRadius:8},components:{Button:{controlHeight:36,controlHeightLG:44},Card:{boxShadow:`0 1px 3px rgba(0,0,0,0.04)`},Table:{headerBg:`#fafbfc`}}},children:(0,Q.jsx)(xv,{children:(0,Q.jsx)(bn,{children:(0,Q.jsxs)(At,{children:[(0,Q.jsx)(Ot,{path:`/login`,element:(0,Q.jsx)(ZYe,{})}),(0,Q.jsxs)(Ot,{path:`/`,element:(0,Q.jsx)(y6e,{children:(0,Q.jsx)(KYe,{})}),children:[(0,Q.jsx)(Ot,{index:!0,element:(0,Q.jsx)($Ye,{})}),(0,Q.jsx)(Ot,{path:`users`,element:(0,Q.jsx)(oXe,{})}),(0,Q.jsx)(Ot,{path:`teams`,element:(0,Q.jsx)(uXe,{})}),(0,Q.jsx)(Ot,{path:`credit-records`,element:(0,Q.jsx)(A2e,{})}),(0,Q.jsx)(Ot,{path:`models`,element:(0,Q.jsx)(dXe,{})}),(0,Q.jsx)(Ot,{path:`credit-ratios`,element:(0,Q.jsx)(W2e,{})}),(0,Q.jsx)(Ot,{path:`video-engines`,element:(0,Q.jsx)(R2e,{})}),(0,Q.jsx)(Ot,{path:`image-engines`,element:(0,Q.jsx)(V2e,{})}),(0,Q.jsx)(Ot,{path:`industries`,element:(0,Q.jsx)(L2e,{})}),(0,Q.jsx)(Ot,{path:`menu-configs`,element:(0,Q.jsx)(J2e,{})}),(0,Q.jsx)(Ot,{path:`credit-products`,element:(0,Q.jsx)(X2e,{})}),(0,Q.jsx)(Ot,{path:`llm-billing-policies`,element:(0,Q.jsx)(Q2e,{})}),(0,Q.jsx)(Ot,{path:`llm-billing-executions`,element:(0,Q.jsx)($2e,{})}),(0,Q.jsx)(Ot,{path:`payment`,element:(0,Q.jsx)(j2e,{})}),(0,Q.jsx)(Ot,{path:`payment-stats`,element:(0,Q.jsx)(N2e,{})}),(0,Q.jsx)(Ot,{path:`settings`,element:(0,Q.jsx)(fXe,{})}),(0,Q.jsx)(Ot,{path:`video-prompt-schema-config`,element:(0,Q.jsx)(v3e,{})}),(0,Q.jsx)(Ot,{path:`video-upscale`,element:(0,Q.jsx)(w3e,{})}),(0,Q.jsx)(Ot,{path:`api-keys`,element:(0,Q.jsx)(p6e,{})}),(0,Q.jsx)(Ot,{path:`api-model-pricings`,element:(0,Q.jsx)(g6e,{})}),(0,Q.jsx)(Ot,{path:`api-usage`,element:(0,Q.jsx)(_6e,{})}),(0,Q.jsx)(Ot,{path:`invoices`,element:(0,Q.jsx)(v6e,{})}),(0,Q.jsx)(Ot,{path:`notifications`,element:(0,Q.jsx)(c2e,{})}),(0,Q.jsx)(Ot,{path:`oauthapp-list`,element:(0,Q.jsx)(n4e,{})}),(0,Q.jsx)(Ot,{path:`operation-logs`,element:(0,Q.jsx)(t4e,{})}),(0,Q.jsx)(Ot,{path:`generation-records`,element:(0,Q.jsx)(u4e,{})}),(0,Q.jsx)(Ot,{path:`generation-ai`,element:(0,Q.jsx)(v4e,{})}),(0,Q.jsx)(Ot,{path:`hot-opening-replications`,element:(0,Q.jsx)(C4e,{})}),(0,Q.jsx)(Ot,{path:`hot-opening-replications/:projectId`,element:(0,Q.jsx)(G4e,{})}),(0,Q.jsx)(Ot,{path:`shot-replications`,element:(0,Q.jsx)(e3e,{})}),(0,Q.jsx)(Ot,{path:`shot-replications/task-sets/:taskSetId`,element:(0,Q.jsx)(c3e,{})}),(0,Q.jsx)(Ot,{path:`shot-replications/projects/:projectId`,element:(0,Q.jsx)(X7,{moduleType:`shot_replicate`})}),(0,Q.jsx)(Ot,{path:`authoriza`,element:(0,Q.jsx)(JYe,{})}),(0,Q.jsx)(Ot,{path:`consume`,element:(0,Q.jsx)(XYe,{})}),(0,Q.jsx)(Ot,{path:`platform`,element:(0,Q.jsx)(rXe,{})}),(0,Q.jsx)(Ot,{path:`contact-requests`,element:(0,Q.jsx)(T3e,{})}),(0,Q.jsx)(Ot,{path:`home-materials`,element:(0,Q.jsx)(Y3e,{})}),(0,Q.jsx)(Ot,{path:`pretest-templates`,element:(0,Q.jsx)(Q3e,{})}),(0,Q.jsx)(Ot,{path:`oauth-list`,element:(0,Q.jsx)(e6e,{})}),(0,Q.jsx)(Ot,{path:`material-list`,element:(0,Q.jsx)(r6e,{})}),(0,Q.jsx)(Ot,{path:`private-portrait-projects`,element:(0,Q.jsx)(d6e,{})})]}),(0,Q.jsx)(Ot,{path:`*`,element:(0,Q.jsx)(Et,{to:`/`,replace:!0})})]})})})})},{})); \ No newline at end of file diff --git a/video-gen-admin/dist/index.html b/video-gen-admin/dist/index.html index c28e0469..bbe0e3b2 100644 --- a/video-gen-admin/dist/index.html +++ b/video-gen-admin/dist/index.html @@ -28,7 +28,7 @@ } })(); - + diff --git a/video-gen-admin/src/pages/AdminCreditProducts.tsx b/video-gen-admin/src/pages/AdminCreditProducts.tsx index 47338577..9cf3ace5 100644 --- a/video-gen-admin/src/pages/AdminCreditProducts.tsx +++ b/video-gen-admin/src/pages/AdminCreditProducts.tsx @@ -70,6 +70,7 @@ const AdminCreditProducts: React.FC = () => { renewalEnabled: nextRenewalEnabled, price: item.price, grantCredits: item.grantCredits, + validityMonths: item.validityMonths ?? 1, sortOrder: item.sortOrder, isActive: item.isActive, }); @@ -85,6 +86,7 @@ const AdminCreditProducts: React.FC = () => { billingCycle: 'monthly', tierRank: 1, renewalEnabled: nextRenewalEnabled, + validityMonths: 1, }); }; @@ -124,6 +126,7 @@ const AdminCreditProducts: React.FC = () => { Object.assign(payload, { price: values.price, grant_credits: values.grantCredits, + validity_months: values.validityMonths, }); } const savedProduct = editing @@ -273,7 +276,7 @@ const AdminCreditProducts: React.FC = () => { }, { title: '积分', dataIndex: 'grantCredits', render: (value?: number) => Number(value || 0).toLocaleString() }, { title: '价格', dataIndex: 'price', render: (value?: number | null) => formatMoney(value) }, - { title: '有效期', render: () => '1 个自然月' }, + { title: '有效期', dataIndex: 'validityMonths', render: (value?: number | null) => `${Number(value || 1)} 个月` }, { title: '状态', dataIndex: 'isActive', render: (enabled: boolean) => {enabled ? '上架' : '下架'} }, { title: '操作', @@ -377,7 +380,12 @@ const AdminCreditProducts: React.FC = () => { - + +