From 1705c992e8db77903a91d70937af5243fbf2053f Mon Sep 17 00:00:00 2001
From: 18610128193 <10574456+chenweiqiang-123@user.noreply.gitee.com>
Date: Fri, 3 Jul 2026 11:49:30 +0800
Subject: [PATCH 1/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=B6=E5=8C=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
video-gen-api/app/services/user_oauth_service.py | 8 ++++----
video-gen-api/app/tasks/token_refresh_task.py | 4 ++--
video-gen-api/app/utils/douyinRequest.py | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/video-gen-api/app/services/user_oauth_service.py b/video-gen-api/app/services/user_oauth_service.py
index de8f7452..b85fcd51 100644
--- a/video-gen-api/app/services/user_oauth_service.py
+++ b/video-gen-api/app/services/user_oauth_service.py
@@ -1,5 +1,5 @@
import random
-from datetime import datetime, timedelta
+from datetime import datetime, timedelta, timezone
import httpx
from sqlalchemy import select, func
@@ -136,8 +136,8 @@ async def get_juliang_token(app_id: str, secret: str, code: str, open_type: int,
data = data.get("data", {})
access_token = data.get("access_token", "")
refresh_token = data.get("refresh_token", "")
- expires_in = datetime.now() + timedelta(seconds=data.get("expires_in", 0))
- refresh_token_expires_in = datetime.now() + timedelta(seconds=data.get("refresh_token_expires_in", 0))
+ expires_in = datetime.now(timezone.utc) + timedelta(seconds=data.get("expires_in", 0))
+ refresh_token_expires_in = datetime.now(timezone.utc) + timedelta(seconds=data.get("refresh_token_expires_in", 0))
#2.获取已授权角色账户,一个授权可能有多个角色账户
url = "https://api.oceanengine.com/open_api/oauth2/advertiser/get/"
response = await client.get(
@@ -222,7 +222,7 @@ async def get_juliang_token(app_id: str, secret: str, code: str, open_type: int,
# 1. 软删除已消失的账户
for account_id in old_account_ids - new_account_ids:
- existing_accounts[account_id].deleted_at = datetime.now()
+ existing_accounts[account_id].deleted_at = datetime.now(timezone.utc)
# 2. 更新或新增账户
for account in account_list:
diff --git a/video-gen-api/app/tasks/token_refresh_task.py b/video-gen-api/app/tasks/token_refresh_task.py
index 11e86bc8..37a9830e 100644
--- a/video-gen-api/app/tasks/token_refresh_task.py
+++ b/video-gen-api/app/tasks/token_refresh_task.py
@@ -93,8 +93,8 @@ async def refresh_juliang_token(oauth: UserOAuth, app: UserOAuthApp, db: AsyncSe
data = data.get("data", {})
new_access_token = data.get("access_token", "")
new_refresh_token = data.get("refresh_token", "")
- expires_in = datetime.now(tz=oauth.access_token_expired.tzinfo) + timedelta(seconds=data.get("expires_in", 0))
- refresh_token_expires_in = datetime.now(tz=oauth.refresh_token_expired.tzinfo) + timedelta(seconds=data.get("refresh_token_expires_in", 0))
+ expires_in = datetime.now(timezone.utc) + timedelta(seconds=data.get("expires_in", 0))
+ refresh_token_expires_in = datetime.now(timezone.utc) + timedelta(seconds=data.get("refresh_token_expires_in", 0))
from sqlalchemy import update
diff --git a/video-gen-api/app/utils/douyinRequest.py b/video-gen-api/app/utils/douyinRequest.py
index 69121af6..a817d513 100644
--- a/video-gen-api/app/utils/douyinRequest.py
+++ b/video-gen-api/app/utils/douyinRequest.py
@@ -51,7 +51,7 @@ class DouyinRequest:
token = cache.get("token")
expired_at_str = cache.get("expired_at")
if token and expired_at_str:
- expired_at = datetime.fromisoformat(expired_at_str)
+ expired_at = datetime.fromisoformat(expired_at_str).replace(tzinfo=timezone.utc)
if expired_at > datetime.now(timezone.utc):
return token
except Exception as e:
From 8d9b970ac444b86d2d305fb8c95e0061c52e7448 Mon Sep 17 00:00:00 2001
From: wwwwwwwww <526125649@qq.com>
Date: Fri, 3 Jul 2026 12:27:24 +0800
Subject: [PATCH 2/5] 1
---
.../{index-BhcMFup1.js => index-DQ1LXqt7.js} | 2 +-
video-gen-admin/dist/index.html | 72 +++++++++----------
.../src/pages/AdminGenerationAiRecords.tsx | 4 +-
3 files changed, 39 insertions(+), 39 deletions(-)
rename video-gen-admin/dist/assets/{index-BhcMFup1.js => index-DQ1LXqt7.js} (97%)
diff --git a/video-gen-admin/dist/assets/index-BhcMFup1.js b/video-gen-admin/dist/assets/index-DQ1LXqt7.js
similarity index 97%
rename from video-gen-admin/dist/assets/index-BhcMFup1.js
rename to video-gen-admin/dist/assets/index-DQ1LXqt7.js
index 75156094..92954b3c 100644
--- a/video-gen-admin/dist/assets/index-BhcMFup1.js
+++ b/video-gen-admin/dist/assets/index-DQ1LXqt7.js
@@ -543,6 +543,6 @@ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC...\r
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...\r
`,disabled:!i})}),(0,Q.jsx)(X.Item,{name:`alipay_gateway`,label:`网关地址`,children:(0,Q.jsx)(GN,{placeholder:`https://openapi.alipay.com/gateway.do`,size:`large`,disabled:!i})}),(0,Q.jsx)(X.Item,{name:`alipay_notify_url`,label:`回调地址`,children:(0,Q.jsx)(GN,{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)($S,{type:`primary`,icon:(0,Q.jsx)(a4,{}),onClick:async()=>{try{let e=await u.validateFields();t(!0),await MBe({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)}),CP.success(`支付配置已保存`),d()}catch{CP.error(`保存失败`)}finally{t(!1)}},loading:e,size:`large`,style:{borderRadius:8,minWidth:160,height:44,fontSize:15},children:`保存配置`})})]})},{Option:r7}=Tb,{RangePicker:DHe}=gM,OHe=()=>{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,tC.default)().format(`YYYY-MM-DD`),endDate:(0,tC.default)().format(`YYYY-MM-DD`)}),f=async()=>{try{t(!0);let[e,n]=await Promise.all([NBe(u),PBe({...u,page:i,pageSize:o})]);r({...e,recent:n.items||[]}),l(n.total)}catch{CP.error(`加载支付统计失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{f()},[u,i,o]);let p=(e,t)=>{a(e),s(t)},m=()=>{d({startDate:(0,tC.default)().format(`YYYY-MM-DD`),endDate:(0,tC.default)().format(`YYYY-MM-DD`)})},h=async e=>{try{t(!0),await FBe(e),CP.success(`退款成功`),await f()}catch(e){CP.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)(KK,{})},pending:{color:`gold`,label:`待支付`,icon:(0,Q.jsx)(fM,{})},cancelled:{color:`default`,label:`已取消`,icon:(0,Q.jsx)(Cq,{})},refunded:{color:`red`,label:`已退款`,icon:(0,Q.jsx)(I6,{})}},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:`paymentMethod`,key:`paymentMethod`,width:100,render:e=>{let t=v[e]||{color:`default`,label:e};return(0,Q.jsx)(jR,{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)(jR,{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?B5(e):`-`})},{title:`支付时间`,dataIndex:`paidAt`,key:`paidAt`,width:160,render:e=>(0,Q.jsx)(`span`,{className:`date-display`,style:{color:`#94a3b8`},children:e?B5(e):`-`})},{title:`操作`,key:`action`,width:120,render:(e,t)=>t.status===`paid`?(0,Q.jsx)(OP,{title:`确认要退款该订单吗?`,description:`退款后积分会扣除,金额会原路返回`,onConfirm:()=>h(t.orderNo),okText:`确认`,cancelText:`取消`,children:(0,Q.jsx)($S,{type:`link`,danger:!0,size:`small`,icon:(0,Q.jsx)(I6,{}),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)($p,{locale:J8.default,children:(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(WP,{gutter:[16,16],style:{marginBottom:24},children:[(0,Q.jsx)(uj,{xs:24,sm:12,lg:12,children:(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsx)(qP,{title:`今日收入`,value:n.today.paidAmount,precision:2,prefix:(0,Q.jsx)(fY,{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)(uj,{xs:24,sm:12,lg:12,children:(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsx)(qP,{title:`本月累计`,value:E.paidAmount,precision:2,prefix:(0,Q.jsx)(fY,{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)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`,marginBottom:16},title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(fY,{}),`订单状态分布`]}),children:(0,Q.jsx)(WP,{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)(uj,{span:6,children:(0,Q.jsxs)(`div`,{style:{padding:16,borderRadius:10,background:`#fafbff`,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(jR,{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)(VA,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(fY,{}),`订单列表`]}),children:[(0,Q.jsxs)(WP,{gutter:[16,16],align:`middle`,style:{marginBottom:24},children:[(0,Q.jsxs)(uj,{xs:24,sm:12,md:6,children:[(0,Q.jsx)(`span`,{style:{marginRight:8},children:`支付方式:`}),(0,Q.jsxs)(Tb,{placeholder:`全部`,allowClear:!0,style:{width:150},value:u.paymentMethod,onChange:e=>d(t=>({...t,paymentMethod:e})),children:[(0,Q.jsx)(r7,{value:`alipay`,children:`支付宝`}),(0,Q.jsx)(r7,{value:`wechat`,children:`微信`})]})]}),(0,Q.jsxs)(uj,{xs:24,sm:12,md:6,children:[(0,Q.jsx)(`span`,{style:{marginRight:8},children:`状态:`}),(0,Q.jsxs)(Tb,{placeholder:`全部`,allowClear:!0,style:{width:150},value:u.status,onChange:e=>d(t=>({...t,status:e})),children:[(0,Q.jsx)(r7,{value:`paid`,children:`已支付`}),(0,Q.jsx)(r7,{value:`pending`,children:`待支付`}),(0,Q.jsx)(r7,{value:`cancelled`,children:`已取消`}),(0,Q.jsx)(r7,{value:`refunded`,children:`已退款`})]})]}),(0,Q.jsxs)(uj,{xs:24,sm:12,md:8,children:[(0,Q.jsx)(`span`,{style:{marginRight:8},children:`日期范围:`}),(0,Q.jsx)(DHe,{value:[(0,tC.default)(u.startDate),(0,tC.default)(u.endDate)],onChange:g})]}),(0,Q.jsx)(uj,{xs:24,sm:12,md:4,children:(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:m,children:`重置`})})]}),(0,Q.jsx)(vR,{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`})]})]})})},i7=[{name:`ShoppingCartOutlined`,label:`购物`,component:(0,Q.jsx)(k4,{})},{name:`BookOutlined`,label:`书籍`,component:(0,Q.jsx)(SW,{})},{name:`HomeOutlined`,label:`房产`,component:(0,Q.jsx)(OQ,{})},{name:`FireOutlined`,label:`火`,component:(0,Q.jsx)(aZ,{})},{name:`RocketOutlined`,label:`科技`,component:(0,Q.jsx)(q2,{})},{name:`SkinOutlined`,label:`时尚`,component:(0,Q.jsx)(G4,{})},{name:`CompassOutlined`,label:`指南`,component:(0,Q.jsx)(nJ,{})},{name:`HeartOutlined`,label:`健康`,component:(0,Q.jsx)(_Q,{})},{name:`CarOutlined`,label:`汽车`,component:(0,Q.jsx)(gK,{})},{name:`CameraOutlined`,label:`相机`,component:(0,Q.jsx)(sK,{})},{name:`CloudOutlined`,label:`云`,component:(0,Q.jsx)(jq,{})},{name:`StarOutlined`,label:`星`,component:(0,Q.jsx)(S3,{})},{name:`TrophyOutlined`,label:`奖杯`,component:(0,Q.jsx)(w6,{})},{name:`ThunderboltOutlined`,label:`闪电`,component:(0,Q.jsx)(s6,{})},{name:`BulbOutlined`,label:`灯泡`,component:(0,Q.jsx)(LG,{})},{name:`CoffeeOutlined`,label:`咖啡`,component:(0,Q.jsx)(Xq,{})},{name:`CrownOutlined`,label:`皇冠`,component:(0,Q.jsx)(DJ,{})},{name:`DashboardOutlined`,label:`仪表`,component:(0,Q.jsx)(FJ,{})},{name:`FlagOutlined`,label:`旗帜`,component:(0,Q.jsx)(lZ,{})},{name:`GlobalOutlined`,label:`全球`,component:(0,Q.jsx)($Z,{})},{name:`GiftOutlined`,label:`礼物`,component:(0,Q.jsx)(KZ,{})},{name:`LaptopOutlined`,label:`笔记本`,component:(0,Q.jsx)(p$,{})},{name:`MobileOutlined`,label:`手机`,component:(0,Q.jsx)(E1,{})},{name:`MonitorOutlined`,label:`显示器`,component:(0,Q.jsx)(M1,{})},{name:`PayCircleOutlined`,label:`支付`,component:(0,Q.jsx)(r0,{})},{name:`PictureOutlined`,label:`图片`,component:(0,Q.jsx)(m0,{})},{name:`PlayCircleOutlined`,label:`播放`,component:(0,Q.jsx)(C0,{})},{name:`SafetyOutlined`,label:`安全`,component:(0,Q.jsx)(n4,{})},{name:`ShoppingOutlined`,label:`商店`,component:(0,Q.jsx)(M4,{})},{name:`SmileOutlined`,label:`笑脸`,component:(0,Q.jsx)(a3,{})},{name:`SoundOutlined`,label:`声音`,component:(0,Q.jsx)(g3,{})},{name:`TagOutlined`,label:`标签`,component:(0,Q.jsx)(J3,{})},{name:`TeamOutlined`,label:`团队`,component:(0,Q.jsx)(i6,{})},{name:`ToolOutlined`,label:`工具`,component:(0,Q.jsx)(m6,{})},{name:`TruckOutlined`,label:`物流`,component:(0,Q.jsx)(O6,{})},{name:`VideoCameraOutlined`,label:`视频`,component:(0,Q.jsx)(m8,{})},{name:`WalletOutlined`,label:`钱包`,component:(0,Q.jsx)(v8,{})},{name:`BankOutlined`,label:`银行`,component:(0,Q.jsx)(TU,{})},{name:`BuildOutlined`,label:`建筑`,component:(0,Q.jsx)(OG,{})},{name:`ExperimentOutlined`,label:`实验`,component:(0,Q.jsx)(YY,{})},{name:`HighlightOutlined`,label:`高亮`,component:(0,Q.jsx)(SQ,{})},{name:`IdcardOutlined`,label:`名片`,component:(0,Q.jsx)(RQ,{})},{name:`MedicineBoxOutlined`,label:`医药`,component:(0,Q.jsx)(Q$,{})},{name:`ReadOutlined`,label:`阅读`,component:(0,Q.jsx)(y2,{})},{name:`RestOutlined`,label:`休息`,component:(0,Q.jsx)(M2,{})},{name:`SketchOutlined`,label:`钻石`,component:(0,Q.jsx)(V4,{})},{name:`SolutionOutlined`,label:`方案`,component:(0,Q.jsx)(d3,{})}],kHe=Object.fromEntries(i7.map(e=>[e.name,e.component]));function a7(e){return kHe[e]||(0,Q.jsx)(OH,{})}function AHe(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 jHe=({value:e,onChange:t})=>{let n=i7.find(t=>t.name===e);return(0,Q.jsx)(RM,{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:i7.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:a7(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)(_b,{style:{fontSize:10,color:`#bfbfbf`,marginLeft:`auto`}})]})})},MHe=()=>{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]=X.useForm(),l=async()=>{r(!0);try{t((await CBe()).map(e=>{let{skillItems:t,optionGroups:n}=AHe(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{CP.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 b5({id:o.item.id,...r}),CP.success(`已更新`)):(await b5(r),CP.success(`已添加`)),s({open:!1,item:null}),c.resetFields(),l()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}finally{a(!1)}},d=async e=>{try{await wBe(e),CP.success(`已删除`),l()}catch(e){CP.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)(VA,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(OH,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`行业与技能配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个行业`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加行业`})]}),(0,Q.jsx)(vR,{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:a7(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)(jR,{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)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除该行业?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(OH,{}),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)(X,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`key`,label:`行业标识`,style:{flex:1},rules:[{required:!0,message:`请输入标识`}],children:(0,Q.jsx)(GN,{placeholder:`例如:ecommerce`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`label`,label:`行业名称`,style:{flex:1},rules:[{required:!0,message:`请输入名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:电商`,size:`large`})})]}),(0,Q.jsx)(X.Item,{name:`icon`,label:`行业图标`,children:(0,Q.jsx)(jHe,{})}),(0,Q.jsx)(X.Item,{name:`description`,label:`行业描述`,children:(0,Q.jsx)(GN.TextArea,{rows:2,placeholder:`行业描述`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`skills_wentutujie`,label:`文图理解生成视频提示词`,extra:`用于LLM优化视频提示词的系统指令,根据行业特点引导AI理解文案与画面的关系`,children:(0,Q.jsx)(GN.TextArea,{rows:3,placeholder:`请输入文图理解生成视频提示词,例如:
你是一位专业的电商视频文案专家,擅长将产品卖点转化为视觉语言`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`skills_wentutujie_image`,label:`文图理解生成图片提示词`,extra:`用于LLM优化图片提示词的系统指令,根据行业特点引导AI理解文案与画面的关系`,children:(0,Q.jsx)(GN.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)(X.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)(X.Item,{...r,name:[t,`name`],label:`选项名称`,style:{marginBottom:0},rules:[{required:!0,message:`请输入选项名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:视频风格`,size:`middle`,style:{borderRadius:8}})}),(0,Q.jsx)(X.Item,{...r,name:[t,`options`],label:`选项内容`,style:{marginBottom:0},children:(0,Q.jsx)(Tb,{mode:`tags`,size:`middle`,placeholder:`输入选项后回车添加`,style:{borderRadius:8},tokenSeparators:[`,`,`,`,`、`]})})]}),(0,Q.jsx)(b1,{onClick:()=>n(t),style:{color:`#ef4444`,fontSize:16,marginTop:34,cursor:`pointer`,flexShrink:0}})]},e)),(0,Q.jsx)($S,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,Q.jsx)(gA,{}),style:{borderRadius:8,height:36},children:`添加选项组`})]})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]})]})})]})};function o7(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}var NHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await TBe()).map(e=>({...e,supportedRatios:o7(e.supportedRatios),supportedResolutions:o7(e.supportedResolutions),supportedDurations:o7(e.supportedDurations)})))}catch{CP.error(`加载视频引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=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};i.engine?(await x5({id:i.engine.id,...t}),CP.success(`已更新`)):(await x5(t),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await EBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{a({open:!0,engine:e||null}),e?o.setFieldsValue(e):(o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,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]}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`视频引擎配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(C0,{})}),(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)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{children:e},e))})},{title:`支持分辨率`,dataIndex:`supportedResolutions`,width:150,render:e=>(0,Q.jsx)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{color:`blue`,children:e},e))})},{title:`支持时长`,dataIndex:`supportedDurations`,width:120,render:e=>(0,Q.jsx)(jR,{color:`orange`,children:e?.length?`${Math.min(...e)}-${Math.max(...e)}s`:`-`})},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`最大视频`,dataIndex:`maxVideoCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`cyan`,children:[e,` 个`]})},{title:`最大音频`,dataIndex:`maxAudioCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:e>0?`geekblue`:`default`,children:[e||0,` 段`]})},{title:`首尾帧`,dataIndex:`supportsFirstLastFrame`,width:90,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`支持`:`不支持`})},{title:`全能参考`,dataIndex:`supportsUniversalReference`,width:100,render:e=>(0,Q.jsx)(jR,{color:e?`purple`:`default`,children:e?`支持`:`不支持`})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1200}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:620,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`Seedance 2.0`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`模型名称`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedance-2-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedRatios`,label:`支持比例`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`supportedResolutions`,label:`支持分辨率`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:[{value:`480p`},{value:`720p`},{value:`1080p`}]})}),(0,Q.jsx)(X.Item,{name:`supportedDurations`,label:`支持时长(秒)`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:Array.from({length:12},(e,t)=>({value:t+4,label:`${t+4}秒`}))})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`maxDuration`,label:`最大时长(秒)`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxVideoCount`,label:`最大视频数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`maxAudioCount`,label:`最大参考音频数`,style:{flex:1},extra:`0 表示不支持音频参考,最大 3 段`,rules:[{validator:(e,t)=>{let n=Number(t??0);return!Number.isInteger(n)||n<0||n>3?Promise.reject(Error(`最大参考音频数必须为 0-3 的整数`)):Promise.resolve()}}],children:(0,Q.jsx)(GN,{type:`number`,size:`large`,min:0,max:3})})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`supportsFirstLastFrame`,label:`首尾帧模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`supportsUniversalReference`,label:`全能参考模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,style:{flex:1},children:(0,Q.jsx)(Tb,{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 PHe(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}function FHe(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 s7={"2K":{"1:1":`2048×2048`,"4:3":`2304×1728`,"3:4":`1728×2304`,"16:9":`2560×1440`,"9:16":`1600×2848`,"3:2":`2496×1664`,"2:3":`1664×2496`,"21:9":`3024×1296`},"4K":{"1:1":`4096×4096`,"4:3":`4608×3456`,"3:4":`3520×4704`,"16:9":`5404×3040`,"9:16":`3040×5504`,"3:2":`4992×3328`,"2:3":`3328×4992`,"21:9":`6197×2656`}},c7=[`1:1`,`4:3`,`3:4`,`16:9`,`9:16`,`3:2`,`2:3`,`21:9`],IHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await DBe()).map(e=>({...e,supportedModels:PHe(e.supportedModels),supportedSizes:FHe(e.supportedSizes)})))}catch{CP.error(`加载图片引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={};for(let n of[`2K`,`4K`]){let r=e[`size_${n}`]||[];if(r.length>0){t[n]={};for(let e of r)t[n][e]=s7[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};i.engine?(await S5({id:i.engine.id,...n}),CP.success(`已更新`)):(await S5(n),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await OBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{if(a({open:!0,engine:e||null}),e){let t={};for(let n of[`2K`,`4K`])t[`size_${n}`]=Object.keys(e.supportedSizes?.[n]||{});o.setFieldsValue({...e,...t})}else o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,supportedModels:[`doubao-seedream-5-0-260128`],defaultSize:`2K`,maxImageCount:0,size_2K:c7,size_4K:c7})};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{style:{fontSize:18,color:`#10b981`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`图片引擎配置`}),(0,Q.jsxs)(jR,{color:`green`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(m0,{})}),(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:`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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` `,t.supportedSizes[`4K`][e]]},e))})}},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1e3}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:680,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`豆包文生图`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`默认模型`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedream-5-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedModels`,label:`支持模型列表`,children:(0,Q.jsx)(Tb,{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`})]}),[`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)(X.Item,{name:`size_${e}`,style:{marginTop:8,marginBottom:0},children:(0,Q.jsx)(ij.Group,{style:{width:`100%`},children:(0,Q.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(4, 1fr)`,gap:`6px 0`},children:c7.map(t=>(0,Q.jsxs)(ij,{value:t,style:{fontSize:12},children:[t,` `,(0,Q.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:11},children:s7[e]?.[t]})]},t))})})})]},e)),(0,Q.jsx)(X.Item,{name:`defaultSize`,label:`默认尺寸档位`,children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`2K`,label:`2K`},{value:`4K`,label:`4K`}]})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`generateUrl`,label:`生成接口地址`,children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3/images/generations`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30},children:(0,Q.jsx)(lF,{})})]})]})})]})},LHe=[`2K`,`4K`],RHe=[`480p`,`720p`,`1080p`],zHe=()=>{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]=X.useForm(),[l,u]=(0,C.useState)(10),[d,f]=(0,C.useState)(null),[p,m]=(0,C.useState)(!1),h=X.useWatch(`genType`,c)||`video`,g=X.useWatch(`modelConfigId`,c),_=async()=>{a(!0);try{let[e,n,i]=await Promise.all([kBe(),g5(),aVe()]),a=(i?.engine?.image||[]).map(e=>({...e,genType:`image`})),o=(i?.engine?.video||[]).map(e=>({...e,genType:`video`}));t(e),r([...o,...a]);let s=n.find(e=>e.key===`text_credits_per_1000_tokens`);s&&(u(Number(s.value)||10),f({id:s.id}))}catch{CP.error(`加载积分比例失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{_()},[]);let v=(0,C.useMemo)(()=>n.filter(e=>e.genType===h).map(e=>({value:e.id,label:`${e.name}${e.modelName?`(${e.modelName})`:``}`})),[n,h]),y=(0,C.useMemo)(()=>n.find(e=>e.id===g&&e.genType===h),[n,h,g]),b=(0,C.useMemo)(()=>{if(h===`image`){let e=y?.supportedSizes?Object.keys(y.supportedSizes):[];return(e.length?e:LHe).map(e=>({value:e,label:e}))}let e=y?.supportedResolutions||[];return(e.length?e:RHe).map(e=>({value:e,label:e}))},[h,y]),x=(e,t)=>n.find(n=>n.id===e&&(!t||n.genType===t))?.name||e,S=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),o.ratio?(await C5({id:o.ratio.id,...t}),CP.success(`已更新`)):(await C5(t),CP.success(`已添加`)),s({open:!1,ratio:null}),c.resetFields(),_()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},w=async e=>{try{await ABe(e),CP.success(`已删除`),_()}catch{CP.error(`删除失败`)}},T=async()=>{if(d){m(!0);try{await _5(d.id,String(l)),CP.success(`文字积分费率已更新`)}catch(e){CP.error(e?.message||`保存失败`)}finally{m(!1)}}},E=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}):(c.resetFields(),c.setFieldsValue({genType:`video`,ratio:1,baseCredits:60,perSecondCredits:2,inputVideoRatio:1,inputVideoBaseCredits:0,inputVideoPerSecondCredits:.5}))};return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(xZ,{style:{fontSize:18,color:`#f59e0b`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`文字积分费率`})]}),(0,Q.jsx)($S,{type:`primary`,loading:p,onClick:T,style:{borderRadius:8},children:`保存`})]}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{display:`block`,marginBottom:16,fontSize:13},children:`文字积分计算公式:ceil(总token数 x 费率 / 1000),最低1积分`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:16},children:[(0,Q.jsx)(Z.Text,{children:`每1000 token消耗积分:`}),(0,Q.jsxs)(IM.Compact,{style:{width:160},children:[(0,Q.jsx)(Pj,{min:0,max:1e3,step:.01,value:l,onChange:e=>u(e||0),size:`large`,style:{width:`100%`}}),(0,Q.jsx)(Z.Text,{children:`积分`})]}),(0,Q.jsxs)(Z.Text,{type:`secondary`,style:{fontSize:12},children:[`示例:1000 token = `,l,` 积分,500 token = `,(500*l/1e3).toFixed(4),` 积分`]})]})]}),(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KG,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`积分比例配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 条规则`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>E(),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)(vR,{columns:[{title:`类型`,dataIndex:`genType`,width:80,render:e=>(0,Q.jsx)(jR,{color:e===`image`?`cyan`:`orange`,children:e===`image`?`图片`:`视频`})},{title:`引擎`,dataIndex:`modelConfigId`,width:180,render:(e,t)=>(0,Q.jsx)(jR,{color:t.genType===`image`?`cyan`:`purple`,children:x(e,t.genType)})},{title:`分辨率/尺寸`,dataIndex:`resolution`,width:110,render:e=>(0,Q.jsx)(jR,{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:`视频倍率`,dataIndex:`inputVideoRatio`,width:100,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:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分`})},{title:`视频每秒积分`,dataIndex:`inputVideoPerSecondCredits`,width:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分/秒`})},{title:`示例计算(视频15秒,上传视频15秒)`,key:`example`,width:140,render:(e,t)=>{let n;return t.genType===`image`?n=Math.round(t.baseCredits*t.ratio):(n=Math.round((t.baseCredits+t.perSecondCredits*15)*t.ratio),t.inputVideoRatio&&t.inputVideoPerSecondCredits&&(n+=Math.round((t.inputVideoBaseCredits+t.inputVideoPerSecondCredits*15)*t.inputVideoRatio))),(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)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>E(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>w(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:!1,scroll:{x:1180}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KG,{}),o.ratio?`编辑比例`:`添加比例`]}),open:o.open,onOk:S,onCancel:()=>{s({open:!1,ratio:null}),c.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`genType`,label:`生成类型`,rules:[{required:!0,message:`请选择生成类型`}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`video`,label:`视频`},{value:`image`,label:`图片`}],onChange:()=>{c.setFieldsValue({modelConfigId:void 0,resolution:void 0})}})}),(0,Q.jsx)(X.Item,{name:`modelConfigId`,label:`引擎`,rules:[{required:!0,message:`请选择引擎`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:`请选择引擎`,options:v,showSearch:!0,optionFilterProp:`label`,onChange:()=>c.setFieldsValue({resolution:void 0})})}),(0,Q.jsx)(X.Item,{name:`resolution`,label:h===`image`?`图片尺寸`:`分辨率`,rules:[{required:!0,message:h===`image`?`请选择图片尺寸`:`请选择分辨率`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:h===`image`?`请选择图片尺寸`:`请选择分辨率`,options:b})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`ratio`,label:`倍率`,style:{flex:1},rules:[{required:!0,message:`请输入倍率`}],children:(0,Q.jsx)(Pj,{min:.1,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`baseCredits`,label:`基础积分`,style:{flex:1},rules:[{required:!0,message:`请输入基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:1e3,style:{width:`100%`},size:`large`})}),h!==`image`&&(0,Q.jsx)(X.Item,{name:`perSecondCredits`,label:`每秒积分`,style:{flex:1},rules:[{required:!0,message:`请输入每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`})})]}),h!==`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)(X.Item,{name:`inputVideoRatio`,label:`倍率`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频倍率`}],children:(0,Q.jsx)(Pj,{min:0,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoBaseCredits`,label:`基础积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:500,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoPerSecondCredits`,label:`每秒积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:50,style:{width:`100%`},size:`large`})})]})]})]})})]})},l7={HomeOutlined:(0,Q.jsx)(OQ,{}),PlayCircleOutlined:(0,Q.jsx)(C0,{}),WalletOutlined:(0,Q.jsx)(v8,{}),RobotOutlined:(0,Q.jsx)(W2,{}),SettingOutlined:(0,Q.jsx)(x4,{}),BellOutlined:(0,Q.jsx)(QU,{}),UserOutlined:(0,Q.jsx)(n8,{}),AppstoreOutlined:(0,Q.jsx)(OH,{}),FileTextOutlined:(0,Q.jsx)(BM,{}),StarOutlined:(0,Q.jsx)(S3,{}),HeartOutlined:(0,Q.jsx)(_Q,{}),CameraOutlined:(0,Q.jsx)(sK,{}),DashboardOutlined:(0,Q.jsx)(FJ,{}),CalculatorOutlined:(0,Q.jsx)(KG,{}),DollarOutlined:(0,Q.jsx)(fY,{}),GiftOutlined:(0,Q.jsx)(KZ,{}),ThunderboltOutlined:(0,Q.jsx)(s6,{}),FireOutlined:(0,Q.jsx)(aZ,{}),CloudOutlined:(0,Q.jsx)(jq,{}),SmileOutlined:(0,Q.jsx)(a3,{}),TrophyOutlined:(0,Q.jsx)(w6,{}),RocketOutlined:(0,Q.jsx)(q2,{}),BulbOutlined:(0,Q.jsx)(LG,{}),CodeOutlined:(0,Q.jsx)(Bq,{}),PictureOutlined:(0,Q.jsx)(m0,{}),VideoCameraOutlined:(0,Q.jsx)(m8,{}),AudioOutlined:(0,Q.jsx)(iU,{}),MailOutlined:(0,Q.jsx)(q$,{}),PhoneOutlined:(0,Q.jsx)(s0,{}),GlobalOutlined:(0,Q.jsx)($Z,{}),ShoppingCartOutlined:(0,Q.jsx)(k4,{}),TeamOutlined:(0,Q.jsx)(i6,{}),BarChartOutlined:(0,Q.jsx)(jU,{}),PieChartOutlined:(0,Q.jsx)(_0,{}),LineChartOutlined:(0,Q.jsx)(D$,{}),SecurityScanOutlined:(0,Q.jsx)(m4,{}),ApiOutlined:(0,Q.jsx)(uH,{}),DatabaseOutlined:(0,Q.jsx)(zJ,{}),CloudServerOutlined:(0,Q.jsx)(Nq,{}),MenuOutlined:(0,Q.jsx)(l1,{})},BHe=Object.keys(l7).map(e=>({value:e,label:(0,Q.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[l7[e],` `,e.replace(`Outlined`,``)]})})),VHe={page:`blue`,group:`purple`},HHe={page:`页面`,group:`分组`},UHe=()=>{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]=X.useForm(),l=async()=>{r(!0);try{t(await w5())}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 T5({...t,id:o.menu.id}):await T5(t),CP.success(o.menu?.id?`菜单已更新`:`菜单已添加`),s({open:!1,menu:null}),c.resetFields(),l()}catch{}},d=async e=>{try{await BBe(e),CP.success(`菜单已删除`),l()}catch(e){CP.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&&l7[e]?(0,Q.jsx)(`span`,{style:{fontSize:16,color:`#6366f1`},children:l7[e]}):`-`},{title:`类型`,dataIndex:`menuType`,width:80,render:e=>(0,Q.jsx)(jR,{color:VHe[e]||`default`,children:HHe[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)(jR,{color:`green`,children:`默认`}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})}]:[],{title:`操作`,key:`action`,width:150,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除该菜单?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}];return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`菜单配置`})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加菜单`})]}),(0,Q.jsx)(zA,{activeKey:i,onChange:a,items:[{key:`frontend`,label:`前台菜单`},{key:`admin`,label:`后台菜单`}]}),(0,Q.jsx)(vR,{columns:v,dataSource:h,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(l1,{}),o.menu?.id?`编辑菜单`:`添加菜单`]}),open:o.open,onOk:u,onCancel:()=>{s({open:!1,menu:null}),c.resetFields()},okText:`确认`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`label`,label:`菜单名称`,rules:[{required:!0,message:`请输入菜单名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:我的项目`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`path`,label:`路由路径`,tooltip:`分组类型可留空`,children:(0,Q.jsx)(GN,{placeholder:`例如:/projects(分组可留空)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`menuType`,label:`菜单类型`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`page`,label:`页面`},{value:`group`,label:`分组`}]})}),(0,Q.jsx)(X.Item,{name:`menuTarget`,label:`适用端`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`icon`,label:`图标`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:BHe})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`,placeholder:`默认0`})})]}),(0,Q.jsx)(X.Item,{name:`parentId`,label:`上级菜单`,children:(0,Q.jsx)(Tb,{size:`large`,options:m,allowClear:!0,placeholder:`顶级菜单`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.menuTarget!==t.menuTarget,children:({getFieldValue:e})=>e(`menuTarget`)===`admin`?null:(0,Q.jsx)(X.Item,{name:`isDefault`,label:`新用户默认显示`,valuePropName:`checked`,tooltip:`开启后,新注册用户默认显示此菜单`,children:(0,Q.jsx)(lF,{})})})]})})]})},WHe={normal:`blue`,gift:`green`,promo:`purple`},GHe={normal:`常规`,gift:`赠送`,promo:`促销`},KHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,item:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await D5()).map(e=>({id:e.id,name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonus_credits??e.bonusCredits??0,totalCredits:e.total_credits??e.totalCredits??e.credits,description:e.description,packageType:e.package_type??e.packageType??`normal`,isGift:e.is_gift??e.isGift??!1,isActive:e.is_active??e.isActive??!0,sortOrder:e.sort_order??e.sortOrder??0})))}catch{CP.error(`加载充值套餐失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={name:e.name,credits:e.credits,price:e.price,bonus_credits:e.bonusCredits||0,description:e.description||null,package_type:e.packageType||`normal`,is_gift:e.isGift||!1,is_active:e.isActive??!0,sort_order:e.sortOrder??0};i.item?.id?(await O5({id:i.item.id,...t}),CP.success(`已更新`)):(await O5(t),CP.success(`已添加`)),a({open:!1,item:null}),o.resetFields(),s()}catch{}},l=async e=>{try{await GBe(e),CP.success(`已删除`),s()}catch(e){CP.error(e?.message||`删除失败`)}},u=e=>{a({open:!0,item:e||null}),e?o.setFieldsValue({name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonusCredits,description:e.description,packageType:e.packageType,isGift:e.isGift,isActive:e.isActive,sortOrder:e.sortOrder}):(o.resetFields(),o.setFieldsValue({isActive:!0,sortOrder:0,packageType:`normal`,bonusCredits:0,isGift:!1}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KZ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`充值套餐管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个套餐`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加套餐`})]}),(0,Q.jsx)(vR,{columns:[{title:`套餐名称`,key:`name`,width:160,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),t.description&&(0,Q.jsx)(`div`,{style:{color:`#94a3b8`,fontSize:12},children:t.description})]})},{title:`基础积分`,dataIndex:`credits`,width:100,render:e=>(0,Q.jsx)(Z.Text,{children:e.toLocaleString()})},{title:`赠送积分`,dataIndex:`bonusCredits`,width:100,render:e=>e>0?(0,Q.jsxs)(jR,{color:`green`,children:[`+`,e.toLocaleString()]}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})},{title:`总积分`,key:`total`,width:100,render:(e,t)=>(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:(t.credits+t.bonusCredits).toLocaleString()})},{title:`价格(元)`,dataIndex:`price`,width:100,render:e=>(0,Q.jsxs)(Z.Text,{strong:!0,children:[`¥`,e]})},{title:`类型`,dataIndex:`packageType`,width:80,render:e=>(0,Q.jsx)(jR,{color:WHe[e]||`default`,children:GHe[e]||e})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KZ,{}),i.item?`编辑套餐`:`添加套餐`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,item:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`套餐名称`,rules:[{required:!0,message:`请输入套餐名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:进阶包`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`credits`,label:`基础积分`,rules:[{required:!0,message:`请输入积分`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:1,placeholder:`2000`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`price`,label:`价格(元)`,rules:[{required:!0,message:`请输入价格`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:.01,step:1,placeholder:`168`,size:`large`,style:{width:`100%`}})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`bonusCredits`,label:`赠送积分`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,placeholder:`0`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`packageType`,label:`套餐类型`,initialValue:`normal`,style:{flex:1},children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`normal`,label:`常规`},{value:`gift`,label:`赠送`},{value:`promo`,label:`促销`}]})})]}),(0,Q.jsx)(X.Item,{name:`description`,label:`描述`,children:(0,Q.jsx)(GN,{placeholder:`套餐描述(可选)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`isGift`,label:`是否赠送`,valuePropName:`checked`,initialValue:!1,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{size:`large`,style:{width:`100%`}})})]})]})})]})},qHe={POST:`green`,PUT:`blue`,DELETE:`red`},JHe=()=>{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 KBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载操作日志失败`)}finally{a(!1)}};return(0,C.useEffect)(()=>{c()},[]),(0,Q.jsx)(`div`,{children:(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(TQ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`操作日志`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>c(),children:`刷新`})]}),(0,Q.jsx)(vR,{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)(jR,{color:qHe[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:B5(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}})]})})},YHe=()=>{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]=X.useForm(),[_]=X.useForm(),v=async e=>{a(!0);try{let n=await qBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载应用管理列表失败`)}finally{a(!1)}},y=async()=>{try{let e=await g.validateFields();await JBe({app_id:e.app_id,secret:e.secret,open_type:e.open_type,count:e.count,auth_url:e.auth_url,company:e.company}),CP.success(`创建成功`),l(!1),g.resetFields(),v()}catch(e){CP.error(e?.message||`创建失败`)}},b=async e=>{try{h(await k5(e)),d(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},x=async e=>{try{let t=await k5(e);h(t),_.setFieldsValue({app_id:t.app_id,secret:t.secret,open_type:t.open_type,count:t.max_count,auth_url:t.auth_url,company:t.company}),p(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},S=async()=>{if(m)try{let e=await _.validateFields();await YBe(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}),CP.success(`更新成功`),p(!1),_.resetFields(),v()}catch(e){CP.error(e?.message||`更新失败`)}},w=e=>{TP.confirm({title:`确认删除`,content:`确定要删除这个应用管理吗?`,okText:`删除`,okType:`danger`,cancelText:`取消`,onOk:async()=>{try{await XBe(e),CP.success(`删除成功`),v()}catch(e){CP.error(e?.message||`删除失败`)}}})};return(0,C.useEffect)(()=>{v()},[]),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`应用管理列表`})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>v(),children:`刷新`}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>l(!0),children:`创建`})]})]}),(0,Q.jsx)(vR,{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)(hx,{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)(jR,{color:e===1?`green`:`red`,children:e===1?`正常`:`禁用`})},{title:`授权URL`,dataIndex:`authUrl`,width:200,render:e=>e?(0,Q.jsx)(hx,{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:B5(e)})},{title:`更新时间`,dataIndex:`updatedAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:B5(e)})},{title:`操作`,width:120,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(IN,{}),size:`small`,onClick:()=>b(t.id),children:`详情`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(LR,{}),size:`small`,onClick:()=>x(t.id),children:`更新`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(PR,{}),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)(TP,{title:`创建应用管理`,open:c,onOk:y,onCancel:()=>{l(!1),g.resetFields()},okText:`创建`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:g,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,initialValue:100,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})}),(0,Q.jsx)(TP,{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.app_id]}),(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.open_type]||m.open_type]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`归属公司:`}),` `,m.company||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`授权次数:`}),` `,m.max_count]}),(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.auth_url||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建人:`}),` `,m.create_by]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建时间:`}),` `,B5(m.created_at)]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`更新时间:`}),` `,B5(m.updated_at)]})]})}),(0,Q.jsx)(TP,{title:`更新应用管理`,open:f,onOk:S,onCancel:()=>{p(!1),_.resetFields(),h(null)},okText:`更新`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:_,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})})]})},u7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),d7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},f7={optimizing:{color:`processing`,text:`优化中`,icon:(0,Q.jsx)(fm,{spin:!0})},prompt_optimized:{color:`processing`,text:`待生成`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},p7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},XHe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),m7=e=>!!e&&/^blob:/i.test(e.trim()),h7=e=>{if(!e)return``;let t=String(e).trim();return t?XHe(t)?t:u7?`${u7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},ZHe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,g7=e=>e?B5(e):`-`,QHe=e=>e==null||e===``,_7=e=>{if(!e||m7(e))return!1;try{let t=new URL(h7(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}},v7=e=>e?m7(e)||_7(e)?`invalid`:`checking`:`empty`,y7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},$He=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=y7(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`},b7=(e,t)=>`${t}-${y7(e)||`empty`}`,x7=(e,t=`资源`)=>m7(e)?`本地临时素材已失效`:_7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,S7=({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]}),C7=({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:QHe(t)?`-`:t})]}),eUe=()=>{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)(0),[h,g]=(0,C.useState)(null),[_,v]=(0,C.useState)(d7),[y,b]=(0,C.useState)(!1),x=(0,C.useRef)(null),[S,w]=(0,C.useState)(null),[T,E]=(0,C.useState)(null),D=(0,C.useCallback)(async()=>{a(!0);try{let e=await nVe({userId:d.trim()||void 0,status:l||void 0,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}))),r(e.total||0)}catch{CP.error(`加载记录失败`)}finally{a(!1)}},[l,d,o,c]);(0,C.useEffect)(()=>{D()},[D,p]),(0,C.useEffect)(()=>{if(!h){v(d7);return}let e=(h.references||[]).reduce((e,t,n)=>{let r=y7(t);return e[b7(t,n)]=v7(r),e},{});x.current&&(x.current.pause(),x.current.currentTime=0),b(!1),v({image:v7(h.imageUrl),video:v7(h.videoUrl),videoCover:v7(h.videoCoverUrl),references:e})},[h]);let O=()=>{s(1),m(e=>e+1)},k=(0,C.useCallback)(e=>{g(e)},[]),A=()=>{x.current&&x.current.pause(),b(!1),g(null)},j=e=>{v(t=>({...t,...e}))},M=(e,t)=>{v(n=>({...n,references:{...n.references,[e]:t}}))},N=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(m7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(_7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(h7(e),`_blank`,`noopener,noreferrer`)},P=()=>{if(h?.videoUrl){if(_7(h.videoUrl)){j({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}b(!0),window.setTimeout(()=>{x.current?.play().catch(()=>{b(!1),j({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},F=async(e,t,n)=>{w(e);try{await rVe(e,t,n),CP.success(`状态已更新`),D()}catch(e){CP.error(e?.message||`更新失败`)}finally{w(null)}},I=async()=>{if(T){w(T.record.id);try{await iVe(T.record.id,T.ratio,T.resolution,T.image_size),CP.success(`已提交${T.record.genType===`video`?`视频`:`图片`}生成`),E(null),D()}catch(e){CP.error(e?.message||`生成失败`)}finally{w(null)}}},L=(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:ZHe(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)(jR,{color:`cyan`,children:e||`-`})},{title:`类型`,dataIndex:`genType`,width:90,ellipsis:!0,render:e=>{let t=p7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`提示词`,key:`prompt`,ellipsis:!0,render:(e,t)=>(0,Q.jsx)(hx,{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`?t.duration||t.aspectRatio||t.resolution?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`})},{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=f7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`时间`,key:`time`,width:150,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:g7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,g7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>k(t),children:`详情`}),t.status===`generating`?(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`}):null,t.status===`failed`?(0,Q.jsx)($S,{size:`small`,type:`primary`,danger:!0,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),children:`重试生成`}):null,t.status===`prompt_optimized`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)($S,{size:`small`,type:`primary`,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),style:{background:`#6366f1`,border:`none`},children:[`生成`,t.genType===`video`?`视频`:`图片`]}),(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`})]}):null]})}],[k,S]),R=h?p7[h.genType||``]||{text:h.genType||`-`,color:`default`,icon:null}:null,z=h?f7[h.status]||{color:`default`,text:h.status||`-`,icon:null}:null,B=()=>{if(!h||h.genType!==`image`||h.status!==`completed`)return null;if(!h.imageUrl)return(0,Q.jsx)(S7,{text:`此图片任务暂无结果图片`,minHeight:260});if(_.image===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.imageUrl,`图片`),minHeight:260});let e=h7(h.imageUrl);return(0,Q.jsxs)(`div`,{title:`点击新页面查看图片`,onClick:()=>N(h.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:()=>j({image:`valid`}),onError:()=>j({image:`invalid`}),style:{display:_.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${h.id}-${e}`),_.image===`checking`?(0,Q.jsx)(S7,{text:`图片加载检测中...`,minHeight:260}):null]})},V=()=>{if(!h||y||_.video===`invalid`)return null;let e=h.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:P,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!h.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)(S7,{text:`此视频无封面`,minHeight:340,action:e})});if(_.videoCover===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=h7(h.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:()=>j({videoCover:`valid`}),onError:()=>j({videoCover:`invalid`}),style:{display:_.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${h.id}-cover-${t}`),_.videoCover===`checking`?(0,Q.jsx)(S7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,_.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]})},H=()=>{if(!h||h.genType!==`video`||h.status!==`completed`)return null;if(!h.videoUrl)return(0,Q.jsx)(S7,{text:`此视频任务暂无结果视频`,minHeight:340});if(_.video===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoUrl,`视频`),minHeight:340});let e=h7(h.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:x,src:e,preload:`metadata`,controls:y,onLoadedMetadata:()=>j({video:`valid`}),onCanPlay:()=>j({video:`valid`}),onPlaying:()=>{b(!0),j({video:`valid`})},onPause:()=>b(!1),onEnded:()=>b(!1),onError:()=>{b(!1),j({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!y,pointerEvents:y?`auto`:`none`}},`${h.id}-${e}`),V()]})},U=(e,t)=>{let n=y7(e),r=$He(e),i=b7(e,t),a=_.references[i]||v7(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)(S7,{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)(S7,{text:m7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=h7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>N(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&N(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:()=>M(i,`valid`),onError:()=>M(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:()=>M(i,`valid`),onError:()=>M(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(m8,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`生成记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:200},value:d,onChange:e=>f(e.target.value),onPressEnter:O,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:O,style:{borderRadius:8},children:`搜索`})]})]}),(0,Q.jsx)(vR,{columns:L,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)(TP,{title:(0,Q.jsxs)(IM,{children:[h?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`生成记录详情`})]}),open:!!h,onCancel:A,footer:null,width:900,destroyOnClose:!0,children:h?(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:h.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:h.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)(IM,{size:4,wrap:!0,children:[R?(0,Q.jsx)(jR,{color:R.color,icon:R.icon,children:R.text}):null,z?(0,Q.jsx)(jR,{color:z.color,icon:z.icon,children:z.text}):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:h.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:h.optimizedPrompt||`-`})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`文字积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#f59e0b`},children:h.textCreditsCost||0}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.textTokensUsed||0,` tokens)`]})]})}),(0,Q.jsx)(C7,{label:`${h.genType===`image`?`图片`:`视频`}积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:h.creditsCost||0}),h.genType===`video`&&h.videoTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.videoTokensUsed,` tokens)`]}):null,h.genType===`image`&&h.imageTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.imageTokensUsed,` tokens)`]}):null]})}),(0,Q.jsx)(C7,{label:`总积分`,value:(h.textCreditsCost||0)+(h.creditsCost||0)})]}),h.genType===`video`?h.duration||h.aspectRatio||h.resolution?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`时长`,value:h.duration?`${h.duration}秒`:`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.aspectRatio||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.resolution||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`视频参数待用户配置`})}):null,h.genType===`image`?h.imageSize||h.imageProportion||h.imagePx?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`尺寸`,value:h.imagePx||`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.imageProportion||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.imageSize||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`图片参数待用户配置`})}):null,!h?.references||h.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:h.references.map((e,t)=>U(e,t))})]}),h.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:h.genType===`video`?`生成视频`:`生成图片`}),h.genType===`video`?H():B()]}):null,h.status===`failed`&&h.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:[`错误信息: `,h.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,g7(h.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,g7(h.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[T&&(T.record.genType===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(DX,{})),T&&(T.record.genType===`video`?`生成视频`:`生成图片`)]}),open:!!T,onCancel:()=>E(null),onOk:I,okText:`提交生成`,cancelText:`取消`,confirmLoading:T?S===T.record.id:!1,width:420,children:T?(0,Q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginTop:16},children:T.record.genType===`video`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`时长`}),(0,Q.jsxs)(Z.Text,{strong:!0,children:[T.record.duration||5,`s`]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`画面比例`}),(0,Q.jsx)(Tb,{value:T.ratio,onChange:e=>E(t=>t?{...t,ratio:e}:null),style:{width:`100%`},options:[`16:9`,`4:3`,`1:1`,`3:4`,`9:16`,`21:9`].map(e=>({value:e,label:e}))})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.resolution,onChange:e=>E(t=>t?{...t,resolution:e}:null),style:{width:`100%`},options:[`480p`,`720p`,`1080p`].map(e=>({value:e,label:e}))})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{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:T.record.imagePx||`-`})]}),(0,Q.jsxs)(`div`,{style:{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:T.record.imageProportion||`-`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.image_size,onChange:e=>E(t=>t?{...t,image_size:e}:null),style:{width:`100%`},options:[`2K`,`4K`].map(e=>({value:e,label:e}))})]})]})}):null})]})},{RangePicker:tUe}=gM,w7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),T7=20,E7=e=>e&&(e.name||e.modelName||e.id)||null,D7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},O7={pending:{color:`default`,text:`待处理`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},k7={timeout:`任务超时`,queued:`已入队`,preparing:`准备中`,creating_provider_task:`创建任务中`,waiting_remote:`等待生成`,result_ready:`结果就绪`,downloading:`下载中`,done:`完成`,download_failed:`下载失败`,polling:`轮询中`,failed:`失败`},A7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},nUe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),j7=e=>!!e&&/^blob:/i.test(e.trim()),M7=e=>{if(!e)return``;let t=String(e).trim();return t?nUe(t)?t:w7?`${w7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},rUe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,N7=e=>e?B5(e):`-`,iUe=e=>e==null||e===``,P7=e=>{if(!e||j7(e))return!1;try{let t=new URL(M7(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}},F7=e=>e?j7(e)||P7(e)?`invalid`:`checking`:`empty`,I7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},L7=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=I7(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`},R7=(e,t)=>`${t}-${I7(e)||`empty`}`,z7=(e,t=`资源`)=>j7(e)?`本地临时素材已失效`:P7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,B7=({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]}),V7=({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:iUe(t)?`-`:t})]}),H7=()=>(0,tC.default)().startOf(`day`),U7=()=>(0,tC.default)().endOf(`day`),aUe=()=>{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)([H7(),U7()]),[D,O]=(0,C.useState)([H7(),U7()]),[k,A]=(0,C.useState)(0),[j,M]=(0,C.useState)(null),[N,P]=(0,C.useState)(D7),[F,I]=(0,C.useState)(!1),L=(0,C.useRef)(null),[R,z]=(0,C.useState)(null),B=(0,C.useCallback)(async()=>{a(!0);try{let e=await oVe({genType:u||void 0,status:c||void 0,userId:v||void 0,userName:b||void 0,engineId:S||void 0,createdStart:D?.[0]?.toISOString?.(),createdEnd:D?.[1]?.toISOString?.(),page:o,pageSize:T7});t(e.items||[]),r(e.total||0)}catch(e){CP.error(e?.message||`加载创作记录失败`)}finally{a(!1)}},[u,c,o,v,b,S,D]);(0,C.useEffect)(()=>{B()},[B,k]),(0,C.useEffect)(()=>{if(!j){P(D7);return}let e=(j.mediaReferences||[]).reduce((e,t,n)=>{let r=I7(t);return e[R7(t,n)]=F7(r),e},{});L.current&&(L.current.pause(),L.current.currentTime=0),I(!1),P({image:F7(j.imageUrl),video:F7(j.videoUrl),videoCover:F7(j.videoCoverUrl),references:e})},[j]);let V=()=>{s(1),y(m.trim()),x(g.trim()),w(f),O(T),A(e=>e+1)},H=()=>{l(``),d(``),p(``),h(``),_(``),y(``),x(``),w(``);let e=[H7(),U7()];E(e),O(e),s(1),A(e=>e+1)},U=(0,C.useCallback)(e=>{M(e)},[]),W=()=>{L.current&&L.current.pause(),I(!1),M(null)},ee=e=>{P(t=>({...t,...e}))},te=(e,t)=>{P(n=>({...n,references:{...n.references,[e]:t}}))},ne=()=>{if(j?.videoUrl){if(P7(j.videoUrl)){ee({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}I(!0),window.setTimeout(()=>{L.current?.play().catch(()=>{I(!1),ee({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},re=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(M7(e),`_blank`,`noopener,noreferrer`)},ie=(e,t,n)=>{if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`链接已超时,请刷新列表或重新搜索后再查看`);return}z({url:M7(e),type:t,title:n})},ae=()=>z(null),G=(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:rUe(t.userId)})]})},{title:`类型`,dataIndex:`genType`,width:90,render:e=>{let t=A7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`引擎`,key:`engine`,width:160,render:(e,t)=>{let n=E7(t.engineSnapshot);return(0,Q.jsx)(hx,{title:t.engineId||`未知引擎`,placement:`topLeft`,children:(0,Q.jsx)(jR,{icon:(0,Q.jsx)(W2,{}),color:`cyan`,children:n||t.engineId||`-`})})}},{title:`附件`,key:`references`,width:110,render:(e,t)=>{let n=t.mediaReferences||[];if(n.length===0)return(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`},children:`无`});let r=n.filter(e=>L7(e)===`image`).length,i=n.filter(e=>L7(e)===`video`).length,a=n.length-r-i;return(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[r>0?(0,Q.jsxs)(jR,{color:`purple`,icon:(0,Q.jsx)(DX,{}),children:[r,` 图`]}):null,i>0?(0,Q.jsxs)(jR,{color:`geekblue`,icon:(0,Q.jsx)(m8,{}),children:[i,` 视频`]}):null,a>0?(0,Q.jsxs)(jR,{children:[a,` 文件`]}):null]})}},{title:`结果`,key:`result`,width:90,render:(e,t)=>t.status===`completed`?t.genType===`video`&&t.videoUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(C0,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),re(t.videoUrl,`视频`)},children:`看视频`}):t.genType===`image`&&t.imageUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(DX,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),re(t.imageUrl,`图片`)},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)(hx,{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)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`无参数`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{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=O7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`阶段`,dataIndex:`pipelineStage`,width:120,render:e=>(0,Q.jsx)(jR,{color:`blue`,children:k7[e]||e||`-`})},{title:`时间`,key:`time`,width:170,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:N7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,N7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:90,fixed:`right`,render:(e,t)=>(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>U(t),children:`详情`})}],[U]),oe=j?A7[j.genType]||{text:j.genType||`-`,color:`default`,icon:null}:null,K=j?O7[j.status]||{color:`default`,text:j.status||`-`,icon:null}:null,se=()=>{if(!j||j.genType!==`image`||j.status!==`completed`)return null;if(!j.imageUrl)return(0,Q.jsx)(B7,{text:`此图片任务暂无结果图片`,minHeight:260});if(N.image===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.imageUrl,`图片`),minHeight:260});let e=M7(j.imageUrl);return(0,Q.jsxs)(`div`,{style:{position:`relative`,width:`100%`,minHeight:260,borderRadius:12,background:`#f8f9fc`,border:`1px solid #e2e8f0`,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:[(0,Q.jsx)(`img`,{src:e,alt:`生成图片`,onLoad:()=>ee({image:`valid`}),onError:()=>ee({image:`invalid`}),style:{display:N.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${j.id}-${e}`),N.image===`checking`?(0,Q.jsx)(B7,{text:`图片加载检测中...`,minHeight:260}):null]})},ce=()=>{if(!j||F||N.video===`invalid`)return null;let e=j.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:ne,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!j.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)(B7,{text:`此视频无封面`,minHeight:340,action:e})});if(N.videoCover===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=M7(j.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:()=>ee({videoCover:`valid`}),onError:()=>ee({videoCover:`invalid`}),style:{display:N.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${j.id}-cover-${t}`),N.videoCover===`checking`?(0,Q.jsx)(B7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,N.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]})},le=()=>{if(!j||j.genType!==`video`||j.status!==`completed`)return null;if(!j.videoUrl)return(0,Q.jsx)(B7,{text:`此视频任务暂无结果视频`,minHeight:340});if(N.video===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoUrl,`视频`),minHeight:340});let e=M7(j.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:L,src:e,preload:`metadata`,controls:F,onLoadedMetadata:()=>ee({video:`valid`}),onCanPlay:()=>ee({video:`valid`}),onPlaying:()=>{I(!0),ee({video:`valid`})},onPause:()=>I(!1),onEnded:()=>I(!1),onError:()=>{I(!1),ee({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!F,pointerEvents:F?`auto`:`none`}},`${j.id}-${e}`),ce()]})},ue=(e,t)=>{let n=I7(e),r=L7(e),i=R7(e,t),a=N.references[i]||F7(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)(B7,{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)(B7,{text:j7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=M7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>re(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&re(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:()=>te(i,`valid`),onError:()=>te(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:()=>te(i,`valid`),onError:()=>te(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`创作记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(Tb,{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)(Tb,{allowClear:!0,showSearch:!0,placeholder:`引擎筛选`,value:f||void 0,style:{width:180},onChange:e=>{p(e||``),s(1),w(e||``)},optionFilterProp:`label`,options:Array.from(new Map(e.filter(e=>e.engineId).map(e=>[e.engineId,{value:e.engineId,label:E7(e.engineSnapshot)||e.engineId}])).values())}),(0,Q.jsx)(tUe,{value:T,onChange:e=>{E(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:m,onChange:e=>h(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)(GN,{placeholder:`用户名搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:g,onChange:e=>_(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:V,style:{borderRadius:8},children:`搜索`}),(0,Q.jsx)($S,{onClick:H,style:{borderRadius:8},children:`重置`})]})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:i,columns:G,dataSource:e,scroll:{x:1650},pagination:{current:o,pageSize:T7,total:n,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:e=>s(e)}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[j?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`创作记录详情`})]}),open:!!j,onCancel:W,footer:null,width:900,destroyOnClose:!0,children:j?(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:[oe?(0,Q.jsx)(jR,{color:oe.color,icon:oe.icon,children:oe.text}):null,K?(0,Q.jsx)(jR,{color:K.color,icon:K.icon,children:K.text}):null,j.pipelineStage?(0,Q.jsx)(jR,{color:`blue`,children:k7[j.pipelineStage]||j.pipelineStage}):null]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`用户名称`,value:j.userName||`未知用户`}),(0,Q.jsx)(V7,{label:`用户ID`,value:j.userId||`-`}),(0,Q.jsx)(V7,{label:`任务ID`,value:j.id})]}),(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:j.originalPrompt||`-`})]}),j.genType===`video`?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`时长`,value:j.duration?`${j.duration}秒`:`-`}),(0,Q.jsx)(V7,{label:`画面比例`,value:j.aspectRatio||`-`}),(0,Q.jsx)(V7,{label:`分辨率`,value:j.resolution||`-`})]}):(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`图片档位`,value:j.imageSize||`-`}),(0,Q.jsx)(V7,{label:`图片比例`,value:j.imageProportion||`-`}),(0,Q.jsx)(V7,{label:`像素尺寸`,value:j.imagePx||`-`})]}),j.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)(V7,{label:`引擎名称`,value:j.engineSnapshot.name||`-`}),(0,Q.jsx)(V7,{label:`服务商`,value:j.engineSnapshot.provider||`-`}),(0,Q.jsx)(V7,{label:`模型`,value:j.engineSnapshot.modelName||`-`}),(0,Q.jsx)(V7,{label:`引擎ID`,value:j.engineSnapshot.id||j.engineId||`-`})]})]}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`总积分`,value:(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:j.creditsCost||0})}),(0,Q.jsx)(V7,{label:`文字积分`,value:`${j.textCreditsCost||0} (${j.textTokensUsed||0} tokens)`}),(0,Q.jsx)(V7,{label:`图片 tokens`,value:j.imageTokensUsed??0}),(0,Q.jsx)(V7,{label:`视频 tokens`,value:j.videoTokensUsed??0})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`第三方任务ID`,value:j.providerTaskId||j.seedanceTaskId||`-`}),(0,Q.jsx)(V7,{label:`轮询次数`,value:j.pollCount??0}),(0,Q.jsx)(V7,{label:`重试次数`,value:j.retryCount??0})]}),!j?.mediaReferences||j.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:j.mediaReferences.map((e,t)=>ue(e,t))})]}),j.mediaReferences&&j.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)(IM,{size:8,wrap:!0,children:j.mediaReferences.map((e,t)=>{let n=I7(e),r=L7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)($S,{size:`small`,icon:r===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(j$,{}),onClick:()=>ie(n,r===`video`?`video`:`image`,i),children:i},t):null})})]}):null,j.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:6},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`},children:j.genType===`video`?`生成视频`:`生成图片`}),j.genType===`video`&&j.videoUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(C0,{}),onClick:()=>ie(j.videoUrl,`video`,`生成视频`),style:{padding:0},children:`弹窗播放`}):null,j.genType===`image`&&j.imageUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(DX,{}),onClick:()=>ie(j.imageUrl,`image`,`生成图片`),style:{padding:0},children:`弹窗查看`}):null]}),j.genType===`video`?le():se()]}):null,j.status===`failed`&&j.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:[`错误信息: `,j.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,N7(j.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,N7(j.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:R?.title||`资源预览`,open:!!R,onCancel:ae,footer:null,width:R?.type===`video`?800:600,destroyOnHidden:!0,children:R?R.type===`video`?(0,Q.jsx)(`video`,{src:R.url,controls:!0,autoPlay:!0,style:{width:`100%`,maxHeight:600,background:`#000`,borderRadius:8}},R.url):(0,Q.jsx)(`img`,{src:R.url,alt:R.title,style:{width:`100%`,maxHeight:600,objectFit:`contain`,borderRadius:8}}):null})]})},W7=20,oUe=[{value:`pending`,label:`已创建`},{value:`waiting_user`,label:`等待用户操作`},{value:`processing`,label:`处理中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`},{value:`cancelled`,label:`已取消`}],sUe={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:`已取消`}},cUe={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},G7=e=>e?B5(e):`-`,K7=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,lUe=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=sUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},uUe=()=>{let e=Ze(),[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 sVe({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:W7});n(e.items||[]),i(e.total||0)}catch(e){CP.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.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`爆款开头复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看任务列表、素材、步骤详情和生成结果。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>k(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`任务状态`,style:{width:160},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:oUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/项目名/核心点`,style:{width:260},value:d,onChange:e=>f(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:p,onChange:e=>m(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:h,onChange:e=>g(e.target.value),onPressEnter:j}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:_,onChange:v,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:j,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(null),b(``),S(``),T(``),D(null),c(1),k(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:W7,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1380},columns:[{title:`项目ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:K7(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:K7(t.userId)})]})},{title:`项目信息`,width:260,render:(e,t)=>(0,Q.jsxs)(IM,{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)(lUe,{status:e})},{title:`当前步骤`,dataIndex:`currentStepCode`,width:140,render:e=>cUe[e]||e||`-`},{title:`图片结果`,dataIndex:`finalImageUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`视频结果`,dataIndex:`finalVideoUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`错误信息`,dataIndex:`errorMessage`,width:220,ellipsis:!0,render:e=>e||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:G7},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:G7},{title:`操作`,fixed:`right`,width:110,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/hot-opening-replications/${n.id}`),children:`详情`})}]})]})})})},q7=({value:e,maxHeight:t=420})=>e==null||e===``?(0,Q.jsx)(Yy,{image:Yy.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)}),dUe=({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)(q7,{value:e})}),t!==void 0&&o.push({key:`output`,label:i,children:(0,Q.jsx)(q7,{value:t})}),n!==void 0&&o.push({key:`raw`,label:a,children:(0,Q.jsx)(q7,{value:n})}),o.length?(0,Q.jsx)(Wh,{size:`small`,style:{marginTop:12},items:o}):null},fUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``);function pUe(e){if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${fUe}${t.startsWith(`/`)?t:`/${t}`}`:``}var J7=({url:e,type:t,height:n=260,emptyDescription:r=`暂无资源`,errorDescription:i=`资源加载失败,可能文件不存在、签名过期或访问权限受限。`})=>{let a=(0,C.useMemo)(()=>pUe(e),[e]),[o,s]=(0,C.useState)(!1);(0,C.useEffect)(()=>{s(!1)},[a]);let c=a?(0,Q.jsxs)(IM,{wrap:!0,style:{marginTop:8},children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(oz,{}),onClick:async()=>{if(a)try{await navigator.clipboard.writeText(a),CP.success(`资源地址已复制`)}catch{CP.error(`复制失败,请手动复制`)}},children:`复制地址`}),(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(j$,{}),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)(cf,{type:`warning`,showIcon:!0,message:`资源预览失败`,description:i,style:{marginBottom:8}}):null,t===`image`?(0,Q.jsx)(jN,{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)(Yy,{image:Yy.PRESENTED_IMAGE_SIMPLE,description:r})})})},Y7={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`},waiting_remote:{text:`等待远端结果`,color:`processing`},polling:{text:`轮询远端结果`,color:`processing`},result_ready:{text:`结果已就绪`,color:`success`},downloading:{text:`下载中`,color:`processing`},done:{text:`已完成`,color:`success`},download_failed:{text:`下载失败`,color:`error`},retry_waiting:{text:`等待重试`,color:`orange`},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`}},X7={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},Z7={hot_opening_replicate:`爆款开头复刻`,shot_replicate:`拆镜复刻`},Q7={ai_suggestion:{text:`AI 建议`,color:`purple`},custom:{text:`自定义`,color:`cyan`},original:{text:`原视频`,color:`blue`}};function $7(e){return e?Z7[e]||e:`-`}function e9(e){return e?X7[e]||e:`-`}function mUe(e){return e?Y7[e]?.text||X7[e]||Z7[e]||Q7[e]?.text||e:`-`}function hUe(e){return e?Y7[e]?.color||Q7[e]?.color||`blue`:`default`}var t9=({status:e,tooltipRaw:t=!0})=>{if(e==null||e===``)return(0,Q.jsx)(jR,{children:`-`});let n=String(e),r=mUe(n),i=(0,Q.jsx)(jR,{color:hUe(n),children:r});return!t||r===n?i:(0,Q.jsx)(hx,{title:n,children:i})};function n9(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function r9(e,...t){for(let n of t){let t=e[n];if(t!=null&&String(t).trim()!==``)return String(t)}return``}function i9(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 gUe(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 a9(e){if(!n9(e))return null;let t=r9(e,`key`);return t?{key:t,label:r9(e,`label`)||t,type:r9(e,`type`)||void 0,enabled:i9(e,!0,`enabled`),editable:i9(e,!0,`editable`),maxLength:gUe(e,`maxLength`,`max_length`)}:null}function o9(e){if(!n9(e))return null;let t=e.data;return n9(t)?t:Array.isArray(e.sections)?e:null}function _Ue(e){return!!o9(e)}function vUe(e){let t=o9(e);return(Array.isArray(t?.sections)?t.sections:[]).map(e=>{let t=a9(e);if(!t||!n9(e))return null;let n=Array.isArray(e.children)?e.children.map(a9).filter(Boolean):[],r=Array.isArray(e.itemFields)?e.itemFields.map(a9).filter(Boolean):Array.isArray(e.item_fields)?e.item_fields.map(a9).filter(Boolean):[];return{...t,contentKey:r9(e,`contentKey`,`content_key`)||void 0,children:n,itemFields:r}}).filter(e=>!!e&&e.enabled)}function yUe(e){return n9(e)?Object.entries(e).filter(([e])=>![`schemaVersion`,`schemaUsage`,`schema_version`,`schema_usage`].includes(e)).map(([e,t])=>Array.isArray(t)&&t.every(n9)?{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:[]}:n9(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 s9=e=>!!e&&typeof e==`object`&&!Array.isArray(e),c9=e=>typeof e==`string`&&e.length>80,l9=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)(q7,{value:e,maxHeight:220}),u9=e=>e?(0,Q.jsx)(jR,{color:`processing`,children:`可编辑`}):(0,Q.jsx)(jR,{color:`default`,children:`只读`}),d9=(e,t)=>e[t],bUe=(e,t)=>{let n=d9(e,t.key);if(!s9(n))return(0,Q.jsx)(q7,{value:n??{},maxHeight:220});let r=t.children.filter(e=>e.enabled);return r.length?(0,Q.jsx)(bM,{size:`small`,column:2,bordered:!0,children:r.map(e=>(0,Q.jsx)(bM.Item,{label:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),span:c9(n[e.key])||s9(n[e.key])||Array.isArray(n[e.key])?2:1,children:l9(n[e.key])},e.key))}):(0,Q.jsx)(q7,{value:n,maxHeight:220})},xUe=(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}))},SUe=(e,t)=>{let n=d9(e,t.key);if(!Array.isArray(n)||!n.every(s9))return(0,Q.jsx)(q7,{value:n??[],maxHeight:260});let r=n,i=xUe(t,r);return(0,Q.jsx)(vR,{size:`small`,rowKey:(e,n)=>`${t.key}-${n}`,columns:i.map(e=>({title:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),dataIndex:e.key,key:e.key,width:c9(r.find(t=>t[e.key])?.[e.key])?320:160,render:e=>l9(e)})),dataSource:r,pagination:!1,scroll:{x:Math.max(900,i.length*180)},tableLayout:`fixed`})},CUe=(e,t)=>l9(d9(e,t.key)),wUe=({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)(Yy,{description:`暂无视频提词 schema`});let s=o?e:{},c=_Ue(n),l=(c?vUe(n):yUe(s)).filter(e=>e.key in s).map(e=>({key:e.key,label:(0,Q.jsxs)(IM,{size:8,wrap:!0,children:[(0,Q.jsx)(`span`,{children:e.label}),u9(e.editable),c?null:(0,Q.jsx)(jR,{color:`warning`,children:`管理后台兜底展示`})]}),children:e.type===`object`?bUe(s,e):e.type===`flow`?SUe(s,e):CUe(s,e)}));return(0,Q.jsxs)(IM,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,Q.jsx)(VA,{size:`small`,title:`Schema 配置来源`,children:(0,Q.jsxs)(bM,{size:`small`,column:3,bordered:!0,children:[(0,Q.jsx)(bM.Item,{label:`来源`,children:r||n?.source||(c?`-`:`viewer_fallback`)}),(0,Q.jsx)(bM.Item,{label:`版本`,children:i||n?.version||`-`}),(0,Q.jsx)(bM.Item,{label:`历史兜底`,children:a||!c?(0,Q.jsx)(jR,{color:`warning`,children:`是`}):(0,Q.jsx)(jR,{color:`success`,children:`否`})})]})}),t?(0,Q.jsx)(VA,{size:`small`,title:`最终视频提示词`,children:(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:t})}):null,l.length?(0,Q.jsx)(Wh,{size:`small`,items:l}):o?(0,Q.jsx)(VA,{size:`small`,title:`视频提词 Schema`,children:(0,Q.jsx)(q7,{value:s,maxHeight:360})}):null,o?(0,Q.jsx)(Wh,{size:`small`,items:[{key:`raw_schema`,label:`原始 JSON / 历史脏字段排查`,children:(0,Q.jsx)(q7,{value:s,maxHeight:420})}]}):null]})},TUe=[`material_input`,`image_prompt_optimize`,`image_generate`,`video_prompt_optimize`,`video_generate`],EUe={material_input:`参考素材、项目名称和核心内容点`,image_prompt_optimize:`图片 AI 提词优化结果`,image_generate:`图片引擎、生成参数和结果图`,video_prompt_optimize:`视频 JSON schema、动作流程和最终提词`,video_generate:`视频引擎、生成参数、封面和结果视频`},f9=e=>e?B5(e):`-`,p9=e=>e?e.length>18?`${e.slice(0,10)}...${e.slice(-4)}`:e:`-`,DUe=({text:e=`-`})=>(0,Q.jsx)(Z.Text,{type:`secondary`,children:e}),m9=({step:e})=>e?(0,Q.jsx)(dUe,{input:e.input,output:e.output}):null,h9=({index:e,stepCode:t,step:n,current:r})=>(0,Q.jsxs)(IM,{wrap:!0,size:8,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`第${e}步:${e9(t)}`}),(0,Q.jsx)(t9,{status:n?.status||`not_started`}),r?(0,Q.jsx)(jR,{color:`blue`,children:`当前步骤`}):null,(0,Q.jsx)(Z.Text,{type:`secondary`,children:EUe[t]||t}),n?.updatedAt?(0,Q.jsxs)(Z.Text,{type:`secondary`,children:[`更新时间:`,f9(n.updatedAt)]}):null,n?.chatTaskId?(0,Q.jsx)(hx,{title:n.chatTaskId,children:(0,Q.jsxs)(jR,{children:[`Chat:`,p9(n.chatTaskId)]})}):null]}),OUe=(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)},g9=(e,t=`错误信息`)=>e?(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:t,description:e,style:{marginTop:12,marginBottom:12}}):null,kUe=(e,t=`暂无提词`)=>e?(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:e}):(0,Q.jsx)(DUe,{text:t}),_9=({moduleType:e=`shot_replicate`})=>{let{projectId:t}=tt(),n=Ze(),[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(!1),s=(0,C.useCallback)(async()=>{if(t){o(!0);try{i(e===`hot_opening_replicate`?await cVe(t):await pVe(t))}catch(e){CP.error(e?.message||`加载复刻项目详情失败`)}finally{o(!1)}}},[e,t]);(0,C.useEffect)(()=>{s()},[s]);let c=(0,C.useMemo)(()=>{let e={};return(r?.steps||[]).forEach(t=>{e[t.stepCode]=t}),e},[r]),l=r?.module||e,u=$7(l),d=(0,C.useMemo)(()=>TUe.map(e=>{let t=c[e],n=`wait`;return t?.status===`completed`?n=`finish`:t?.status===`processing`?n=`process`:t?.status===`failed`&&(n=`error`),{title:e9(e),description:t?(0,Q.jsx)(t9,{status:t.status}):`未创建`,status:n}}),[c]),f=(0,C.useMemo)(()=>OUe(r,c),[r,c]);if(a&&!r)return(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})});if(!r)return(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到复刻项目详情`})});let p=c.material_input,m=c.image_prompt_optimize,h=c.image_generate,g=c.video_prompt_optimize,_=c.video_generate,v=r.imageGeneration?.resultImageUrl||r.finalImageUrl,y=r.videoGeneration?.resultVideoCoverUrl||r.finalVideoCoverUrl,b=r.videoGeneration?.resultVideoUrl||r.finalVideoUrl,x=[{key:`material_input`,label:(0,Q.jsx)(h9,{index:1,stepCode:`material_input`,step:p,current:r.currentStepCode===`material_input`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`素材步骤ID`,children:r.material?.materialStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`参考素材项目名`,children:r.material?.sourceProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成项目名称`,children:r.material?.targetProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`核心内容点`,span:2,children:r.material?.coreContentPoint||`-`})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`素材视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:r.material?.materialVideoUrl,emptyDescription:`暂无素材视频`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`素材图片`]}),children:(0,Q.jsx)(J7,{type:`image`,url:r.material?.materialImageUrl,emptyDescription:`暂无素材图片`})})]}),g9(p?.errorMessage),(0,Q.jsx)(m9,{step:p})]})},{key:`image_prompt_optimize`,label:(0,Q.jsx)(h9,{index:2,stepCode:`image_prompt_optimize`,step:m,current:r.currentStepCode===`image_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.imageGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:m?.status||r.imageGeneration?.status})}),(0,Q.jsx)(bM.Item,{label:`图片提示词`,span:2,children:kUe(r.imageGeneration?.prompt,`暂无图片提示词`)})]}),g9(m?.errorMessage||r.imageGeneration?.errorMessage),(0,Q.jsx)(m9,{step:m})]})},{key:`image_generate`,label:(0,Q.jsx)(h9,{index:3,stepCode:`image_generate`,step:h,current:r.currentStepCode===`image_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.imageGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.imageGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.imageGeneration?.status||h?.status})}),(0,Q.jsx)(bM.Item,{label:`图片引擎ID`,children:r.imageGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`图片引擎名称`,children:r.imageGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.imageGeneration?.params||{},maxHeight:160})})]}),g9(r.imageGeneration?.errorMessage||h?.errorMessage),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`图片结果`]}),children:(0,Q.jsx)(J7,{type:`image`,url:v,height:360,emptyDescription:h?.status===`failed`||r.imageGeneration?.errorMessage?`图片生成失败,未返回图片地址`:`暂无图片结果`,errorDescription:`图片资源加载失败,可能图片文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(m9,{step:h})]})},{key:`video_prompt_optimize`,label:(0,Q.jsx)(h9,{index:4,stepCode:`video_prompt_optimize`,step:g,current:r.currentStepCode===`video_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.videoGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:g?.status})}),(0,Q.jsx)(bM.Item,{label:`提词参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.promptParams||{},maxHeight:160})})]}),g9(g?.errorMessage||r.videoGeneration?.errorMessage),(0,Q.jsx)(wUe,{schema:r.videoGeneration?.promptSchema,finalPrompt:r.videoGeneration?.finalPrompt,schemaConfigSnapshot:r.videoGeneration?.schemaConfigSnapshot,schemaConfigSource:r.videoGeneration?.schemaConfigSource,schemaConfigVersion:r.videoGeneration?.schemaConfigVersion,schemaConfigIsFallback:r.videoGeneration?.schemaConfigIsFallback}),(0,Q.jsx)(m9,{step:g})]})},{key:`video_generate`,label:(0,Q.jsx)(h9,{index:5,stepCode:`video_generate`,step:_,current:r.currentStepCode===`video_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.videoGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.videoGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.videoGeneration?.status||_?.status})}),(0,Q.jsx)(bM.Item,{label:`视频引擎ID`,children:r.videoGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`视频引擎名称`,children:r.videoGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.params||{},maxHeight:160})})]}),g9(r.videoGeneration?.errorMessage||_?.errorMessage),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`视频封面`]}),children:(0,Q.jsx)(J7,{type:`image`,url:y,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回封面`:`暂无视频封面`,errorDescription:`视频封面加载失败,可能文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m8,{}),`最终视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:b,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回视频地址`:`暂无最终视频`,errorDescription:`视频资源加载失败,可能文件不存在、签名过期或访问权限受限。`})})]}),(0,Q.jsx)(m9,{step:_})]})}];return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>n(-1),children:`返回`}),(0,Q.jsxs)(Z.Title,{level:3,style:{margin:0},children:[u,`项目详情`]}),(0,Q.jsx)(t9,{status:r.status}),r.module&&r.module!==e?(0,Q.jsxs)(jR,{color:`gold`,children:[`接口模块:`,$7(r.module)]}):null]}),(0,Q.jsx)($S,{onClick:s,loading:a,children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`基础信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`项目ID`,children:r.id}),(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:r.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:r.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:r.title||`-`}),(0,Q.jsx)(bM.Item,{label:`当前步骤`,children:(0,Q.jsx)(hx,{title:r.currentStepCode||``,children:e9(r.currentStepCode)})}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.status})}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:f9(r.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:f9(r.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`完成时间`,children:f9(r.completedAt)}),r.errorMessage?(0,Q.jsx)(bM.Item,{label:`错误信息`,span:3,children:(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:r.errorMessage})}):null]})}),(0,Q.jsx)(VA,{title:`步骤进度`,children:(0,Q.jsx)(Qme,{items:d})}),(0,Q.jsx)(VA,{title:`最终结果预览`,children:(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:`最终图片`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalImageUrl||r.imageGeneration?.resultImageUrl,height:220,emptyDescription:`暂无最终图片`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频封面`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalVideoCoverUrl||r.videoGeneration?.resultVideoCoverUrl,height:220,emptyDescription:`暂无最终视频封面`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频`,children:(0,Q.jsx)(J7,{type:`video`,url:r.finalVideoUrl||r.videoGeneration?.resultVideoUrl,height:220,emptyDescription:`暂无最终视频`})})]})}),(0,Q.jsx)(Wh,{defaultActiveKey:f,items:x}),(0,Q.jsx)(Wh,{items:[{key:`steps-table`,label:`完整步骤列表`,children:(0,Q.jsx)(vR,{rowKey:`id`,size:`small`,pagination:!1,dataSource:r.steps||[],scroll:{x:1100},columns:[{title:`序号`,dataIndex:`stepIndex`,width:70},{title:`步骤`,dataIndex:`stepCode`,width:160,render:e=>(0,Q.jsx)(hx,{title:e,children:e9(e)})},{title:`状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(t9,{status:e})},{title:`版本`,dataIndex:`version`,width:70},{title:`当前有效`,dataIndex:`isCurrent`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`是`}):(0,Q.jsx)(jR,{children:`否`})},{title:`Chat任务`,dataIndex:`chatTaskId`,width:160,render:e=>(0,Q.jsx)(hx,{title:e||``,children:p9(e)})},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:f9},{title:`完成时间`,dataIndex:`completedAt`,width:170,render:f9},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0,render:e=>e||`-`}]})},{key:`raw-detail`,label:`完整详情原始 JSON`,children:(0,Q.jsx)(q7,{value:r,maxHeight:520})}]})]})})},AUe=()=>(0,Q.jsx)(_9,{moduleType:`hot_opening_replicate`}),v9=20,jUe=[{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:`失败`}],MUe=[{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],NUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],PUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`}},y9=e=>e?B5(e):`-`,b9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,x9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=PUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},FUe=()=>{let e=Ze(),[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 lVe({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:v9});n(e.items||[]),i(e.total||0)}catch(e){CP.error(e?.message||`加载拆镜复刻任务失败`)}finally{o(!1)}},[d,s,A,w,E,O,p,l]);(0,C.useEffect)(()=>{P()},[P,M]);let F=()=>{T(h.trim()),D(_.trim()),k(y.trim()),j(x),c(1)};return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`拆镜复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看拆镜总任务、AI 分析结果、切片列表和关联复刻项目。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>N(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`总任务状态`,style:{width:150},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:jUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:d||void 0,onChange:e=>{f(e||``),c(1)},options:MUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`拆镜状态`,style:{width:140},value:p||void 0,onChange:e=>{m(e||``),c(1)},options:NUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/内容/分类/受众`,style:{width:260},value:h,onChange:e=>g(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:_,onChange:e=>v(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:y,onChange:e=>b(e.target.value),onPressEnter:F}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:x,onChange:S,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:F,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(``),b(``),S(null),T(``),D(``),k(``),j(null),c(1),N(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:v9,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1500},columns:[{title:`任务集ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:b9(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:b9(t.userId)})]})},{title:`任务信息`,width:300,render:(e,t)=>(0,Q.jsxs)(IM,{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)(x9,{status:e})},{title:`分析状态`,dataIndex:`analysisStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`拆镜状态`,dataIndex:`splitStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`切片进度`,width:180,render:(e,t)=>{let n=t.segmentCount||0,r=t.completedSegmentCount||0;return(0,Q.jsx)(zP,{size:`small`,percent:n?Math.round(r/n*100):0,format:()=>`${r}/${n}`})}},{title:`失败片段`,dataIndex:`failedSegmentCount`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`error`,children:e}):(0,Q.jsx)(jR,{children:`0`})},{title:`视频时长`,dataIndex:`videoDurationSeconds`,width:100,render:e=>`${Number(e||0).toFixed(1)}s`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:y9},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:y9},{title:`操作`,fixed:`right`,width:120,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/shot-replications/task-sets/${n.id}`),children:`查看切片`})}]})]})})})},IUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),S9=20,LUe=[{value:`ai_suggestion`,label:`AI 建议`},{value:`custom`,label:`自定义`}],RUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],zUe=[{value:`not_required`,label:`无需分析`},{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],BUe=[{value:`not_started`,label:`未复刻`},{value:`project_created`,label:`已创建项目`},{value:`processing`,label:`复刻中`},{value:`completed`,label:`复刻完成`},{value:`failed`,label:`复刻失败`}],VUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`},not_required:{color:`default`,text:`无需分析`},not_started:{color:`default`,text:`未复刻`},project_created:{color:`processing`,text:`已创建项目`}},HUe=e=>{if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${IUe}${t.startsWith(`/`)?t:`/${t}`}`:``},C9=e=>e?B5(e):`-`,w9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,T9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=VUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},E9=({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:HUe(e),controls:!0,preload:`metadata`,style:{width:`100%`,maxHeight:t,borderRadius:12,background:`#0f172a`}}):(0,Q.jsx)(Yy,{description:`暂无视频`,image:Yy.PRESENTED_IMAGE_SIMPLE}),UUe=({items:e=[]})=>(0,Q.jsx)(vR,{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}]}),WUe=()=>{let{taskSetId:e}=tt(),t=Ze(),[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 uVe(e))}catch(e){CP.error(e?.message||`加载拆镜任务详情失败`)}finally{d(!1)}}},[e]),A=(0,C.useCallback)(async()=>{if(e){p(!0);try{let t=await dVe(e,{sourceMode:g||void 0,splitStatus:v||void 0,analysisStatus:b||void 0,replicateStatus:S||void 0,page:c,pageSize:S9});a(t.items||[]),s(t.total||0)}catch(e){CP.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=async e=>{E(!0),O(null);try{O(await fVe(e))}catch(e){CP.error(e?.message||`加载片段详情失败`)}};return u&&!n?(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})}):n?(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>t(`/shot-replications`),children:`返回列表`}),(0,Q.jsx)(Z.Title,{level:3,style:{margin:0},children:`拆镜任务详情`}),(0,Q.jsx)(T9,{status:n.status})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>h(e=>e+1),children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`总任务信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`任务集ID`,children:n.id}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:n.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:n.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:n.title||`-`}),(0,Q.jsxs)(bM.Item,{label:`视频时长`,children:[Number(n.videoDurationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`总状态`,children:(0,Q.jsx)(T9,{status:n.status})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:n.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`拆镜状态`,children:(0,Q.jsx)(T9,{status:n.splitStatus})}),(0,Q.jsxs)(bM.Item,{label:`片段数量`,children:[n.completedSegmentCount,`/`,n.segmentCount,`,失败 `,n.failedSegmentCount]}),(0,Q.jsx)(bM.Item,{label:`原视频分类`,children:n.originalVideoCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:C9(n.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:C9(n.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`原视频内容`,span:3,children:n.originalVideoContent||`-`}),(0,Q.jsx)(bM.Item,{label:`原视频受众`,span:3,children:n.originalVideoAudience||`-`}),n.analysisErrorMessage?(0,Q.jsx)(bM.Item,{label:`分析错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.analysisErrorMessage})}):null,n.splitErrorMessage?(0,Q.jsx)(bM.Item,{label:`拆镜错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.splitErrorMessage})}):null]})}),(0,Q.jsx)(VA,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`原视频预览`]}),children:(0,Q.jsx)(D9,{url:n.videoUrl,height:360})}),(0,Q.jsxs)(VA,{title:`AI 建议拆镜列表`,children:[n.aiSuggestions?.length?(0,Q.jsx)(UUe,{items:n.aiSuggestions}):(0,Q.jsx)(Yy,{description:`暂无 AI 建议拆镜`}),(0,Q.jsx)(Wh,{size:`small`,ghost:!0,style:{marginTop:12},items:[{key:`raw`,label:`查看原视频分析完整 JSON`,children:(0,Q.jsx)(E9,{value:n.analysisResultJson})}]})]}),(0,Q.jsxs)(VA,{title:`片段列表`,children:[(0,Q.jsxs)(IM,{wrap:!0,style:{marginBottom:16},children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`片段来源`,style:{width:140},value:g||void 0,options:LUe,onChange:e=>{_(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`切割状态`,style:{width:140},value:v||void 0,options:RUe,onChange:e=>{y(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:b||void 0,options:zUe,onChange:e=>{x(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`复刻状态`,style:{width:150},value:S||void 0,options:BUe,onChange:e=>{w(e||``),l(1)}}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(bb,{}),onClick:()=>h(e=>e+1),children:`筛选`}),(0,Q.jsx)($S,{onClick:()=>{_(``),y(``),x(``),w(``),l(1),h(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:f,dataSource:i,pagination:{current:c,pageSize:S9,total:o,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:l},scroll:{x:1550},columns:[{title:`片段ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:w9(e)})},{title:`序号`,dataIndex:`segmentIndex`,width:70},{title:`来源`,dataIndex:`sourceMode`,width:100,render:e=>e===`ai_suggestion`?(0,Q.jsx)(jR,{color:`purple`,children:`AI建议`}):(0,Q.jsx)(jR,{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)(T9,{status:e})},{title:`分析`,dataIndex:`analysisStatus`,width:100,render:e=>(0,Q.jsx)(T9,{status:e})},{title:`复刻`,dataIndex:`replicateStatus`,width:110,render:e=>(0,Q.jsx)(T9,{status:e})},{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)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)($S,{type:`link`,style:{padding:0},onClick:()=>t(`/shot-replications/projects/${n.moduleProjectId}`),children:w9(n.moduleProjectId)}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:n.moduleProjectTitle||e9(n.moduleProjectCurrentStepCode)}),(0,Q.jsx)(T9,{status:n.moduleProjectStatus})]}):(0,Q.jsx)(jR,{children:`未创建`})},{title:`错误`,dataIndex:`splitLastError`,width:220,ellipsis:!0,render:(e,t)=>e||t.analysisErrorMessage||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:C9},{title:`操作`,fixed:`right`,width:100,render:(e,t)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>j(t.id),children:`详情`})}]})]})]}),(0,Q.jsx)(kde,{title:`片段详情`,width:720,open:T,onClose:()=>E(!1),destroyOnClose:!0,children:D?(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`片段ID`,span:2,children:D.id}),(0,Q.jsx)(bM.Item,{label:`时间节点`,children:D.timeNode}),(0,Q.jsxs)(bM.Item,{label:`时长`,children:[Number(D.durationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`切割状态`,children:(0,Q.jsx)(T9,{status:D.splitStatus})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:D.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`复刻状态`,children:(0,Q.jsx)(T9,{status:D.replicateStatus})}),(0,Q.jsx)(bM.Item,{label:`关联项目`,children:D.moduleProjectId?(0,Q.jsx)($S,{type:`link`,onClick:()=>t(`/shot-replications/projects/${D.moduleProjectId}`),children:D.moduleProjectId}):`-`}),(0,Q.jsx)(bM.Item,{label:`片段内容`,span:2,children:D.segmentContent||`-`}),(0,Q.jsx)(bM.Item,{label:`片段分类`,children:D.segmentCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`片段受众`,children:D.segmentAudience||`-`})]}),(0,Q.jsx)(VA,{size:`small`,title:`片段视频`,children:(0,Q.jsx)(D9,{url:D.segmentVideoUrl,height:300})}),D.splitLastError?(0,Q.jsx)(cf,{type:`error`,message:`切割错误`,description:D.splitLastError}):null,D.analysisErrorMessage?(0,Q.jsx)(cf,{type:`error`,message:`分析错误`,description:D.analysisErrorMessage}):null,(0,Q.jsx)(Wh,{size:`small`,items:[{key:`analysis`,label:`片段分析 JSON`,children:(0,Q.jsx)(E9,{value:D.analysisJson})},{key:`suggestion`,label:`AI 建议原始 JSON`,children:(0,Q.jsx)(E9,{value:D.aiSuggestionJson})}]})]}):(0,Q.jsx)(hP,{})})]}):(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到拆镜任务详情`})})},{Title:GUe,Text:O9,Paragraph:KUe}=Z,{TextArea:k9}=GN,A9=[{label:`对象`,value:`object`},{label:`数组`,value:`array`},{label:`字符串`,value:`string`},{label:`数字`,value:`number`},{label:`布尔`,value:`boolean`},{label:`流程数组`,value:`flow`}],j9=`画面属性`,qUe=new Set([`视频时长`,`视频比例`,`清晰度`,`帧率`,`推荐分辨率`]);function M9(e,t){return e===j9&&!!t&&qUe.has(t)}function N9(e){return e===j9}function JUe(e){return JSON.parse(JSON.stringify(e??null))}function P9(e,t,n,r){return!e||typeof e!=`object`?r:e[t]===void 0?e[n]===void 0?r:e[n]:e[t]}function YUe(e){return{key:String(e?.key||e?.label||`新流程字段`),label:String(e?.label||e?.key||`新流程字段`),enabled:e?.enabled??!0,editable:e?.editable??!0,maxLength:Number(P9(e,`maxLength`,`max_length`,800)||800),value:e?.value??``}}function F9(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(P9(e,`maxLength`,`max_length`,t===`flow`?800:1e3)||(t===`flow`?800:1e3))};if(t===`object`)n.children=Array.isArray(e?.children)?e.children.map(F9):[];else if(t===`flow`){n.contentKey=String(P9(e,`contentKey`,`content_key`,e?.key===`镜头流程`?`镜头内容`:`动作内容`));let t=P9(e,`contentAliases`,`content_aliases`,[]);n.contentAliases=Array.isArray(t)?t.map(e=>String(e)).filter(Boolean):[];let r=P9(e,`itemFields`,`item_fields`,[]);n.itemFields=Array.isArray(r)&&r.length>0?r.map(YUe):[{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 XUe(e){let t=Array.isArray(e?.segments)?e.segments:[],n=Array.isArray(e?.ratios)?e.ratios:[];return{minDuration:Number(P9(e,`minDuration`,`min_duration`,1)||1),maxDuration:Number(P9(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 I9(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(F9),timePlanRules:n.map(XUe)}}function L9(e,t){let n=N9(e.key),r=M9(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=>L9(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 R9(e,t){return{version:e.version,enabled:t,sections:(e.sections||[]).map(e=>L9(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 z9(e){return e?.runtimeSchema||e?.runtime_schema||{}}function B9(e){let t=e?.timePlan||e?.time_plan||z9(e)?.动态时间规划||[];return Array.isArray(t)?t:[]}function ZUe(e){return e?.schemaConfigSnapshot||e?.schema_config_snapshot||{}}function QUe(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 V9=(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}),$Ue=()=>({minDuration:1,maxDuration:5,ratios:[.2,.4,.4],segments:[{stage:`开场吸引`,description:`快速吸引注意力`},{stage:`核心展示`,description:`展示主体动作、核心卖点或主要视觉内容`},{stage:`收尾引导`,description:`给出行动引导并稳定落版`}]}),eWe=()=>{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]=X.useForm(),_=(0,C.useRef)(null),v=c?.sections||[],y=c?.timePlanRules||[],b=async()=>{t(!0);try{let e=await mVe();a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),l(I9(e.data)),d(I9(e.defaultData??e.default_data))}catch(e){CP.error(e?.message||`加载失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{b()},[]);let x=e=>{l(t=>{let n=I9(JUe(t));return e(n),n})},S=async()=>{if(c){r(!0);try{let e=await hVe({is_enabled:i,data:R9(c,i)});l(I9(e.data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`保存成功`)}catch(e){CP.error(e?.message||`保存失败`)}finally{r(!1)}}},w=async()=>{r(!0);try{let e=await gVe();l(I9(e.data)),d(I9(e.defaultData??e.default_data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`已恢复默认配置`)}catch(e){CP.error(e?.message||`恢复默认失败`)}finally{r(!1)}},T=async()=>{try{QUe(`video_prompt_schema_config.json`,await _Ve())}catch(e){CP.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 vVe({is_enabled:!!(n.isEnabled??n.is_enabled??i),data:r});l(I9(o.data)),a(!!(o.isEnabled??o.is_enabled??o.data?.enabled??!1)),s(!!(o.usingDefault??o.using_default??!1)),CP.success(`导入成功`)}catch(e){CP.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 yVe({is_enabled:i,data:R9(c,i),duration:Number(e.duration||8),aspect_ratio:e.aspectRatio,resolution:e.resolution,frame_rate:e.frameRate}))}catch(e){CP.error(e?.message||`预览失败`)}},k=()=>{x(e=>{e.sections.push(V9(`object`))})},A=(e,t)=>{x(n=>{let r=n.sections[e];N9(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(V9(`string`))})},N=(e,t,n)=>{x(r=>{let i=r.sections[e],a=i.children||[],o=a[t];M9(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($Ue())})},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)(IM,{children:[(0,Q.jsx)(O9,{strong:!0,children:e.label||e.key||`未命名分组`}),e.key&&e.key!==e.label&&(0,Q.jsxs)(jR,{color:`blue`,children:[`key: `,e.key]}),(0,Q.jsx)(jR,{children:e.type}),N9(e.key)&&(0,Q.jsx)(jR,{color:`red`,children:`系统锁定`}),!e.enabled&&!N9(e.key)&&(0,Q.jsx)(jR,{color:`default`,children:`已禁用`})]}),children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsxs)(WP,{gutter:12,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:N9(e.key),onChange:e=>A(t,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>A(t,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Tb,{value:e.type,options:A9,style:{width:`100%`},disabled:N9(e.key),onChange:e=>A(t,{type:e})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:N9(e.key)?!0:e.enabled,disabled:N9(e.key),onChange:e=>A(t,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`可编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>A(t,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>A(t,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:2,style:{textAlign:`right`},children:(0,Q.jsx)(OP,{title:`确认删除该分组?`,disabled:N9(e.key),onConfirm:()=>j(t),children:(0,Q.jsx)($S,{danger:!0,icon:(0,Q.jsx)(PR,{}),disabled:N9(e.key)})})})]}),e.type===`object`&&(0,Q.jsx)(VA,{size:`small`,title:`对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>M(t),children:`新增字段`}),children:(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.children||[]).map((n,r)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:n.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:n.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>N(t,r,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Tb,{value:n.type,options:A9.filter(e=>e.value!==`object`&&e.value!==`flow`),style:{width:`100%`},disabled:M9(e.key,n.key),onChange:e=>N(t,r,{type:e})})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!0:n.enabled,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!1:n.editable,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{editable:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:n.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>N(t,r,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{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)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),disabled:M9(e.key,n.key),onClick:()=>P(t,r)})})]},`child-${t}-${r}`))})}),e.type===`flow`&&(0,Q.jsxs)(VA,{size:`small`,title:`流程数组对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>F(t),children:`新增流程字段`}),children:[(0,Q.jsxs)(WP,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(GN,{addonBefore:`内容字段`,value:e.contentKey,maxLength:64,onChange:e=>A(t,{contentKey:e.target.value})})}),(0,Q.jsx)(uj,{span:18,children:(0,Q.jsx)(GN,{addonBefore:`别名 / 分隔`,value:(e.contentAliases||[]).join(`/`),onChange:e=>A(t,{contentAliases:e.target.value.split(`/`).map(e=>e.trim()).filter(Boolean)})})})]}),(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.itemFields||[]).map((e,n)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`流程对象字段名`,onChange:e=>I(t,n,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>I(t,n,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:e.enabled,onChange:e=>I(t,n,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>I(t,n,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>I(t,n,{maxLength:Number(e||800)})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(GN,{value:String(e.value??``),maxLength:e.maxLength||800,placeholder:`默认值`,onChange:e=>I(t,n,{value:e.target.value})})}),(0,Q.jsx)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>L(t,n)})})]},`flow-${t}-${n}`))})]}),e.type!==`object`&&e.type!==`flow`&&(0,Q.jsx)(VA,{size:`small`,title:`默认值`,children:(0,Q.jsx)(k9,{rows:3,value:Array.isArray(e.value)?e.value.join(`
+你是一位专业的电商图片文案专家,擅长将产品卖点转化为图片生成提示词`,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)(X.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)(X.Item,{...r,name:[t,`name`],label:`选项名称`,style:{marginBottom:0},rules:[{required:!0,message:`请输入选项名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:视频风格`,size:`middle`,style:{borderRadius:8}})}),(0,Q.jsx)(X.Item,{...r,name:[t,`options`],label:`选项内容`,style:{marginBottom:0},children:(0,Q.jsx)(Tb,{mode:`tags`,size:`middle`,placeholder:`输入选项后回车添加`,style:{borderRadius:8},tokenSeparators:[`,`,`,`,`、`]})})]}),(0,Q.jsx)(b1,{onClick:()=>n(t),style:{color:`#ef4444`,fontSize:16,marginTop:34,cursor:`pointer`,flexShrink:0}})]},e)),(0,Q.jsx)($S,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,Q.jsx)(gA,{}),style:{borderRadius:8,height:36},children:`添加选项组`})]})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]})]})})]})};function o7(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}var NHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await TBe()).map(e=>({...e,supportedRatios:o7(e.supportedRatios),supportedResolutions:o7(e.supportedResolutions),supportedDurations:o7(e.supportedDurations)})))}catch{CP.error(`加载视频引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=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};i.engine?(await x5({id:i.engine.id,...t}),CP.success(`已更新`)):(await x5(t),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await EBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{a({open:!0,engine:e||null}),e?o.setFieldsValue(e):(o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,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]}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`视频引擎配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(C0,{})}),(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)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{children:e},e))})},{title:`支持分辨率`,dataIndex:`supportedResolutions`,width:150,render:e=>(0,Q.jsx)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{color:`blue`,children:e},e))})},{title:`支持时长`,dataIndex:`supportedDurations`,width:120,render:e=>(0,Q.jsx)(jR,{color:`orange`,children:e?.length?`${Math.min(...e)}-${Math.max(...e)}s`:`-`})},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`最大视频`,dataIndex:`maxVideoCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`cyan`,children:[e,` 个`]})},{title:`最大音频`,dataIndex:`maxAudioCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:e>0?`geekblue`:`default`,children:[e||0,` 段`]})},{title:`首尾帧`,dataIndex:`supportsFirstLastFrame`,width:90,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`支持`:`不支持`})},{title:`全能参考`,dataIndex:`supportsUniversalReference`,width:100,render:e=>(0,Q.jsx)(jR,{color:e?`purple`:`default`,children:e?`支持`:`不支持`})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1200}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:620,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`Seedance 2.0`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`模型名称`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedance-2-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedRatios`,label:`支持比例`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`supportedResolutions`,label:`支持分辨率`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:[{value:`480p`},{value:`720p`},{value:`1080p`}]})}),(0,Q.jsx)(X.Item,{name:`supportedDurations`,label:`支持时长(秒)`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:Array.from({length:12},(e,t)=>({value:t+4,label:`${t+4}秒`}))})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`maxDuration`,label:`最大时长(秒)`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxVideoCount`,label:`最大视频数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`maxAudioCount`,label:`最大参考音频数`,style:{flex:1},extra:`0 表示不支持音频参考,最大 3 段`,rules:[{validator:(e,t)=>{let n=Number(t??0);return!Number.isInteger(n)||n<0||n>3?Promise.reject(Error(`最大参考音频数必须为 0-3 的整数`)):Promise.resolve()}}],children:(0,Q.jsx)(GN,{type:`number`,size:`large`,min:0,max:3})})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`supportsFirstLastFrame`,label:`首尾帧模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`supportsUniversalReference`,label:`全能参考模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,style:{flex:1},children:(0,Q.jsx)(Tb,{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 PHe(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}function FHe(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 s7={"2K":{"1:1":`2048×2048`,"4:3":`2304×1728`,"3:4":`1728×2304`,"16:9":`2560×1440`,"9:16":`1600×2848`,"3:2":`2496×1664`,"2:3":`1664×2496`,"21:9":`3024×1296`},"4K":{"1:1":`4096×4096`,"4:3":`4608×3456`,"3:4":`3520×4704`,"16:9":`5404×3040`,"9:16":`3040×5504`,"3:2":`4992×3328`,"2:3":`3328×4992`,"21:9":`6197×2656`}},c7=[`1:1`,`4:3`,`3:4`,`16:9`,`9:16`,`3:2`,`2:3`,`21:9`],IHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await DBe()).map(e=>({...e,supportedModels:PHe(e.supportedModels),supportedSizes:FHe(e.supportedSizes)})))}catch{CP.error(`加载图片引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={};for(let n of[`2K`,`4K`]){let r=e[`size_${n}`]||[];if(r.length>0){t[n]={};for(let e of r)t[n][e]=s7[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};i.engine?(await S5({id:i.engine.id,...n}),CP.success(`已更新`)):(await S5(n),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await OBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{if(a({open:!0,engine:e||null}),e){let t={};for(let n of[`2K`,`4K`])t[`size_${n}`]=Object.keys(e.supportedSizes?.[n]||{});o.setFieldsValue({...e,...t})}else o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,supportedModels:[`doubao-seedream-5-0-260128`],defaultSize:`2K`,maxImageCount:0,size_2K:c7,size_4K:c7})};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{style:{fontSize:18,color:`#10b981`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`图片引擎配置`}),(0,Q.jsxs)(jR,{color:`green`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(m0,{})}),(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:`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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` `,t.supportedSizes[`4K`][e]]},e))})}},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1e3}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:680,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`豆包文生图`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`默认模型`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedream-5-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedModels`,label:`支持模型列表`,children:(0,Q.jsx)(Tb,{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`})]}),[`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)(X.Item,{name:`size_${e}`,style:{marginTop:8,marginBottom:0},children:(0,Q.jsx)(ij.Group,{style:{width:`100%`},children:(0,Q.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(4, 1fr)`,gap:`6px 0`},children:c7.map(t=>(0,Q.jsxs)(ij,{value:t,style:{fontSize:12},children:[t,` `,(0,Q.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:11},children:s7[e]?.[t]})]},t))})})})]},e)),(0,Q.jsx)(X.Item,{name:`defaultSize`,label:`默认尺寸档位`,children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`2K`,label:`2K`},{value:`4K`,label:`4K`}]})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`generateUrl`,label:`生成接口地址`,children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3/images/generations`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30},children:(0,Q.jsx)(lF,{})})]})]})})]})},LHe=[`2K`,`4K`],RHe=[`480p`,`720p`,`1080p`],zHe=()=>{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]=X.useForm(),[l,u]=(0,C.useState)(10),[d,f]=(0,C.useState)(null),[p,m]=(0,C.useState)(!1),h=X.useWatch(`genType`,c)||`video`,g=X.useWatch(`modelConfigId`,c),_=async()=>{a(!0);try{let[e,n,i]=await Promise.all([kBe(),g5(),aVe()]),a=(i?.engine?.image||[]).map(e=>({...e,genType:`image`})),o=(i?.engine?.video||[]).map(e=>({...e,genType:`video`}));t(e),r([...o,...a]);let s=n.find(e=>e.key===`text_credits_per_1000_tokens`);s&&(u(Number(s.value)||10),f({id:s.id}))}catch{CP.error(`加载积分比例失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{_()},[]);let v=(0,C.useMemo)(()=>n.filter(e=>e.genType===h).map(e=>({value:e.id,label:`${e.name}${e.modelName?`(${e.modelName})`:``}`})),[n,h]),y=(0,C.useMemo)(()=>n.find(e=>e.id===g&&e.genType===h),[n,h,g]),b=(0,C.useMemo)(()=>{if(h===`image`){let e=y?.supportedSizes?Object.keys(y.supportedSizes):[];return(e.length?e:LHe).map(e=>({value:e,label:e}))}let e=y?.supportedResolutions||[];return(e.length?e:RHe).map(e=>({value:e,label:e}))},[h,y]),x=(e,t)=>n.find(n=>n.id===e&&(!t||n.genType===t))?.name||e,S=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),o.ratio?(await C5({id:o.ratio.id,...t}),CP.success(`已更新`)):(await C5(t),CP.success(`已添加`)),s({open:!1,ratio:null}),c.resetFields(),_()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},w=async e=>{try{await ABe(e),CP.success(`已删除`),_()}catch{CP.error(`删除失败`)}},T=async()=>{if(d){m(!0);try{await _5(d.id,String(l)),CP.success(`文字积分费率已更新`)}catch(e){CP.error(e?.message||`保存失败`)}finally{m(!1)}}},E=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}):(c.resetFields(),c.setFieldsValue({genType:`video`,ratio:1,baseCredits:60,perSecondCredits:2,inputVideoRatio:1,inputVideoBaseCredits:0,inputVideoPerSecondCredits:.5}))};return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(xZ,{style:{fontSize:18,color:`#f59e0b`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`文字积分费率`})]}),(0,Q.jsx)($S,{type:`primary`,loading:p,onClick:T,style:{borderRadius:8},children:`保存`})]}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{display:`block`,marginBottom:16,fontSize:13},children:`文字积分计算公式:ceil(总token数 x 费率 / 1000),最低1积分`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:16},children:[(0,Q.jsx)(Z.Text,{children:`每1000 token消耗积分:`}),(0,Q.jsxs)(IM.Compact,{style:{width:160},children:[(0,Q.jsx)(Pj,{min:0,max:1e3,step:.01,value:l,onChange:e=>u(e||0),size:`large`,style:{width:`100%`}}),(0,Q.jsx)(Z.Text,{children:`积分`})]}),(0,Q.jsxs)(Z.Text,{type:`secondary`,style:{fontSize:12},children:[`示例:1000 token = `,l,` 积分,500 token = `,(500*l/1e3).toFixed(4),` 积分`]})]})]}),(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KG,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`积分比例配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 条规则`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>E(),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)(vR,{columns:[{title:`类型`,dataIndex:`genType`,width:80,render:e=>(0,Q.jsx)(jR,{color:e===`image`?`cyan`:`orange`,children:e===`image`?`图片`:`视频`})},{title:`引擎`,dataIndex:`modelConfigId`,width:180,render:(e,t)=>(0,Q.jsx)(jR,{color:t.genType===`image`?`cyan`:`purple`,children:x(e,t.genType)})},{title:`分辨率/尺寸`,dataIndex:`resolution`,width:110,render:e=>(0,Q.jsx)(jR,{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:`视频倍率`,dataIndex:`inputVideoRatio`,width:100,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:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分`})},{title:`视频每秒积分`,dataIndex:`inputVideoPerSecondCredits`,width:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分/秒`})},{title:`示例计算(视频15秒,上传视频15秒)`,key:`example`,width:140,render:(e,t)=>{let n;return t.genType===`image`?n=Math.round(t.baseCredits*t.ratio):(n=Math.round((t.baseCredits+t.perSecondCredits*15)*t.ratio),t.inputVideoRatio&&t.inputVideoPerSecondCredits&&(n+=Math.round((t.inputVideoBaseCredits+t.inputVideoPerSecondCredits*15)*t.inputVideoRatio))),(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)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>E(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>w(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:!1,scroll:{x:1180}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KG,{}),o.ratio?`编辑比例`:`添加比例`]}),open:o.open,onOk:S,onCancel:()=>{s({open:!1,ratio:null}),c.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`genType`,label:`生成类型`,rules:[{required:!0,message:`请选择生成类型`}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`video`,label:`视频`},{value:`image`,label:`图片`}],onChange:()=>{c.setFieldsValue({modelConfigId:void 0,resolution:void 0})}})}),(0,Q.jsx)(X.Item,{name:`modelConfigId`,label:`引擎`,rules:[{required:!0,message:`请选择引擎`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:`请选择引擎`,options:v,showSearch:!0,optionFilterProp:`label`,onChange:()=>c.setFieldsValue({resolution:void 0})})}),(0,Q.jsx)(X.Item,{name:`resolution`,label:h===`image`?`图片尺寸`:`分辨率`,rules:[{required:!0,message:h===`image`?`请选择图片尺寸`:`请选择分辨率`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:h===`image`?`请选择图片尺寸`:`请选择分辨率`,options:b})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`ratio`,label:`倍率`,style:{flex:1},rules:[{required:!0,message:`请输入倍率`}],children:(0,Q.jsx)(Pj,{min:.1,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`baseCredits`,label:`基础积分`,style:{flex:1},rules:[{required:!0,message:`请输入基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:1e3,style:{width:`100%`},size:`large`})}),h!==`image`&&(0,Q.jsx)(X.Item,{name:`perSecondCredits`,label:`每秒积分`,style:{flex:1},rules:[{required:!0,message:`请输入每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`})})]}),h!==`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)(X.Item,{name:`inputVideoRatio`,label:`倍率`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频倍率`}],children:(0,Q.jsx)(Pj,{min:0,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoBaseCredits`,label:`基础积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:500,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoPerSecondCredits`,label:`每秒积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:50,style:{width:`100%`},size:`large`})})]})]})]})})]})},l7={HomeOutlined:(0,Q.jsx)(OQ,{}),PlayCircleOutlined:(0,Q.jsx)(C0,{}),WalletOutlined:(0,Q.jsx)(v8,{}),RobotOutlined:(0,Q.jsx)(W2,{}),SettingOutlined:(0,Q.jsx)(x4,{}),BellOutlined:(0,Q.jsx)(QU,{}),UserOutlined:(0,Q.jsx)(n8,{}),AppstoreOutlined:(0,Q.jsx)(OH,{}),FileTextOutlined:(0,Q.jsx)(BM,{}),StarOutlined:(0,Q.jsx)(S3,{}),HeartOutlined:(0,Q.jsx)(_Q,{}),CameraOutlined:(0,Q.jsx)(sK,{}),DashboardOutlined:(0,Q.jsx)(FJ,{}),CalculatorOutlined:(0,Q.jsx)(KG,{}),DollarOutlined:(0,Q.jsx)(fY,{}),GiftOutlined:(0,Q.jsx)(KZ,{}),ThunderboltOutlined:(0,Q.jsx)(s6,{}),FireOutlined:(0,Q.jsx)(aZ,{}),CloudOutlined:(0,Q.jsx)(jq,{}),SmileOutlined:(0,Q.jsx)(a3,{}),TrophyOutlined:(0,Q.jsx)(w6,{}),RocketOutlined:(0,Q.jsx)(q2,{}),BulbOutlined:(0,Q.jsx)(LG,{}),CodeOutlined:(0,Q.jsx)(Bq,{}),PictureOutlined:(0,Q.jsx)(m0,{}),VideoCameraOutlined:(0,Q.jsx)(m8,{}),AudioOutlined:(0,Q.jsx)(iU,{}),MailOutlined:(0,Q.jsx)(q$,{}),PhoneOutlined:(0,Q.jsx)(s0,{}),GlobalOutlined:(0,Q.jsx)($Z,{}),ShoppingCartOutlined:(0,Q.jsx)(k4,{}),TeamOutlined:(0,Q.jsx)(i6,{}),BarChartOutlined:(0,Q.jsx)(jU,{}),PieChartOutlined:(0,Q.jsx)(_0,{}),LineChartOutlined:(0,Q.jsx)(D$,{}),SecurityScanOutlined:(0,Q.jsx)(m4,{}),ApiOutlined:(0,Q.jsx)(uH,{}),DatabaseOutlined:(0,Q.jsx)(zJ,{}),CloudServerOutlined:(0,Q.jsx)(Nq,{}),MenuOutlined:(0,Q.jsx)(l1,{})},BHe=Object.keys(l7).map(e=>({value:e,label:(0,Q.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[l7[e],` `,e.replace(`Outlined`,``)]})})),VHe={page:`blue`,group:`purple`},HHe={page:`页面`,group:`分组`},UHe=()=>{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]=X.useForm(),l=async()=>{r(!0);try{t(await w5())}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 T5({...t,id:o.menu.id}):await T5(t),CP.success(o.menu?.id?`菜单已更新`:`菜单已添加`),s({open:!1,menu:null}),c.resetFields(),l()}catch{}},d=async e=>{try{await BBe(e),CP.success(`菜单已删除`),l()}catch(e){CP.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&&l7[e]?(0,Q.jsx)(`span`,{style:{fontSize:16,color:`#6366f1`},children:l7[e]}):`-`},{title:`类型`,dataIndex:`menuType`,width:80,render:e=>(0,Q.jsx)(jR,{color:VHe[e]||`default`,children:HHe[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)(jR,{color:`green`,children:`默认`}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})}]:[],{title:`操作`,key:`action`,width:150,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除该菜单?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}];return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`菜单配置`})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加菜单`})]}),(0,Q.jsx)(zA,{activeKey:i,onChange:a,items:[{key:`frontend`,label:`前台菜单`},{key:`admin`,label:`后台菜单`}]}),(0,Q.jsx)(vR,{columns:v,dataSource:h,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(l1,{}),o.menu?.id?`编辑菜单`:`添加菜单`]}),open:o.open,onOk:u,onCancel:()=>{s({open:!1,menu:null}),c.resetFields()},okText:`确认`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`label`,label:`菜单名称`,rules:[{required:!0,message:`请输入菜单名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:我的项目`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`path`,label:`路由路径`,tooltip:`分组类型可留空`,children:(0,Q.jsx)(GN,{placeholder:`例如:/projects(分组可留空)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`menuType`,label:`菜单类型`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`page`,label:`页面`},{value:`group`,label:`分组`}]})}),(0,Q.jsx)(X.Item,{name:`menuTarget`,label:`适用端`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`icon`,label:`图标`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:BHe})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`,placeholder:`默认0`})})]}),(0,Q.jsx)(X.Item,{name:`parentId`,label:`上级菜单`,children:(0,Q.jsx)(Tb,{size:`large`,options:m,allowClear:!0,placeholder:`顶级菜单`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.menuTarget!==t.menuTarget,children:({getFieldValue:e})=>e(`menuTarget`)===`admin`?null:(0,Q.jsx)(X.Item,{name:`isDefault`,label:`新用户默认显示`,valuePropName:`checked`,tooltip:`开启后,新注册用户默认显示此菜单`,children:(0,Q.jsx)(lF,{})})})]})})]})},WHe={normal:`blue`,gift:`green`,promo:`purple`},GHe={normal:`常规`,gift:`赠送`,promo:`促销`},KHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,item:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await D5()).map(e=>({id:e.id,name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonus_credits??e.bonusCredits??0,totalCredits:e.total_credits??e.totalCredits??e.credits,description:e.description,packageType:e.package_type??e.packageType??`normal`,isGift:e.is_gift??e.isGift??!1,isActive:e.is_active??e.isActive??!0,sortOrder:e.sort_order??e.sortOrder??0})))}catch{CP.error(`加载充值套餐失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={name:e.name,credits:e.credits,price:e.price,bonus_credits:e.bonusCredits||0,description:e.description||null,package_type:e.packageType||`normal`,is_gift:e.isGift||!1,is_active:e.isActive??!0,sort_order:e.sortOrder??0};i.item?.id?(await O5({id:i.item.id,...t}),CP.success(`已更新`)):(await O5(t),CP.success(`已添加`)),a({open:!1,item:null}),o.resetFields(),s()}catch{}},l=async e=>{try{await GBe(e),CP.success(`已删除`),s()}catch(e){CP.error(e?.message||`删除失败`)}},u=e=>{a({open:!0,item:e||null}),e?o.setFieldsValue({name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonusCredits,description:e.description,packageType:e.packageType,isGift:e.isGift,isActive:e.isActive,sortOrder:e.sortOrder}):(o.resetFields(),o.setFieldsValue({isActive:!0,sortOrder:0,packageType:`normal`,bonusCredits:0,isGift:!1}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KZ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`充值套餐管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个套餐`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加套餐`})]}),(0,Q.jsx)(vR,{columns:[{title:`套餐名称`,key:`name`,width:160,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),t.description&&(0,Q.jsx)(`div`,{style:{color:`#94a3b8`,fontSize:12},children:t.description})]})},{title:`基础积分`,dataIndex:`credits`,width:100,render:e=>(0,Q.jsx)(Z.Text,{children:e.toLocaleString()})},{title:`赠送积分`,dataIndex:`bonusCredits`,width:100,render:e=>e>0?(0,Q.jsxs)(jR,{color:`green`,children:[`+`,e.toLocaleString()]}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})},{title:`总积分`,key:`total`,width:100,render:(e,t)=>(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:(t.credits+t.bonusCredits).toLocaleString()})},{title:`价格(元)`,dataIndex:`price`,width:100,render:e=>(0,Q.jsxs)(Z.Text,{strong:!0,children:[`¥`,e]})},{title:`类型`,dataIndex:`packageType`,width:80,render:e=>(0,Q.jsx)(jR,{color:WHe[e]||`default`,children:GHe[e]||e})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KZ,{}),i.item?`编辑套餐`:`添加套餐`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,item:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`套餐名称`,rules:[{required:!0,message:`请输入套餐名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:进阶包`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`credits`,label:`基础积分`,rules:[{required:!0,message:`请输入积分`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:1,placeholder:`2000`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`price`,label:`价格(元)`,rules:[{required:!0,message:`请输入价格`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:.01,step:1,placeholder:`168`,size:`large`,style:{width:`100%`}})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`bonusCredits`,label:`赠送积分`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,placeholder:`0`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`packageType`,label:`套餐类型`,initialValue:`normal`,style:{flex:1},children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`normal`,label:`常规`},{value:`gift`,label:`赠送`},{value:`promo`,label:`促销`}]})})]}),(0,Q.jsx)(X.Item,{name:`description`,label:`描述`,children:(0,Q.jsx)(GN,{placeholder:`套餐描述(可选)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`isGift`,label:`是否赠送`,valuePropName:`checked`,initialValue:!1,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{size:`large`,style:{width:`100%`}})})]})]})})]})},qHe={POST:`green`,PUT:`blue`,DELETE:`red`},JHe=()=>{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 KBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载操作日志失败`)}finally{a(!1)}};return(0,C.useEffect)(()=>{c()},[]),(0,Q.jsx)(`div`,{children:(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(TQ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`操作日志`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>c(),children:`刷新`})]}),(0,Q.jsx)(vR,{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)(jR,{color:qHe[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:B5(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}})]})})},YHe=()=>{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]=X.useForm(),[_]=X.useForm(),v=async e=>{a(!0);try{let n=await qBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载应用管理列表失败`)}finally{a(!1)}},y=async()=>{try{let e=await g.validateFields();await JBe({app_id:e.app_id,secret:e.secret,open_type:e.open_type,count:e.count,auth_url:e.auth_url,company:e.company}),CP.success(`创建成功`),l(!1),g.resetFields(),v()}catch(e){CP.error(e?.message||`创建失败`)}},b=async e=>{try{h(await k5(e)),d(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},x=async e=>{try{let t=await k5(e);h(t),_.setFieldsValue({app_id:t.app_id,secret:t.secret,open_type:t.open_type,count:t.max_count,auth_url:t.auth_url,company:t.company}),p(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},S=async()=>{if(m)try{let e=await _.validateFields();await YBe(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}),CP.success(`更新成功`),p(!1),_.resetFields(),v()}catch(e){CP.error(e?.message||`更新失败`)}},w=e=>{TP.confirm({title:`确认删除`,content:`确定要删除这个应用管理吗?`,okText:`删除`,okType:`danger`,cancelText:`取消`,onOk:async()=>{try{await XBe(e),CP.success(`删除成功`),v()}catch(e){CP.error(e?.message||`删除失败`)}}})};return(0,C.useEffect)(()=>{v()},[]),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`应用管理列表`})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>v(),children:`刷新`}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>l(!0),children:`创建`})]})]}),(0,Q.jsx)(vR,{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)(hx,{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)(jR,{color:e===1?`green`:`red`,children:e===1?`正常`:`禁用`})},{title:`授权URL`,dataIndex:`authUrl`,width:200,render:e=>e?(0,Q.jsx)(hx,{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:B5(e)})},{title:`更新时间`,dataIndex:`updatedAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:B5(e)})},{title:`操作`,width:120,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(IN,{}),size:`small`,onClick:()=>b(t.id),children:`详情`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(LR,{}),size:`small`,onClick:()=>x(t.id),children:`更新`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(PR,{}),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)(TP,{title:`创建应用管理`,open:c,onOk:y,onCancel:()=>{l(!1),g.resetFields()},okText:`创建`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:g,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,initialValue:100,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})}),(0,Q.jsx)(TP,{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.app_id]}),(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.open_type]||m.open_type]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`归属公司:`}),` `,m.company||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`授权次数:`}),` `,m.max_count]}),(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.auth_url||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建人:`}),` `,m.create_by]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建时间:`}),` `,B5(m.created_at)]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`更新时间:`}),` `,B5(m.updated_at)]})]})}),(0,Q.jsx)(TP,{title:`更新应用管理`,open:f,onOk:S,onCancel:()=>{p(!1),_.resetFields(),h(null)},okText:`更新`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:_,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})})]})},u7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),d7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},f7={optimizing:{color:`processing`,text:`优化中`,icon:(0,Q.jsx)(fm,{spin:!0})},prompt_optimized:{color:`processing`,text:`待生成`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},p7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},XHe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),m7=e=>!!e&&/^blob:/i.test(e.trim()),h7=e=>{if(!e)return``;let t=String(e).trim();return t?XHe(t)?t:u7?`${u7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},ZHe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,g7=e=>e?B5(e):`-`,QHe=e=>e==null||e===``,_7=e=>{if(!e||m7(e))return!1;try{let t=new URL(h7(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}},v7=e=>e?m7(e)||_7(e)?`invalid`:`checking`:`empty`,y7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},$He=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=y7(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`},b7=(e,t)=>`${t}-${y7(e)||`empty`}`,x7=(e,t=`资源`)=>m7(e)?`本地临时素材已失效`:_7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,S7=({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]}),C7=({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:QHe(t)?`-`:t})]}),eUe=()=>{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)(0),[h,g]=(0,C.useState)(null),[_,v]=(0,C.useState)(d7),[y,b]=(0,C.useState)(!1),x=(0,C.useRef)(null),[S,w]=(0,C.useState)(null),[T,E]=(0,C.useState)(null),D=(0,C.useCallback)(async()=>{a(!0);try{let e=await nVe({userId:d.trim()||void 0,status:l||void 0,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}))),r(e.total||0)}catch{CP.error(`加载记录失败`)}finally{a(!1)}},[l,d,o,c]);(0,C.useEffect)(()=>{D()},[D,p]),(0,C.useEffect)(()=>{if(!h){v(d7);return}let e=(h.references||[]).reduce((e,t,n)=>{let r=y7(t);return e[b7(t,n)]=v7(r),e},{});x.current&&(x.current.pause(),x.current.currentTime=0),b(!1),v({image:v7(h.imageUrl),video:v7(h.videoUrl),videoCover:v7(h.videoCoverUrl),references:e})},[h]);let O=()=>{s(1),m(e=>e+1)},k=(0,C.useCallback)(e=>{g(e)},[]),A=()=>{x.current&&x.current.pause(),b(!1),g(null)},j=e=>{v(t=>({...t,...e}))},M=(e,t)=>{v(n=>({...n,references:{...n.references,[e]:t}}))},N=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(m7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(_7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(h7(e),`_blank`,`noopener,noreferrer`)},P=()=>{if(h?.videoUrl){if(_7(h.videoUrl)){j({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}b(!0),window.setTimeout(()=>{x.current?.play().catch(()=>{b(!1),j({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},F=async(e,t,n)=>{w(e);try{await rVe(e,t,n),CP.success(`状态已更新`),D()}catch(e){CP.error(e?.message||`更新失败`)}finally{w(null)}},I=async()=>{if(T){w(T.record.id);try{await iVe(T.record.id,T.ratio,T.resolution,T.image_size),CP.success(`已提交${T.record.genType===`video`?`视频`:`图片`}生成`),E(null),D()}catch(e){CP.error(e?.message||`生成失败`)}finally{w(null)}}},L=(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:ZHe(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)(jR,{color:`cyan`,children:e||`-`})},{title:`类型`,dataIndex:`genType`,width:90,ellipsis:!0,render:e=>{let t=p7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`提示词`,key:`prompt`,ellipsis:!0,render:(e,t)=>(0,Q.jsx)(hx,{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`?t.duration||t.aspectRatio||t.resolution?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`})},{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=f7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`时间`,key:`time`,width:150,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:g7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,g7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>k(t),children:`详情`}),t.status===`generating`?(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`}):null,t.status===`failed`?(0,Q.jsx)($S,{size:`small`,type:`primary`,danger:!0,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),children:`重试生成`}):null,t.status===`prompt_optimized`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)($S,{size:`small`,type:`primary`,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),style:{background:`#6366f1`,border:`none`},children:[`生成`,t.genType===`video`?`视频`:`图片`]}),(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`})]}):null]})}],[k,S]),R=h?p7[h.genType||``]||{text:h.genType||`-`,color:`default`,icon:null}:null,z=h?f7[h.status]||{color:`default`,text:h.status||`-`,icon:null}:null,B=()=>{if(!h||h.genType!==`image`||h.status!==`completed`)return null;if(!h.imageUrl)return(0,Q.jsx)(S7,{text:`此图片任务暂无结果图片`,minHeight:260});if(_.image===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.imageUrl,`图片`),minHeight:260});let e=h7(h.imageUrl);return(0,Q.jsxs)(`div`,{title:`点击新页面查看图片`,onClick:()=>N(h.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:()=>j({image:`valid`}),onError:()=>j({image:`invalid`}),style:{display:_.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${h.id}-${e}`),_.image===`checking`?(0,Q.jsx)(S7,{text:`图片加载检测中...`,minHeight:260}):null]})},V=()=>{if(!h||y||_.video===`invalid`)return null;let e=h.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:P,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!h.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)(S7,{text:`此视频无封面`,minHeight:340,action:e})});if(_.videoCover===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=h7(h.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:()=>j({videoCover:`valid`}),onError:()=>j({videoCover:`invalid`}),style:{display:_.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${h.id}-cover-${t}`),_.videoCover===`checking`?(0,Q.jsx)(S7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,_.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]})},H=()=>{if(!h||h.genType!==`video`||h.status!==`completed`)return null;if(!h.videoUrl)return(0,Q.jsx)(S7,{text:`此视频任务暂无结果视频`,minHeight:340});if(_.video===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoUrl,`视频`),minHeight:340});let e=h7(h.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:x,src:e,preload:`metadata`,controls:y,onLoadedMetadata:()=>j({video:`valid`}),onCanPlay:()=>j({video:`valid`}),onPlaying:()=>{b(!0),j({video:`valid`})},onPause:()=>b(!1),onEnded:()=>b(!1),onError:()=>{b(!1),j({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!y,pointerEvents:y?`auto`:`none`}},`${h.id}-${e}`),V()]})},U=(e,t)=>{let n=y7(e),r=$He(e),i=b7(e,t),a=_.references[i]||v7(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)(S7,{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)(S7,{text:m7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=h7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>N(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&N(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:()=>M(i,`valid`),onError:()=>M(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:()=>M(i,`valid`),onError:()=>M(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(m8,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`生成记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:200},value:d,onChange:e=>f(e.target.value),onPressEnter:O,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:O,style:{borderRadius:8},children:`搜索`})]})]}),(0,Q.jsx)(vR,{columns:L,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)(TP,{title:(0,Q.jsxs)(IM,{children:[h?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`生成记录详情`})]}),open:!!h,onCancel:A,footer:null,width:900,destroyOnClose:!0,children:h?(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:h.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:h.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)(IM,{size:4,wrap:!0,children:[R?(0,Q.jsx)(jR,{color:R.color,icon:R.icon,children:R.text}):null,z?(0,Q.jsx)(jR,{color:z.color,icon:z.icon,children:z.text}):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:h.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:h.optimizedPrompt||`-`})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`文字积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#f59e0b`},children:h.textCreditsCost||0}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.textTokensUsed||0,` tokens)`]})]})}),(0,Q.jsx)(C7,{label:`${h.genType===`image`?`图片`:`视频`}积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:h.creditsCost||0}),h.genType===`video`&&h.videoTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.videoTokensUsed,` tokens)`]}):null,h.genType===`image`&&h.imageTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.imageTokensUsed,` tokens)`]}):null]})}),(0,Q.jsx)(C7,{label:`总积分`,value:(h.textCreditsCost||0)+(h.creditsCost||0)})]}),h.genType===`video`?h.duration||h.aspectRatio||h.resolution?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`时长`,value:h.duration?`${h.duration}秒`:`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.aspectRatio||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.resolution||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`视频参数待用户配置`})}):null,h.genType===`image`?h.imageSize||h.imageProportion||h.imagePx?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`尺寸`,value:h.imagePx||`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.imageProportion||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.imageSize||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`图片参数待用户配置`})}):null,!h?.references||h.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:h.references.map((e,t)=>U(e,t))})]}),h.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:h.genType===`video`?`生成视频`:`生成图片`}),h.genType===`video`?H():B()]}):null,h.status===`failed`&&h.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:[`错误信息: `,h.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,g7(h.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,g7(h.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[T&&(T.record.genType===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(DX,{})),T&&(T.record.genType===`video`?`生成视频`:`生成图片`)]}),open:!!T,onCancel:()=>E(null),onOk:I,okText:`提交生成`,cancelText:`取消`,confirmLoading:T?S===T.record.id:!1,width:420,children:T?(0,Q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginTop:16},children:T.record.genType===`video`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`时长`}),(0,Q.jsxs)(Z.Text,{strong:!0,children:[T.record.duration||5,`s`]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`画面比例`}),(0,Q.jsx)(Tb,{value:T.ratio,onChange:e=>E(t=>t?{...t,ratio:e}:null),style:{width:`100%`},options:[`16:9`,`4:3`,`1:1`,`3:4`,`9:16`,`21:9`].map(e=>({value:e,label:e}))})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.resolution,onChange:e=>E(t=>t?{...t,resolution:e}:null),style:{width:`100%`},options:[`480p`,`720p`,`1080p`].map(e=>({value:e,label:e}))})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{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:T.record.imagePx||`-`})]}),(0,Q.jsxs)(`div`,{style:{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:T.record.imageProportion||`-`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.image_size,onChange:e=>E(t=>t?{...t,image_size:e}:null),style:{width:`100%`},options:[`2K`,`4K`].map(e=>({value:e,label:e}))})]})]})}):null})]})},{RangePicker:tUe}=gM,w7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),T7=20,E7=e=>e&&(e.name||e.modelName||e.id)||null,D7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},O7={pending:{color:`default`,text:`待处理`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},k7={timeout:`任务超时`,queued:`已入队`,preparing:`准备中`,creating_provider_task:`创建任务中`,waiting_remote:`等待生成`,result_ready:`结果就绪`,downloading:`下载中`,done:`完成`,download_failed:`下载失败`,polling:`轮询中`,failed:`失败`},A7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},nUe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),j7=e=>!!e&&/^blob:/i.test(e.trim()),M7=e=>{if(!e)return``;let t=String(e).trim();return t?nUe(t)?t:w7?`${w7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},rUe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,N7=e=>e?B5(e):`-`,iUe=e=>e==null||e===``,P7=e=>{if(!e||j7(e))return!1;try{let t=new URL(M7(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}},F7=e=>e?j7(e)||P7(e)?`invalid`:`checking`:`empty`,I7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},L7=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=I7(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`},R7=(e,t)=>`${t}-${I7(e)||`empty`}`,z7=(e,t=`资源`)=>j7(e)?`本地临时素材已失效`:P7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,B7=({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]}),V7=({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:iUe(t)?`-`:t})]}),H7=()=>(0,tC.default)().startOf(`day`),U7=()=>(0,tC.default)().endOf(`day`),aUe=()=>{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)([H7(),U7()]),[D,O]=(0,C.useState)([H7(),U7()]),[k,A]=(0,C.useState)(0),[j,M]=(0,C.useState)(null),[N,P]=(0,C.useState)(D7),[F,I]=(0,C.useState)(!1),L=(0,C.useRef)(null),[R,z]=(0,C.useState)(null),B=(0,C.useCallback)(async()=>{a(!0);try{let e=await oVe({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:T7});t(e.items||[]),r(e.total||0)}catch(e){CP.error(e?.message||`加载创作记录失败`)}finally{a(!1)}},[u,c,o,v,b,S,D]);(0,C.useEffect)(()=>{B()},[B,k]),(0,C.useEffect)(()=>{if(!j){P(D7);return}let e=(j.mediaReferences||[]).reduce((e,t,n)=>{let r=I7(t);return e[R7(t,n)]=F7(r),e},{});L.current&&(L.current.pause(),L.current.currentTime=0),I(!1),P({image:F7(j.imageUrl),video:F7(j.videoUrl),videoCover:F7(j.videoCoverUrl),references:e})},[j]);let V=()=>{s(1),y(m.trim()),x(g.trim()),w(f),O(T),A(e=>e+1)},H=()=>{l(``),d(``),p(``),h(``),_(``),y(``),x(``),w(``);let e=[H7(),U7()];E(e),O(e),s(1),A(e=>e+1)},U=(0,C.useCallback)(e=>{M(e)},[]),W=()=>{L.current&&L.current.pause(),I(!1),M(null)},ee=e=>{P(t=>({...t,...e}))},te=(e,t)=>{P(n=>({...n,references:{...n.references,[e]:t}}))},ne=()=>{if(j?.videoUrl){if(P7(j.videoUrl)){ee({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}I(!0),window.setTimeout(()=>{L.current?.play().catch(()=>{I(!1),ee({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},re=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(M7(e),`_blank`,`noopener,noreferrer`)},ie=(e,t,n)=>{if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`链接已超时,请刷新列表或重新搜索后再查看`);return}z({url:M7(e),type:t,title:n})},ae=()=>z(null),G=(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:rUe(t.userId)})]})},{title:`类型`,dataIndex:`genType`,width:90,render:e=>{let t=A7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`引擎`,key:`engine`,width:160,render:(e,t)=>{let n=E7(t.engineSnapshot);return(0,Q.jsx)(hx,{title:t.engineId||`未知引擎`,placement:`topLeft`,children:(0,Q.jsx)(jR,{icon:(0,Q.jsx)(W2,{}),color:`cyan`,children:n||t.engineId||`-`})})}},{title:`附件`,key:`references`,width:110,render:(e,t)=>{let n=t.mediaReferences||[];if(n.length===0)return(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`},children:`无`});let r=n.filter(e=>L7(e)===`image`).length,i=n.filter(e=>L7(e)===`video`).length,a=n.length-r-i;return(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[r>0?(0,Q.jsxs)(jR,{color:`purple`,icon:(0,Q.jsx)(DX,{}),children:[r,` 图`]}):null,i>0?(0,Q.jsxs)(jR,{color:`geekblue`,icon:(0,Q.jsx)(m8,{}),children:[i,` 视频`]}):null,a>0?(0,Q.jsxs)(jR,{children:[a,` 文件`]}):null]})}},{title:`结果`,key:`result`,width:90,render:(e,t)=>t.status===`completed`?t.genType===`video`&&t.videoUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(C0,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),re(t.videoUrl,`视频`)},children:`看视频`}):t.genType===`image`&&t.imageUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(DX,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),re(t.imageUrl,`图片`)},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)(hx,{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)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`无参数`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{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=O7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`阶段`,dataIndex:`pipelineStage`,width:120,render:e=>(0,Q.jsx)(jR,{color:`blue`,children:k7[e]||e||`-`})},{title:`时间`,key:`time`,width:170,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:N7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,N7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:90,fixed:`right`,render:(e,t)=>(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>U(t),children:`详情`})}],[U]),oe=j?A7[j.genType]||{text:j.genType||`-`,color:`default`,icon:null}:null,K=j?O7[j.status]||{color:`default`,text:j.status||`-`,icon:null}:null,se=()=>{if(!j||j.genType!==`image`||j.status!==`completed`)return null;if(!j.imageUrl)return(0,Q.jsx)(B7,{text:`此图片任务暂无结果图片`,minHeight:260});if(N.image===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.imageUrl,`图片`),minHeight:260});let e=M7(j.imageUrl);return(0,Q.jsxs)(`div`,{style:{position:`relative`,width:`100%`,minHeight:260,borderRadius:12,background:`#f8f9fc`,border:`1px solid #e2e8f0`,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:[(0,Q.jsx)(`img`,{src:e,alt:`生成图片`,onLoad:()=>ee({image:`valid`}),onError:()=>ee({image:`invalid`}),style:{display:N.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${j.id}-${e}`),N.image===`checking`?(0,Q.jsx)(B7,{text:`图片加载检测中...`,minHeight:260}):null]})},ce=()=>{if(!j||F||N.video===`invalid`)return null;let e=j.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:ne,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!j.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)(B7,{text:`此视频无封面`,minHeight:340,action:e})});if(N.videoCover===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=M7(j.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:()=>ee({videoCover:`valid`}),onError:()=>ee({videoCover:`invalid`}),style:{display:N.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${j.id}-cover-${t}`),N.videoCover===`checking`?(0,Q.jsx)(B7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,N.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]})},le=()=>{if(!j||j.genType!==`video`||j.status!==`completed`)return null;if(!j.videoUrl)return(0,Q.jsx)(B7,{text:`此视频任务暂无结果视频`,minHeight:340});if(N.video===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoUrl,`视频`),minHeight:340});let e=M7(j.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:L,src:e,preload:`metadata`,controls:F,onLoadedMetadata:()=>ee({video:`valid`}),onCanPlay:()=>ee({video:`valid`}),onPlaying:()=>{I(!0),ee({video:`valid`})},onPause:()=>I(!1),onEnded:()=>I(!1),onError:()=>{I(!1),ee({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!F,pointerEvents:F?`auto`:`none`}},`${j.id}-${e}`),ce()]})},ue=(e,t)=>{let n=I7(e),r=L7(e),i=R7(e,t),a=N.references[i]||F7(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)(B7,{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)(B7,{text:j7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=M7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>re(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&re(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:()=>te(i,`valid`),onError:()=>te(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:()=>te(i,`valid`),onError:()=>te(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`创作记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(Tb,{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)(Tb,{allowClear:!0,showSearch:!0,placeholder:`引擎筛选`,value:f||void 0,style:{width:180},onChange:e=>{p(e||``),s(1),w(e||``)},optionFilterProp:`label`,options:Array.from(new Map(e.filter(e=>e.engineId).map(e=>[e.engineId,{value:e.engineId,label:E7(e.engineSnapshot)||e.engineId}])).values())}),(0,Q.jsx)(tUe,{value:T,onChange:e=>{E(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:m,onChange:e=>h(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)(GN,{placeholder:`用户名搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:g,onChange:e=>_(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:V,style:{borderRadius:8},children:`搜索`}),(0,Q.jsx)($S,{onClick:H,style:{borderRadius:8},children:`重置`})]})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:i,columns:G,dataSource:e,scroll:{x:1650},pagination:{current:o,pageSize:T7,total:n,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:e=>s(e)}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[j?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`创作记录详情`})]}),open:!!j,onCancel:W,footer:null,width:900,destroyOnClose:!0,children:j?(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:[oe?(0,Q.jsx)(jR,{color:oe.color,icon:oe.icon,children:oe.text}):null,K?(0,Q.jsx)(jR,{color:K.color,icon:K.icon,children:K.text}):null,j.pipelineStage?(0,Q.jsx)(jR,{color:`blue`,children:k7[j.pipelineStage]||j.pipelineStage}):null]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`用户名称`,value:j.userName||`未知用户`}),(0,Q.jsx)(V7,{label:`用户ID`,value:j.userId||`-`}),(0,Q.jsx)(V7,{label:`任务ID`,value:j.id})]}),(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:j.originalPrompt||`-`})]}),j.genType===`video`?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`时长`,value:j.duration?`${j.duration}秒`:`-`}),(0,Q.jsx)(V7,{label:`画面比例`,value:j.aspectRatio||`-`}),(0,Q.jsx)(V7,{label:`分辨率`,value:j.resolution||`-`})]}):(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`图片档位`,value:j.imageSize||`-`}),(0,Q.jsx)(V7,{label:`图片比例`,value:j.imageProportion||`-`}),(0,Q.jsx)(V7,{label:`像素尺寸`,value:j.imagePx||`-`})]}),j.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)(V7,{label:`引擎名称`,value:j.engineSnapshot.name||`-`}),(0,Q.jsx)(V7,{label:`服务商`,value:j.engineSnapshot.provider||`-`}),(0,Q.jsx)(V7,{label:`模型`,value:j.engineSnapshot.modelName||`-`}),(0,Q.jsx)(V7,{label:`引擎ID`,value:j.engineSnapshot.id||j.engineId||`-`})]})]}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`总积分`,value:(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:j.creditsCost||0})}),(0,Q.jsx)(V7,{label:`文字积分`,value:`${j.textCreditsCost||0} (${j.textTokensUsed||0} tokens)`}),(0,Q.jsx)(V7,{label:`图片 tokens`,value:j.imageTokensUsed??0}),(0,Q.jsx)(V7,{label:`视频 tokens`,value:j.videoTokensUsed??0})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`第三方任务ID`,value:j.providerTaskId||j.seedanceTaskId||`-`}),(0,Q.jsx)(V7,{label:`轮询次数`,value:j.pollCount??0}),(0,Q.jsx)(V7,{label:`重试次数`,value:j.retryCount??0})]}),!j?.mediaReferences||j.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:j.mediaReferences.map((e,t)=>ue(e,t))})]}),j.mediaReferences&&j.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)(IM,{size:8,wrap:!0,children:j.mediaReferences.map((e,t)=>{let n=I7(e),r=L7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)($S,{size:`small`,icon:r===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(j$,{}),onClick:()=>ie(n,r===`video`?`video`:`image`,i),children:i},t):null})})]}):null,j.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:6},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`},children:j.genType===`video`?`生成视频`:`生成图片`}),j.genType===`video`&&j.videoUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(C0,{}),onClick:()=>ie(j.videoUrl,`video`,`生成视频`),style:{padding:0},children:`弹窗播放`}):null,j.genType===`image`&&j.imageUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(DX,{}),onClick:()=>ie(j.imageUrl,`image`,`生成图片`),style:{padding:0},children:`弹窗查看`}):null]}),j.genType===`video`?le():se()]}):null,j.status===`failed`&&j.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:[`错误信息: `,j.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,N7(j.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,N7(j.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:R?.title||`资源预览`,open:!!R,onCancel:ae,footer:null,width:R?.type===`video`?800:600,destroyOnHidden:!0,children:R?R.type===`video`?(0,Q.jsx)(`video`,{src:R.url,controls:!0,autoPlay:!0,style:{width:`100%`,maxHeight:600,background:`#000`,borderRadius:8}},R.url):(0,Q.jsx)(`img`,{src:R.url,alt:R.title,style:{width:`100%`,maxHeight:600,objectFit:`contain`,borderRadius:8}}):null})]})},W7=20,oUe=[{value:`pending`,label:`已创建`},{value:`waiting_user`,label:`等待用户操作`},{value:`processing`,label:`处理中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`},{value:`cancelled`,label:`已取消`}],sUe={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:`已取消`}},cUe={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},G7=e=>e?B5(e):`-`,K7=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,lUe=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=sUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},uUe=()=>{let e=Ze(),[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 sVe({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:W7});n(e.items||[]),i(e.total||0)}catch(e){CP.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.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`爆款开头复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看任务列表、素材、步骤详情和生成结果。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>k(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`任务状态`,style:{width:160},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:oUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/项目名/核心点`,style:{width:260},value:d,onChange:e=>f(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:p,onChange:e=>m(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:h,onChange:e=>g(e.target.value),onPressEnter:j}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:_,onChange:v,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:j,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(null),b(``),S(``),T(``),D(null),c(1),k(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:W7,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1380},columns:[{title:`项目ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:K7(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:K7(t.userId)})]})},{title:`项目信息`,width:260,render:(e,t)=>(0,Q.jsxs)(IM,{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)(lUe,{status:e})},{title:`当前步骤`,dataIndex:`currentStepCode`,width:140,render:e=>cUe[e]||e||`-`},{title:`图片结果`,dataIndex:`finalImageUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`视频结果`,dataIndex:`finalVideoUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`错误信息`,dataIndex:`errorMessage`,width:220,ellipsis:!0,render:e=>e||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:G7},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:G7},{title:`操作`,fixed:`right`,width:110,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/hot-opening-replications/${n.id}`),children:`详情`})}]})]})})})},q7=({value:e,maxHeight:t=420})=>e==null||e===``?(0,Q.jsx)(Yy,{image:Yy.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)}),dUe=({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)(q7,{value:e})}),t!==void 0&&o.push({key:`output`,label:i,children:(0,Q.jsx)(q7,{value:t})}),n!==void 0&&o.push({key:`raw`,label:a,children:(0,Q.jsx)(q7,{value:n})}),o.length?(0,Q.jsx)(Wh,{size:`small`,style:{marginTop:12},items:o}):null},fUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``);function pUe(e){if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${fUe}${t.startsWith(`/`)?t:`/${t}`}`:``}var J7=({url:e,type:t,height:n=260,emptyDescription:r=`暂无资源`,errorDescription:i=`资源加载失败,可能文件不存在、签名过期或访问权限受限。`})=>{let a=(0,C.useMemo)(()=>pUe(e),[e]),[o,s]=(0,C.useState)(!1);(0,C.useEffect)(()=>{s(!1)},[a]);let c=a?(0,Q.jsxs)(IM,{wrap:!0,style:{marginTop:8},children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(oz,{}),onClick:async()=>{if(a)try{await navigator.clipboard.writeText(a),CP.success(`资源地址已复制`)}catch{CP.error(`复制失败,请手动复制`)}},children:`复制地址`}),(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(j$,{}),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)(cf,{type:`warning`,showIcon:!0,message:`资源预览失败`,description:i,style:{marginBottom:8}}):null,t===`image`?(0,Q.jsx)(jN,{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)(Yy,{image:Yy.PRESENTED_IMAGE_SIMPLE,description:r})})})},Y7={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`},waiting_remote:{text:`等待远端结果`,color:`processing`},polling:{text:`轮询远端结果`,color:`processing`},result_ready:{text:`结果已就绪`,color:`success`},downloading:{text:`下载中`,color:`processing`},done:{text:`已完成`,color:`success`},download_failed:{text:`下载失败`,color:`error`},retry_waiting:{text:`等待重试`,color:`orange`},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`}},X7={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},Z7={hot_opening_replicate:`爆款开头复刻`,shot_replicate:`拆镜复刻`},Q7={ai_suggestion:{text:`AI 建议`,color:`purple`},custom:{text:`自定义`,color:`cyan`},original:{text:`原视频`,color:`blue`}};function $7(e){return e?Z7[e]||e:`-`}function e9(e){return e?X7[e]||e:`-`}function mUe(e){return e?Y7[e]?.text||X7[e]||Z7[e]||Q7[e]?.text||e:`-`}function hUe(e){return e?Y7[e]?.color||Q7[e]?.color||`blue`:`default`}var t9=({status:e,tooltipRaw:t=!0})=>{if(e==null||e===``)return(0,Q.jsx)(jR,{children:`-`});let n=String(e),r=mUe(n),i=(0,Q.jsx)(jR,{color:hUe(n),children:r});return!t||r===n?i:(0,Q.jsx)(hx,{title:n,children:i})};function n9(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function r9(e,...t){for(let n of t){let t=e[n];if(t!=null&&String(t).trim()!==``)return String(t)}return``}function i9(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 gUe(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 a9(e){if(!n9(e))return null;let t=r9(e,`key`);return t?{key:t,label:r9(e,`label`)||t,type:r9(e,`type`)||void 0,enabled:i9(e,!0,`enabled`),editable:i9(e,!0,`editable`),maxLength:gUe(e,`maxLength`,`max_length`)}:null}function o9(e){if(!n9(e))return null;let t=e.data;return n9(t)?t:Array.isArray(e.sections)?e:null}function _Ue(e){return!!o9(e)}function vUe(e){let t=o9(e);return(Array.isArray(t?.sections)?t.sections:[]).map(e=>{let t=a9(e);if(!t||!n9(e))return null;let n=Array.isArray(e.children)?e.children.map(a9).filter(Boolean):[],r=Array.isArray(e.itemFields)?e.itemFields.map(a9).filter(Boolean):Array.isArray(e.item_fields)?e.item_fields.map(a9).filter(Boolean):[];return{...t,contentKey:r9(e,`contentKey`,`content_key`)||void 0,children:n,itemFields:r}}).filter(e=>!!e&&e.enabled)}function yUe(e){return n9(e)?Object.entries(e).filter(([e])=>![`schemaVersion`,`schemaUsage`,`schema_version`,`schema_usage`].includes(e)).map(([e,t])=>Array.isArray(t)&&t.every(n9)?{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:[]}:n9(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 s9=e=>!!e&&typeof e==`object`&&!Array.isArray(e),c9=e=>typeof e==`string`&&e.length>80,l9=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)(q7,{value:e,maxHeight:220}),u9=e=>e?(0,Q.jsx)(jR,{color:`processing`,children:`可编辑`}):(0,Q.jsx)(jR,{color:`default`,children:`只读`}),d9=(e,t)=>e[t],bUe=(e,t)=>{let n=d9(e,t.key);if(!s9(n))return(0,Q.jsx)(q7,{value:n??{},maxHeight:220});let r=t.children.filter(e=>e.enabled);return r.length?(0,Q.jsx)(bM,{size:`small`,column:2,bordered:!0,children:r.map(e=>(0,Q.jsx)(bM.Item,{label:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),span:c9(n[e.key])||s9(n[e.key])||Array.isArray(n[e.key])?2:1,children:l9(n[e.key])},e.key))}):(0,Q.jsx)(q7,{value:n,maxHeight:220})},xUe=(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}))},SUe=(e,t)=>{let n=d9(e,t.key);if(!Array.isArray(n)||!n.every(s9))return(0,Q.jsx)(q7,{value:n??[],maxHeight:260});let r=n,i=xUe(t,r);return(0,Q.jsx)(vR,{size:`small`,rowKey:(e,n)=>`${t.key}-${n}`,columns:i.map(e=>({title:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),dataIndex:e.key,key:e.key,width:c9(r.find(t=>t[e.key])?.[e.key])?320:160,render:e=>l9(e)})),dataSource:r,pagination:!1,scroll:{x:Math.max(900,i.length*180)},tableLayout:`fixed`})},CUe=(e,t)=>l9(d9(e,t.key)),wUe=({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)(Yy,{description:`暂无视频提词 schema`});let s=o?e:{},c=_Ue(n),l=(c?vUe(n):yUe(s)).filter(e=>e.key in s).map(e=>({key:e.key,label:(0,Q.jsxs)(IM,{size:8,wrap:!0,children:[(0,Q.jsx)(`span`,{children:e.label}),u9(e.editable),c?null:(0,Q.jsx)(jR,{color:`warning`,children:`管理后台兜底展示`})]}),children:e.type===`object`?bUe(s,e):e.type===`flow`?SUe(s,e):CUe(s,e)}));return(0,Q.jsxs)(IM,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,Q.jsx)(VA,{size:`small`,title:`Schema 配置来源`,children:(0,Q.jsxs)(bM,{size:`small`,column:3,bordered:!0,children:[(0,Q.jsx)(bM.Item,{label:`来源`,children:r||n?.source||(c?`-`:`viewer_fallback`)}),(0,Q.jsx)(bM.Item,{label:`版本`,children:i||n?.version||`-`}),(0,Q.jsx)(bM.Item,{label:`历史兜底`,children:a||!c?(0,Q.jsx)(jR,{color:`warning`,children:`是`}):(0,Q.jsx)(jR,{color:`success`,children:`否`})})]})}),t?(0,Q.jsx)(VA,{size:`small`,title:`最终视频提示词`,children:(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:t})}):null,l.length?(0,Q.jsx)(Wh,{size:`small`,items:l}):o?(0,Q.jsx)(VA,{size:`small`,title:`视频提词 Schema`,children:(0,Q.jsx)(q7,{value:s,maxHeight:360})}):null,o?(0,Q.jsx)(Wh,{size:`small`,items:[{key:`raw_schema`,label:`原始 JSON / 历史脏字段排查`,children:(0,Q.jsx)(q7,{value:s,maxHeight:420})}]}):null]})},TUe=[`material_input`,`image_prompt_optimize`,`image_generate`,`video_prompt_optimize`,`video_generate`],EUe={material_input:`参考素材、项目名称和核心内容点`,image_prompt_optimize:`图片 AI 提词优化结果`,image_generate:`图片引擎、生成参数和结果图`,video_prompt_optimize:`视频 JSON schema、动作流程和最终提词`,video_generate:`视频引擎、生成参数、封面和结果视频`},f9=e=>e?B5(e):`-`,p9=e=>e?e.length>18?`${e.slice(0,10)}...${e.slice(-4)}`:e:`-`,DUe=({text:e=`-`})=>(0,Q.jsx)(Z.Text,{type:`secondary`,children:e}),m9=({step:e})=>e?(0,Q.jsx)(dUe,{input:e.input,output:e.output}):null,h9=({index:e,stepCode:t,step:n,current:r})=>(0,Q.jsxs)(IM,{wrap:!0,size:8,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`第${e}步:${e9(t)}`}),(0,Q.jsx)(t9,{status:n?.status||`not_started`}),r?(0,Q.jsx)(jR,{color:`blue`,children:`当前步骤`}):null,(0,Q.jsx)(Z.Text,{type:`secondary`,children:EUe[t]||t}),n?.updatedAt?(0,Q.jsxs)(Z.Text,{type:`secondary`,children:[`更新时间:`,f9(n.updatedAt)]}):null,n?.chatTaskId?(0,Q.jsx)(hx,{title:n.chatTaskId,children:(0,Q.jsxs)(jR,{children:[`Chat:`,p9(n.chatTaskId)]})}):null]}),OUe=(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)},g9=(e,t=`错误信息`)=>e?(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:t,description:e,style:{marginTop:12,marginBottom:12}}):null,kUe=(e,t=`暂无提词`)=>e?(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:e}):(0,Q.jsx)(DUe,{text:t}),_9=({moduleType:e=`shot_replicate`})=>{let{projectId:t}=tt(),n=Ze(),[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(!1),s=(0,C.useCallback)(async()=>{if(t){o(!0);try{i(e===`hot_opening_replicate`?await cVe(t):await pVe(t))}catch(e){CP.error(e?.message||`加载复刻项目详情失败`)}finally{o(!1)}}},[e,t]);(0,C.useEffect)(()=>{s()},[s]);let c=(0,C.useMemo)(()=>{let e={};return(r?.steps||[]).forEach(t=>{e[t.stepCode]=t}),e},[r]),l=r?.module||e,u=$7(l),d=(0,C.useMemo)(()=>TUe.map(e=>{let t=c[e],n=`wait`;return t?.status===`completed`?n=`finish`:t?.status===`processing`?n=`process`:t?.status===`failed`&&(n=`error`),{title:e9(e),description:t?(0,Q.jsx)(t9,{status:t.status}):`未创建`,status:n}}),[c]),f=(0,C.useMemo)(()=>OUe(r,c),[r,c]);if(a&&!r)return(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})});if(!r)return(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到复刻项目详情`})});let p=c.material_input,m=c.image_prompt_optimize,h=c.image_generate,g=c.video_prompt_optimize,_=c.video_generate,v=r.imageGeneration?.resultImageUrl||r.finalImageUrl,y=r.videoGeneration?.resultVideoCoverUrl||r.finalVideoCoverUrl,b=r.videoGeneration?.resultVideoUrl||r.finalVideoUrl,x=[{key:`material_input`,label:(0,Q.jsx)(h9,{index:1,stepCode:`material_input`,step:p,current:r.currentStepCode===`material_input`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`素材步骤ID`,children:r.material?.materialStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`参考素材项目名`,children:r.material?.sourceProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成项目名称`,children:r.material?.targetProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`核心内容点`,span:2,children:r.material?.coreContentPoint||`-`})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`素材视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:r.material?.materialVideoUrl,emptyDescription:`暂无素材视频`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`素材图片`]}),children:(0,Q.jsx)(J7,{type:`image`,url:r.material?.materialImageUrl,emptyDescription:`暂无素材图片`})})]}),g9(p?.errorMessage),(0,Q.jsx)(m9,{step:p})]})},{key:`image_prompt_optimize`,label:(0,Q.jsx)(h9,{index:2,stepCode:`image_prompt_optimize`,step:m,current:r.currentStepCode===`image_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.imageGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:m?.status||r.imageGeneration?.status})}),(0,Q.jsx)(bM.Item,{label:`图片提示词`,span:2,children:kUe(r.imageGeneration?.prompt,`暂无图片提示词`)})]}),g9(m?.errorMessage||r.imageGeneration?.errorMessage),(0,Q.jsx)(m9,{step:m})]})},{key:`image_generate`,label:(0,Q.jsx)(h9,{index:3,stepCode:`image_generate`,step:h,current:r.currentStepCode===`image_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.imageGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.imageGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.imageGeneration?.status||h?.status})}),(0,Q.jsx)(bM.Item,{label:`图片引擎ID`,children:r.imageGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`图片引擎名称`,children:r.imageGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.imageGeneration?.params||{},maxHeight:160})})]}),g9(r.imageGeneration?.errorMessage||h?.errorMessage),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`图片结果`]}),children:(0,Q.jsx)(J7,{type:`image`,url:v,height:360,emptyDescription:h?.status===`failed`||r.imageGeneration?.errorMessage?`图片生成失败,未返回图片地址`:`暂无图片结果`,errorDescription:`图片资源加载失败,可能图片文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(m9,{step:h})]})},{key:`video_prompt_optimize`,label:(0,Q.jsx)(h9,{index:4,stepCode:`video_prompt_optimize`,step:g,current:r.currentStepCode===`video_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.videoGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:g?.status})}),(0,Q.jsx)(bM.Item,{label:`提词参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.promptParams||{},maxHeight:160})})]}),g9(g?.errorMessage||r.videoGeneration?.errorMessage),(0,Q.jsx)(wUe,{schema:r.videoGeneration?.promptSchema,finalPrompt:r.videoGeneration?.finalPrompt,schemaConfigSnapshot:r.videoGeneration?.schemaConfigSnapshot,schemaConfigSource:r.videoGeneration?.schemaConfigSource,schemaConfigVersion:r.videoGeneration?.schemaConfigVersion,schemaConfigIsFallback:r.videoGeneration?.schemaConfigIsFallback}),(0,Q.jsx)(m9,{step:g})]})},{key:`video_generate`,label:(0,Q.jsx)(h9,{index:5,stepCode:`video_generate`,step:_,current:r.currentStepCode===`video_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.videoGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.videoGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.videoGeneration?.status||_?.status})}),(0,Q.jsx)(bM.Item,{label:`视频引擎ID`,children:r.videoGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`视频引擎名称`,children:r.videoGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.params||{},maxHeight:160})})]}),g9(r.videoGeneration?.errorMessage||_?.errorMessage),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`视频封面`]}),children:(0,Q.jsx)(J7,{type:`image`,url:y,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回封面`:`暂无视频封面`,errorDescription:`视频封面加载失败,可能文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m8,{}),`最终视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:b,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回视频地址`:`暂无最终视频`,errorDescription:`视频资源加载失败,可能文件不存在、签名过期或访问权限受限。`})})]}),(0,Q.jsx)(m9,{step:_})]})}];return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>n(-1),children:`返回`}),(0,Q.jsxs)(Z.Title,{level:3,style:{margin:0},children:[u,`项目详情`]}),(0,Q.jsx)(t9,{status:r.status}),r.module&&r.module!==e?(0,Q.jsxs)(jR,{color:`gold`,children:[`接口模块:`,$7(r.module)]}):null]}),(0,Q.jsx)($S,{onClick:s,loading:a,children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`基础信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`项目ID`,children:r.id}),(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:r.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:r.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:r.title||`-`}),(0,Q.jsx)(bM.Item,{label:`当前步骤`,children:(0,Q.jsx)(hx,{title:r.currentStepCode||``,children:e9(r.currentStepCode)})}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.status})}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:f9(r.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:f9(r.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`完成时间`,children:f9(r.completedAt)}),r.errorMessage?(0,Q.jsx)(bM.Item,{label:`错误信息`,span:3,children:(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:r.errorMessage})}):null]})}),(0,Q.jsx)(VA,{title:`步骤进度`,children:(0,Q.jsx)(Qme,{items:d})}),(0,Q.jsx)(VA,{title:`最终结果预览`,children:(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:`最终图片`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalImageUrl||r.imageGeneration?.resultImageUrl,height:220,emptyDescription:`暂无最终图片`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频封面`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalVideoCoverUrl||r.videoGeneration?.resultVideoCoverUrl,height:220,emptyDescription:`暂无最终视频封面`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频`,children:(0,Q.jsx)(J7,{type:`video`,url:r.finalVideoUrl||r.videoGeneration?.resultVideoUrl,height:220,emptyDescription:`暂无最终视频`})})]})}),(0,Q.jsx)(Wh,{defaultActiveKey:f,items:x}),(0,Q.jsx)(Wh,{items:[{key:`steps-table`,label:`完整步骤列表`,children:(0,Q.jsx)(vR,{rowKey:`id`,size:`small`,pagination:!1,dataSource:r.steps||[],scroll:{x:1100},columns:[{title:`序号`,dataIndex:`stepIndex`,width:70},{title:`步骤`,dataIndex:`stepCode`,width:160,render:e=>(0,Q.jsx)(hx,{title:e,children:e9(e)})},{title:`状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(t9,{status:e})},{title:`版本`,dataIndex:`version`,width:70},{title:`当前有效`,dataIndex:`isCurrent`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`是`}):(0,Q.jsx)(jR,{children:`否`})},{title:`Chat任务`,dataIndex:`chatTaskId`,width:160,render:e=>(0,Q.jsx)(hx,{title:e||``,children:p9(e)})},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:f9},{title:`完成时间`,dataIndex:`completedAt`,width:170,render:f9},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0,render:e=>e||`-`}]})},{key:`raw-detail`,label:`完整详情原始 JSON`,children:(0,Q.jsx)(q7,{value:r,maxHeight:520})}]})]})})},AUe=()=>(0,Q.jsx)(_9,{moduleType:`hot_opening_replicate`}),v9=20,jUe=[{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:`失败`}],MUe=[{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],NUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],PUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`}},y9=e=>e?B5(e):`-`,b9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,x9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=PUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},FUe=()=>{let e=Ze(),[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 lVe({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:v9});n(e.items||[]),i(e.total||0)}catch(e){CP.error(e?.message||`加载拆镜复刻任务失败`)}finally{o(!1)}},[d,s,A,w,E,O,p,l]);(0,C.useEffect)(()=>{P()},[P,M]);let F=()=>{T(h.trim()),D(_.trim()),k(y.trim()),j(x),c(1)};return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`拆镜复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看拆镜总任务、AI 分析结果、切片列表和关联复刻项目。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>N(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`总任务状态`,style:{width:150},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:jUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:d||void 0,onChange:e=>{f(e||``),c(1)},options:MUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`拆镜状态`,style:{width:140},value:p||void 0,onChange:e=>{m(e||``),c(1)},options:NUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/内容/分类/受众`,style:{width:260},value:h,onChange:e=>g(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:_,onChange:e=>v(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:y,onChange:e=>b(e.target.value),onPressEnter:F}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:x,onChange:S,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:F,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(``),b(``),S(null),T(``),D(``),k(``),j(null),c(1),N(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:v9,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1500},columns:[{title:`任务集ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:b9(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:b9(t.userId)})]})},{title:`任务信息`,width:300,render:(e,t)=>(0,Q.jsxs)(IM,{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)(x9,{status:e})},{title:`分析状态`,dataIndex:`analysisStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`拆镜状态`,dataIndex:`splitStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`切片进度`,width:180,render:(e,t)=>{let n=t.segmentCount||0,r=t.completedSegmentCount||0;return(0,Q.jsx)(zP,{size:`small`,percent:n?Math.round(r/n*100):0,format:()=>`${r}/${n}`})}},{title:`失败片段`,dataIndex:`failedSegmentCount`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`error`,children:e}):(0,Q.jsx)(jR,{children:`0`})},{title:`视频时长`,dataIndex:`videoDurationSeconds`,width:100,render:e=>`${Number(e||0).toFixed(1)}s`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:y9},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:y9},{title:`操作`,fixed:`right`,width:120,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/shot-replications/task-sets/${n.id}`),children:`查看切片`})}]})]})})})},IUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),S9=20,LUe=[{value:`ai_suggestion`,label:`AI 建议`},{value:`custom`,label:`自定义`}],RUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],zUe=[{value:`not_required`,label:`无需分析`},{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],BUe=[{value:`not_started`,label:`未复刻`},{value:`project_created`,label:`已创建项目`},{value:`processing`,label:`复刻中`},{value:`completed`,label:`复刻完成`},{value:`failed`,label:`复刻失败`}],VUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`},not_required:{color:`default`,text:`无需分析`},not_started:{color:`default`,text:`未复刻`},project_created:{color:`processing`,text:`已创建项目`}},HUe=e=>{if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${IUe}${t.startsWith(`/`)?t:`/${t}`}`:``},C9=e=>e?B5(e):`-`,w9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,T9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=VUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},E9=({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:HUe(e),controls:!0,preload:`metadata`,style:{width:`100%`,maxHeight:t,borderRadius:12,background:`#0f172a`}}):(0,Q.jsx)(Yy,{description:`暂无视频`,image:Yy.PRESENTED_IMAGE_SIMPLE}),UUe=({items:e=[]})=>(0,Q.jsx)(vR,{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}]}),WUe=()=>{let{taskSetId:e}=tt(),t=Ze(),[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 uVe(e))}catch(e){CP.error(e?.message||`加载拆镜任务详情失败`)}finally{d(!1)}}},[e]),A=(0,C.useCallback)(async()=>{if(e){p(!0);try{let t=await dVe(e,{sourceMode:g||void 0,splitStatus:v||void 0,analysisStatus:b||void 0,replicateStatus:S||void 0,page:c,pageSize:S9});a(t.items||[]),s(t.total||0)}catch(e){CP.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=async e=>{E(!0),O(null);try{O(await fVe(e))}catch(e){CP.error(e?.message||`加载片段详情失败`)}};return u&&!n?(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})}):n?(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>t(`/shot-replications`),children:`返回列表`}),(0,Q.jsx)(Z.Title,{level:3,style:{margin:0},children:`拆镜任务详情`}),(0,Q.jsx)(T9,{status:n.status})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>h(e=>e+1),children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`总任务信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`任务集ID`,children:n.id}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:n.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:n.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:n.title||`-`}),(0,Q.jsxs)(bM.Item,{label:`视频时长`,children:[Number(n.videoDurationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`总状态`,children:(0,Q.jsx)(T9,{status:n.status})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:n.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`拆镜状态`,children:(0,Q.jsx)(T9,{status:n.splitStatus})}),(0,Q.jsxs)(bM.Item,{label:`片段数量`,children:[n.completedSegmentCount,`/`,n.segmentCount,`,失败 `,n.failedSegmentCount]}),(0,Q.jsx)(bM.Item,{label:`原视频分类`,children:n.originalVideoCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:C9(n.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:C9(n.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`原视频内容`,span:3,children:n.originalVideoContent||`-`}),(0,Q.jsx)(bM.Item,{label:`原视频受众`,span:3,children:n.originalVideoAudience||`-`}),n.analysisErrorMessage?(0,Q.jsx)(bM.Item,{label:`分析错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.analysisErrorMessage})}):null,n.splitErrorMessage?(0,Q.jsx)(bM.Item,{label:`拆镜错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.splitErrorMessage})}):null]})}),(0,Q.jsx)(VA,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`原视频预览`]}),children:(0,Q.jsx)(D9,{url:n.videoUrl,height:360})}),(0,Q.jsxs)(VA,{title:`AI 建议拆镜列表`,children:[n.aiSuggestions?.length?(0,Q.jsx)(UUe,{items:n.aiSuggestions}):(0,Q.jsx)(Yy,{description:`暂无 AI 建议拆镜`}),(0,Q.jsx)(Wh,{size:`small`,ghost:!0,style:{marginTop:12},items:[{key:`raw`,label:`查看原视频分析完整 JSON`,children:(0,Q.jsx)(E9,{value:n.analysisResultJson})}]})]}),(0,Q.jsxs)(VA,{title:`片段列表`,children:[(0,Q.jsxs)(IM,{wrap:!0,style:{marginBottom:16},children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`片段来源`,style:{width:140},value:g||void 0,options:LUe,onChange:e=>{_(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`切割状态`,style:{width:140},value:v||void 0,options:RUe,onChange:e=>{y(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:b||void 0,options:zUe,onChange:e=>{x(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`复刻状态`,style:{width:150},value:S||void 0,options:BUe,onChange:e=>{w(e||``),l(1)}}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(bb,{}),onClick:()=>h(e=>e+1),children:`筛选`}),(0,Q.jsx)($S,{onClick:()=>{_(``),y(``),x(``),w(``),l(1),h(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:f,dataSource:i,pagination:{current:c,pageSize:S9,total:o,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:l},scroll:{x:1550},columns:[{title:`片段ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:w9(e)})},{title:`序号`,dataIndex:`segmentIndex`,width:70},{title:`来源`,dataIndex:`sourceMode`,width:100,render:e=>e===`ai_suggestion`?(0,Q.jsx)(jR,{color:`purple`,children:`AI建议`}):(0,Q.jsx)(jR,{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)(T9,{status:e})},{title:`分析`,dataIndex:`analysisStatus`,width:100,render:e=>(0,Q.jsx)(T9,{status:e})},{title:`复刻`,dataIndex:`replicateStatus`,width:110,render:e=>(0,Q.jsx)(T9,{status:e})},{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)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)($S,{type:`link`,style:{padding:0},onClick:()=>t(`/shot-replications/projects/${n.moduleProjectId}`),children:w9(n.moduleProjectId)}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:n.moduleProjectTitle||e9(n.moduleProjectCurrentStepCode)}),(0,Q.jsx)(T9,{status:n.moduleProjectStatus})]}):(0,Q.jsx)(jR,{children:`未创建`})},{title:`错误`,dataIndex:`splitLastError`,width:220,ellipsis:!0,render:(e,t)=>e||t.analysisErrorMessage||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:C9},{title:`操作`,fixed:`right`,width:100,render:(e,t)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>j(t.id),children:`详情`})}]})]})]}),(0,Q.jsx)(kde,{title:`片段详情`,width:720,open:T,onClose:()=>E(!1),destroyOnClose:!0,children:D?(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`片段ID`,span:2,children:D.id}),(0,Q.jsx)(bM.Item,{label:`时间节点`,children:D.timeNode}),(0,Q.jsxs)(bM.Item,{label:`时长`,children:[Number(D.durationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`切割状态`,children:(0,Q.jsx)(T9,{status:D.splitStatus})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:D.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`复刻状态`,children:(0,Q.jsx)(T9,{status:D.replicateStatus})}),(0,Q.jsx)(bM.Item,{label:`关联项目`,children:D.moduleProjectId?(0,Q.jsx)($S,{type:`link`,onClick:()=>t(`/shot-replications/projects/${D.moduleProjectId}`),children:D.moduleProjectId}):`-`}),(0,Q.jsx)(bM.Item,{label:`片段内容`,span:2,children:D.segmentContent||`-`}),(0,Q.jsx)(bM.Item,{label:`片段分类`,children:D.segmentCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`片段受众`,children:D.segmentAudience||`-`})]}),(0,Q.jsx)(VA,{size:`small`,title:`片段视频`,children:(0,Q.jsx)(D9,{url:D.segmentVideoUrl,height:300})}),D.splitLastError?(0,Q.jsx)(cf,{type:`error`,message:`切割错误`,description:D.splitLastError}):null,D.analysisErrorMessage?(0,Q.jsx)(cf,{type:`error`,message:`分析错误`,description:D.analysisErrorMessage}):null,(0,Q.jsx)(Wh,{size:`small`,items:[{key:`analysis`,label:`片段分析 JSON`,children:(0,Q.jsx)(E9,{value:D.analysisJson})},{key:`suggestion`,label:`AI 建议原始 JSON`,children:(0,Q.jsx)(E9,{value:D.aiSuggestionJson})}]})]}):(0,Q.jsx)(hP,{})})]}):(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到拆镜任务详情`})})},{Title:GUe,Text:O9,Paragraph:KUe}=Z,{TextArea:k9}=GN,A9=[{label:`对象`,value:`object`},{label:`数组`,value:`array`},{label:`字符串`,value:`string`},{label:`数字`,value:`number`},{label:`布尔`,value:`boolean`},{label:`流程数组`,value:`flow`}],j9=`画面属性`,qUe=new Set([`视频时长`,`视频比例`,`清晰度`,`帧率`,`推荐分辨率`]);function M9(e,t){return e===j9&&!!t&&qUe.has(t)}function N9(e){return e===j9}function JUe(e){return JSON.parse(JSON.stringify(e??null))}function P9(e,t,n,r){return!e||typeof e!=`object`?r:e[t]===void 0?e[n]===void 0?r:e[n]:e[t]}function YUe(e){return{key:String(e?.key||e?.label||`新流程字段`),label:String(e?.label||e?.key||`新流程字段`),enabled:e?.enabled??!0,editable:e?.editable??!0,maxLength:Number(P9(e,`maxLength`,`max_length`,800)||800),value:e?.value??``}}function F9(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(P9(e,`maxLength`,`max_length`,t===`flow`?800:1e3)||(t===`flow`?800:1e3))};if(t===`object`)n.children=Array.isArray(e?.children)?e.children.map(F9):[];else if(t===`flow`){n.contentKey=String(P9(e,`contentKey`,`content_key`,e?.key===`镜头流程`?`镜头内容`:`动作内容`));let t=P9(e,`contentAliases`,`content_aliases`,[]);n.contentAliases=Array.isArray(t)?t.map(e=>String(e)).filter(Boolean):[];let r=P9(e,`itemFields`,`item_fields`,[]);n.itemFields=Array.isArray(r)&&r.length>0?r.map(YUe):[{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 XUe(e){let t=Array.isArray(e?.segments)?e.segments:[],n=Array.isArray(e?.ratios)?e.ratios:[];return{minDuration:Number(P9(e,`minDuration`,`min_duration`,1)||1),maxDuration:Number(P9(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 I9(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(F9),timePlanRules:n.map(XUe)}}function L9(e,t){let n=N9(e.key),r=M9(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=>L9(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 R9(e,t){return{version:e.version,enabled:t,sections:(e.sections||[]).map(e=>L9(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 z9(e){return e?.runtimeSchema||e?.runtime_schema||{}}function B9(e){let t=e?.timePlan||e?.time_plan||z9(e)?.动态时间规划||[];return Array.isArray(t)?t:[]}function ZUe(e){return e?.schemaConfigSnapshot||e?.schema_config_snapshot||{}}function QUe(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 V9=(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}),$Ue=()=>({minDuration:1,maxDuration:5,ratios:[.2,.4,.4],segments:[{stage:`开场吸引`,description:`快速吸引注意力`},{stage:`核心展示`,description:`展示主体动作、核心卖点或主要视觉内容`},{stage:`收尾引导`,description:`给出行动引导并稳定落版`}]}),eWe=()=>{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]=X.useForm(),_=(0,C.useRef)(null),v=c?.sections||[],y=c?.timePlanRules||[],b=async()=>{t(!0);try{let e=await mVe();a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),l(I9(e.data)),d(I9(e.defaultData??e.default_data))}catch(e){CP.error(e?.message||`加载失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{b()},[]);let x=e=>{l(t=>{let n=I9(JUe(t));return e(n),n})},S=async()=>{if(c){r(!0);try{let e=await hVe({is_enabled:i,data:R9(c,i)});l(I9(e.data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`保存成功`)}catch(e){CP.error(e?.message||`保存失败`)}finally{r(!1)}}},w=async()=>{r(!0);try{let e=await gVe();l(I9(e.data)),d(I9(e.defaultData??e.default_data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`已恢复默认配置`)}catch(e){CP.error(e?.message||`恢复默认失败`)}finally{r(!1)}},T=async()=>{try{QUe(`video_prompt_schema_config.json`,await _Ve())}catch(e){CP.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 vVe({is_enabled:!!(n.isEnabled??n.is_enabled??i),data:r});l(I9(o.data)),a(!!(o.isEnabled??o.is_enabled??o.data?.enabled??!1)),s(!!(o.usingDefault??o.using_default??!1)),CP.success(`导入成功`)}catch(e){CP.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 yVe({is_enabled:i,data:R9(c,i),duration:Number(e.duration||8),aspect_ratio:e.aspectRatio,resolution:e.resolution,frame_rate:e.frameRate}))}catch(e){CP.error(e?.message||`预览失败`)}},k=()=>{x(e=>{e.sections.push(V9(`object`))})},A=(e,t)=>{x(n=>{let r=n.sections[e];N9(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(V9(`string`))})},N=(e,t,n)=>{x(r=>{let i=r.sections[e],a=i.children||[],o=a[t];M9(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($Ue())})},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)(IM,{children:[(0,Q.jsx)(O9,{strong:!0,children:e.label||e.key||`未命名分组`}),e.key&&e.key!==e.label&&(0,Q.jsxs)(jR,{color:`blue`,children:[`key: `,e.key]}),(0,Q.jsx)(jR,{children:e.type}),N9(e.key)&&(0,Q.jsx)(jR,{color:`red`,children:`系统锁定`}),!e.enabled&&!N9(e.key)&&(0,Q.jsx)(jR,{color:`default`,children:`已禁用`})]}),children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsxs)(WP,{gutter:12,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:N9(e.key),onChange:e=>A(t,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>A(t,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Tb,{value:e.type,options:A9,style:{width:`100%`},disabled:N9(e.key),onChange:e=>A(t,{type:e})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:N9(e.key)?!0:e.enabled,disabled:N9(e.key),onChange:e=>A(t,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`可编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>A(t,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>A(t,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:2,style:{textAlign:`right`},children:(0,Q.jsx)(OP,{title:`确认删除该分组?`,disabled:N9(e.key),onConfirm:()=>j(t),children:(0,Q.jsx)($S,{danger:!0,icon:(0,Q.jsx)(PR,{}),disabled:N9(e.key)})})})]}),e.type===`object`&&(0,Q.jsx)(VA,{size:`small`,title:`对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>M(t),children:`新增字段`}),children:(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.children||[]).map((n,r)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:n.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:n.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>N(t,r,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Tb,{value:n.type,options:A9.filter(e=>e.value!==`object`&&e.value!==`flow`),style:{width:`100%`},disabled:M9(e.key,n.key),onChange:e=>N(t,r,{type:e})})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!0:n.enabled,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!1:n.editable,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{editable:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:n.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>N(t,r,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{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)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),disabled:M9(e.key,n.key),onClick:()=>P(t,r)})})]},`child-${t}-${r}`))})}),e.type===`flow`&&(0,Q.jsxs)(VA,{size:`small`,title:`流程数组对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>F(t),children:`新增流程字段`}),children:[(0,Q.jsxs)(WP,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(GN,{addonBefore:`内容字段`,value:e.contentKey,maxLength:64,onChange:e=>A(t,{contentKey:e.target.value})})}),(0,Q.jsx)(uj,{span:18,children:(0,Q.jsx)(GN,{addonBefore:`别名 / 分隔`,value:(e.contentAliases||[]).join(`/`),onChange:e=>A(t,{contentAliases:e.target.value.split(`/`).map(e=>e.trim()).filter(Boolean)})})})]}),(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.itemFields||[]).map((e,n)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`流程对象字段名`,onChange:e=>I(t,n,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>I(t,n,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:e.enabled,onChange:e=>I(t,n,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>I(t,n,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>I(t,n,{maxLength:Number(e||800)})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(GN,{value:String(e.value??``),maxLength:e.maxLength||800,placeholder:`默认值`,onChange:e=>I(t,n,{value:e.target.value})})}),(0,Q.jsx)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>L(t,n)})})]},`flow-${t}-${n}`))})]}),e.type!==`object`&&e.type!==`flow`&&(0,Q.jsx)(VA,{size:`small`,title:`默认值`,children:(0,Q.jsx)(k9,{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)(hP,{}):(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`large`,children:[(0,Q.jsxs)(WP,{justify:`space-between`,align:`middle`,children:[(0,Q.jsxs)(uj,{children:[(0,Q.jsx)(GUe,{level:3,style:{margin:0},children:`视频提词 Schema 配置`}),(0,Q.jsx)(KUe,{type:`secondary`,style:{marginBottom:0},children:`配置会被爆款开头复刻和拆镜复刻第 4 步视频 AI 提词共同复用。传给 AI 时只保留纯键值 schema,不携带显示名、启用、可编辑等管理字段。`})]}),(0,Q.jsx)(uj,{children:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(O9,{children:`启用自定义配置`}),(0,Q.jsx)(lF,{checked:i,onChange:a}),o&&(0,Q.jsx)(jR,{color:`orange`,children:`当前使用默认配置兜底`}),u&&(0,Q.jsxs)(jR,{children:[`默认分组 `,u.sections.length]})]})})]}),(0,Q.jsx)(cf,{type:`info`,showIcon:!0,message:`长度限制策略`,description:`只对管理后台字段和用户可编辑字段做长度校验,不会自动裁剪 AI 生成结果或第 5 步最终视频 prompt。若供应商因为 prompt 过长拒绝,会按真实失败进入现有日志/退款/重试流程。`}),(0,Q.jsx)(cf,{type:`warning`,showIcon:!0,message:`预览说明`,description:`预览会跟随右上角「启用自定义配置」开关。关闭时会按默认 CLIENT_SCHEMA_V1 兜底预览;打开后才会按当前页面编辑的 sections 和秒数切片规则预览。`}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(a4,{}),loading:n,onClick:S,children:`保存配置`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(IN,{}),onClick:D,children:`预览运行时 Schema`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(yB,{}),onClick:T,children:`导出 JSON`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(Y6,{}),onClick:()=>_.current?.click(),children:`导入 JSON`}),(0,Q.jsx)(OP,{title:`确认恢复默认配置?`,description:`会用 CLIENT_SCHEMA_V1 生成的默认配置覆盖当前配置。`,onConfirm:w,children:(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),children:`恢复默认`})}),(0,Q.jsx)(`input`,{ref:_,type:`file`,accept:`application/json,.json`,style:{display:`none`},onChange:E})]}),(0,Q.jsx)(zA,{items:[{key:`fields`,label:`Schema 字段配置`,children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsx)(cf,{type:`warning`,showIcon:!0,message:`字段说明`,description:`key 是最终传给 AI 和保存到 prompt_schema 的真实字段名,例如「素材理解」「动作流程」;label 只用于管理后台显示,帮助运营/管理员理解这个字段,不会传给 AI;启用关闭后该字段不会进入运行时 schema;可编辑关闭后用户在第 4 步修改时不能改这个字段。「画面属性」里的视频时长、视频比例、清晰度、帧率、推荐分辨率属于系统锁定参数,不能改 key、不能禁用、不能开放用户编辑。`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(gA,{}),onClick:k,children:`新增一级分组`}),(0,Q.jsx)(Wh,{items:W})]})},{key:`time`,label:`秒数切片规则`,children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsx)(cf,{type:`info`,showIcon:!0,message:`切片规则说明`,description:`这里决定指定视频时长会被拆成几段,以及每段的阶段名称和说明。运行时会同步生成「动态时间规划」「动作流程」「镜头流程」三个数组,三者时间段保持一致。`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(gA,{}),onClick:R,children:`新增秒数规则`}),y.map((e,t)=>(0,Q.jsxs)(VA,{size:`small`,title:`${e.minDuration}-${e.maxDuration} 秒:${e.segments.length} 段`,extra:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>B(t),children:`删除规则`}),children:[(0,Q.jsxs)(WP,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,value:e.minDuration,addonBefore:`最小秒`,style:{width:`100%`},onChange:e=>z(t,{minDuration:Number(e||1)})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,value:e.maxDuration,addonBefore:`最大秒`,style:{width:`100%`},onChange:e=>z(t,{maxDuration:Number(e||1)})})}),(0,Q.jsx)(uj,{span:16,children:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>H(t),children:`新增片段`})})]}),(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:e.segments.map((n,r)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Pj,{min:.01,step:.01,value:e.ratios[r],addonBefore:`比例`,style:{width:`100%`},onChange:e=>V(t,r,{ratio:Number(e||.01)})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{value:n.stage,maxLength:64,placeholder:`阶段`,onChange:e=>V(t,r,{stage:e.target.value})})}),(0,Q.jsx)(uj,{span:15,children:(0,Q.jsx)(GN,{value:n.description,maxLength:300,placeholder:`说明`,onChange:e=>V(t,r,{description:e.target.value})})}),(0,Q.jsx)(uj,{span:1,children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>U(t,r)})})]},r))})]},t))]})},{key:`json`,label:`JSON 高级查看`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(R9(c,i),null,2),readOnly:!0})}]})]})}),(0,Q.jsxs)(TP,{title:`预览运行时 Schema`,open:f,onCancel:()=>p(!1),width:980,footer:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{onClick:()=>p(!1),children:`关闭`}),(0,Q.jsx)($S,{type:`primary`,onClick:O,children:`生成预览`})]}),children:[(0,Q.jsxs)(X,{form:g,layout:`inline`,style:{marginBottom:16},children:[(0,Q.jsx)(X.Item,{name:`duration`,label:`时长`,rules:[{required:!0}],children:(0,Q.jsx)(Pj,{min:1,max:3600})}),(0,Q.jsx)(X.Item,{name:`aspectRatio`,label:`比例`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`resolution`,label:`清晰度`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`frameRate`,label:`帧率`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{})})]}),(0,Q.jsx)(oue,{}),m?(0,Q.jsx)(zA,{items:[{key:`runtime`,label:`运行时 Schema`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(z9(m),null,2),readOnly:!0})},{key:`timePlan`,label:`动态时间规划(${B9(m).length} 段)`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(B9(m),null,2),readOnly:!0})},{key:`snapshot`,label:`配置快照`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(ZUe(m),null,2),readOnly:!0})}]}):(0,Q.jsx)(cf,{type:`info`,showIcon:!0,message:`点击生成预览后,可以看到传给 AI 的纯 schema、动态时间规划和本次配置快照。`})]})]})},tWe=()=>{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}=I5(),_=async()=>{if(g?.isAdmin){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 d5.get(`/contact/requests?${e.toString()}`);t(n.items),r(n.total)}catch(e){CP.error(e?.message||`获取失败`)}finally{a(!1)}}};(0,C.useEffect)(()=>{_()},[o,c,u]);let v=async e=>{try{await d5.put(`/contact/requests/${e}/handle`),CP.success(`已标记为处理`),_()}catch(e){CP.error(e?.message||`操作失败`)}},y=async e=>{try{await d5.delete(`/contact/requests/${e}`),CP.success(`已删除`),_()}catch(e){CP.error(e?.message||`删除失败`)}},b=e=>{p(e),h(!0)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(g1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`联系请求管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[`共 `,n,` 条记录`]})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,Q.jsx)($S,{type:u===null?`primary`:`default`,onClick:()=>d(null),icon:(0,Q.jsx)(tZ,{}),size:`small`,children:`全部`}),(0,Q.jsx)($S,{type:u===!1?`primary`:`default`,onClick:()=>d(!1),size:`small`,children:`待处理`}),(0,Q.jsx)($S,{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)(Yy,{description:`暂无联系请求`,style:{padding:`40px 0`}}):(0,Q.jsx)(vR,{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)(jR,{color:e?`green`:`orange`,children:e?`已处理`:`待处理`})},{title:`提交时间`,dataIndex:`createdAt`,key:`createdAt`,width:160,render:e=>B5(e)},{title:`操作`,key:`actions`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>b(t),children:`查看`}),!t.isHandled&&(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(mb,{}),onClick:()=>v(t.id),children:`标记处理`}),(0,Q.jsx)(OP,{title:`确定删除该记录?`,onConfirm:()=>y(t.id),children:(0,Q.jsx)($S,{type:`link`,danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),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)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(IN,{}),`联系请求详情`]}),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)(jR,{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:B5(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)($S,{type:`primary`,onClick:()=>{v(f.id),h(!1)},icon:(0,Q.jsx)(mb,{}),children:`标记为已处理`}),(0,Q.jsx)($S,{onClick:()=>h(!1),children:`关闭`})]})]})})]})},H9=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/$/,``).replace(/\/api\/?$/i,``).replace(/\/$/,``),nWe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),U9=e=>{if(!e)return``;let t=String(e).trim();return t?nWe(t)?t:H9?`${H9}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},rWe=360,W9=280;function G9(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,e)):t}function iWe(e,t){let n=Math.max(0,e);if(!n)return{width:0,height:W9};if(!t?.width||!t?.height)return{width:n,height:W9};let r=Math.min(n/t.width,rWe/t.height);return{width:Math.max(1,Math.round(t.width*r)),height:Math.max(1,Math.round(t.height*r))}}function aWe(e,t){if(e.sizeMode===`px`&&e.widthPx)return G9(e.widthPx,1,Math.max(1,t));let n=G9(e.widthRatio??.18,.01,1);return Math.max(1,t*n)}function oWe(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 sWe(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 cWe=({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)(()=>U9(e),[e]),E=(0,C.useMemo)(()=>U9(n),[n]),D=(0,C.useMemo)(()=>iWe(u,f),[u,f]),O=(0,C.useMemo)(()=>aWe(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=sWe(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 PVe({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=G9(e.clientX-t.left-c.current.x,0,a),u=G9(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 oWe(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=G9(r.customXRatio??.5,0,1),o=G9(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(W9,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||W9,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)(hP,{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:`上传素材后可预览水印效果`})})},lWe=[{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`}],K9={text:`民众普康 AI`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0},q9=({value:e,onChange:t,watermarks:n,mediaUrl:r,mediaType:i})=>{let a=n=>t({...e,...n}),o=t=>{a({textWatermark:{...K9,...e.textWatermark||{},...t}})},s=n.find(t=>t.id===e.watermarkId)?.fileUrl,c={...K9,...e.textWatermark||{}};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(X,{layout:`vertical`,children:[(0,Q.jsx)(X.Item,{label:`水印类型`,required:!0,children:(0,Q.jsxs)(Wk.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)(Wk.Button,{value:`image`,children:`图片水印`}),(0,Q.jsx)(Wk.Button,{value:`repeated_text`,children:`重复文字水印`})]})}),e.watermarkType===`repeated_text`?(0,Q.jsxs)(WP,{gutter:16,children:[(0,Q.jsx)(uj,{span:24,children:(0,Q.jsx)(X.Item,{label:`水印文字`,required:!0,extra:`字体由后端固定开源可商用字体渲染,前端预览层和最终生成使用同一后端渲染逻辑。`,children:(0,Q.jsx)(GN,{maxLength:64,showCount:!0,value:c.text,onChange:e=>o({text:e.target.value}),placeholder:`请输入重复水印文字`})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`文字透明度:${c.opacityLevel}/10`,required:!0,children:(0,Q.jsx)(nM,{min:1,max:10,step:1,value:c.opacityLevel,onChange:e=>o({opacityLevel:e})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`字号(px)`,required:!0,children:(0,Q.jsx)(Pj,{min:8,max:160,style:{width:`100%`},value:c.fontSizePx,onChange:e=>o({fontSizePx:Number(e||28)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`文字颜色`,required:!0,children:(0,Q.jsx)(GN,{value:c.color,onChange:e=>o({color:e.target.value||`#ffffff`}),placeholder:`#ffffff`})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`旋转角度`,required:!0,children:(0,Q.jsx)(Pj,{min:-90,max:90,style:{width:`100%`},value:c.rotateDeg,onChange:e=>o({rotateDeg:Number(e??-30)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`横向间距`,required:!0,children:(0,Q.jsx)(Pj,{min:20,max:2e3,style:{width:`100%`},value:c.gapX,onChange:e=>o({gapX:Number(e||220)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`纵向间距`,required:!0,children:(0,Q.jsx)(Pj,{min:20,max:2e3,style:{width:`100%`},value:c.gapY,onChange:e=>o({gapY:Number(e||140)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`交错排列`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{checked:c.staggered,onChange:e=>o({staggered:e})})})})]}):(0,Q.jsxs)(WP,{gutter:16,children:[(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印图片`,required:!0,children:(0,Q.jsx)(Tb,{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)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`透明度:${e.opacityLevel}/10`,required:!0,children:(0,Q.jsx)(nM,{min:1,max:10,step:1,value:e.opacityLevel,onChange:e=>a({opacityLevel:e})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印位置`,required:!0,children:(0,Q.jsx)(Tb,{value:e.position,onChange:e=>a({position:e}),options:lWe})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`大小模式`,required:!0,children:(0,Q.jsx)(Tb,{value:e.sizeMode,onChange:e=>a({sizeMode:e}),options:[{label:`按素材宽度比例`,value:`ratio`},{label:`固定像素宽度`,value:`px`}]})})}),e.sizeMode===`ratio`?(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印宽度比例`,required:!0,children:(0,Q.jsx)(Pj,{min:.01,max:1,step:.01,style:{width:`100%`},value:e.widthRatio??.18,onChange:e=>a({widthRatio:Number(e||.18)})})})}):(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印宽度(px)`,required:!0,children:(0,Q.jsx)(Pj,{min:1,max:1e4,style:{width:`100%`},value:e.widthPx??200,onChange:e=>a({widthPx:Number(e||200)})})})}),(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(X.Item,{label:`横向边距`,children:(0,Q.jsx)(Pj,{min:0,max:2e3,style:{width:`100%`},value:e.marginX,onChange:e=>a({marginX:Number(e||0)})})})}),(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(X.Item,{label:`纵向边距`,children:(0,Q.jsx)(Pj,{min:0,max:2e3,style:{width:`100%`},value:e.marginY,onChange:e=>a({marginY:Number(e||0)})})})})]})]}),(0,Q.jsx)(cWe,{mediaUrl:r,mediaType:i,watermarkUrl:s,config:e,onChange:e=>a(e)})]})},J9={draft:{text:`草稿`,color:`default`},processing:{text:`处理中`,color:`processing`},success:{text:`成功`,color:`success`},failed:{text:`失败`,color:`error`}},Y9={text:`民众普康 AI`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0},uWe={watermarkType:`image`,watermarkId:null,opacityLevel:6,position:`bottom_right`,customXRatio:null,customYRatio:null,sizeMode:`ratio`,widthRatio:.18,widthPx:null,marginX:24,marginY:24,textWatermark:Y9};function dWe(e){return{text:e?.text||Y9.text,opacityLevel:e?.opacityLevel??e?.opacity_level??Y9.opacityLevel,fontSizePx:e?.fontSizePx??e?.font_size_px??Y9.fontSizePx,color:e?.color||Y9.color,rotateDeg:e?.rotateDeg??e?.rotate_deg??Y9.rotateDeg,gapX:e?.gapX??e?.gap_x??Y9.gapX,gapY:e?.gapY??e?.gap_y??Y9.gapY,staggered:e?.staggered??Y9.staggered}}function X9(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:dWe(n.textWatermark||n.text_watermark)}}function Z9(e){return e.watermarkType===`repeated_text`?!!e.textWatermark?.text?.trim():!!e.watermarkId}var fWe=({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)(uWe),[_,v]=(0,C.useState)(!1),y=async()=>{c(!0);try{let e=await AVe(l);i(e.items),o(e.total)}finally{c(!1)}};(0,C.useEffect)(()=>{y()},[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=>jVe(e.id).catch(()=>null)))).some(e=>e&&e.status!==`processing`)&&y()},2500);return()=>window.clearInterval(t)},[r]);let b=e=>{m(e),g(X9(e.watermarkConfig,e.watermarkId))},x=e=>e.mediaType===`image`?U9(e.watermarkedUrl||e.originalUrl):U9(e.coverUrl||``),S=e=>U9(e.watermarkedUrl||e.originalUrl),w=e=>{TP.confirm({title:`确认删除该素材?`,content:e.title||e.id,okText:`删除`,okButtonProps:{danger:!0},cancelText:`取消`,async onOk(){await IVe(e.id),CP.success(`删除成功`),await y()}})};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(IM,{style:{marginBottom:16},wrap:!0,children:[(0,Q.jsx)(Tb,{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)(Tb,{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)(Tb,{allowClear:!0,style:{width:140},placeholder:`处理状态`,value:l.status,onChange:e=>u(t=>({...t,status:e,page:1})),options:Object.entries(J9).map(([e,t])=>({value:e,label:t.text}))}),(0,Q.jsx)($S,{onClick:y,children:`刷新`})]}),(0,Q.jsx)(vR,{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:1180},columns:[{title:`预览`,width:110,render:(e,t)=>{let n=x(t);if(t.mediaType===`image`)return n?(0,Q.jsx)(jN,{width:86,height:64,style:{objectFit:`cover`,borderRadius:6},src:n}):`-`;let r=S(t),i=U9(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)(jR,{color:J9[e]?.color,children:J9[e]?.text||e})},{title:`水印`,render:(e,t)=>X9(t.watermarkConfig,t.watermarkId).watermarkType===`repeated_text`?`重复文字水印`:t.watermarkName||`图片水印`},{title:`排序`,dataIndex:`sortOrder`},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0},{title:`操作`,width:150,align:`center`,render:(e,t)=>(0,Q.jsxs)(IM,{size:8,children:[(0,Q.jsx)($S,{size:`small`,onClick:()=>f(t),children:`查看`}),(0,Q.jsx)(RM,{trigger:[`click`],menu:{items:[{key:`regenerate`,icon:(0,Q.jsx)(VP,{}),label:`重新生成水印`},{key:`delete`,icon:(0,Q.jsx)(PR,{}),label:`删除素材`,danger:!0}],onClick:({key:e})=>{e===`regenerate`&&b(t),e===`delete`&&w(t)}},children:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(I1,{}),children:`更多`})})]})}]}),(0,Q.jsx)(TP,{title:`素材详情`,open:!!d,onCancel:()=>f(null),footer:null,width:900,destroyOnHidden:!0,children:d&&(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`large`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:`原素材:`}),d.originalUrl?U9(d.originalUrl):`-`]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:`水印素材:`}),d.watermarkedUrl?U9(d.watermarkedUrl):`-`]}),d.mediaType===`image`?(0,Q.jsx)(jN,{src:U9(d.watermarkedUrl||d.originalUrl)}):(0,Q.jsx)(`video`,{src:S(d),poster:U9(d.coverUrl||``)||void 0,controls:!0,style:{width:`100%`,background:`#000`}})]})}),(0,Q.jsx)(TP,{title:`重新生成水印`,open:!!p,onCancel:()=>!_&&m(null),onOk:async()=>{if(!(!p||_)){if(!Z9(h)){CP.warning(h.watermarkType===`repeated_text`?`请输入重复文字水印内容`:`请选择水印图片`);return}v(!0);try{await FVe(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}),CP.success(`已提交重新生成`),m(null),await y()}finally{v(!1)}}},confirmLoading:_,okButtonProps:{disabled:_||!Z9(h)},cancelButtonProps:{disabled:_},width:980,destroyOnHidden:!0,children:p&&(0,Q.jsx)(q9,{value:h,onChange:g,watermarks:t,mediaUrl:U9(p.originalUrl||p.watermarkedUrl),mediaType:p.mediaType})})]})},pWe=Gze,mWe=[{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 Q9(e,t){if(!e)return(0,Q.jsx)(`span`,{style:{color:`#999`},children:`未设置`});let n=pWe[e];return(0,Q.jsxs)(IM,{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 hWe=({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]=X.useForm(),m=async()=>{o(!0);try{let e=await P5({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)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>h(),children:`新增行业`})]}),(0,Q.jsx)(vR,{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=>Q9(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)(IM,{children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>h(n),children:`编辑`}),(0,Q.jsx)(OP,{title:`确认删除该行业?`,onConfirm:async()=>{await EVe(n.id),CP.success(`删除成功`),await m(),e?.()},children:(0,Q.jsx)($S,{size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}]}),(0,Q.jsx)(TP,{title:d?`编辑行业`:`新增行业`,open:l,onOk:async()=>{await TVe({...await p.validateFields(),id:d?.id}),CP.success(`保存成功`),u(!1),await m(),e?.()},onCancel:()=>u(!1),destroyOnHidden:!0,children:(0,Q.jsxs)(X,{form:p,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`name`,label:`行业名称`,rules:[{required:!0,message:`请输入行业名称`}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`key`,label:`行业Key`,rules:[{required:!0,message:`请输入行业Key`},{pattern:/^[A-Za-z0-9_-]+$/,message:`只允许字母、数字、下划线、中划线`}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`description`,label:`描述`,children:(0,Q.jsx)(GN.TextArea,{rows:3})}),(0,Q.jsx)(X.Item,{name:`icon`,label:`图标`,children:(0,Q.jsx)(Tb,{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:mWe.map(e=>({value:e.value,searchText:`${e.label} ${e.value}`,label:Q9(e.value,e.label)}))})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,children:(0,Q.jsx)(Pj,{min:0,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})})]})})]})},$9={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:`民众普康 AI`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0}};function gWe(e){return e.watermarkType===`repeated_text`?!!e.textWatermark?.text?.trim():!!e.watermarkId}var _We=({open:e,onClose:t,categories:n,watermarks:r,onSuccess:i})=>{let[a]=X.useForm(),[o,s]=(0,C.useState)(null),[c,l]=(0,C.useState)([]),[u,d]=(0,C.useState)(`image`),[f,p]=(0,C.useState)($9),[m,h]=(0,C.useState)(!1),[g,_]=(0,C.useState)(``),v=()=>{s(null),l([]),d(`image`),_(``),h(!1)};(0,C.useEffect)(()=>{if(e){v();let e=r.find(e=>e.isDefault)||r[0];p({...$9,watermarkId:e?.id||null}),a.setFieldsValue({media_type:`image`,is_active:!0,sort_order:0,title:void 0})}},[e,r,a]),(0,C.useEffect)(()=>()=>{g.startsWith(`blob:`)&&URL.revokeObjectURL(g)},[g]);let y=(0,C.useMemo)(()=>g||void 0,[g]),b=e=>{let t=e.type.startsWith(`image/`),n=e.type.startsWith(`video/`);if(u===`image`&&!t)return CP.warning(`当前素材类型为图片,请选择图片文件`),TB.LIST_IGNORE;if(u===`video`&&!n)return CP.warning(`当前素材类型为视频,请选择视频文件`),TB.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},x=()=>{s(null),l([]),g.startsWith(`blob:`)&&URL.revokeObjectURL(g),_(``)};return(0,Q.jsxs)(TP,{title:`上传首页素材`,open:e,onCancel:()=>{m||t()},onOk:async()=>{if(m)return;let e=await a.validateFields();if(!o){CP.warning(`请选择素材文件`);return}if(f.watermarkType===`image`&&!f.watermarkId){CP.warning(`请选择水印图片`);return}if(f.watermarkType===`repeated_text`&&!f.textWatermark?.text?.trim()){CP.warning(`请输入重复文字水印内容`);return}h(!0);try{let n=await NVe({categoryId:e.category_id,file:o,mediaType:u,title:e.title?.trim()||null,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});CP.success(n.message||`已提交水印处理`),i(),t()}finally{h(!1)}},confirmLoading:m,okButtonProps:{disabled:m||!o||!gWe(f)},cancelButtonProps:{disabled:m},width:980,destroyOnHidden:!0,children:[(0,Q.jsxs)(X,{form:a,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`category_id`,label:`行业`,rules:[{required:!0,message:`请选择行业`}],children:(0,Q.jsx)(Tb,{options:n.map(e=>({label:e.name,value:e.id})),disabled:m})}),(0,Q.jsx)(X.Item,{name:`media_type`,label:`素材类型`,rules:[{required:!0}],children:(0,Q.jsx)(Tb,{value:u,onChange:e=>{d(e),x()},disabled:m,options:[{label:`图片`,value:`image`},{label:`视频`,value:`video`}]})}),(0,Q.jsx)(X.Item,{label:`素材文件`,required:!0,children:(0,Q.jsx)(TB,{beforeUpload:e=>b(e),onRemove:x,fileList:c,maxCount:1,accept:u===`image`?`image/*`:`video/*`,disabled:m,children:(0,Q.jsxs)($S,{icon:(0,Q.jsx)(Y6,{}),loading:m,disabled:m,children:[`选择`,u===`image`?`图片`:`视频`]})})}),(0,Q.jsx)(X.Item,{name:`title`,label:`素材标题`,extra:`选填;不填时后台显示“未命名素材”,不会再自动使用文件名作为标题。`,children:(0,Q.jsx)(GN,{disabled:m})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,children:(0,Q.jsx)(Pj,{min:0,style:{width:`100%`},disabled:m})}),(0,Q.jsx)(X.Item,{name:`is_active`,label:`前台展示`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{disabled:m})})]}),(0,Q.jsx)(q9,{value:f,onChange:p,watermarks:r,mediaUrl:y,mediaType:u})]})},vWe=({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]=X.useForm(),x=async()=>{s(!0);try{a((await F5({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(),_(U9(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 CP.warning(`请选择图片文件`),TB.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)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:w,children:`上传水印`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:o,dataSource:i,pagination:{pageSize:20},columns:[{title:`预览`,dataIndex:`fileUrl`,render:e=>(0,Q.jsx)(jN,{width:80,src:U9(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)(IM,{children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>T(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确认删除该水印?`,onConfirm:async()=>{await kVe(t.id),CP.success(`删除成功`),await x(),r?.()},children:(0,Q.jsx)($S,{size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}]}),(0,Q.jsx)(TP,{title:u?`编辑水印`:`上传水印`,open:c,onOk:async()=>{if(v)return;let e=await b.validateFields();if(!u&&!f){CP.warning(`请选择水印图片`);return}y(!0);try{u?await OVe(u.id,{name:e.name,is_default:e.is_default,is_active:e.is_active}):f&&await DVe(f,e.name,e.is_default),CP.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)(X,{form:b,layout:`vertical`,children:[!u&&(0,Q.jsxs)(X.Item,{label:`水印图片`,required:!0,children:[(0,Q.jsx)(TB,{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)($S,{icon:(0,Q.jsx)(Y6,{}),loading:v,disabled:v,children:`选择图片`})}),g&&(0,Q.jsx)(`div`,{style:{marginTop:12},children:(0,Q.jsx)(jN,{src:g,alt:`水印预览`,width:180,style:{maxHeight:120,objectFit:`contain`,background:`#0f172a`,borderRadius:8,padding:8}})})]}),u&&g&&(0,Q.jsx)(X.Item,{label:`当前水印`,children:(0,Q.jsx)(jN,{src:g,alt:`当前水印`,width:180,style:{maxHeight:120,objectFit:`contain`,background:`#0f172a`,borderRadius:8,padding:8}})}),(0,Q.jsx)(X.Item,{name:`name`,label:`水印名称`,rules:[{required:!0,message:`请输入水印名称`}],children:(0,Q.jsx)(GN,{disabled:v})}),(0,Q.jsx)(X.Item,{name:`is_default`,label:`默认水印`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{disabled:v})}),(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{disabled:v})})]})})]});return n?O:(0,Q.jsx)(TP,{title:`水印库`,open:e,onCancel:t,footer:null,width:900,destroyOnHidden:!0,children:O})},yWe=()=>{let[e]=X.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([P5({page:1,pageSize:200}),F5({page:1,pageSize:200,isActive:!0})]);i(e.items),o(t.items)},f=async()=>{n(!0);try{let t=await CVe();e.setFieldsValue(t)}finally{n(!1)}};(0,C.useEffect)(()=>{f(),d()},[]);let p=async()=>{await wVe(await e.validateFields()),CP.success(`配置已保存`)},m=async()=>{await d(),u(e=>e+1)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(VA,{style:{marginBottom:16},loading:t,children:(0,Q.jsxs)(X,{form:e,layout:`inline`,initialValues:{enabled:!1,title:`行业素材案例`,subtitle:`精选图片与视频素材展示`,showOriginalInAdmin:!0},children:[(0,Q.jsx)(X.Item,{name:`enabled`,label:`首页展示`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`title`,label:`标题`,rules:[{required:!0,message:`请输入标题`}],children:(0,Q.jsx)(GN,{style:{width:220}})}),(0,Q.jsx)(X.Item,{name:`subtitle`,label:`副标题`,children:(0,Q.jsx)(GN,{style:{width:320}})}),(0,Q.jsx)(X.Item,{name:`showOriginalInAdmin`,label:`后台展示原素材`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{children:(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(a4,{}),onClick:p,children:`保存配置`})})]})}),(0,Q.jsx)(VA,{title:`首页素材行业装修`,extra:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{onClick:m,children:`刷新`}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>c(!0),children:`上传素材`})]}),children:(0,Q.jsx)(zA,{items:[{key:`assets`,label:`素材管理`,children:(0,Q.jsx)(fWe,{categories:r,watermarks:a,reloadKey:l})},{key:`categories`,label:`行业类别`,children:(0,Q.jsx)(hWe,{onChanged:m})},{key:`watermarks`,label:`水印库`,children:(0,Q.jsx)(vWe,{embedded:!0,onChanged:m})}]})}),(0,Q.jsx)(_We,{open:s,onClose:()=>c(!1),categories:r,watermarks:a,onSuccess:m})]})},bWe=({children:e})=>{let{user:t,loading:n,checkAuth:r}=I5();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)(hP,{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}=I5();return(0,C.useEffect)(()=>{e()},[]),(0,Q.jsx)($p,{locale:J8.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)(zv,{children:(0,Q.jsx)(_n,{children:(0,Q.jsxs)(kt,{children:[(0,Q.jsx)(Dt,{path:`/login`,element:(0,Q.jsx)(GVe,{})}),(0,Q.jsxs)(Dt,{path:`/`,element:(0,Q.jsx)(bWe,{children:(0,Q.jsx)(BVe,{})}),children:[(0,Q.jsx)(Dt,{index:!0,element:(0,Q.jsx)(KVe,{})}),(0,Q.jsx)(Dt,{path:`users`,element:(0,Q.jsx)(XVe,{})}),(0,Q.jsx)(Dt,{path:`teams`,element:(0,Q.jsx)(eHe,{})}),(0,Q.jsx)(Dt,{path:`credit-records`,element:(0,Q.jsx)(THe,{})}),(0,Q.jsx)(Dt,{path:`models`,element:(0,Q.jsx)(tHe,{})}),(0,Q.jsx)(Dt,{path:`credit-ratios`,element:(0,Q.jsx)(zHe,{})}),(0,Q.jsx)(Dt,{path:`video-engines`,element:(0,Q.jsx)(NHe,{})}),(0,Q.jsx)(Dt,{path:`image-engines`,element:(0,Q.jsx)(IHe,{})}),(0,Q.jsx)(Dt,{path:`industries`,element:(0,Q.jsx)(MHe,{})}),(0,Q.jsx)(Dt,{path:`menu-configs`,element:(0,Q.jsx)(UHe,{})}),(0,Q.jsx)(Dt,{path:`recharge-packages`,element:(0,Q.jsx)(KHe,{})}),(0,Q.jsx)(Dt,{path:`payment`,element:(0,Q.jsx)(EHe,{})}),(0,Q.jsx)(Dt,{path:`payment-stats`,element:(0,Q.jsx)(OHe,{})}),(0,Q.jsx)(Dt,{path:`settings`,element:(0,Q.jsx)(rHe,{})}),(0,Q.jsx)(Dt,{path:`video-prompt-schema-config`,element:(0,Q.jsx)(eWe,{})}),(0,Q.jsx)(Dt,{path:`notifications`,element:(0,Q.jsx)(iHe,{})}),(0,Q.jsx)(Dt,{path:`oauthapp-list`,element:(0,Q.jsx)(YHe,{})}),(0,Q.jsx)(Dt,{path:`operation-logs`,element:(0,Q.jsx)(JHe,{})}),(0,Q.jsx)(Dt,{path:`generation-records`,element:(0,Q.jsx)(eUe,{})}),(0,Q.jsx)(Dt,{path:`generation-ai`,element:(0,Q.jsx)(aUe,{})}),(0,Q.jsx)(Dt,{path:`hot-opening-replications`,element:(0,Q.jsx)(uUe,{})}),(0,Q.jsx)(Dt,{path:`hot-opening-replications/:projectId`,element:(0,Q.jsx)(AUe,{})}),(0,Q.jsx)(Dt,{path:`shot-replications`,element:(0,Q.jsx)(FUe,{})}),(0,Q.jsx)(Dt,{path:`shot-replications/task-sets/:taskSetId`,element:(0,Q.jsx)(WUe,{})}),(0,Q.jsx)(Dt,{path:`shot-replications/projects/:projectId`,element:(0,Q.jsx)(_9,{moduleType:`shot_replicate`})}),(0,Q.jsx)(Dt,{path:`authoriza`,element:(0,Q.jsx)(HVe,{})}),(0,Q.jsx)(Dt,{path:`consume`,element:(0,Q.jsx)(WVe,{})}),(0,Q.jsx)(Dt,{path:`platform`,element:(0,Q.jsx)(qVe,{})}),(0,Q.jsx)(Dt,{path:`contact-requests`,element:(0,Q.jsx)(tWe,{})}),(0,Q.jsx)(Dt,{path:`home-materials`,element:(0,Q.jsx)(yWe,{})})]}),(0,Q.jsx)(Dt,{path:`*`,element:(0,Q.jsx)(Tt,{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 e891685a..22a2b12d 100644
--- a/video-gen-admin/dist/index.html
+++ b/video-gen-admin/dist/index.html
@@ -1,37 +1,37 @@
-
-
-
-
-
-
-
-
-
- 后台管理
-
-
+
+
+
+
+
+
+
+
+
+ 后台管理
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/video-gen-admin/src/pages/AdminGenerationAiRecords.tsx b/video-gen-admin/src/pages/AdminGenerationAiRecords.tsx
index 266f5f8b..85d4d529 100644
--- a/video-gen-admin/src/pages/AdminGenerationAiRecords.tsx
+++ b/video-gen-admin/src/pages/AdminGenerationAiRecords.tsx
@@ -258,8 +258,8 @@ const AdminGenerationAiRecords: React.FC = () => {
userId: queryUserId || undefined,
userName: queryUserName || undefined,
engineId: queryEngineId || undefined,
- createdStart: queryCreatedRange?.[0]?.toISOString?.(),
- createdEnd: queryCreatedRange?.[1]?.toISOString?.(),
+ createdStart: queryCreatedRange?.[0]?.format?.('YYYY-MM-DDTHH:mm:ss'),
+ createdEnd: queryCreatedRange?.[1]?.format?.('YYYY-MM-DDTHH:mm:ss'),
page,
pageSize: PAGE_SIZE,
});
From e4cf7799a43cd50424260bc31ad9048918af66c2 Mon Sep 17 00:00:00 2001
From: GinHa <15201596918@163.com>
Date: Fri, 3 Jul 2026 12:31:01 +0800
Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dpoll=E9=99=8D=E9=A2=91?=
=?UTF-8?q?=E6=A3=80=E6=B5=8B=E6=97=B6=E9=97=B4BUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../services/generation_recovery_service.py | 59 +++++++++++++++----
.../app/tasks/generation_poll_tasks.py | 11 ++--
2 files changed, 55 insertions(+), 15 deletions(-)
diff --git a/video-gen-api/app/services/generation_recovery_service.py b/video-gen-api/app/services/generation_recovery_service.py
index bf455de3..4692032e 100644
--- a/video-gen-api/app/services/generation_recovery_service.py
+++ b/video-gen-api/app/services/generation_recovery_service.py
@@ -446,7 +446,12 @@ async def recover_one_generation_task(
message=f"{source} 发现任务已到 deadline 且存在供应商任务ID,投递 poll 队列做最终查询",
detail={"pipeline_stage": task.pipeline_stage, "payload": redis_payload},
)
- poll_generation_task.apply_async(args=[task.id], queue=POLL_QUEUE, countdown=0)
+ poll_generation_task.apply_async(
+ args=[task.id],
+ kwargs={"force_due": True},
+ queue=POLL_QUEUE,
+ countdown=0,
+ )
await register_poll_active(
task,
check_at=_poll_queue_timeout_at(),
@@ -487,16 +492,30 @@ async def recover_one_generation_task(
)
return "skip_video_poll_not_due"
+ original_next_poll_at = ensure_aware_utc(task.next_poll_at)
+ queue_hold_until = _poll_queue_timeout_at(current_time)
task.pipeline_stage = ChatGenerationPipelineStage.WAITING_REMOTE.value
- task.next_poll_at = _poll_queue_timeout_at(current_time)
+ # 这里仍复用 next_poll_at 做短暂队列保护,避免启动容灾重复投递。
+ # 真正消费时通过 force_due=True 跳过“未到期”校验,避免保护时间反向阻塞本次 poll。
+ task.next_poll_at = queue_hold_until
await db.commit()
await log_task_event(
task,
event_type=ChatGenerationTaskEventType.GENERATION_RECOVERY_ENQUEUE.value,
message=f"{source} 发现任务存在供应商任务ID,恢复投递轮询队列",
- detail={"pipeline_stage": task.pipeline_stage, "payload": redis_payload},
+ detail={
+ "pipeline_stage": task.pipeline_stage,
+ "payload": redis_payload,
+ "due_next_poll_at": original_next_poll_at,
+ "queue_hold_until": queue_hold_until,
+ },
+ )
+ poll_generation_task.apply_async(
+ args=[task.id],
+ kwargs={"force_due": True},
+ queue=POLL_QUEUE,
+ countdown=0,
)
- poll_generation_task.apply_async(args=[task.id], queue=POLL_QUEUE, countdown=0)
await register_poll_active(
task,
check_at=task.next_poll_at,
@@ -696,6 +715,8 @@ async def dispatch_due_poll_tasks_once(db: AsyncSession) -> dict[str, Any]:
results: dict[str, int] = {}
dispatched_task_ids: list[str] = []
+ dispatched_due_next_poll_at_by_id: dict[str, datetime | None] = {}
+ dispatched_queue_hold_until_by_id: dict[str, datetime] = {}
for task in tasks:
action = "skip_unknown"
@@ -723,9 +744,14 @@ async def dispatch_due_poll_tasks_once(db: AsyncSession) -> dict[str, Any]:
action = "skip_no_provider_task_id"
continue
+ original_next_poll_at = ensure_aware_utc(task.next_poll_at)
+ queue_hold_until = _poll_queue_timeout_at(current_time)
task.pipeline_stage = ChatGenerationPipelineStage.WAITING_REMOTE.value
# 设置一个队列消费保护时间,避免 Beat 下一分钟看到旧 next_poll_at 又重复投递。
- task.next_poll_at = _poll_queue_timeout_at(current_time)
+ # poll worker 会通过 force_due=True 消费本次到期任务,避免该保护时间被误判为业务未到期。
+ task.next_poll_at = queue_hold_until
+ dispatched_due_next_poll_at_by_id[task.id] = original_next_poll_at
+ dispatched_queue_hold_until_by_id[task.id] = queue_hold_until
dispatched_task_ids.append(task.id)
action = "dispatch_poll"
except Exception as exc:
@@ -745,30 +771,41 @@ async def dispatch_due_poll_tasks_once(db: AsyncSession) -> dict[str, Any]:
if dispatched_task_ids:
fresh_result = await db.execute(
select(ChatGenerationTask)
- .where(
+ .where(
ChatGenerationTask.id.in_(dispatched_task_ids),
ChatGenerationTask.deleted_at.is_(None),
)
- .execution_options(populate_existing=True)
+ .execution_options(populate_existing=True)
)
fresh_tasks = fresh_result.scalars().all()
enqueued_count = 0
for task in fresh_tasks:
+ queue_hold_until = dispatched_queue_hold_until_by_id.get(task.id) or ensure_aware_utc(task.next_poll_at) or _poll_queue_timeout_at(current_time)
+ due_next_poll_at = dispatched_due_next_poll_at_by_id.get(task.id)
await register_poll_active(
task,
- check_at=task.next_poll_at or _poll_queue_timeout_at(current_time),
- next_poll_at=task.next_poll_at,
+ check_at=queue_hold_until,
+ next_poll_at=queue_hold_until,
reason="due_dispatch_poll_queued",
)
await log_task_event(
task,
event_type=ChatGenerationTaskEventType.POLL_DISPATCH_DUE.value,
message="视频 next_poll_at 到期,已投递 provider poll 队列",
- detail={"next_poll_at": task.next_poll_at, "queue": POLL_QUEUE},
+ detail={
+ "due_next_poll_at": due_next_poll_at,
+ "queue_hold_until": queue_hold_until,
+ "queue": POLL_QUEUE,
+ },
+ )
+ poll_generation_task.apply_async(
+ args=[task.id],
+ kwargs={"force_due": True},
+ queue=POLL_QUEUE,
+ countdown=0,
)
- poll_generation_task.apply_async(args=[task.id], queue=POLL_QUEUE, countdown=0)
enqueued_count += 1
# 如果 log_task_event 内部不 commit,这里要提交一次
diff --git a/video-gen-api/app/tasks/generation_poll_tasks.py b/video-gen-api/app/tasks/generation_poll_tasks.py
index 3ea1064c..31178aab 100644
--- a/video-gen-api/app/tasks/generation_poll_tasks.py
+++ b/video-gen-api/app/tasks/generation_poll_tasks.py
@@ -271,7 +271,7 @@ async def _schedule_next_poll(
)
-async def _run(task_id: str):
+async def _run(task_id: str, *, force_due: bool = False):
async with async_session() as db:
result = await db.execute(select(ChatGenerationTask).where(
ChatGenerationTask.id == task_id,
@@ -296,7 +296,10 @@ async def _run(task_id: str):
current_time = _now()
if is_video_generation_task(task):
ensure_video_poll_fields(task, now=current_time)
- if is_poll_not_due(task, now=current_time):
+ # dispatcher / recovery 已经在投递前确认到期时,会传 force_due=True。
+ # 这样可以避免投递侧为了防重复消费临时写入的 next_poll_at,
+ # 又被当前 worker 当成“业务下一次轮询时间”而误判未到期。
+ if not force_due and is_poll_not_due(task, now=current_time):
await db.commit()
await _skip_not_due(task)
return
@@ -481,9 +484,9 @@ async def _run(task_id: str):
if celery_app:
@celery_app.task(name="generation.poll_generation_task", bind=True, max_retries=3, default_retry_delay=30)
- def poll_generation_task(self, task_id: str):
+ def poll_generation_task(self, task_id: str, force_due: bool = False):
try:
- return run_async(_run(task_id))
+ return run_async(_run(task_id, force_due=bool(force_due)))
except Exception as exc:
# 只重试基础设施异常;供应商失败/业务失败已在 _run 内处理。
retries = int(getattr(self.request, "retries", 0) or 0) + 1
From 94302719b22828f63156304c6cf038b8a853ed30 Mon Sep 17 00:00:00 2001
From: wwwwwwwww <526125649@qq.com>
Date: Fri, 3 Jul 2026 12:38:21 +0800
Subject: [PATCH 4/5] 1
---
.../{index-DQ1LXqt7.js => index-By9oW19d.js} | 2 +-
video-gen-admin/dist/index.html | 2 +-
.../src/pages/AdminGenerationAiRecords.tsx | 42 ++++++++++++++-----
3 files changed, 34 insertions(+), 12 deletions(-)
rename video-gen-admin/dist/assets/{index-DQ1LXqt7.js => index-By9oW19d.js} (97%)
diff --git a/video-gen-admin/dist/assets/index-DQ1LXqt7.js b/video-gen-admin/dist/assets/index-By9oW19d.js
similarity index 97%
rename from video-gen-admin/dist/assets/index-DQ1LXqt7.js
rename to video-gen-admin/dist/assets/index-By9oW19d.js
index 92954b3c..507b2b40 100644
--- a/video-gen-admin/dist/assets/index-DQ1LXqt7.js
+++ b/video-gen-admin/dist/assets/index-By9oW19d.js
@@ -543,6 +543,6 @@ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC...\r
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...\r
`,disabled:!i})}),(0,Q.jsx)(X.Item,{name:`alipay_gateway`,label:`网关地址`,children:(0,Q.jsx)(GN,{placeholder:`https://openapi.alipay.com/gateway.do`,size:`large`,disabled:!i})}),(0,Q.jsx)(X.Item,{name:`alipay_notify_url`,label:`回调地址`,children:(0,Q.jsx)(GN,{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)($S,{type:`primary`,icon:(0,Q.jsx)(a4,{}),onClick:async()=>{try{let e=await u.validateFields();t(!0),await MBe({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)}),CP.success(`支付配置已保存`),d()}catch{CP.error(`保存失败`)}finally{t(!1)}},loading:e,size:`large`,style:{borderRadius:8,minWidth:160,height:44,fontSize:15},children:`保存配置`})})]})},{Option:r7}=Tb,{RangePicker:DHe}=gM,OHe=()=>{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,tC.default)().format(`YYYY-MM-DD`),endDate:(0,tC.default)().format(`YYYY-MM-DD`)}),f=async()=>{try{t(!0);let[e,n]=await Promise.all([NBe(u),PBe({...u,page:i,pageSize:o})]);r({...e,recent:n.items||[]}),l(n.total)}catch{CP.error(`加载支付统计失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{f()},[u,i,o]);let p=(e,t)=>{a(e),s(t)},m=()=>{d({startDate:(0,tC.default)().format(`YYYY-MM-DD`),endDate:(0,tC.default)().format(`YYYY-MM-DD`)})},h=async e=>{try{t(!0),await FBe(e),CP.success(`退款成功`),await f()}catch(e){CP.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)(KK,{})},pending:{color:`gold`,label:`待支付`,icon:(0,Q.jsx)(fM,{})},cancelled:{color:`default`,label:`已取消`,icon:(0,Q.jsx)(Cq,{})},refunded:{color:`red`,label:`已退款`,icon:(0,Q.jsx)(I6,{})}},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:`paymentMethod`,key:`paymentMethod`,width:100,render:e=>{let t=v[e]||{color:`default`,label:e};return(0,Q.jsx)(jR,{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)(jR,{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?B5(e):`-`})},{title:`支付时间`,dataIndex:`paidAt`,key:`paidAt`,width:160,render:e=>(0,Q.jsx)(`span`,{className:`date-display`,style:{color:`#94a3b8`},children:e?B5(e):`-`})},{title:`操作`,key:`action`,width:120,render:(e,t)=>t.status===`paid`?(0,Q.jsx)(OP,{title:`确认要退款该订单吗?`,description:`退款后积分会扣除,金额会原路返回`,onConfirm:()=>h(t.orderNo),okText:`确认`,cancelText:`取消`,children:(0,Q.jsx)($S,{type:`link`,danger:!0,size:`small`,icon:(0,Q.jsx)(I6,{}),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)($p,{locale:J8.default,children:(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(WP,{gutter:[16,16],style:{marginBottom:24},children:[(0,Q.jsx)(uj,{xs:24,sm:12,lg:12,children:(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsx)(qP,{title:`今日收入`,value:n.today.paidAmount,precision:2,prefix:(0,Q.jsx)(fY,{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)(uj,{xs:24,sm:12,lg:12,children:(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsx)(qP,{title:`本月累计`,value:E.paidAmount,precision:2,prefix:(0,Q.jsx)(fY,{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)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`,marginBottom:16},title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(fY,{}),`订单状态分布`]}),children:(0,Q.jsx)(WP,{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)(uj,{span:6,children:(0,Q.jsxs)(`div`,{style:{padding:16,borderRadius:10,background:`#fafbff`,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(jR,{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)(VA,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(fY,{}),`订单列表`]}),children:[(0,Q.jsxs)(WP,{gutter:[16,16],align:`middle`,style:{marginBottom:24},children:[(0,Q.jsxs)(uj,{xs:24,sm:12,md:6,children:[(0,Q.jsx)(`span`,{style:{marginRight:8},children:`支付方式:`}),(0,Q.jsxs)(Tb,{placeholder:`全部`,allowClear:!0,style:{width:150},value:u.paymentMethod,onChange:e=>d(t=>({...t,paymentMethod:e})),children:[(0,Q.jsx)(r7,{value:`alipay`,children:`支付宝`}),(0,Q.jsx)(r7,{value:`wechat`,children:`微信`})]})]}),(0,Q.jsxs)(uj,{xs:24,sm:12,md:6,children:[(0,Q.jsx)(`span`,{style:{marginRight:8},children:`状态:`}),(0,Q.jsxs)(Tb,{placeholder:`全部`,allowClear:!0,style:{width:150},value:u.status,onChange:e=>d(t=>({...t,status:e})),children:[(0,Q.jsx)(r7,{value:`paid`,children:`已支付`}),(0,Q.jsx)(r7,{value:`pending`,children:`待支付`}),(0,Q.jsx)(r7,{value:`cancelled`,children:`已取消`}),(0,Q.jsx)(r7,{value:`refunded`,children:`已退款`})]})]}),(0,Q.jsxs)(uj,{xs:24,sm:12,md:8,children:[(0,Q.jsx)(`span`,{style:{marginRight:8},children:`日期范围:`}),(0,Q.jsx)(DHe,{value:[(0,tC.default)(u.startDate),(0,tC.default)(u.endDate)],onChange:g})]}),(0,Q.jsx)(uj,{xs:24,sm:12,md:4,children:(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:m,children:`重置`})})]}),(0,Q.jsx)(vR,{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`})]})]})})},i7=[{name:`ShoppingCartOutlined`,label:`购物`,component:(0,Q.jsx)(k4,{})},{name:`BookOutlined`,label:`书籍`,component:(0,Q.jsx)(SW,{})},{name:`HomeOutlined`,label:`房产`,component:(0,Q.jsx)(OQ,{})},{name:`FireOutlined`,label:`火`,component:(0,Q.jsx)(aZ,{})},{name:`RocketOutlined`,label:`科技`,component:(0,Q.jsx)(q2,{})},{name:`SkinOutlined`,label:`时尚`,component:(0,Q.jsx)(G4,{})},{name:`CompassOutlined`,label:`指南`,component:(0,Q.jsx)(nJ,{})},{name:`HeartOutlined`,label:`健康`,component:(0,Q.jsx)(_Q,{})},{name:`CarOutlined`,label:`汽车`,component:(0,Q.jsx)(gK,{})},{name:`CameraOutlined`,label:`相机`,component:(0,Q.jsx)(sK,{})},{name:`CloudOutlined`,label:`云`,component:(0,Q.jsx)(jq,{})},{name:`StarOutlined`,label:`星`,component:(0,Q.jsx)(S3,{})},{name:`TrophyOutlined`,label:`奖杯`,component:(0,Q.jsx)(w6,{})},{name:`ThunderboltOutlined`,label:`闪电`,component:(0,Q.jsx)(s6,{})},{name:`BulbOutlined`,label:`灯泡`,component:(0,Q.jsx)(LG,{})},{name:`CoffeeOutlined`,label:`咖啡`,component:(0,Q.jsx)(Xq,{})},{name:`CrownOutlined`,label:`皇冠`,component:(0,Q.jsx)(DJ,{})},{name:`DashboardOutlined`,label:`仪表`,component:(0,Q.jsx)(FJ,{})},{name:`FlagOutlined`,label:`旗帜`,component:(0,Q.jsx)(lZ,{})},{name:`GlobalOutlined`,label:`全球`,component:(0,Q.jsx)($Z,{})},{name:`GiftOutlined`,label:`礼物`,component:(0,Q.jsx)(KZ,{})},{name:`LaptopOutlined`,label:`笔记本`,component:(0,Q.jsx)(p$,{})},{name:`MobileOutlined`,label:`手机`,component:(0,Q.jsx)(E1,{})},{name:`MonitorOutlined`,label:`显示器`,component:(0,Q.jsx)(M1,{})},{name:`PayCircleOutlined`,label:`支付`,component:(0,Q.jsx)(r0,{})},{name:`PictureOutlined`,label:`图片`,component:(0,Q.jsx)(m0,{})},{name:`PlayCircleOutlined`,label:`播放`,component:(0,Q.jsx)(C0,{})},{name:`SafetyOutlined`,label:`安全`,component:(0,Q.jsx)(n4,{})},{name:`ShoppingOutlined`,label:`商店`,component:(0,Q.jsx)(M4,{})},{name:`SmileOutlined`,label:`笑脸`,component:(0,Q.jsx)(a3,{})},{name:`SoundOutlined`,label:`声音`,component:(0,Q.jsx)(g3,{})},{name:`TagOutlined`,label:`标签`,component:(0,Q.jsx)(J3,{})},{name:`TeamOutlined`,label:`团队`,component:(0,Q.jsx)(i6,{})},{name:`ToolOutlined`,label:`工具`,component:(0,Q.jsx)(m6,{})},{name:`TruckOutlined`,label:`物流`,component:(0,Q.jsx)(O6,{})},{name:`VideoCameraOutlined`,label:`视频`,component:(0,Q.jsx)(m8,{})},{name:`WalletOutlined`,label:`钱包`,component:(0,Q.jsx)(v8,{})},{name:`BankOutlined`,label:`银行`,component:(0,Q.jsx)(TU,{})},{name:`BuildOutlined`,label:`建筑`,component:(0,Q.jsx)(OG,{})},{name:`ExperimentOutlined`,label:`实验`,component:(0,Q.jsx)(YY,{})},{name:`HighlightOutlined`,label:`高亮`,component:(0,Q.jsx)(SQ,{})},{name:`IdcardOutlined`,label:`名片`,component:(0,Q.jsx)(RQ,{})},{name:`MedicineBoxOutlined`,label:`医药`,component:(0,Q.jsx)(Q$,{})},{name:`ReadOutlined`,label:`阅读`,component:(0,Q.jsx)(y2,{})},{name:`RestOutlined`,label:`休息`,component:(0,Q.jsx)(M2,{})},{name:`SketchOutlined`,label:`钻石`,component:(0,Q.jsx)(V4,{})},{name:`SolutionOutlined`,label:`方案`,component:(0,Q.jsx)(d3,{})}],kHe=Object.fromEntries(i7.map(e=>[e.name,e.component]));function a7(e){return kHe[e]||(0,Q.jsx)(OH,{})}function AHe(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 jHe=({value:e,onChange:t})=>{let n=i7.find(t=>t.name===e);return(0,Q.jsx)(RM,{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:i7.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:a7(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)(_b,{style:{fontSize:10,color:`#bfbfbf`,marginLeft:`auto`}})]})})},MHe=()=>{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]=X.useForm(),l=async()=>{r(!0);try{t((await CBe()).map(e=>{let{skillItems:t,optionGroups:n}=AHe(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{CP.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 b5({id:o.item.id,...r}),CP.success(`已更新`)):(await b5(r),CP.success(`已添加`)),s({open:!1,item:null}),c.resetFields(),l()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}finally{a(!1)}},d=async e=>{try{await wBe(e),CP.success(`已删除`),l()}catch(e){CP.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)(VA,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(OH,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`行业与技能配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个行业`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加行业`})]}),(0,Q.jsx)(vR,{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:a7(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)(jR,{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)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除该行业?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(OH,{}),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)(X,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`key`,label:`行业标识`,style:{flex:1},rules:[{required:!0,message:`请输入标识`}],children:(0,Q.jsx)(GN,{placeholder:`例如:ecommerce`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`label`,label:`行业名称`,style:{flex:1},rules:[{required:!0,message:`请输入名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:电商`,size:`large`})})]}),(0,Q.jsx)(X.Item,{name:`icon`,label:`行业图标`,children:(0,Q.jsx)(jHe,{})}),(0,Q.jsx)(X.Item,{name:`description`,label:`行业描述`,children:(0,Q.jsx)(GN.TextArea,{rows:2,placeholder:`行业描述`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`skills_wentutujie`,label:`文图理解生成视频提示词`,extra:`用于LLM优化视频提示词的系统指令,根据行业特点引导AI理解文案与画面的关系`,children:(0,Q.jsx)(GN.TextArea,{rows:3,placeholder:`请输入文图理解生成视频提示词,例如:
你是一位专业的电商视频文案专家,擅长将产品卖点转化为视觉语言`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`skills_wentutujie_image`,label:`文图理解生成图片提示词`,extra:`用于LLM优化图片提示词的系统指令,根据行业特点引导AI理解文案与画面的关系`,children:(0,Q.jsx)(GN.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)(X.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)(X.Item,{...r,name:[t,`name`],label:`选项名称`,style:{marginBottom:0},rules:[{required:!0,message:`请输入选项名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:视频风格`,size:`middle`,style:{borderRadius:8}})}),(0,Q.jsx)(X.Item,{...r,name:[t,`options`],label:`选项内容`,style:{marginBottom:0},children:(0,Q.jsx)(Tb,{mode:`tags`,size:`middle`,placeholder:`输入选项后回车添加`,style:{borderRadius:8},tokenSeparators:[`,`,`,`,`、`]})})]}),(0,Q.jsx)(b1,{onClick:()=>n(t),style:{color:`#ef4444`,fontSize:16,marginTop:34,cursor:`pointer`,flexShrink:0}})]},e)),(0,Q.jsx)($S,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,Q.jsx)(gA,{}),style:{borderRadius:8,height:36},children:`添加选项组`})]})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]})]})})]})};function o7(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}var NHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await TBe()).map(e=>({...e,supportedRatios:o7(e.supportedRatios),supportedResolutions:o7(e.supportedResolutions),supportedDurations:o7(e.supportedDurations)})))}catch{CP.error(`加载视频引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=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};i.engine?(await x5({id:i.engine.id,...t}),CP.success(`已更新`)):(await x5(t),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await EBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{a({open:!0,engine:e||null}),e?o.setFieldsValue(e):(o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,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]}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`视频引擎配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(C0,{})}),(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)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{children:e},e))})},{title:`支持分辨率`,dataIndex:`supportedResolutions`,width:150,render:e=>(0,Q.jsx)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{color:`blue`,children:e},e))})},{title:`支持时长`,dataIndex:`supportedDurations`,width:120,render:e=>(0,Q.jsx)(jR,{color:`orange`,children:e?.length?`${Math.min(...e)}-${Math.max(...e)}s`:`-`})},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`最大视频`,dataIndex:`maxVideoCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`cyan`,children:[e,` 个`]})},{title:`最大音频`,dataIndex:`maxAudioCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:e>0?`geekblue`:`default`,children:[e||0,` 段`]})},{title:`首尾帧`,dataIndex:`supportsFirstLastFrame`,width:90,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`支持`:`不支持`})},{title:`全能参考`,dataIndex:`supportsUniversalReference`,width:100,render:e=>(0,Q.jsx)(jR,{color:e?`purple`:`default`,children:e?`支持`:`不支持`})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1200}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:620,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`Seedance 2.0`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`模型名称`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedance-2-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedRatios`,label:`支持比例`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`supportedResolutions`,label:`支持分辨率`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:[{value:`480p`},{value:`720p`},{value:`1080p`}]})}),(0,Q.jsx)(X.Item,{name:`supportedDurations`,label:`支持时长(秒)`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:Array.from({length:12},(e,t)=>({value:t+4,label:`${t+4}秒`}))})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`maxDuration`,label:`最大时长(秒)`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxVideoCount`,label:`最大视频数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`maxAudioCount`,label:`最大参考音频数`,style:{flex:1},extra:`0 表示不支持音频参考,最大 3 段`,rules:[{validator:(e,t)=>{let n=Number(t??0);return!Number.isInteger(n)||n<0||n>3?Promise.reject(Error(`最大参考音频数必须为 0-3 的整数`)):Promise.resolve()}}],children:(0,Q.jsx)(GN,{type:`number`,size:`large`,min:0,max:3})})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`supportsFirstLastFrame`,label:`首尾帧模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`supportsUniversalReference`,label:`全能参考模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,style:{flex:1},children:(0,Q.jsx)(Tb,{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 PHe(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}function FHe(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 s7={"2K":{"1:1":`2048×2048`,"4:3":`2304×1728`,"3:4":`1728×2304`,"16:9":`2560×1440`,"9:16":`1600×2848`,"3:2":`2496×1664`,"2:3":`1664×2496`,"21:9":`3024×1296`},"4K":{"1:1":`4096×4096`,"4:3":`4608×3456`,"3:4":`3520×4704`,"16:9":`5404×3040`,"9:16":`3040×5504`,"3:2":`4992×3328`,"2:3":`3328×4992`,"21:9":`6197×2656`}},c7=[`1:1`,`4:3`,`3:4`,`16:9`,`9:16`,`3:2`,`2:3`,`21:9`],IHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await DBe()).map(e=>({...e,supportedModels:PHe(e.supportedModels),supportedSizes:FHe(e.supportedSizes)})))}catch{CP.error(`加载图片引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={};for(let n of[`2K`,`4K`]){let r=e[`size_${n}`]||[];if(r.length>0){t[n]={};for(let e of r)t[n][e]=s7[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};i.engine?(await S5({id:i.engine.id,...n}),CP.success(`已更新`)):(await S5(n),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await OBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{if(a({open:!0,engine:e||null}),e){let t={};for(let n of[`2K`,`4K`])t[`size_${n}`]=Object.keys(e.supportedSizes?.[n]||{});o.setFieldsValue({...e,...t})}else o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,supportedModels:[`doubao-seedream-5-0-260128`],defaultSize:`2K`,maxImageCount:0,size_2K:c7,size_4K:c7})};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{style:{fontSize:18,color:`#10b981`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`图片引擎配置`}),(0,Q.jsxs)(jR,{color:`green`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(m0,{})}),(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:`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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` `,t.supportedSizes[`4K`][e]]},e))})}},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1e3}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:680,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`豆包文生图`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`默认模型`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedream-5-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedModels`,label:`支持模型列表`,children:(0,Q.jsx)(Tb,{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`})]}),[`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)(X.Item,{name:`size_${e}`,style:{marginTop:8,marginBottom:0},children:(0,Q.jsx)(ij.Group,{style:{width:`100%`},children:(0,Q.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(4, 1fr)`,gap:`6px 0`},children:c7.map(t=>(0,Q.jsxs)(ij,{value:t,style:{fontSize:12},children:[t,` `,(0,Q.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:11},children:s7[e]?.[t]})]},t))})})})]},e)),(0,Q.jsx)(X.Item,{name:`defaultSize`,label:`默认尺寸档位`,children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`2K`,label:`2K`},{value:`4K`,label:`4K`}]})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`generateUrl`,label:`生成接口地址`,children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3/images/generations`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30},children:(0,Q.jsx)(lF,{})})]})]})})]})},LHe=[`2K`,`4K`],RHe=[`480p`,`720p`,`1080p`],zHe=()=>{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]=X.useForm(),[l,u]=(0,C.useState)(10),[d,f]=(0,C.useState)(null),[p,m]=(0,C.useState)(!1),h=X.useWatch(`genType`,c)||`video`,g=X.useWatch(`modelConfigId`,c),_=async()=>{a(!0);try{let[e,n,i]=await Promise.all([kBe(),g5(),aVe()]),a=(i?.engine?.image||[]).map(e=>({...e,genType:`image`})),o=(i?.engine?.video||[]).map(e=>({...e,genType:`video`}));t(e),r([...o,...a]);let s=n.find(e=>e.key===`text_credits_per_1000_tokens`);s&&(u(Number(s.value)||10),f({id:s.id}))}catch{CP.error(`加载积分比例失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{_()},[]);let v=(0,C.useMemo)(()=>n.filter(e=>e.genType===h).map(e=>({value:e.id,label:`${e.name}${e.modelName?`(${e.modelName})`:``}`})),[n,h]),y=(0,C.useMemo)(()=>n.find(e=>e.id===g&&e.genType===h),[n,h,g]),b=(0,C.useMemo)(()=>{if(h===`image`){let e=y?.supportedSizes?Object.keys(y.supportedSizes):[];return(e.length?e:LHe).map(e=>({value:e,label:e}))}let e=y?.supportedResolutions||[];return(e.length?e:RHe).map(e=>({value:e,label:e}))},[h,y]),x=(e,t)=>n.find(n=>n.id===e&&(!t||n.genType===t))?.name||e,S=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),o.ratio?(await C5({id:o.ratio.id,...t}),CP.success(`已更新`)):(await C5(t),CP.success(`已添加`)),s({open:!1,ratio:null}),c.resetFields(),_()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},w=async e=>{try{await ABe(e),CP.success(`已删除`),_()}catch{CP.error(`删除失败`)}},T=async()=>{if(d){m(!0);try{await _5(d.id,String(l)),CP.success(`文字积分费率已更新`)}catch(e){CP.error(e?.message||`保存失败`)}finally{m(!1)}}},E=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}):(c.resetFields(),c.setFieldsValue({genType:`video`,ratio:1,baseCredits:60,perSecondCredits:2,inputVideoRatio:1,inputVideoBaseCredits:0,inputVideoPerSecondCredits:.5}))};return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(xZ,{style:{fontSize:18,color:`#f59e0b`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`文字积分费率`})]}),(0,Q.jsx)($S,{type:`primary`,loading:p,onClick:T,style:{borderRadius:8},children:`保存`})]}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{display:`block`,marginBottom:16,fontSize:13},children:`文字积分计算公式:ceil(总token数 x 费率 / 1000),最低1积分`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:16},children:[(0,Q.jsx)(Z.Text,{children:`每1000 token消耗积分:`}),(0,Q.jsxs)(IM.Compact,{style:{width:160},children:[(0,Q.jsx)(Pj,{min:0,max:1e3,step:.01,value:l,onChange:e=>u(e||0),size:`large`,style:{width:`100%`}}),(0,Q.jsx)(Z.Text,{children:`积分`})]}),(0,Q.jsxs)(Z.Text,{type:`secondary`,style:{fontSize:12},children:[`示例:1000 token = `,l,` 积分,500 token = `,(500*l/1e3).toFixed(4),` 积分`]})]})]}),(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KG,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`积分比例配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 条规则`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>E(),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)(vR,{columns:[{title:`类型`,dataIndex:`genType`,width:80,render:e=>(0,Q.jsx)(jR,{color:e===`image`?`cyan`:`orange`,children:e===`image`?`图片`:`视频`})},{title:`引擎`,dataIndex:`modelConfigId`,width:180,render:(e,t)=>(0,Q.jsx)(jR,{color:t.genType===`image`?`cyan`:`purple`,children:x(e,t.genType)})},{title:`分辨率/尺寸`,dataIndex:`resolution`,width:110,render:e=>(0,Q.jsx)(jR,{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:`视频倍率`,dataIndex:`inputVideoRatio`,width:100,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:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分`})},{title:`视频每秒积分`,dataIndex:`inputVideoPerSecondCredits`,width:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分/秒`})},{title:`示例计算(视频15秒,上传视频15秒)`,key:`example`,width:140,render:(e,t)=>{let n;return t.genType===`image`?n=Math.round(t.baseCredits*t.ratio):(n=Math.round((t.baseCredits+t.perSecondCredits*15)*t.ratio),t.inputVideoRatio&&t.inputVideoPerSecondCredits&&(n+=Math.round((t.inputVideoBaseCredits+t.inputVideoPerSecondCredits*15)*t.inputVideoRatio))),(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)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>E(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>w(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:!1,scroll:{x:1180}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KG,{}),o.ratio?`编辑比例`:`添加比例`]}),open:o.open,onOk:S,onCancel:()=>{s({open:!1,ratio:null}),c.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`genType`,label:`生成类型`,rules:[{required:!0,message:`请选择生成类型`}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`video`,label:`视频`},{value:`image`,label:`图片`}],onChange:()=>{c.setFieldsValue({modelConfigId:void 0,resolution:void 0})}})}),(0,Q.jsx)(X.Item,{name:`modelConfigId`,label:`引擎`,rules:[{required:!0,message:`请选择引擎`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:`请选择引擎`,options:v,showSearch:!0,optionFilterProp:`label`,onChange:()=>c.setFieldsValue({resolution:void 0})})}),(0,Q.jsx)(X.Item,{name:`resolution`,label:h===`image`?`图片尺寸`:`分辨率`,rules:[{required:!0,message:h===`image`?`请选择图片尺寸`:`请选择分辨率`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:h===`image`?`请选择图片尺寸`:`请选择分辨率`,options:b})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`ratio`,label:`倍率`,style:{flex:1},rules:[{required:!0,message:`请输入倍率`}],children:(0,Q.jsx)(Pj,{min:.1,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`baseCredits`,label:`基础积分`,style:{flex:1},rules:[{required:!0,message:`请输入基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:1e3,style:{width:`100%`},size:`large`})}),h!==`image`&&(0,Q.jsx)(X.Item,{name:`perSecondCredits`,label:`每秒积分`,style:{flex:1},rules:[{required:!0,message:`请输入每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`})})]}),h!==`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)(X.Item,{name:`inputVideoRatio`,label:`倍率`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频倍率`}],children:(0,Q.jsx)(Pj,{min:0,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoBaseCredits`,label:`基础积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:500,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoPerSecondCredits`,label:`每秒积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:50,style:{width:`100%`},size:`large`})})]})]})]})})]})},l7={HomeOutlined:(0,Q.jsx)(OQ,{}),PlayCircleOutlined:(0,Q.jsx)(C0,{}),WalletOutlined:(0,Q.jsx)(v8,{}),RobotOutlined:(0,Q.jsx)(W2,{}),SettingOutlined:(0,Q.jsx)(x4,{}),BellOutlined:(0,Q.jsx)(QU,{}),UserOutlined:(0,Q.jsx)(n8,{}),AppstoreOutlined:(0,Q.jsx)(OH,{}),FileTextOutlined:(0,Q.jsx)(BM,{}),StarOutlined:(0,Q.jsx)(S3,{}),HeartOutlined:(0,Q.jsx)(_Q,{}),CameraOutlined:(0,Q.jsx)(sK,{}),DashboardOutlined:(0,Q.jsx)(FJ,{}),CalculatorOutlined:(0,Q.jsx)(KG,{}),DollarOutlined:(0,Q.jsx)(fY,{}),GiftOutlined:(0,Q.jsx)(KZ,{}),ThunderboltOutlined:(0,Q.jsx)(s6,{}),FireOutlined:(0,Q.jsx)(aZ,{}),CloudOutlined:(0,Q.jsx)(jq,{}),SmileOutlined:(0,Q.jsx)(a3,{}),TrophyOutlined:(0,Q.jsx)(w6,{}),RocketOutlined:(0,Q.jsx)(q2,{}),BulbOutlined:(0,Q.jsx)(LG,{}),CodeOutlined:(0,Q.jsx)(Bq,{}),PictureOutlined:(0,Q.jsx)(m0,{}),VideoCameraOutlined:(0,Q.jsx)(m8,{}),AudioOutlined:(0,Q.jsx)(iU,{}),MailOutlined:(0,Q.jsx)(q$,{}),PhoneOutlined:(0,Q.jsx)(s0,{}),GlobalOutlined:(0,Q.jsx)($Z,{}),ShoppingCartOutlined:(0,Q.jsx)(k4,{}),TeamOutlined:(0,Q.jsx)(i6,{}),BarChartOutlined:(0,Q.jsx)(jU,{}),PieChartOutlined:(0,Q.jsx)(_0,{}),LineChartOutlined:(0,Q.jsx)(D$,{}),SecurityScanOutlined:(0,Q.jsx)(m4,{}),ApiOutlined:(0,Q.jsx)(uH,{}),DatabaseOutlined:(0,Q.jsx)(zJ,{}),CloudServerOutlined:(0,Q.jsx)(Nq,{}),MenuOutlined:(0,Q.jsx)(l1,{})},BHe=Object.keys(l7).map(e=>({value:e,label:(0,Q.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[l7[e],` `,e.replace(`Outlined`,``)]})})),VHe={page:`blue`,group:`purple`},HHe={page:`页面`,group:`分组`},UHe=()=>{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]=X.useForm(),l=async()=>{r(!0);try{t(await w5())}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 T5({...t,id:o.menu.id}):await T5(t),CP.success(o.menu?.id?`菜单已更新`:`菜单已添加`),s({open:!1,menu:null}),c.resetFields(),l()}catch{}},d=async e=>{try{await BBe(e),CP.success(`菜单已删除`),l()}catch(e){CP.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&&l7[e]?(0,Q.jsx)(`span`,{style:{fontSize:16,color:`#6366f1`},children:l7[e]}):`-`},{title:`类型`,dataIndex:`menuType`,width:80,render:e=>(0,Q.jsx)(jR,{color:VHe[e]||`default`,children:HHe[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)(jR,{color:`green`,children:`默认`}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})}]:[],{title:`操作`,key:`action`,width:150,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除该菜单?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}];return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`菜单配置`})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加菜单`})]}),(0,Q.jsx)(zA,{activeKey:i,onChange:a,items:[{key:`frontend`,label:`前台菜单`},{key:`admin`,label:`后台菜单`}]}),(0,Q.jsx)(vR,{columns:v,dataSource:h,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(l1,{}),o.menu?.id?`编辑菜单`:`添加菜单`]}),open:o.open,onOk:u,onCancel:()=>{s({open:!1,menu:null}),c.resetFields()},okText:`确认`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`label`,label:`菜单名称`,rules:[{required:!0,message:`请输入菜单名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:我的项目`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`path`,label:`路由路径`,tooltip:`分组类型可留空`,children:(0,Q.jsx)(GN,{placeholder:`例如:/projects(分组可留空)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`menuType`,label:`菜单类型`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`page`,label:`页面`},{value:`group`,label:`分组`}]})}),(0,Q.jsx)(X.Item,{name:`menuTarget`,label:`适用端`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`icon`,label:`图标`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:BHe})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`,placeholder:`默认0`})})]}),(0,Q.jsx)(X.Item,{name:`parentId`,label:`上级菜单`,children:(0,Q.jsx)(Tb,{size:`large`,options:m,allowClear:!0,placeholder:`顶级菜单`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.menuTarget!==t.menuTarget,children:({getFieldValue:e})=>e(`menuTarget`)===`admin`?null:(0,Q.jsx)(X.Item,{name:`isDefault`,label:`新用户默认显示`,valuePropName:`checked`,tooltip:`开启后,新注册用户默认显示此菜单`,children:(0,Q.jsx)(lF,{})})})]})})]})},WHe={normal:`blue`,gift:`green`,promo:`purple`},GHe={normal:`常规`,gift:`赠送`,promo:`促销`},KHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,item:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await D5()).map(e=>({id:e.id,name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonus_credits??e.bonusCredits??0,totalCredits:e.total_credits??e.totalCredits??e.credits,description:e.description,packageType:e.package_type??e.packageType??`normal`,isGift:e.is_gift??e.isGift??!1,isActive:e.is_active??e.isActive??!0,sortOrder:e.sort_order??e.sortOrder??0})))}catch{CP.error(`加载充值套餐失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={name:e.name,credits:e.credits,price:e.price,bonus_credits:e.bonusCredits||0,description:e.description||null,package_type:e.packageType||`normal`,is_gift:e.isGift||!1,is_active:e.isActive??!0,sort_order:e.sortOrder??0};i.item?.id?(await O5({id:i.item.id,...t}),CP.success(`已更新`)):(await O5(t),CP.success(`已添加`)),a({open:!1,item:null}),o.resetFields(),s()}catch{}},l=async e=>{try{await GBe(e),CP.success(`已删除`),s()}catch(e){CP.error(e?.message||`删除失败`)}},u=e=>{a({open:!0,item:e||null}),e?o.setFieldsValue({name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonusCredits,description:e.description,packageType:e.packageType,isGift:e.isGift,isActive:e.isActive,sortOrder:e.sortOrder}):(o.resetFields(),o.setFieldsValue({isActive:!0,sortOrder:0,packageType:`normal`,bonusCredits:0,isGift:!1}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KZ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`充值套餐管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个套餐`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加套餐`})]}),(0,Q.jsx)(vR,{columns:[{title:`套餐名称`,key:`name`,width:160,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),t.description&&(0,Q.jsx)(`div`,{style:{color:`#94a3b8`,fontSize:12},children:t.description})]})},{title:`基础积分`,dataIndex:`credits`,width:100,render:e=>(0,Q.jsx)(Z.Text,{children:e.toLocaleString()})},{title:`赠送积分`,dataIndex:`bonusCredits`,width:100,render:e=>e>0?(0,Q.jsxs)(jR,{color:`green`,children:[`+`,e.toLocaleString()]}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})},{title:`总积分`,key:`total`,width:100,render:(e,t)=>(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:(t.credits+t.bonusCredits).toLocaleString()})},{title:`价格(元)`,dataIndex:`price`,width:100,render:e=>(0,Q.jsxs)(Z.Text,{strong:!0,children:[`¥`,e]})},{title:`类型`,dataIndex:`packageType`,width:80,render:e=>(0,Q.jsx)(jR,{color:WHe[e]||`default`,children:GHe[e]||e})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KZ,{}),i.item?`编辑套餐`:`添加套餐`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,item:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`套餐名称`,rules:[{required:!0,message:`请输入套餐名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:进阶包`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`credits`,label:`基础积分`,rules:[{required:!0,message:`请输入积分`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:1,placeholder:`2000`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`price`,label:`价格(元)`,rules:[{required:!0,message:`请输入价格`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:.01,step:1,placeholder:`168`,size:`large`,style:{width:`100%`}})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`bonusCredits`,label:`赠送积分`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,placeholder:`0`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`packageType`,label:`套餐类型`,initialValue:`normal`,style:{flex:1},children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`normal`,label:`常规`},{value:`gift`,label:`赠送`},{value:`promo`,label:`促销`}]})})]}),(0,Q.jsx)(X.Item,{name:`description`,label:`描述`,children:(0,Q.jsx)(GN,{placeholder:`套餐描述(可选)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`isGift`,label:`是否赠送`,valuePropName:`checked`,initialValue:!1,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{size:`large`,style:{width:`100%`}})})]})]})})]})},qHe={POST:`green`,PUT:`blue`,DELETE:`red`},JHe=()=>{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 KBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载操作日志失败`)}finally{a(!1)}};return(0,C.useEffect)(()=>{c()},[]),(0,Q.jsx)(`div`,{children:(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(TQ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`操作日志`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>c(),children:`刷新`})]}),(0,Q.jsx)(vR,{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)(jR,{color:qHe[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:B5(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}})]})})},YHe=()=>{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]=X.useForm(),[_]=X.useForm(),v=async e=>{a(!0);try{let n=await qBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载应用管理列表失败`)}finally{a(!1)}},y=async()=>{try{let e=await g.validateFields();await JBe({app_id:e.app_id,secret:e.secret,open_type:e.open_type,count:e.count,auth_url:e.auth_url,company:e.company}),CP.success(`创建成功`),l(!1),g.resetFields(),v()}catch(e){CP.error(e?.message||`创建失败`)}},b=async e=>{try{h(await k5(e)),d(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},x=async e=>{try{let t=await k5(e);h(t),_.setFieldsValue({app_id:t.app_id,secret:t.secret,open_type:t.open_type,count:t.max_count,auth_url:t.auth_url,company:t.company}),p(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},S=async()=>{if(m)try{let e=await _.validateFields();await YBe(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}),CP.success(`更新成功`),p(!1),_.resetFields(),v()}catch(e){CP.error(e?.message||`更新失败`)}},w=e=>{TP.confirm({title:`确认删除`,content:`确定要删除这个应用管理吗?`,okText:`删除`,okType:`danger`,cancelText:`取消`,onOk:async()=>{try{await XBe(e),CP.success(`删除成功`),v()}catch(e){CP.error(e?.message||`删除失败`)}}})};return(0,C.useEffect)(()=>{v()},[]),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`应用管理列表`})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>v(),children:`刷新`}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>l(!0),children:`创建`})]})]}),(0,Q.jsx)(vR,{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)(hx,{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)(jR,{color:e===1?`green`:`red`,children:e===1?`正常`:`禁用`})},{title:`授权URL`,dataIndex:`authUrl`,width:200,render:e=>e?(0,Q.jsx)(hx,{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:B5(e)})},{title:`更新时间`,dataIndex:`updatedAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:B5(e)})},{title:`操作`,width:120,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(IN,{}),size:`small`,onClick:()=>b(t.id),children:`详情`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(LR,{}),size:`small`,onClick:()=>x(t.id),children:`更新`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(PR,{}),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)(TP,{title:`创建应用管理`,open:c,onOk:y,onCancel:()=>{l(!1),g.resetFields()},okText:`创建`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:g,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,initialValue:100,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})}),(0,Q.jsx)(TP,{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.app_id]}),(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.open_type]||m.open_type]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`归属公司:`}),` `,m.company||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`授权次数:`}),` `,m.max_count]}),(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.auth_url||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建人:`}),` `,m.create_by]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建时间:`}),` `,B5(m.created_at)]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`更新时间:`}),` `,B5(m.updated_at)]})]})}),(0,Q.jsx)(TP,{title:`更新应用管理`,open:f,onOk:S,onCancel:()=>{p(!1),_.resetFields(),h(null)},okText:`更新`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:_,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})})]})},u7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),d7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},f7={optimizing:{color:`processing`,text:`优化中`,icon:(0,Q.jsx)(fm,{spin:!0})},prompt_optimized:{color:`processing`,text:`待生成`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},p7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},XHe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),m7=e=>!!e&&/^blob:/i.test(e.trim()),h7=e=>{if(!e)return``;let t=String(e).trim();return t?XHe(t)?t:u7?`${u7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},ZHe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,g7=e=>e?B5(e):`-`,QHe=e=>e==null||e===``,_7=e=>{if(!e||m7(e))return!1;try{let t=new URL(h7(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}},v7=e=>e?m7(e)||_7(e)?`invalid`:`checking`:`empty`,y7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},$He=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=y7(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`},b7=(e,t)=>`${t}-${y7(e)||`empty`}`,x7=(e,t=`资源`)=>m7(e)?`本地临时素材已失效`:_7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,S7=({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]}),C7=({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:QHe(t)?`-`:t})]}),eUe=()=>{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)(0),[h,g]=(0,C.useState)(null),[_,v]=(0,C.useState)(d7),[y,b]=(0,C.useState)(!1),x=(0,C.useRef)(null),[S,w]=(0,C.useState)(null),[T,E]=(0,C.useState)(null),D=(0,C.useCallback)(async()=>{a(!0);try{let e=await nVe({userId:d.trim()||void 0,status:l||void 0,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}))),r(e.total||0)}catch{CP.error(`加载记录失败`)}finally{a(!1)}},[l,d,o,c]);(0,C.useEffect)(()=>{D()},[D,p]),(0,C.useEffect)(()=>{if(!h){v(d7);return}let e=(h.references||[]).reduce((e,t,n)=>{let r=y7(t);return e[b7(t,n)]=v7(r),e},{});x.current&&(x.current.pause(),x.current.currentTime=0),b(!1),v({image:v7(h.imageUrl),video:v7(h.videoUrl),videoCover:v7(h.videoCoverUrl),references:e})},[h]);let O=()=>{s(1),m(e=>e+1)},k=(0,C.useCallback)(e=>{g(e)},[]),A=()=>{x.current&&x.current.pause(),b(!1),g(null)},j=e=>{v(t=>({...t,...e}))},M=(e,t)=>{v(n=>({...n,references:{...n.references,[e]:t}}))},N=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(m7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(_7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(h7(e),`_blank`,`noopener,noreferrer`)},P=()=>{if(h?.videoUrl){if(_7(h.videoUrl)){j({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}b(!0),window.setTimeout(()=>{x.current?.play().catch(()=>{b(!1),j({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},F=async(e,t,n)=>{w(e);try{await rVe(e,t,n),CP.success(`状态已更新`),D()}catch(e){CP.error(e?.message||`更新失败`)}finally{w(null)}},I=async()=>{if(T){w(T.record.id);try{await iVe(T.record.id,T.ratio,T.resolution,T.image_size),CP.success(`已提交${T.record.genType===`video`?`视频`:`图片`}生成`),E(null),D()}catch(e){CP.error(e?.message||`生成失败`)}finally{w(null)}}},L=(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:ZHe(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)(jR,{color:`cyan`,children:e||`-`})},{title:`类型`,dataIndex:`genType`,width:90,ellipsis:!0,render:e=>{let t=p7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`提示词`,key:`prompt`,ellipsis:!0,render:(e,t)=>(0,Q.jsx)(hx,{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`?t.duration||t.aspectRatio||t.resolution?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`})},{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=f7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`时间`,key:`time`,width:150,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:g7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,g7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>k(t),children:`详情`}),t.status===`generating`?(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`}):null,t.status===`failed`?(0,Q.jsx)($S,{size:`small`,type:`primary`,danger:!0,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),children:`重试生成`}):null,t.status===`prompt_optimized`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)($S,{size:`small`,type:`primary`,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),style:{background:`#6366f1`,border:`none`},children:[`生成`,t.genType===`video`?`视频`:`图片`]}),(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`})]}):null]})}],[k,S]),R=h?p7[h.genType||``]||{text:h.genType||`-`,color:`default`,icon:null}:null,z=h?f7[h.status]||{color:`default`,text:h.status||`-`,icon:null}:null,B=()=>{if(!h||h.genType!==`image`||h.status!==`completed`)return null;if(!h.imageUrl)return(0,Q.jsx)(S7,{text:`此图片任务暂无结果图片`,minHeight:260});if(_.image===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.imageUrl,`图片`),minHeight:260});let e=h7(h.imageUrl);return(0,Q.jsxs)(`div`,{title:`点击新页面查看图片`,onClick:()=>N(h.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:()=>j({image:`valid`}),onError:()=>j({image:`invalid`}),style:{display:_.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${h.id}-${e}`),_.image===`checking`?(0,Q.jsx)(S7,{text:`图片加载检测中...`,minHeight:260}):null]})},V=()=>{if(!h||y||_.video===`invalid`)return null;let e=h.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:P,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!h.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)(S7,{text:`此视频无封面`,minHeight:340,action:e})});if(_.videoCover===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=h7(h.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:()=>j({videoCover:`valid`}),onError:()=>j({videoCover:`invalid`}),style:{display:_.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${h.id}-cover-${t}`),_.videoCover===`checking`?(0,Q.jsx)(S7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,_.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]})},H=()=>{if(!h||h.genType!==`video`||h.status!==`completed`)return null;if(!h.videoUrl)return(0,Q.jsx)(S7,{text:`此视频任务暂无结果视频`,minHeight:340});if(_.video===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoUrl,`视频`),minHeight:340});let e=h7(h.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:x,src:e,preload:`metadata`,controls:y,onLoadedMetadata:()=>j({video:`valid`}),onCanPlay:()=>j({video:`valid`}),onPlaying:()=>{b(!0),j({video:`valid`})},onPause:()=>b(!1),onEnded:()=>b(!1),onError:()=>{b(!1),j({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!y,pointerEvents:y?`auto`:`none`}},`${h.id}-${e}`),V()]})},U=(e,t)=>{let n=y7(e),r=$He(e),i=b7(e,t),a=_.references[i]||v7(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)(S7,{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)(S7,{text:m7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=h7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>N(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&N(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:()=>M(i,`valid`),onError:()=>M(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:()=>M(i,`valid`),onError:()=>M(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(m8,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`生成记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:200},value:d,onChange:e=>f(e.target.value),onPressEnter:O,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:O,style:{borderRadius:8},children:`搜索`})]})]}),(0,Q.jsx)(vR,{columns:L,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)(TP,{title:(0,Q.jsxs)(IM,{children:[h?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`生成记录详情`})]}),open:!!h,onCancel:A,footer:null,width:900,destroyOnClose:!0,children:h?(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:h.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:h.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)(IM,{size:4,wrap:!0,children:[R?(0,Q.jsx)(jR,{color:R.color,icon:R.icon,children:R.text}):null,z?(0,Q.jsx)(jR,{color:z.color,icon:z.icon,children:z.text}):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:h.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:h.optimizedPrompt||`-`})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`文字积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#f59e0b`},children:h.textCreditsCost||0}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.textTokensUsed||0,` tokens)`]})]})}),(0,Q.jsx)(C7,{label:`${h.genType===`image`?`图片`:`视频`}积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:h.creditsCost||0}),h.genType===`video`&&h.videoTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.videoTokensUsed,` tokens)`]}):null,h.genType===`image`&&h.imageTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.imageTokensUsed,` tokens)`]}):null]})}),(0,Q.jsx)(C7,{label:`总积分`,value:(h.textCreditsCost||0)+(h.creditsCost||0)})]}),h.genType===`video`?h.duration||h.aspectRatio||h.resolution?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`时长`,value:h.duration?`${h.duration}秒`:`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.aspectRatio||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.resolution||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`视频参数待用户配置`})}):null,h.genType===`image`?h.imageSize||h.imageProportion||h.imagePx?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`尺寸`,value:h.imagePx||`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.imageProportion||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.imageSize||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`图片参数待用户配置`})}):null,!h?.references||h.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:h.references.map((e,t)=>U(e,t))})]}),h.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:h.genType===`video`?`生成视频`:`生成图片`}),h.genType===`video`?H():B()]}):null,h.status===`failed`&&h.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:[`错误信息: `,h.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,g7(h.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,g7(h.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[T&&(T.record.genType===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(DX,{})),T&&(T.record.genType===`video`?`生成视频`:`生成图片`)]}),open:!!T,onCancel:()=>E(null),onOk:I,okText:`提交生成`,cancelText:`取消`,confirmLoading:T?S===T.record.id:!1,width:420,children:T?(0,Q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginTop:16},children:T.record.genType===`video`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`时长`}),(0,Q.jsxs)(Z.Text,{strong:!0,children:[T.record.duration||5,`s`]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`画面比例`}),(0,Q.jsx)(Tb,{value:T.ratio,onChange:e=>E(t=>t?{...t,ratio:e}:null),style:{width:`100%`},options:[`16:9`,`4:3`,`1:1`,`3:4`,`9:16`,`21:9`].map(e=>({value:e,label:e}))})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.resolution,onChange:e=>E(t=>t?{...t,resolution:e}:null),style:{width:`100%`},options:[`480p`,`720p`,`1080p`].map(e=>({value:e,label:e}))})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{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:T.record.imagePx||`-`})]}),(0,Q.jsxs)(`div`,{style:{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:T.record.imageProportion||`-`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.image_size,onChange:e=>E(t=>t?{...t,image_size:e}:null),style:{width:`100%`},options:[`2K`,`4K`].map(e=>({value:e,label:e}))})]})]})}):null})]})},{RangePicker:tUe}=gM,w7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),T7=20,E7=e=>e&&(e.name||e.modelName||e.id)||null,D7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},O7={pending:{color:`default`,text:`待处理`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},k7={timeout:`任务超时`,queued:`已入队`,preparing:`准备中`,creating_provider_task:`创建任务中`,waiting_remote:`等待生成`,result_ready:`结果就绪`,downloading:`下载中`,done:`完成`,download_failed:`下载失败`,polling:`轮询中`,failed:`失败`},A7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},nUe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),j7=e=>!!e&&/^blob:/i.test(e.trim()),M7=e=>{if(!e)return``;let t=String(e).trim();return t?nUe(t)?t:w7?`${w7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},rUe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,N7=e=>e?B5(e):`-`,iUe=e=>e==null||e===``,P7=e=>{if(!e||j7(e))return!1;try{let t=new URL(M7(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}},F7=e=>e?j7(e)||P7(e)?`invalid`:`checking`:`empty`,I7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},L7=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=I7(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`},R7=(e,t)=>`${t}-${I7(e)||`empty`}`,z7=(e,t=`资源`)=>j7(e)?`本地临时素材已失效`:P7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,B7=({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]}),V7=({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:iUe(t)?`-`:t})]}),H7=()=>(0,tC.default)().startOf(`day`),U7=()=>(0,tC.default)().endOf(`day`),aUe=()=>{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)([H7(),U7()]),[D,O]=(0,C.useState)([H7(),U7()]),[k,A]=(0,C.useState)(0),[j,M]=(0,C.useState)(null),[N,P]=(0,C.useState)(D7),[F,I]=(0,C.useState)(!1),L=(0,C.useRef)(null),[R,z]=(0,C.useState)(null),B=(0,C.useCallback)(async()=>{a(!0);try{let e=await oVe({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:T7});t(e.items||[]),r(e.total||0)}catch(e){CP.error(e?.message||`加载创作记录失败`)}finally{a(!1)}},[u,c,o,v,b,S,D]);(0,C.useEffect)(()=>{B()},[B,k]),(0,C.useEffect)(()=>{if(!j){P(D7);return}let e=(j.mediaReferences||[]).reduce((e,t,n)=>{let r=I7(t);return e[R7(t,n)]=F7(r),e},{});L.current&&(L.current.pause(),L.current.currentTime=0),I(!1),P({image:F7(j.imageUrl),video:F7(j.videoUrl),videoCover:F7(j.videoCoverUrl),references:e})},[j]);let V=()=>{s(1),y(m.trim()),x(g.trim()),w(f),O(T),A(e=>e+1)},H=()=>{l(``),d(``),p(``),h(``),_(``),y(``),x(``),w(``);let e=[H7(),U7()];E(e),O(e),s(1),A(e=>e+1)},U=(0,C.useCallback)(e=>{M(e)},[]),W=()=>{L.current&&L.current.pause(),I(!1),M(null)},ee=e=>{P(t=>({...t,...e}))},te=(e,t)=>{P(n=>({...n,references:{...n.references,[e]:t}}))},ne=()=>{if(j?.videoUrl){if(P7(j.videoUrl)){ee({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}I(!0),window.setTimeout(()=>{L.current?.play().catch(()=>{I(!1),ee({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},re=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(M7(e),`_blank`,`noopener,noreferrer`)},ie=(e,t,n)=>{if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`链接已超时,请刷新列表或重新搜索后再查看`);return}z({url:M7(e),type:t,title:n})},ae=()=>z(null),G=(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:rUe(t.userId)})]})},{title:`类型`,dataIndex:`genType`,width:90,render:e=>{let t=A7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`引擎`,key:`engine`,width:160,render:(e,t)=>{let n=E7(t.engineSnapshot);return(0,Q.jsx)(hx,{title:t.engineId||`未知引擎`,placement:`topLeft`,children:(0,Q.jsx)(jR,{icon:(0,Q.jsx)(W2,{}),color:`cyan`,children:n||t.engineId||`-`})})}},{title:`附件`,key:`references`,width:110,render:(e,t)=>{let n=t.mediaReferences||[];if(n.length===0)return(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`},children:`无`});let r=n.filter(e=>L7(e)===`image`).length,i=n.filter(e=>L7(e)===`video`).length,a=n.length-r-i;return(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[r>0?(0,Q.jsxs)(jR,{color:`purple`,icon:(0,Q.jsx)(DX,{}),children:[r,` 图`]}):null,i>0?(0,Q.jsxs)(jR,{color:`geekblue`,icon:(0,Q.jsx)(m8,{}),children:[i,` 视频`]}):null,a>0?(0,Q.jsxs)(jR,{children:[a,` 文件`]}):null]})}},{title:`结果`,key:`result`,width:90,render:(e,t)=>t.status===`completed`?t.genType===`video`&&t.videoUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(C0,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),re(t.videoUrl,`视频`)},children:`看视频`}):t.genType===`image`&&t.imageUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(DX,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),re(t.imageUrl,`图片`)},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)(hx,{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)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`无参数`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{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=O7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`阶段`,dataIndex:`pipelineStage`,width:120,render:e=>(0,Q.jsx)(jR,{color:`blue`,children:k7[e]||e||`-`})},{title:`时间`,key:`time`,width:170,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:N7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,N7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:90,fixed:`right`,render:(e,t)=>(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>U(t),children:`详情`})}],[U]),oe=j?A7[j.genType]||{text:j.genType||`-`,color:`default`,icon:null}:null,K=j?O7[j.status]||{color:`default`,text:j.status||`-`,icon:null}:null,se=()=>{if(!j||j.genType!==`image`||j.status!==`completed`)return null;if(!j.imageUrl)return(0,Q.jsx)(B7,{text:`此图片任务暂无结果图片`,minHeight:260});if(N.image===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.imageUrl,`图片`),minHeight:260});let e=M7(j.imageUrl);return(0,Q.jsxs)(`div`,{style:{position:`relative`,width:`100%`,minHeight:260,borderRadius:12,background:`#f8f9fc`,border:`1px solid #e2e8f0`,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:[(0,Q.jsx)(`img`,{src:e,alt:`生成图片`,onLoad:()=>ee({image:`valid`}),onError:()=>ee({image:`invalid`}),style:{display:N.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${j.id}-${e}`),N.image===`checking`?(0,Q.jsx)(B7,{text:`图片加载检测中...`,minHeight:260}):null]})},ce=()=>{if(!j||F||N.video===`invalid`)return null;let e=j.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:ne,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!j.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)(B7,{text:`此视频无封面`,minHeight:340,action:e})});if(N.videoCover===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=M7(j.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:()=>ee({videoCover:`valid`}),onError:()=>ee({videoCover:`invalid`}),style:{display:N.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${j.id}-cover-${t}`),N.videoCover===`checking`?(0,Q.jsx)(B7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,N.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]})},le=()=>{if(!j||j.genType!==`video`||j.status!==`completed`)return null;if(!j.videoUrl)return(0,Q.jsx)(B7,{text:`此视频任务暂无结果视频`,minHeight:340});if(N.video===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoUrl,`视频`),minHeight:340});let e=M7(j.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:L,src:e,preload:`metadata`,controls:F,onLoadedMetadata:()=>ee({video:`valid`}),onCanPlay:()=>ee({video:`valid`}),onPlaying:()=>{I(!0),ee({video:`valid`})},onPause:()=>I(!1),onEnded:()=>I(!1),onError:()=>{I(!1),ee({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!F,pointerEvents:F?`auto`:`none`}},`${j.id}-${e}`),ce()]})},ue=(e,t)=>{let n=I7(e),r=L7(e),i=R7(e,t),a=N.references[i]||F7(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)(B7,{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)(B7,{text:j7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=M7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>re(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&re(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:()=>te(i,`valid`),onError:()=>te(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:()=>te(i,`valid`),onError:()=>te(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`创作记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(Tb,{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)(Tb,{allowClear:!0,showSearch:!0,placeholder:`引擎筛选`,value:f||void 0,style:{width:180},onChange:e=>{p(e||``),s(1),w(e||``)},optionFilterProp:`label`,options:Array.from(new Map(e.filter(e=>e.engineId).map(e=>[e.engineId,{value:e.engineId,label:E7(e.engineSnapshot)||e.engineId}])).values())}),(0,Q.jsx)(tUe,{value:T,onChange:e=>{E(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:m,onChange:e=>h(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)(GN,{placeholder:`用户名搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:g,onChange:e=>_(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:V,style:{borderRadius:8},children:`搜索`}),(0,Q.jsx)($S,{onClick:H,style:{borderRadius:8},children:`重置`})]})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:i,columns:G,dataSource:e,scroll:{x:1650},pagination:{current:o,pageSize:T7,total:n,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:e=>s(e)}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[j?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`创作记录详情`})]}),open:!!j,onCancel:W,footer:null,width:900,destroyOnClose:!0,children:j?(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:[oe?(0,Q.jsx)(jR,{color:oe.color,icon:oe.icon,children:oe.text}):null,K?(0,Q.jsx)(jR,{color:K.color,icon:K.icon,children:K.text}):null,j.pipelineStage?(0,Q.jsx)(jR,{color:`blue`,children:k7[j.pipelineStage]||j.pipelineStage}):null]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`用户名称`,value:j.userName||`未知用户`}),(0,Q.jsx)(V7,{label:`用户ID`,value:j.userId||`-`}),(0,Q.jsx)(V7,{label:`任务ID`,value:j.id})]}),(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:j.originalPrompt||`-`})]}),j.genType===`video`?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`时长`,value:j.duration?`${j.duration}秒`:`-`}),(0,Q.jsx)(V7,{label:`画面比例`,value:j.aspectRatio||`-`}),(0,Q.jsx)(V7,{label:`分辨率`,value:j.resolution||`-`})]}):(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`图片档位`,value:j.imageSize||`-`}),(0,Q.jsx)(V7,{label:`图片比例`,value:j.imageProportion||`-`}),(0,Q.jsx)(V7,{label:`像素尺寸`,value:j.imagePx||`-`})]}),j.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)(V7,{label:`引擎名称`,value:j.engineSnapshot.name||`-`}),(0,Q.jsx)(V7,{label:`服务商`,value:j.engineSnapshot.provider||`-`}),(0,Q.jsx)(V7,{label:`模型`,value:j.engineSnapshot.modelName||`-`}),(0,Q.jsx)(V7,{label:`引擎ID`,value:j.engineSnapshot.id||j.engineId||`-`})]})]}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`总积分`,value:(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:j.creditsCost||0})}),(0,Q.jsx)(V7,{label:`文字积分`,value:`${j.textCreditsCost||0} (${j.textTokensUsed||0} tokens)`}),(0,Q.jsx)(V7,{label:`图片 tokens`,value:j.imageTokensUsed??0}),(0,Q.jsx)(V7,{label:`视频 tokens`,value:j.videoTokensUsed??0})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`第三方任务ID`,value:j.providerTaskId||j.seedanceTaskId||`-`}),(0,Q.jsx)(V7,{label:`轮询次数`,value:j.pollCount??0}),(0,Q.jsx)(V7,{label:`重试次数`,value:j.retryCount??0})]}),!j?.mediaReferences||j.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:j.mediaReferences.map((e,t)=>ue(e,t))})]}),j.mediaReferences&&j.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)(IM,{size:8,wrap:!0,children:j.mediaReferences.map((e,t)=>{let n=I7(e),r=L7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)($S,{size:`small`,icon:r===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(j$,{}),onClick:()=>ie(n,r===`video`?`video`:`image`,i),children:i},t):null})})]}):null,j.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:6},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`},children:j.genType===`video`?`生成视频`:`生成图片`}),j.genType===`video`&&j.videoUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(C0,{}),onClick:()=>ie(j.videoUrl,`video`,`生成视频`),style:{padding:0},children:`弹窗播放`}):null,j.genType===`image`&&j.imageUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(DX,{}),onClick:()=>ie(j.imageUrl,`image`,`生成图片`),style:{padding:0},children:`弹窗查看`}):null]}),j.genType===`video`?le():se()]}):null,j.status===`failed`&&j.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:[`错误信息: `,j.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,N7(j.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,N7(j.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:R?.title||`资源预览`,open:!!R,onCancel:ae,footer:null,width:R?.type===`video`?800:600,destroyOnHidden:!0,children:R?R.type===`video`?(0,Q.jsx)(`video`,{src:R.url,controls:!0,autoPlay:!0,style:{width:`100%`,maxHeight:600,background:`#000`,borderRadius:8}},R.url):(0,Q.jsx)(`img`,{src:R.url,alt:R.title,style:{width:`100%`,maxHeight:600,objectFit:`contain`,borderRadius:8}}):null})]})},W7=20,oUe=[{value:`pending`,label:`已创建`},{value:`waiting_user`,label:`等待用户操作`},{value:`processing`,label:`处理中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`},{value:`cancelled`,label:`已取消`}],sUe={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:`已取消`}},cUe={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},G7=e=>e?B5(e):`-`,K7=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,lUe=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=sUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},uUe=()=>{let e=Ze(),[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 sVe({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:W7});n(e.items||[]),i(e.total||0)}catch(e){CP.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.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`爆款开头复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看任务列表、素材、步骤详情和生成结果。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>k(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`任务状态`,style:{width:160},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:oUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/项目名/核心点`,style:{width:260},value:d,onChange:e=>f(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:p,onChange:e=>m(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:h,onChange:e=>g(e.target.value),onPressEnter:j}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:_,onChange:v,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:j,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(null),b(``),S(``),T(``),D(null),c(1),k(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:W7,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1380},columns:[{title:`项目ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:K7(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:K7(t.userId)})]})},{title:`项目信息`,width:260,render:(e,t)=>(0,Q.jsxs)(IM,{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)(lUe,{status:e})},{title:`当前步骤`,dataIndex:`currentStepCode`,width:140,render:e=>cUe[e]||e||`-`},{title:`图片结果`,dataIndex:`finalImageUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`视频结果`,dataIndex:`finalVideoUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`错误信息`,dataIndex:`errorMessage`,width:220,ellipsis:!0,render:e=>e||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:G7},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:G7},{title:`操作`,fixed:`right`,width:110,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/hot-opening-replications/${n.id}`),children:`详情`})}]})]})})})},q7=({value:e,maxHeight:t=420})=>e==null||e===``?(0,Q.jsx)(Yy,{image:Yy.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)}),dUe=({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)(q7,{value:e})}),t!==void 0&&o.push({key:`output`,label:i,children:(0,Q.jsx)(q7,{value:t})}),n!==void 0&&o.push({key:`raw`,label:a,children:(0,Q.jsx)(q7,{value:n})}),o.length?(0,Q.jsx)(Wh,{size:`small`,style:{marginTop:12},items:o}):null},fUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``);function pUe(e){if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${fUe}${t.startsWith(`/`)?t:`/${t}`}`:``}var J7=({url:e,type:t,height:n=260,emptyDescription:r=`暂无资源`,errorDescription:i=`资源加载失败,可能文件不存在、签名过期或访问权限受限。`})=>{let a=(0,C.useMemo)(()=>pUe(e),[e]),[o,s]=(0,C.useState)(!1);(0,C.useEffect)(()=>{s(!1)},[a]);let c=a?(0,Q.jsxs)(IM,{wrap:!0,style:{marginTop:8},children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(oz,{}),onClick:async()=>{if(a)try{await navigator.clipboard.writeText(a),CP.success(`资源地址已复制`)}catch{CP.error(`复制失败,请手动复制`)}},children:`复制地址`}),(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(j$,{}),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)(cf,{type:`warning`,showIcon:!0,message:`资源预览失败`,description:i,style:{marginBottom:8}}):null,t===`image`?(0,Q.jsx)(jN,{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)(Yy,{image:Yy.PRESENTED_IMAGE_SIMPLE,description:r})})})},Y7={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`},waiting_remote:{text:`等待远端结果`,color:`processing`},polling:{text:`轮询远端结果`,color:`processing`},result_ready:{text:`结果已就绪`,color:`success`},downloading:{text:`下载中`,color:`processing`},done:{text:`已完成`,color:`success`},download_failed:{text:`下载失败`,color:`error`},retry_waiting:{text:`等待重试`,color:`orange`},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`}},X7={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},Z7={hot_opening_replicate:`爆款开头复刻`,shot_replicate:`拆镜复刻`},Q7={ai_suggestion:{text:`AI 建议`,color:`purple`},custom:{text:`自定义`,color:`cyan`},original:{text:`原视频`,color:`blue`}};function $7(e){return e?Z7[e]||e:`-`}function e9(e){return e?X7[e]||e:`-`}function mUe(e){return e?Y7[e]?.text||X7[e]||Z7[e]||Q7[e]?.text||e:`-`}function hUe(e){return e?Y7[e]?.color||Q7[e]?.color||`blue`:`default`}var t9=({status:e,tooltipRaw:t=!0})=>{if(e==null||e===``)return(0,Q.jsx)(jR,{children:`-`});let n=String(e),r=mUe(n),i=(0,Q.jsx)(jR,{color:hUe(n),children:r});return!t||r===n?i:(0,Q.jsx)(hx,{title:n,children:i})};function n9(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function r9(e,...t){for(let n of t){let t=e[n];if(t!=null&&String(t).trim()!==``)return String(t)}return``}function i9(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 gUe(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 a9(e){if(!n9(e))return null;let t=r9(e,`key`);return t?{key:t,label:r9(e,`label`)||t,type:r9(e,`type`)||void 0,enabled:i9(e,!0,`enabled`),editable:i9(e,!0,`editable`),maxLength:gUe(e,`maxLength`,`max_length`)}:null}function o9(e){if(!n9(e))return null;let t=e.data;return n9(t)?t:Array.isArray(e.sections)?e:null}function _Ue(e){return!!o9(e)}function vUe(e){let t=o9(e);return(Array.isArray(t?.sections)?t.sections:[]).map(e=>{let t=a9(e);if(!t||!n9(e))return null;let n=Array.isArray(e.children)?e.children.map(a9).filter(Boolean):[],r=Array.isArray(e.itemFields)?e.itemFields.map(a9).filter(Boolean):Array.isArray(e.item_fields)?e.item_fields.map(a9).filter(Boolean):[];return{...t,contentKey:r9(e,`contentKey`,`content_key`)||void 0,children:n,itemFields:r}}).filter(e=>!!e&&e.enabled)}function yUe(e){return n9(e)?Object.entries(e).filter(([e])=>![`schemaVersion`,`schemaUsage`,`schema_version`,`schema_usage`].includes(e)).map(([e,t])=>Array.isArray(t)&&t.every(n9)?{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:[]}:n9(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 s9=e=>!!e&&typeof e==`object`&&!Array.isArray(e),c9=e=>typeof e==`string`&&e.length>80,l9=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)(q7,{value:e,maxHeight:220}),u9=e=>e?(0,Q.jsx)(jR,{color:`processing`,children:`可编辑`}):(0,Q.jsx)(jR,{color:`default`,children:`只读`}),d9=(e,t)=>e[t],bUe=(e,t)=>{let n=d9(e,t.key);if(!s9(n))return(0,Q.jsx)(q7,{value:n??{},maxHeight:220});let r=t.children.filter(e=>e.enabled);return r.length?(0,Q.jsx)(bM,{size:`small`,column:2,bordered:!0,children:r.map(e=>(0,Q.jsx)(bM.Item,{label:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),span:c9(n[e.key])||s9(n[e.key])||Array.isArray(n[e.key])?2:1,children:l9(n[e.key])},e.key))}):(0,Q.jsx)(q7,{value:n,maxHeight:220})},xUe=(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}))},SUe=(e,t)=>{let n=d9(e,t.key);if(!Array.isArray(n)||!n.every(s9))return(0,Q.jsx)(q7,{value:n??[],maxHeight:260});let r=n,i=xUe(t,r);return(0,Q.jsx)(vR,{size:`small`,rowKey:(e,n)=>`${t.key}-${n}`,columns:i.map(e=>({title:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),dataIndex:e.key,key:e.key,width:c9(r.find(t=>t[e.key])?.[e.key])?320:160,render:e=>l9(e)})),dataSource:r,pagination:!1,scroll:{x:Math.max(900,i.length*180)},tableLayout:`fixed`})},CUe=(e,t)=>l9(d9(e,t.key)),wUe=({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)(Yy,{description:`暂无视频提词 schema`});let s=o?e:{},c=_Ue(n),l=(c?vUe(n):yUe(s)).filter(e=>e.key in s).map(e=>({key:e.key,label:(0,Q.jsxs)(IM,{size:8,wrap:!0,children:[(0,Q.jsx)(`span`,{children:e.label}),u9(e.editable),c?null:(0,Q.jsx)(jR,{color:`warning`,children:`管理后台兜底展示`})]}),children:e.type===`object`?bUe(s,e):e.type===`flow`?SUe(s,e):CUe(s,e)}));return(0,Q.jsxs)(IM,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,Q.jsx)(VA,{size:`small`,title:`Schema 配置来源`,children:(0,Q.jsxs)(bM,{size:`small`,column:3,bordered:!0,children:[(0,Q.jsx)(bM.Item,{label:`来源`,children:r||n?.source||(c?`-`:`viewer_fallback`)}),(0,Q.jsx)(bM.Item,{label:`版本`,children:i||n?.version||`-`}),(0,Q.jsx)(bM.Item,{label:`历史兜底`,children:a||!c?(0,Q.jsx)(jR,{color:`warning`,children:`是`}):(0,Q.jsx)(jR,{color:`success`,children:`否`})})]})}),t?(0,Q.jsx)(VA,{size:`small`,title:`最终视频提示词`,children:(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:t})}):null,l.length?(0,Q.jsx)(Wh,{size:`small`,items:l}):o?(0,Q.jsx)(VA,{size:`small`,title:`视频提词 Schema`,children:(0,Q.jsx)(q7,{value:s,maxHeight:360})}):null,o?(0,Q.jsx)(Wh,{size:`small`,items:[{key:`raw_schema`,label:`原始 JSON / 历史脏字段排查`,children:(0,Q.jsx)(q7,{value:s,maxHeight:420})}]}):null]})},TUe=[`material_input`,`image_prompt_optimize`,`image_generate`,`video_prompt_optimize`,`video_generate`],EUe={material_input:`参考素材、项目名称和核心内容点`,image_prompt_optimize:`图片 AI 提词优化结果`,image_generate:`图片引擎、生成参数和结果图`,video_prompt_optimize:`视频 JSON schema、动作流程和最终提词`,video_generate:`视频引擎、生成参数、封面和结果视频`},f9=e=>e?B5(e):`-`,p9=e=>e?e.length>18?`${e.slice(0,10)}...${e.slice(-4)}`:e:`-`,DUe=({text:e=`-`})=>(0,Q.jsx)(Z.Text,{type:`secondary`,children:e}),m9=({step:e})=>e?(0,Q.jsx)(dUe,{input:e.input,output:e.output}):null,h9=({index:e,stepCode:t,step:n,current:r})=>(0,Q.jsxs)(IM,{wrap:!0,size:8,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`第${e}步:${e9(t)}`}),(0,Q.jsx)(t9,{status:n?.status||`not_started`}),r?(0,Q.jsx)(jR,{color:`blue`,children:`当前步骤`}):null,(0,Q.jsx)(Z.Text,{type:`secondary`,children:EUe[t]||t}),n?.updatedAt?(0,Q.jsxs)(Z.Text,{type:`secondary`,children:[`更新时间:`,f9(n.updatedAt)]}):null,n?.chatTaskId?(0,Q.jsx)(hx,{title:n.chatTaskId,children:(0,Q.jsxs)(jR,{children:[`Chat:`,p9(n.chatTaskId)]})}):null]}),OUe=(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)},g9=(e,t=`错误信息`)=>e?(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:t,description:e,style:{marginTop:12,marginBottom:12}}):null,kUe=(e,t=`暂无提词`)=>e?(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:e}):(0,Q.jsx)(DUe,{text:t}),_9=({moduleType:e=`shot_replicate`})=>{let{projectId:t}=tt(),n=Ze(),[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(!1),s=(0,C.useCallback)(async()=>{if(t){o(!0);try{i(e===`hot_opening_replicate`?await cVe(t):await pVe(t))}catch(e){CP.error(e?.message||`加载复刻项目详情失败`)}finally{o(!1)}}},[e,t]);(0,C.useEffect)(()=>{s()},[s]);let c=(0,C.useMemo)(()=>{let e={};return(r?.steps||[]).forEach(t=>{e[t.stepCode]=t}),e},[r]),l=r?.module||e,u=$7(l),d=(0,C.useMemo)(()=>TUe.map(e=>{let t=c[e],n=`wait`;return t?.status===`completed`?n=`finish`:t?.status===`processing`?n=`process`:t?.status===`failed`&&(n=`error`),{title:e9(e),description:t?(0,Q.jsx)(t9,{status:t.status}):`未创建`,status:n}}),[c]),f=(0,C.useMemo)(()=>OUe(r,c),[r,c]);if(a&&!r)return(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})});if(!r)return(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到复刻项目详情`})});let p=c.material_input,m=c.image_prompt_optimize,h=c.image_generate,g=c.video_prompt_optimize,_=c.video_generate,v=r.imageGeneration?.resultImageUrl||r.finalImageUrl,y=r.videoGeneration?.resultVideoCoverUrl||r.finalVideoCoverUrl,b=r.videoGeneration?.resultVideoUrl||r.finalVideoUrl,x=[{key:`material_input`,label:(0,Q.jsx)(h9,{index:1,stepCode:`material_input`,step:p,current:r.currentStepCode===`material_input`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`素材步骤ID`,children:r.material?.materialStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`参考素材项目名`,children:r.material?.sourceProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成项目名称`,children:r.material?.targetProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`核心内容点`,span:2,children:r.material?.coreContentPoint||`-`})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`素材视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:r.material?.materialVideoUrl,emptyDescription:`暂无素材视频`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`素材图片`]}),children:(0,Q.jsx)(J7,{type:`image`,url:r.material?.materialImageUrl,emptyDescription:`暂无素材图片`})})]}),g9(p?.errorMessage),(0,Q.jsx)(m9,{step:p})]})},{key:`image_prompt_optimize`,label:(0,Q.jsx)(h9,{index:2,stepCode:`image_prompt_optimize`,step:m,current:r.currentStepCode===`image_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.imageGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:m?.status||r.imageGeneration?.status})}),(0,Q.jsx)(bM.Item,{label:`图片提示词`,span:2,children:kUe(r.imageGeneration?.prompt,`暂无图片提示词`)})]}),g9(m?.errorMessage||r.imageGeneration?.errorMessage),(0,Q.jsx)(m9,{step:m})]})},{key:`image_generate`,label:(0,Q.jsx)(h9,{index:3,stepCode:`image_generate`,step:h,current:r.currentStepCode===`image_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.imageGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.imageGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.imageGeneration?.status||h?.status})}),(0,Q.jsx)(bM.Item,{label:`图片引擎ID`,children:r.imageGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`图片引擎名称`,children:r.imageGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.imageGeneration?.params||{},maxHeight:160})})]}),g9(r.imageGeneration?.errorMessage||h?.errorMessage),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`图片结果`]}),children:(0,Q.jsx)(J7,{type:`image`,url:v,height:360,emptyDescription:h?.status===`failed`||r.imageGeneration?.errorMessage?`图片生成失败,未返回图片地址`:`暂无图片结果`,errorDescription:`图片资源加载失败,可能图片文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(m9,{step:h})]})},{key:`video_prompt_optimize`,label:(0,Q.jsx)(h9,{index:4,stepCode:`video_prompt_optimize`,step:g,current:r.currentStepCode===`video_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.videoGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:g?.status})}),(0,Q.jsx)(bM.Item,{label:`提词参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.promptParams||{},maxHeight:160})})]}),g9(g?.errorMessage||r.videoGeneration?.errorMessage),(0,Q.jsx)(wUe,{schema:r.videoGeneration?.promptSchema,finalPrompt:r.videoGeneration?.finalPrompt,schemaConfigSnapshot:r.videoGeneration?.schemaConfigSnapshot,schemaConfigSource:r.videoGeneration?.schemaConfigSource,schemaConfigVersion:r.videoGeneration?.schemaConfigVersion,schemaConfigIsFallback:r.videoGeneration?.schemaConfigIsFallback}),(0,Q.jsx)(m9,{step:g})]})},{key:`video_generate`,label:(0,Q.jsx)(h9,{index:5,stepCode:`video_generate`,step:_,current:r.currentStepCode===`video_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.videoGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.videoGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.videoGeneration?.status||_?.status})}),(0,Q.jsx)(bM.Item,{label:`视频引擎ID`,children:r.videoGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`视频引擎名称`,children:r.videoGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.params||{},maxHeight:160})})]}),g9(r.videoGeneration?.errorMessage||_?.errorMessage),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`视频封面`]}),children:(0,Q.jsx)(J7,{type:`image`,url:y,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回封面`:`暂无视频封面`,errorDescription:`视频封面加载失败,可能文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m8,{}),`最终视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:b,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回视频地址`:`暂无最终视频`,errorDescription:`视频资源加载失败,可能文件不存在、签名过期或访问权限受限。`})})]}),(0,Q.jsx)(m9,{step:_})]})}];return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>n(-1),children:`返回`}),(0,Q.jsxs)(Z.Title,{level:3,style:{margin:0},children:[u,`项目详情`]}),(0,Q.jsx)(t9,{status:r.status}),r.module&&r.module!==e?(0,Q.jsxs)(jR,{color:`gold`,children:[`接口模块:`,$7(r.module)]}):null]}),(0,Q.jsx)($S,{onClick:s,loading:a,children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`基础信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`项目ID`,children:r.id}),(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:r.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:r.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:r.title||`-`}),(0,Q.jsx)(bM.Item,{label:`当前步骤`,children:(0,Q.jsx)(hx,{title:r.currentStepCode||``,children:e9(r.currentStepCode)})}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.status})}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:f9(r.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:f9(r.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`完成时间`,children:f9(r.completedAt)}),r.errorMessage?(0,Q.jsx)(bM.Item,{label:`错误信息`,span:3,children:(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:r.errorMessage})}):null]})}),(0,Q.jsx)(VA,{title:`步骤进度`,children:(0,Q.jsx)(Qme,{items:d})}),(0,Q.jsx)(VA,{title:`最终结果预览`,children:(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:`最终图片`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalImageUrl||r.imageGeneration?.resultImageUrl,height:220,emptyDescription:`暂无最终图片`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频封面`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalVideoCoverUrl||r.videoGeneration?.resultVideoCoverUrl,height:220,emptyDescription:`暂无最终视频封面`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频`,children:(0,Q.jsx)(J7,{type:`video`,url:r.finalVideoUrl||r.videoGeneration?.resultVideoUrl,height:220,emptyDescription:`暂无最终视频`})})]})}),(0,Q.jsx)(Wh,{defaultActiveKey:f,items:x}),(0,Q.jsx)(Wh,{items:[{key:`steps-table`,label:`完整步骤列表`,children:(0,Q.jsx)(vR,{rowKey:`id`,size:`small`,pagination:!1,dataSource:r.steps||[],scroll:{x:1100},columns:[{title:`序号`,dataIndex:`stepIndex`,width:70},{title:`步骤`,dataIndex:`stepCode`,width:160,render:e=>(0,Q.jsx)(hx,{title:e,children:e9(e)})},{title:`状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(t9,{status:e})},{title:`版本`,dataIndex:`version`,width:70},{title:`当前有效`,dataIndex:`isCurrent`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`是`}):(0,Q.jsx)(jR,{children:`否`})},{title:`Chat任务`,dataIndex:`chatTaskId`,width:160,render:e=>(0,Q.jsx)(hx,{title:e||``,children:p9(e)})},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:f9},{title:`完成时间`,dataIndex:`completedAt`,width:170,render:f9},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0,render:e=>e||`-`}]})},{key:`raw-detail`,label:`完整详情原始 JSON`,children:(0,Q.jsx)(q7,{value:r,maxHeight:520})}]})]})})},AUe=()=>(0,Q.jsx)(_9,{moduleType:`hot_opening_replicate`}),v9=20,jUe=[{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:`失败`}],MUe=[{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],NUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],PUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`}},y9=e=>e?B5(e):`-`,b9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,x9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=PUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},FUe=()=>{let e=Ze(),[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 lVe({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:v9});n(e.items||[]),i(e.total||0)}catch(e){CP.error(e?.message||`加载拆镜复刻任务失败`)}finally{o(!1)}},[d,s,A,w,E,O,p,l]);(0,C.useEffect)(()=>{P()},[P,M]);let F=()=>{T(h.trim()),D(_.trim()),k(y.trim()),j(x),c(1)};return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`拆镜复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看拆镜总任务、AI 分析结果、切片列表和关联复刻项目。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>N(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`总任务状态`,style:{width:150},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:jUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:d||void 0,onChange:e=>{f(e||``),c(1)},options:MUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`拆镜状态`,style:{width:140},value:p||void 0,onChange:e=>{m(e||``),c(1)},options:NUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/内容/分类/受众`,style:{width:260},value:h,onChange:e=>g(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:_,onChange:e=>v(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:y,onChange:e=>b(e.target.value),onPressEnter:F}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:x,onChange:S,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:F,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(``),b(``),S(null),T(``),D(``),k(``),j(null),c(1),N(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:v9,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1500},columns:[{title:`任务集ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:b9(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:b9(t.userId)})]})},{title:`任务信息`,width:300,render:(e,t)=>(0,Q.jsxs)(IM,{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)(x9,{status:e})},{title:`分析状态`,dataIndex:`analysisStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`拆镜状态`,dataIndex:`splitStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`切片进度`,width:180,render:(e,t)=>{let n=t.segmentCount||0,r=t.completedSegmentCount||0;return(0,Q.jsx)(zP,{size:`small`,percent:n?Math.round(r/n*100):0,format:()=>`${r}/${n}`})}},{title:`失败片段`,dataIndex:`failedSegmentCount`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`error`,children:e}):(0,Q.jsx)(jR,{children:`0`})},{title:`视频时长`,dataIndex:`videoDurationSeconds`,width:100,render:e=>`${Number(e||0).toFixed(1)}s`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:y9},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:y9},{title:`操作`,fixed:`right`,width:120,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/shot-replications/task-sets/${n.id}`),children:`查看切片`})}]})]})})})},IUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),S9=20,LUe=[{value:`ai_suggestion`,label:`AI 建议`},{value:`custom`,label:`自定义`}],RUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],zUe=[{value:`not_required`,label:`无需分析`},{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],BUe=[{value:`not_started`,label:`未复刻`},{value:`project_created`,label:`已创建项目`},{value:`processing`,label:`复刻中`},{value:`completed`,label:`复刻完成`},{value:`failed`,label:`复刻失败`}],VUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`},not_required:{color:`default`,text:`无需分析`},not_started:{color:`default`,text:`未复刻`},project_created:{color:`processing`,text:`已创建项目`}},HUe=e=>{if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${IUe}${t.startsWith(`/`)?t:`/${t}`}`:``},C9=e=>e?B5(e):`-`,w9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,T9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=VUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},E9=({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:HUe(e),controls:!0,preload:`metadata`,style:{width:`100%`,maxHeight:t,borderRadius:12,background:`#0f172a`}}):(0,Q.jsx)(Yy,{description:`暂无视频`,image:Yy.PRESENTED_IMAGE_SIMPLE}),UUe=({items:e=[]})=>(0,Q.jsx)(vR,{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}]}),WUe=()=>{let{taskSetId:e}=tt(),t=Ze(),[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 uVe(e))}catch(e){CP.error(e?.message||`加载拆镜任务详情失败`)}finally{d(!1)}}},[e]),A=(0,C.useCallback)(async()=>{if(e){p(!0);try{let t=await dVe(e,{sourceMode:g||void 0,splitStatus:v||void 0,analysisStatus:b||void 0,replicateStatus:S||void 0,page:c,pageSize:S9});a(t.items||[]),s(t.total||0)}catch(e){CP.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=async e=>{E(!0),O(null);try{O(await fVe(e))}catch(e){CP.error(e?.message||`加载片段详情失败`)}};return u&&!n?(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})}):n?(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>t(`/shot-replications`),children:`返回列表`}),(0,Q.jsx)(Z.Title,{level:3,style:{margin:0},children:`拆镜任务详情`}),(0,Q.jsx)(T9,{status:n.status})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>h(e=>e+1),children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`总任务信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`任务集ID`,children:n.id}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:n.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:n.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:n.title||`-`}),(0,Q.jsxs)(bM.Item,{label:`视频时长`,children:[Number(n.videoDurationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`总状态`,children:(0,Q.jsx)(T9,{status:n.status})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:n.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`拆镜状态`,children:(0,Q.jsx)(T9,{status:n.splitStatus})}),(0,Q.jsxs)(bM.Item,{label:`片段数量`,children:[n.completedSegmentCount,`/`,n.segmentCount,`,失败 `,n.failedSegmentCount]}),(0,Q.jsx)(bM.Item,{label:`原视频分类`,children:n.originalVideoCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:C9(n.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:C9(n.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`原视频内容`,span:3,children:n.originalVideoContent||`-`}),(0,Q.jsx)(bM.Item,{label:`原视频受众`,span:3,children:n.originalVideoAudience||`-`}),n.analysisErrorMessage?(0,Q.jsx)(bM.Item,{label:`分析错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.analysisErrorMessage})}):null,n.splitErrorMessage?(0,Q.jsx)(bM.Item,{label:`拆镜错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.splitErrorMessage})}):null]})}),(0,Q.jsx)(VA,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`原视频预览`]}),children:(0,Q.jsx)(D9,{url:n.videoUrl,height:360})}),(0,Q.jsxs)(VA,{title:`AI 建议拆镜列表`,children:[n.aiSuggestions?.length?(0,Q.jsx)(UUe,{items:n.aiSuggestions}):(0,Q.jsx)(Yy,{description:`暂无 AI 建议拆镜`}),(0,Q.jsx)(Wh,{size:`small`,ghost:!0,style:{marginTop:12},items:[{key:`raw`,label:`查看原视频分析完整 JSON`,children:(0,Q.jsx)(E9,{value:n.analysisResultJson})}]})]}),(0,Q.jsxs)(VA,{title:`片段列表`,children:[(0,Q.jsxs)(IM,{wrap:!0,style:{marginBottom:16},children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`片段来源`,style:{width:140},value:g||void 0,options:LUe,onChange:e=>{_(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`切割状态`,style:{width:140},value:v||void 0,options:RUe,onChange:e=>{y(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:b||void 0,options:zUe,onChange:e=>{x(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`复刻状态`,style:{width:150},value:S||void 0,options:BUe,onChange:e=>{w(e||``),l(1)}}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(bb,{}),onClick:()=>h(e=>e+1),children:`筛选`}),(0,Q.jsx)($S,{onClick:()=>{_(``),y(``),x(``),w(``),l(1),h(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:f,dataSource:i,pagination:{current:c,pageSize:S9,total:o,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:l},scroll:{x:1550},columns:[{title:`片段ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:w9(e)})},{title:`序号`,dataIndex:`segmentIndex`,width:70},{title:`来源`,dataIndex:`sourceMode`,width:100,render:e=>e===`ai_suggestion`?(0,Q.jsx)(jR,{color:`purple`,children:`AI建议`}):(0,Q.jsx)(jR,{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)(T9,{status:e})},{title:`分析`,dataIndex:`analysisStatus`,width:100,render:e=>(0,Q.jsx)(T9,{status:e})},{title:`复刻`,dataIndex:`replicateStatus`,width:110,render:e=>(0,Q.jsx)(T9,{status:e})},{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)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)($S,{type:`link`,style:{padding:0},onClick:()=>t(`/shot-replications/projects/${n.moduleProjectId}`),children:w9(n.moduleProjectId)}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:n.moduleProjectTitle||e9(n.moduleProjectCurrentStepCode)}),(0,Q.jsx)(T9,{status:n.moduleProjectStatus})]}):(0,Q.jsx)(jR,{children:`未创建`})},{title:`错误`,dataIndex:`splitLastError`,width:220,ellipsis:!0,render:(e,t)=>e||t.analysisErrorMessage||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:C9},{title:`操作`,fixed:`right`,width:100,render:(e,t)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>j(t.id),children:`详情`})}]})]})]}),(0,Q.jsx)(kde,{title:`片段详情`,width:720,open:T,onClose:()=>E(!1),destroyOnClose:!0,children:D?(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`片段ID`,span:2,children:D.id}),(0,Q.jsx)(bM.Item,{label:`时间节点`,children:D.timeNode}),(0,Q.jsxs)(bM.Item,{label:`时长`,children:[Number(D.durationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`切割状态`,children:(0,Q.jsx)(T9,{status:D.splitStatus})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:D.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`复刻状态`,children:(0,Q.jsx)(T9,{status:D.replicateStatus})}),(0,Q.jsx)(bM.Item,{label:`关联项目`,children:D.moduleProjectId?(0,Q.jsx)($S,{type:`link`,onClick:()=>t(`/shot-replications/projects/${D.moduleProjectId}`),children:D.moduleProjectId}):`-`}),(0,Q.jsx)(bM.Item,{label:`片段内容`,span:2,children:D.segmentContent||`-`}),(0,Q.jsx)(bM.Item,{label:`片段分类`,children:D.segmentCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`片段受众`,children:D.segmentAudience||`-`})]}),(0,Q.jsx)(VA,{size:`small`,title:`片段视频`,children:(0,Q.jsx)(D9,{url:D.segmentVideoUrl,height:300})}),D.splitLastError?(0,Q.jsx)(cf,{type:`error`,message:`切割错误`,description:D.splitLastError}):null,D.analysisErrorMessage?(0,Q.jsx)(cf,{type:`error`,message:`分析错误`,description:D.analysisErrorMessage}):null,(0,Q.jsx)(Wh,{size:`small`,items:[{key:`analysis`,label:`片段分析 JSON`,children:(0,Q.jsx)(E9,{value:D.analysisJson})},{key:`suggestion`,label:`AI 建议原始 JSON`,children:(0,Q.jsx)(E9,{value:D.aiSuggestionJson})}]})]}):(0,Q.jsx)(hP,{})})]}):(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到拆镜任务详情`})})},{Title:GUe,Text:O9,Paragraph:KUe}=Z,{TextArea:k9}=GN,A9=[{label:`对象`,value:`object`},{label:`数组`,value:`array`},{label:`字符串`,value:`string`},{label:`数字`,value:`number`},{label:`布尔`,value:`boolean`},{label:`流程数组`,value:`flow`}],j9=`画面属性`,qUe=new Set([`视频时长`,`视频比例`,`清晰度`,`帧率`,`推荐分辨率`]);function M9(e,t){return e===j9&&!!t&&qUe.has(t)}function N9(e){return e===j9}function JUe(e){return JSON.parse(JSON.stringify(e??null))}function P9(e,t,n,r){return!e||typeof e!=`object`?r:e[t]===void 0?e[n]===void 0?r:e[n]:e[t]}function YUe(e){return{key:String(e?.key||e?.label||`新流程字段`),label:String(e?.label||e?.key||`新流程字段`),enabled:e?.enabled??!0,editable:e?.editable??!0,maxLength:Number(P9(e,`maxLength`,`max_length`,800)||800),value:e?.value??``}}function F9(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(P9(e,`maxLength`,`max_length`,t===`flow`?800:1e3)||(t===`flow`?800:1e3))};if(t===`object`)n.children=Array.isArray(e?.children)?e.children.map(F9):[];else if(t===`flow`){n.contentKey=String(P9(e,`contentKey`,`content_key`,e?.key===`镜头流程`?`镜头内容`:`动作内容`));let t=P9(e,`contentAliases`,`content_aliases`,[]);n.contentAliases=Array.isArray(t)?t.map(e=>String(e)).filter(Boolean):[];let r=P9(e,`itemFields`,`item_fields`,[]);n.itemFields=Array.isArray(r)&&r.length>0?r.map(YUe):[{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 XUe(e){let t=Array.isArray(e?.segments)?e.segments:[],n=Array.isArray(e?.ratios)?e.ratios:[];return{minDuration:Number(P9(e,`minDuration`,`min_duration`,1)||1),maxDuration:Number(P9(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 I9(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(F9),timePlanRules:n.map(XUe)}}function L9(e,t){let n=N9(e.key),r=M9(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=>L9(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 R9(e,t){return{version:e.version,enabled:t,sections:(e.sections||[]).map(e=>L9(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 z9(e){return e?.runtimeSchema||e?.runtime_schema||{}}function B9(e){let t=e?.timePlan||e?.time_plan||z9(e)?.动态时间规划||[];return Array.isArray(t)?t:[]}function ZUe(e){return e?.schemaConfigSnapshot||e?.schema_config_snapshot||{}}function QUe(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 V9=(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}),$Ue=()=>({minDuration:1,maxDuration:5,ratios:[.2,.4,.4],segments:[{stage:`开场吸引`,description:`快速吸引注意力`},{stage:`核心展示`,description:`展示主体动作、核心卖点或主要视觉内容`},{stage:`收尾引导`,description:`给出行动引导并稳定落版`}]}),eWe=()=>{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]=X.useForm(),_=(0,C.useRef)(null),v=c?.sections||[],y=c?.timePlanRules||[],b=async()=>{t(!0);try{let e=await mVe();a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),l(I9(e.data)),d(I9(e.defaultData??e.default_data))}catch(e){CP.error(e?.message||`加载失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{b()},[]);let x=e=>{l(t=>{let n=I9(JUe(t));return e(n),n})},S=async()=>{if(c){r(!0);try{let e=await hVe({is_enabled:i,data:R9(c,i)});l(I9(e.data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`保存成功`)}catch(e){CP.error(e?.message||`保存失败`)}finally{r(!1)}}},w=async()=>{r(!0);try{let e=await gVe();l(I9(e.data)),d(I9(e.defaultData??e.default_data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`已恢复默认配置`)}catch(e){CP.error(e?.message||`恢复默认失败`)}finally{r(!1)}},T=async()=>{try{QUe(`video_prompt_schema_config.json`,await _Ve())}catch(e){CP.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 vVe({is_enabled:!!(n.isEnabled??n.is_enabled??i),data:r});l(I9(o.data)),a(!!(o.isEnabled??o.is_enabled??o.data?.enabled??!1)),s(!!(o.usingDefault??o.using_default??!1)),CP.success(`导入成功`)}catch(e){CP.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 yVe({is_enabled:i,data:R9(c,i),duration:Number(e.duration||8),aspect_ratio:e.aspectRatio,resolution:e.resolution,frame_rate:e.frameRate}))}catch(e){CP.error(e?.message||`预览失败`)}},k=()=>{x(e=>{e.sections.push(V9(`object`))})},A=(e,t)=>{x(n=>{let r=n.sections[e];N9(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(V9(`string`))})},N=(e,t,n)=>{x(r=>{let i=r.sections[e],a=i.children||[],o=a[t];M9(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($Ue())})},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)(IM,{children:[(0,Q.jsx)(O9,{strong:!0,children:e.label||e.key||`未命名分组`}),e.key&&e.key!==e.label&&(0,Q.jsxs)(jR,{color:`blue`,children:[`key: `,e.key]}),(0,Q.jsx)(jR,{children:e.type}),N9(e.key)&&(0,Q.jsx)(jR,{color:`red`,children:`系统锁定`}),!e.enabled&&!N9(e.key)&&(0,Q.jsx)(jR,{color:`default`,children:`已禁用`})]}),children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsxs)(WP,{gutter:12,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:N9(e.key),onChange:e=>A(t,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>A(t,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Tb,{value:e.type,options:A9,style:{width:`100%`},disabled:N9(e.key),onChange:e=>A(t,{type:e})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:N9(e.key)?!0:e.enabled,disabled:N9(e.key),onChange:e=>A(t,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`可编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>A(t,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>A(t,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:2,style:{textAlign:`right`},children:(0,Q.jsx)(OP,{title:`确认删除该分组?`,disabled:N9(e.key),onConfirm:()=>j(t),children:(0,Q.jsx)($S,{danger:!0,icon:(0,Q.jsx)(PR,{}),disabled:N9(e.key)})})})]}),e.type===`object`&&(0,Q.jsx)(VA,{size:`small`,title:`对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>M(t),children:`新增字段`}),children:(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.children||[]).map((n,r)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:n.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:n.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>N(t,r,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Tb,{value:n.type,options:A9.filter(e=>e.value!==`object`&&e.value!==`flow`),style:{width:`100%`},disabled:M9(e.key,n.key),onChange:e=>N(t,r,{type:e})})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!0:n.enabled,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!1:n.editable,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{editable:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:n.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>N(t,r,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{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)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),disabled:M9(e.key,n.key),onClick:()=>P(t,r)})})]},`child-${t}-${r}`))})}),e.type===`flow`&&(0,Q.jsxs)(VA,{size:`small`,title:`流程数组对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>F(t),children:`新增流程字段`}),children:[(0,Q.jsxs)(WP,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(GN,{addonBefore:`内容字段`,value:e.contentKey,maxLength:64,onChange:e=>A(t,{contentKey:e.target.value})})}),(0,Q.jsx)(uj,{span:18,children:(0,Q.jsx)(GN,{addonBefore:`别名 / 分隔`,value:(e.contentAliases||[]).join(`/`),onChange:e=>A(t,{contentAliases:e.target.value.split(`/`).map(e=>e.trim()).filter(Boolean)})})})]}),(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.itemFields||[]).map((e,n)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`流程对象字段名`,onChange:e=>I(t,n,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>I(t,n,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:e.enabled,onChange:e=>I(t,n,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>I(t,n,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>I(t,n,{maxLength:Number(e||800)})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(GN,{value:String(e.value??``),maxLength:e.maxLength||800,placeholder:`默认值`,onChange:e=>I(t,n,{value:e.target.value})})}),(0,Q.jsx)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>L(t,n)})})]},`flow-${t}-${n}`))})]}),e.type!==`object`&&e.type!==`flow`&&(0,Q.jsx)(VA,{size:`small`,title:`默认值`,children:(0,Q.jsx)(k9,{rows:3,value:Array.isArray(e.value)?e.value.join(`
+你是一位专业的电商图片文案专家,擅长将产品卖点转化为图片生成提示词`,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)(X.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)(X.Item,{...r,name:[t,`name`],label:`选项名称`,style:{marginBottom:0},rules:[{required:!0,message:`请输入选项名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:视频风格`,size:`middle`,style:{borderRadius:8}})}),(0,Q.jsx)(X.Item,{...r,name:[t,`options`],label:`选项内容`,style:{marginBottom:0},children:(0,Q.jsx)(Tb,{mode:`tags`,size:`middle`,placeholder:`输入选项后回车添加`,style:{borderRadius:8},tokenSeparators:[`,`,`,`,`、`]})})]}),(0,Q.jsx)(b1,{onClick:()=>n(t),style:{color:`#ef4444`,fontSize:16,marginTop:34,cursor:`pointer`,flexShrink:0}})]},e)),(0,Q.jsx)($S,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,Q.jsx)(gA,{}),style:{borderRadius:8,height:36},children:`添加选项组`})]})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]})]})})]})};function o7(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}var NHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await TBe()).map(e=>({...e,supportedRatios:o7(e.supportedRatios),supportedResolutions:o7(e.supportedResolutions),supportedDurations:o7(e.supportedDurations)})))}catch{CP.error(`加载视频引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=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};i.engine?(await x5({id:i.engine.id,...t}),CP.success(`已更新`)):(await x5(t),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await EBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{a({open:!0,engine:e||null}),e?o.setFieldsValue(e):(o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,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]}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`视频引擎配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(C0,{})}),(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)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{children:e},e))})},{title:`支持分辨率`,dataIndex:`supportedResolutions`,width:150,render:e=>(0,Q.jsx)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{color:`blue`,children:e},e))})},{title:`支持时长`,dataIndex:`supportedDurations`,width:120,render:e=>(0,Q.jsx)(jR,{color:`orange`,children:e?.length?`${Math.min(...e)}-${Math.max(...e)}s`:`-`})},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`最大视频`,dataIndex:`maxVideoCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`cyan`,children:[e,` 个`]})},{title:`最大音频`,dataIndex:`maxAudioCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:e>0?`geekblue`:`default`,children:[e||0,` 段`]})},{title:`首尾帧`,dataIndex:`supportsFirstLastFrame`,width:90,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`支持`:`不支持`})},{title:`全能参考`,dataIndex:`supportsUniversalReference`,width:100,render:e=>(0,Q.jsx)(jR,{color:e?`purple`:`default`,children:e?`支持`:`不支持`})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1200}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:620,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`Seedance 2.0`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`模型名称`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedance-2-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedRatios`,label:`支持比例`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`supportedResolutions`,label:`支持分辨率`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:[{value:`480p`},{value:`720p`},{value:`1080p`}]})}),(0,Q.jsx)(X.Item,{name:`supportedDurations`,label:`支持时长(秒)`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:Array.from({length:12},(e,t)=>({value:t+4,label:`${t+4}秒`}))})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`maxDuration`,label:`最大时长(秒)`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxVideoCount`,label:`最大视频数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`maxAudioCount`,label:`最大参考音频数`,style:{flex:1},extra:`0 表示不支持音频参考,最大 3 段`,rules:[{validator:(e,t)=>{let n=Number(t??0);return!Number.isInteger(n)||n<0||n>3?Promise.reject(Error(`最大参考音频数必须为 0-3 的整数`)):Promise.resolve()}}],children:(0,Q.jsx)(GN,{type:`number`,size:`large`,min:0,max:3})})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`supportsFirstLastFrame`,label:`首尾帧模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`supportsUniversalReference`,label:`全能参考模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,style:{flex:1},children:(0,Q.jsx)(Tb,{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 PHe(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}function FHe(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 s7={"2K":{"1:1":`2048×2048`,"4:3":`2304×1728`,"3:4":`1728×2304`,"16:9":`2560×1440`,"9:16":`1600×2848`,"3:2":`2496×1664`,"2:3":`1664×2496`,"21:9":`3024×1296`},"4K":{"1:1":`4096×4096`,"4:3":`4608×3456`,"3:4":`3520×4704`,"16:9":`5404×3040`,"9:16":`3040×5504`,"3:2":`4992×3328`,"2:3":`3328×4992`,"21:9":`6197×2656`}},c7=[`1:1`,`4:3`,`3:4`,`16:9`,`9:16`,`3:2`,`2:3`,`21:9`],IHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await DBe()).map(e=>({...e,supportedModels:PHe(e.supportedModels),supportedSizes:FHe(e.supportedSizes)})))}catch{CP.error(`加载图片引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={};for(let n of[`2K`,`4K`]){let r=e[`size_${n}`]||[];if(r.length>0){t[n]={};for(let e of r)t[n][e]=s7[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};i.engine?(await S5({id:i.engine.id,...n}),CP.success(`已更新`)):(await S5(n),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await OBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{if(a({open:!0,engine:e||null}),e){let t={};for(let n of[`2K`,`4K`])t[`size_${n}`]=Object.keys(e.supportedSizes?.[n]||{});o.setFieldsValue({...e,...t})}else o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,supportedModels:[`doubao-seedream-5-0-260128`],defaultSize:`2K`,maxImageCount:0,size_2K:c7,size_4K:c7})};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{style:{fontSize:18,color:`#10b981`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`图片引擎配置`}),(0,Q.jsxs)(jR,{color:`green`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(m0,{})}),(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:`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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` `,t.supportedSizes[`4K`][e]]},e))})}},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1e3}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:680,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`豆包文生图`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`默认模型`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedream-5-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedModels`,label:`支持模型列表`,children:(0,Q.jsx)(Tb,{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`})]}),[`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)(X.Item,{name:`size_${e}`,style:{marginTop:8,marginBottom:0},children:(0,Q.jsx)(ij.Group,{style:{width:`100%`},children:(0,Q.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(4, 1fr)`,gap:`6px 0`},children:c7.map(t=>(0,Q.jsxs)(ij,{value:t,style:{fontSize:12},children:[t,` `,(0,Q.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:11},children:s7[e]?.[t]})]},t))})})})]},e)),(0,Q.jsx)(X.Item,{name:`defaultSize`,label:`默认尺寸档位`,children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`2K`,label:`2K`},{value:`4K`,label:`4K`}]})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`generateUrl`,label:`生成接口地址`,children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3/images/generations`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30},children:(0,Q.jsx)(lF,{})})]})]})})]})},LHe=[`2K`,`4K`],RHe=[`480p`,`720p`,`1080p`],zHe=()=>{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]=X.useForm(),[l,u]=(0,C.useState)(10),[d,f]=(0,C.useState)(null),[p,m]=(0,C.useState)(!1),h=X.useWatch(`genType`,c)||`video`,g=X.useWatch(`modelConfigId`,c),_=async()=>{a(!0);try{let[e,n,i]=await Promise.all([kBe(),g5(),aVe()]),a=(i?.engine?.image||[]).map(e=>({...e,genType:`image`})),o=(i?.engine?.video||[]).map(e=>({...e,genType:`video`}));t(e),r([...o,...a]);let s=n.find(e=>e.key===`text_credits_per_1000_tokens`);s&&(u(Number(s.value)||10),f({id:s.id}))}catch{CP.error(`加载积分比例失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{_()},[]);let v=(0,C.useMemo)(()=>n.filter(e=>e.genType===h).map(e=>({value:e.id,label:`${e.name}${e.modelName?`(${e.modelName})`:``}`})),[n,h]),y=(0,C.useMemo)(()=>n.find(e=>e.id===g&&e.genType===h),[n,h,g]),b=(0,C.useMemo)(()=>{if(h===`image`){let e=y?.supportedSizes?Object.keys(y.supportedSizes):[];return(e.length?e:LHe).map(e=>({value:e,label:e}))}let e=y?.supportedResolutions||[];return(e.length?e:RHe).map(e=>({value:e,label:e}))},[h,y]),x=(e,t)=>n.find(n=>n.id===e&&(!t||n.genType===t))?.name||e,S=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),o.ratio?(await C5({id:o.ratio.id,...t}),CP.success(`已更新`)):(await C5(t),CP.success(`已添加`)),s({open:!1,ratio:null}),c.resetFields(),_()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},w=async e=>{try{await ABe(e),CP.success(`已删除`),_()}catch{CP.error(`删除失败`)}},T=async()=>{if(d){m(!0);try{await _5(d.id,String(l)),CP.success(`文字积分费率已更新`)}catch(e){CP.error(e?.message||`保存失败`)}finally{m(!1)}}},E=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}):(c.resetFields(),c.setFieldsValue({genType:`video`,ratio:1,baseCredits:60,perSecondCredits:2,inputVideoRatio:1,inputVideoBaseCredits:0,inputVideoPerSecondCredits:.5}))};return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(xZ,{style:{fontSize:18,color:`#f59e0b`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`文字积分费率`})]}),(0,Q.jsx)($S,{type:`primary`,loading:p,onClick:T,style:{borderRadius:8},children:`保存`})]}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{display:`block`,marginBottom:16,fontSize:13},children:`文字积分计算公式:ceil(总token数 x 费率 / 1000),最低1积分`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:16},children:[(0,Q.jsx)(Z.Text,{children:`每1000 token消耗积分:`}),(0,Q.jsxs)(IM.Compact,{style:{width:160},children:[(0,Q.jsx)(Pj,{min:0,max:1e3,step:.01,value:l,onChange:e=>u(e||0),size:`large`,style:{width:`100%`}}),(0,Q.jsx)(Z.Text,{children:`积分`})]}),(0,Q.jsxs)(Z.Text,{type:`secondary`,style:{fontSize:12},children:[`示例:1000 token = `,l,` 积分,500 token = `,(500*l/1e3).toFixed(4),` 积分`]})]})]}),(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KG,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`积分比例配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 条规则`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>E(),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)(vR,{columns:[{title:`类型`,dataIndex:`genType`,width:80,render:e=>(0,Q.jsx)(jR,{color:e===`image`?`cyan`:`orange`,children:e===`image`?`图片`:`视频`})},{title:`引擎`,dataIndex:`modelConfigId`,width:180,render:(e,t)=>(0,Q.jsx)(jR,{color:t.genType===`image`?`cyan`:`purple`,children:x(e,t.genType)})},{title:`分辨率/尺寸`,dataIndex:`resolution`,width:110,render:e=>(0,Q.jsx)(jR,{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:`视频倍率`,dataIndex:`inputVideoRatio`,width:100,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:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分`})},{title:`视频每秒积分`,dataIndex:`inputVideoPerSecondCredits`,width:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分/秒`})},{title:`示例计算(视频15秒,上传视频15秒)`,key:`example`,width:140,render:(e,t)=>{let n;return t.genType===`image`?n=Math.round(t.baseCredits*t.ratio):(n=Math.round((t.baseCredits+t.perSecondCredits*15)*t.ratio),t.inputVideoRatio&&t.inputVideoPerSecondCredits&&(n+=Math.round((t.inputVideoBaseCredits+t.inputVideoPerSecondCredits*15)*t.inputVideoRatio))),(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)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>E(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>w(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:!1,scroll:{x:1180}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KG,{}),o.ratio?`编辑比例`:`添加比例`]}),open:o.open,onOk:S,onCancel:()=>{s({open:!1,ratio:null}),c.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`genType`,label:`生成类型`,rules:[{required:!0,message:`请选择生成类型`}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`video`,label:`视频`},{value:`image`,label:`图片`}],onChange:()=>{c.setFieldsValue({modelConfigId:void 0,resolution:void 0})}})}),(0,Q.jsx)(X.Item,{name:`modelConfigId`,label:`引擎`,rules:[{required:!0,message:`请选择引擎`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:`请选择引擎`,options:v,showSearch:!0,optionFilterProp:`label`,onChange:()=>c.setFieldsValue({resolution:void 0})})}),(0,Q.jsx)(X.Item,{name:`resolution`,label:h===`image`?`图片尺寸`:`分辨率`,rules:[{required:!0,message:h===`image`?`请选择图片尺寸`:`请选择分辨率`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:h===`image`?`请选择图片尺寸`:`请选择分辨率`,options:b})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`ratio`,label:`倍率`,style:{flex:1},rules:[{required:!0,message:`请输入倍率`}],children:(0,Q.jsx)(Pj,{min:.1,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`baseCredits`,label:`基础积分`,style:{flex:1},rules:[{required:!0,message:`请输入基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:1e3,style:{width:`100%`},size:`large`})}),h!==`image`&&(0,Q.jsx)(X.Item,{name:`perSecondCredits`,label:`每秒积分`,style:{flex:1},rules:[{required:!0,message:`请输入每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`})})]}),h!==`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)(X.Item,{name:`inputVideoRatio`,label:`倍率`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频倍率`}],children:(0,Q.jsx)(Pj,{min:0,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoBaseCredits`,label:`基础积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:500,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoPerSecondCredits`,label:`每秒积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:50,style:{width:`100%`},size:`large`})})]})]})]})})]})},l7={HomeOutlined:(0,Q.jsx)(OQ,{}),PlayCircleOutlined:(0,Q.jsx)(C0,{}),WalletOutlined:(0,Q.jsx)(v8,{}),RobotOutlined:(0,Q.jsx)(W2,{}),SettingOutlined:(0,Q.jsx)(x4,{}),BellOutlined:(0,Q.jsx)(QU,{}),UserOutlined:(0,Q.jsx)(n8,{}),AppstoreOutlined:(0,Q.jsx)(OH,{}),FileTextOutlined:(0,Q.jsx)(BM,{}),StarOutlined:(0,Q.jsx)(S3,{}),HeartOutlined:(0,Q.jsx)(_Q,{}),CameraOutlined:(0,Q.jsx)(sK,{}),DashboardOutlined:(0,Q.jsx)(FJ,{}),CalculatorOutlined:(0,Q.jsx)(KG,{}),DollarOutlined:(0,Q.jsx)(fY,{}),GiftOutlined:(0,Q.jsx)(KZ,{}),ThunderboltOutlined:(0,Q.jsx)(s6,{}),FireOutlined:(0,Q.jsx)(aZ,{}),CloudOutlined:(0,Q.jsx)(jq,{}),SmileOutlined:(0,Q.jsx)(a3,{}),TrophyOutlined:(0,Q.jsx)(w6,{}),RocketOutlined:(0,Q.jsx)(q2,{}),BulbOutlined:(0,Q.jsx)(LG,{}),CodeOutlined:(0,Q.jsx)(Bq,{}),PictureOutlined:(0,Q.jsx)(m0,{}),VideoCameraOutlined:(0,Q.jsx)(m8,{}),AudioOutlined:(0,Q.jsx)(iU,{}),MailOutlined:(0,Q.jsx)(q$,{}),PhoneOutlined:(0,Q.jsx)(s0,{}),GlobalOutlined:(0,Q.jsx)($Z,{}),ShoppingCartOutlined:(0,Q.jsx)(k4,{}),TeamOutlined:(0,Q.jsx)(i6,{}),BarChartOutlined:(0,Q.jsx)(jU,{}),PieChartOutlined:(0,Q.jsx)(_0,{}),LineChartOutlined:(0,Q.jsx)(D$,{}),SecurityScanOutlined:(0,Q.jsx)(m4,{}),ApiOutlined:(0,Q.jsx)(uH,{}),DatabaseOutlined:(0,Q.jsx)(zJ,{}),CloudServerOutlined:(0,Q.jsx)(Nq,{}),MenuOutlined:(0,Q.jsx)(l1,{})},BHe=Object.keys(l7).map(e=>({value:e,label:(0,Q.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[l7[e],` `,e.replace(`Outlined`,``)]})})),VHe={page:`blue`,group:`purple`},HHe={page:`页面`,group:`分组`},UHe=()=>{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]=X.useForm(),l=async()=>{r(!0);try{t(await w5())}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 T5({...t,id:o.menu.id}):await T5(t),CP.success(o.menu?.id?`菜单已更新`:`菜单已添加`),s({open:!1,menu:null}),c.resetFields(),l()}catch{}},d=async e=>{try{await BBe(e),CP.success(`菜单已删除`),l()}catch(e){CP.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&&l7[e]?(0,Q.jsx)(`span`,{style:{fontSize:16,color:`#6366f1`},children:l7[e]}):`-`},{title:`类型`,dataIndex:`menuType`,width:80,render:e=>(0,Q.jsx)(jR,{color:VHe[e]||`default`,children:HHe[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)(jR,{color:`green`,children:`默认`}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})}]:[],{title:`操作`,key:`action`,width:150,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除该菜单?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}];return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`菜单配置`})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加菜单`})]}),(0,Q.jsx)(zA,{activeKey:i,onChange:a,items:[{key:`frontend`,label:`前台菜单`},{key:`admin`,label:`后台菜单`}]}),(0,Q.jsx)(vR,{columns:v,dataSource:h,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(l1,{}),o.menu?.id?`编辑菜单`:`添加菜单`]}),open:o.open,onOk:u,onCancel:()=>{s({open:!1,menu:null}),c.resetFields()},okText:`确认`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`label`,label:`菜单名称`,rules:[{required:!0,message:`请输入菜单名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:我的项目`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`path`,label:`路由路径`,tooltip:`分组类型可留空`,children:(0,Q.jsx)(GN,{placeholder:`例如:/projects(分组可留空)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`menuType`,label:`菜单类型`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`page`,label:`页面`},{value:`group`,label:`分组`}]})}),(0,Q.jsx)(X.Item,{name:`menuTarget`,label:`适用端`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`icon`,label:`图标`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:BHe})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`,placeholder:`默认0`})})]}),(0,Q.jsx)(X.Item,{name:`parentId`,label:`上级菜单`,children:(0,Q.jsx)(Tb,{size:`large`,options:m,allowClear:!0,placeholder:`顶级菜单`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.menuTarget!==t.menuTarget,children:({getFieldValue:e})=>e(`menuTarget`)===`admin`?null:(0,Q.jsx)(X.Item,{name:`isDefault`,label:`新用户默认显示`,valuePropName:`checked`,tooltip:`开启后,新注册用户默认显示此菜单`,children:(0,Q.jsx)(lF,{})})})]})})]})},WHe={normal:`blue`,gift:`green`,promo:`purple`},GHe={normal:`常规`,gift:`赠送`,promo:`促销`},KHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,item:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await D5()).map(e=>({id:e.id,name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonus_credits??e.bonusCredits??0,totalCredits:e.total_credits??e.totalCredits??e.credits,description:e.description,packageType:e.package_type??e.packageType??`normal`,isGift:e.is_gift??e.isGift??!1,isActive:e.is_active??e.isActive??!0,sortOrder:e.sort_order??e.sortOrder??0})))}catch{CP.error(`加载充值套餐失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={name:e.name,credits:e.credits,price:e.price,bonus_credits:e.bonusCredits||0,description:e.description||null,package_type:e.packageType||`normal`,is_gift:e.isGift||!1,is_active:e.isActive??!0,sort_order:e.sortOrder??0};i.item?.id?(await O5({id:i.item.id,...t}),CP.success(`已更新`)):(await O5(t),CP.success(`已添加`)),a({open:!1,item:null}),o.resetFields(),s()}catch{}},l=async e=>{try{await GBe(e),CP.success(`已删除`),s()}catch(e){CP.error(e?.message||`删除失败`)}},u=e=>{a({open:!0,item:e||null}),e?o.setFieldsValue({name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonusCredits,description:e.description,packageType:e.packageType,isGift:e.isGift,isActive:e.isActive,sortOrder:e.sortOrder}):(o.resetFields(),o.setFieldsValue({isActive:!0,sortOrder:0,packageType:`normal`,bonusCredits:0,isGift:!1}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KZ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`充值套餐管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个套餐`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加套餐`})]}),(0,Q.jsx)(vR,{columns:[{title:`套餐名称`,key:`name`,width:160,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),t.description&&(0,Q.jsx)(`div`,{style:{color:`#94a3b8`,fontSize:12},children:t.description})]})},{title:`基础积分`,dataIndex:`credits`,width:100,render:e=>(0,Q.jsx)(Z.Text,{children:e.toLocaleString()})},{title:`赠送积分`,dataIndex:`bonusCredits`,width:100,render:e=>e>0?(0,Q.jsxs)(jR,{color:`green`,children:[`+`,e.toLocaleString()]}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})},{title:`总积分`,key:`total`,width:100,render:(e,t)=>(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:(t.credits+t.bonusCredits).toLocaleString()})},{title:`价格(元)`,dataIndex:`price`,width:100,render:e=>(0,Q.jsxs)(Z.Text,{strong:!0,children:[`¥`,e]})},{title:`类型`,dataIndex:`packageType`,width:80,render:e=>(0,Q.jsx)(jR,{color:WHe[e]||`default`,children:GHe[e]||e})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KZ,{}),i.item?`编辑套餐`:`添加套餐`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,item:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`套餐名称`,rules:[{required:!0,message:`请输入套餐名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:进阶包`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`credits`,label:`基础积分`,rules:[{required:!0,message:`请输入积分`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:1,placeholder:`2000`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`price`,label:`价格(元)`,rules:[{required:!0,message:`请输入价格`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:.01,step:1,placeholder:`168`,size:`large`,style:{width:`100%`}})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`bonusCredits`,label:`赠送积分`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,placeholder:`0`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`packageType`,label:`套餐类型`,initialValue:`normal`,style:{flex:1},children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`normal`,label:`常规`},{value:`gift`,label:`赠送`},{value:`promo`,label:`促销`}]})})]}),(0,Q.jsx)(X.Item,{name:`description`,label:`描述`,children:(0,Q.jsx)(GN,{placeholder:`套餐描述(可选)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`isGift`,label:`是否赠送`,valuePropName:`checked`,initialValue:!1,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{size:`large`,style:{width:`100%`}})})]})]})})]})},qHe={POST:`green`,PUT:`blue`,DELETE:`red`},JHe=()=>{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 KBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载操作日志失败`)}finally{a(!1)}};return(0,C.useEffect)(()=>{c()},[]),(0,Q.jsx)(`div`,{children:(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(TQ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`操作日志`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>c(),children:`刷新`})]}),(0,Q.jsx)(vR,{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)(jR,{color:qHe[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:B5(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}})]})})},YHe=()=>{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]=X.useForm(),[_]=X.useForm(),v=async e=>{a(!0);try{let n=await qBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载应用管理列表失败`)}finally{a(!1)}},y=async()=>{try{let e=await g.validateFields();await JBe({app_id:e.app_id,secret:e.secret,open_type:e.open_type,count:e.count,auth_url:e.auth_url,company:e.company}),CP.success(`创建成功`),l(!1),g.resetFields(),v()}catch(e){CP.error(e?.message||`创建失败`)}},b=async e=>{try{h(await k5(e)),d(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},x=async e=>{try{let t=await k5(e);h(t),_.setFieldsValue({app_id:t.app_id,secret:t.secret,open_type:t.open_type,count:t.max_count,auth_url:t.auth_url,company:t.company}),p(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},S=async()=>{if(m)try{let e=await _.validateFields();await YBe(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}),CP.success(`更新成功`),p(!1),_.resetFields(),v()}catch(e){CP.error(e?.message||`更新失败`)}},w=e=>{TP.confirm({title:`确认删除`,content:`确定要删除这个应用管理吗?`,okText:`删除`,okType:`danger`,cancelText:`取消`,onOk:async()=>{try{await XBe(e),CP.success(`删除成功`),v()}catch(e){CP.error(e?.message||`删除失败`)}}})};return(0,C.useEffect)(()=>{v()},[]),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`应用管理列表`})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>v(),children:`刷新`}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>l(!0),children:`创建`})]})]}),(0,Q.jsx)(vR,{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)(hx,{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)(jR,{color:e===1?`green`:`red`,children:e===1?`正常`:`禁用`})},{title:`授权URL`,dataIndex:`authUrl`,width:200,render:e=>e?(0,Q.jsx)(hx,{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:B5(e)})},{title:`更新时间`,dataIndex:`updatedAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:B5(e)})},{title:`操作`,width:120,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(IN,{}),size:`small`,onClick:()=>b(t.id),children:`详情`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(LR,{}),size:`small`,onClick:()=>x(t.id),children:`更新`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(PR,{}),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)(TP,{title:`创建应用管理`,open:c,onOk:y,onCancel:()=>{l(!1),g.resetFields()},okText:`创建`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:g,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,initialValue:100,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})}),(0,Q.jsx)(TP,{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.app_id]}),(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.open_type]||m.open_type]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`归属公司:`}),` `,m.company||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`授权次数:`}),` `,m.max_count]}),(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.auth_url||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建人:`}),` `,m.create_by]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建时间:`}),` `,B5(m.created_at)]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`更新时间:`}),` `,B5(m.updated_at)]})]})}),(0,Q.jsx)(TP,{title:`更新应用管理`,open:f,onOk:S,onCancel:()=>{p(!1),_.resetFields(),h(null)},okText:`更新`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:_,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})})]})},u7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),d7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},f7={optimizing:{color:`processing`,text:`优化中`,icon:(0,Q.jsx)(fm,{spin:!0})},prompt_optimized:{color:`processing`,text:`待生成`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},p7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},XHe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),m7=e=>!!e&&/^blob:/i.test(e.trim()),h7=e=>{if(!e)return``;let t=String(e).trim();return t?XHe(t)?t:u7?`${u7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},ZHe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,g7=e=>e?B5(e):`-`,QHe=e=>e==null||e===``,_7=e=>{if(!e||m7(e))return!1;try{let t=new URL(h7(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}},v7=e=>e?m7(e)||_7(e)?`invalid`:`checking`:`empty`,y7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},$He=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=y7(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`},b7=(e,t)=>`${t}-${y7(e)||`empty`}`,x7=(e,t=`资源`)=>m7(e)?`本地临时素材已失效`:_7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,S7=({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]}),C7=({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:QHe(t)?`-`:t})]}),eUe=()=>{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)(0),[h,g]=(0,C.useState)(null),[_,v]=(0,C.useState)(d7),[y,b]=(0,C.useState)(!1),x=(0,C.useRef)(null),[S,w]=(0,C.useState)(null),[T,E]=(0,C.useState)(null),D=(0,C.useCallback)(async()=>{a(!0);try{let e=await nVe({userId:d.trim()||void 0,status:l||void 0,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}))),r(e.total||0)}catch{CP.error(`加载记录失败`)}finally{a(!1)}},[l,d,o,c]);(0,C.useEffect)(()=>{D()},[D,p]),(0,C.useEffect)(()=>{if(!h){v(d7);return}let e=(h.references||[]).reduce((e,t,n)=>{let r=y7(t);return e[b7(t,n)]=v7(r),e},{});x.current&&(x.current.pause(),x.current.currentTime=0),b(!1),v({image:v7(h.imageUrl),video:v7(h.videoUrl),videoCover:v7(h.videoCoverUrl),references:e})},[h]);let O=()=>{s(1),m(e=>e+1)},k=(0,C.useCallback)(e=>{g(e)},[]),A=()=>{x.current&&x.current.pause(),b(!1),g(null)},j=e=>{v(t=>({...t,...e}))},M=(e,t)=>{v(n=>({...n,references:{...n.references,[e]:t}}))},N=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(m7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(_7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(h7(e),`_blank`,`noopener,noreferrer`)},P=()=>{if(h?.videoUrl){if(_7(h.videoUrl)){j({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}b(!0),window.setTimeout(()=>{x.current?.play().catch(()=>{b(!1),j({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},F=async(e,t,n)=>{w(e);try{await rVe(e,t,n),CP.success(`状态已更新`),D()}catch(e){CP.error(e?.message||`更新失败`)}finally{w(null)}},I=async()=>{if(T){w(T.record.id);try{await iVe(T.record.id,T.ratio,T.resolution,T.image_size),CP.success(`已提交${T.record.genType===`video`?`视频`:`图片`}生成`),E(null),D()}catch(e){CP.error(e?.message||`生成失败`)}finally{w(null)}}},L=(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:ZHe(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)(jR,{color:`cyan`,children:e||`-`})},{title:`类型`,dataIndex:`genType`,width:90,ellipsis:!0,render:e=>{let t=p7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`提示词`,key:`prompt`,ellipsis:!0,render:(e,t)=>(0,Q.jsx)(hx,{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`?t.duration||t.aspectRatio||t.resolution?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`})},{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=f7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`时间`,key:`time`,width:150,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:g7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,g7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>k(t),children:`详情`}),t.status===`generating`?(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`}):null,t.status===`failed`?(0,Q.jsx)($S,{size:`small`,type:`primary`,danger:!0,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),children:`重试生成`}):null,t.status===`prompt_optimized`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)($S,{size:`small`,type:`primary`,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),style:{background:`#6366f1`,border:`none`},children:[`生成`,t.genType===`video`?`视频`:`图片`]}),(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`})]}):null]})}],[k,S]),R=h?p7[h.genType||``]||{text:h.genType||`-`,color:`default`,icon:null}:null,z=h?f7[h.status]||{color:`default`,text:h.status||`-`,icon:null}:null,B=()=>{if(!h||h.genType!==`image`||h.status!==`completed`)return null;if(!h.imageUrl)return(0,Q.jsx)(S7,{text:`此图片任务暂无结果图片`,minHeight:260});if(_.image===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.imageUrl,`图片`),minHeight:260});let e=h7(h.imageUrl);return(0,Q.jsxs)(`div`,{title:`点击新页面查看图片`,onClick:()=>N(h.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:()=>j({image:`valid`}),onError:()=>j({image:`invalid`}),style:{display:_.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${h.id}-${e}`),_.image===`checking`?(0,Q.jsx)(S7,{text:`图片加载检测中...`,minHeight:260}):null]})},V=()=>{if(!h||y||_.video===`invalid`)return null;let e=h.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:P,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!h.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)(S7,{text:`此视频无封面`,minHeight:340,action:e})});if(_.videoCover===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=h7(h.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:()=>j({videoCover:`valid`}),onError:()=>j({videoCover:`invalid`}),style:{display:_.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${h.id}-cover-${t}`),_.videoCover===`checking`?(0,Q.jsx)(S7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,_.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]})},H=()=>{if(!h||h.genType!==`video`||h.status!==`completed`)return null;if(!h.videoUrl)return(0,Q.jsx)(S7,{text:`此视频任务暂无结果视频`,minHeight:340});if(_.video===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoUrl,`视频`),minHeight:340});let e=h7(h.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:x,src:e,preload:`metadata`,controls:y,onLoadedMetadata:()=>j({video:`valid`}),onCanPlay:()=>j({video:`valid`}),onPlaying:()=>{b(!0),j({video:`valid`})},onPause:()=>b(!1),onEnded:()=>b(!1),onError:()=>{b(!1),j({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!y,pointerEvents:y?`auto`:`none`}},`${h.id}-${e}`),V()]})},U=(e,t)=>{let n=y7(e),r=$He(e),i=b7(e,t),a=_.references[i]||v7(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)(S7,{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)(S7,{text:m7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=h7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>N(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&N(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:()=>M(i,`valid`),onError:()=>M(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:()=>M(i,`valid`),onError:()=>M(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(m8,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`生成记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:200},value:d,onChange:e=>f(e.target.value),onPressEnter:O,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:O,style:{borderRadius:8},children:`搜索`})]})]}),(0,Q.jsx)(vR,{columns:L,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)(TP,{title:(0,Q.jsxs)(IM,{children:[h?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`生成记录详情`})]}),open:!!h,onCancel:A,footer:null,width:900,destroyOnClose:!0,children:h?(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:h.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:h.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)(IM,{size:4,wrap:!0,children:[R?(0,Q.jsx)(jR,{color:R.color,icon:R.icon,children:R.text}):null,z?(0,Q.jsx)(jR,{color:z.color,icon:z.icon,children:z.text}):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:h.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:h.optimizedPrompt||`-`})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`文字积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#f59e0b`},children:h.textCreditsCost||0}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.textTokensUsed||0,` tokens)`]})]})}),(0,Q.jsx)(C7,{label:`${h.genType===`image`?`图片`:`视频`}积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:h.creditsCost||0}),h.genType===`video`&&h.videoTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.videoTokensUsed,` tokens)`]}):null,h.genType===`image`&&h.imageTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.imageTokensUsed,` tokens)`]}):null]})}),(0,Q.jsx)(C7,{label:`总积分`,value:(h.textCreditsCost||0)+(h.creditsCost||0)})]}),h.genType===`video`?h.duration||h.aspectRatio||h.resolution?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`时长`,value:h.duration?`${h.duration}秒`:`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.aspectRatio||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.resolution||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`视频参数待用户配置`})}):null,h.genType===`image`?h.imageSize||h.imageProportion||h.imagePx?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`尺寸`,value:h.imagePx||`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.imageProportion||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.imageSize||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`图片参数待用户配置`})}):null,!h?.references||h.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:h.references.map((e,t)=>U(e,t))})]}),h.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:h.genType===`video`?`生成视频`:`生成图片`}),h.genType===`video`?H():B()]}):null,h.status===`failed`&&h.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:[`错误信息: `,h.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,g7(h.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,g7(h.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[T&&(T.record.genType===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(DX,{})),T&&(T.record.genType===`video`?`生成视频`:`生成图片`)]}),open:!!T,onCancel:()=>E(null),onOk:I,okText:`提交生成`,cancelText:`取消`,confirmLoading:T?S===T.record.id:!1,width:420,children:T?(0,Q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginTop:16},children:T.record.genType===`video`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`时长`}),(0,Q.jsxs)(Z.Text,{strong:!0,children:[T.record.duration||5,`s`]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`画面比例`}),(0,Q.jsx)(Tb,{value:T.ratio,onChange:e=>E(t=>t?{...t,ratio:e}:null),style:{width:`100%`},options:[`16:9`,`4:3`,`1:1`,`3:4`,`9:16`,`21:9`].map(e=>({value:e,label:e}))})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.resolution,onChange:e=>E(t=>t?{...t,resolution:e}:null),style:{width:`100%`},options:[`480p`,`720p`,`1080p`].map(e=>({value:e,label:e}))})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{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:T.record.imagePx||`-`})]}),(0,Q.jsxs)(`div`,{style:{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:T.record.imageProportion||`-`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.image_size,onChange:e=>E(t=>t?{...t,image_size:e}:null),style:{width:`100%`},options:[`2K`,`4K`].map(e=>({value:e,label:e}))})]})]})}):null})]})},{RangePicker:tUe}=gM,w7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),T7=20,E7=e=>e&&(e.name||e.modelName||e.id)||null,D7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},O7={pending:{color:`default`,text:`待处理`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},k7={timeout:`任务超时`,queued:`已入队`,preparing:`准备中`,creating_provider_task:`创建任务中`,waiting_remote:`等待生成`,result_ready:`结果就绪`,downloading:`下载中`,done:`完成`,download_failed:`下载失败`,polling:`轮询中`,failed:`失败`},A7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},nUe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),j7=e=>!!e&&/^blob:/i.test(e.trim()),M7=e=>{if(!e)return``;let t=String(e).trim();return t?nUe(t)?t:w7?`${w7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},rUe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,N7=e=>e?B5(e):`-`,iUe=e=>e==null||e===``,P7=e=>{if(!e||j7(e))return!1;try{let t=new URL(M7(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}},F7=e=>e?j7(e)||P7(e)?`invalid`:`checking`:`empty`,I7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},L7=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=I7(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`},R7=(e,t)=>`${t}-${I7(e)||`empty`}`,z7=(e,t=`资源`)=>j7(e)?`本地临时素材已失效`:P7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,B7=({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]}),V7=({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:iUe(t)?`-`:t})]}),H7=()=>(0,tC.default)().startOf(`day`),U7=()=>(0,tC.default)().endOf(`day`),aUe=()=>{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)([H7(),U7()]),[D,O]=(0,C.useState)([H7(),U7()]),[k,A]=(0,C.useState)(0),[j,M]=(0,C.useState)(null),[N,P]=(0,C.useState)(D7),[F,I]=(0,C.useState)(!1),L=(0,C.useRef)(null),[R,z]=(0,C.useState)(null),B=(0,C.useCallback)(async()=>{a(!0);try{let e=await oVe({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:T7});t(e.items||[]),r(e.total||0)}catch(e){CP.error(e?.message||`加载创作记录失败`)}finally{a(!1)}},[u,c,o,v,b,S,D]);(0,C.useEffect)(()=>{B()},[B,k]),(0,C.useEffect)(()=>{if(!j){P(D7);return}let e=(j.mediaReferences||[]).reduce((e,t,n)=>{let r=I7(t);return e[R7(t,n)]=F7(r),e},{});L.current&&(L.current.pause(),L.current.currentTime=0),I(!1),P({image:F7(j.imageUrl),video:F7(j.videoUrl),videoCover:F7(j.videoCoverUrl),references:e})},[j]);let V=()=>{s(1),y(m.trim()),x(g.trim()),w(f),O(T),A(e=>e+1)},H=()=>{l(``),d(``),p(``),h(``),_(``),y(``),x(``),w(``);let e=[H7(),U7()];E(e),O(e),s(1),A(e=>e+1)},U=(0,C.useCallback)(e=>{M(e)},[]),W=()=>{L.current&&L.current.pause(),I(!1),M(null)},ee=e=>{P(t=>({...t,...e}))},te=(e,t)=>{P(n=>({...n,references:{...n.references,[e]:t}}))},ne=()=>{if(j?.videoUrl){if(P7(j.videoUrl)){ee({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}I(!0),window.setTimeout(()=>{L.current?.play().catch(()=>{I(!1),ee({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},re=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(M7(e),`_blank`,`noopener,noreferrer`)},ie=(e,t,n)=>{if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`链接已超时,请刷新列表或重新搜索后再查看`);return}z({url:M7(e),type:t,title:n})},ae=()=>z(null),G=(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:rUe(t.userId)})]})},{title:`类型`,dataIndex:`genType`,width:90,render:e=>{let t=A7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`引擎`,key:`engine`,width:160,render:(e,t)=>{let n=E7(t.engineSnapshot);return(0,Q.jsx)(hx,{title:t.engineId||`未知引擎`,placement:`topLeft`,children:(0,Q.jsx)(jR,{icon:(0,Q.jsx)(W2,{}),color:`cyan`,children:n||t.engineId||`-`})})}},{title:`附件`,key:`references`,width:130,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)(IM,{size:4,wrap:!0,children:n.map((e,t)=>{let n=I7(e),r=L7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)($S,{size:`small`,icon:r===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(DX,{}),type:`link`,style:{padding:0,fontSize:12},onClick:e=>{e.stopPropagation(),ie(n,r===`video`?`video`:`image`,i)},children:i},t):null})})}},{title:`结果`,key:`result`,width:90,render:(e,t)=>t.status===`completed`?t.genType===`video`&&t.videoUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(C0,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),ie(t.videoUrl,`video`,`生成视频`)},children:`看视频`}):t.genType===`image`&&t.imageUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(DX,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),ie(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)(hx,{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)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`无参数`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{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=O7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`阶段`,dataIndex:`pipelineStage`,width:120,render:e=>(0,Q.jsx)(jR,{color:`blue`,children:k7[e]||e||`-`})},{title:`时间`,key:`time`,width:170,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:N7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,N7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:90,fixed:`right`,render:(e,t)=>(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>U(t),children:`详情`})}],[U]),oe=j?A7[j.genType]||{text:j.genType||`-`,color:`default`,icon:null}:null,K=j?O7[j.status]||{color:`default`,text:j.status||`-`,icon:null}:null,se=()=>{if(!j||j.genType!==`image`||j.status!==`completed`)return null;if(!j.imageUrl)return(0,Q.jsx)(B7,{text:`此图片任务暂无结果图片`,minHeight:260});if(N.image===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.imageUrl,`图片`),minHeight:260});let e=M7(j.imageUrl);return(0,Q.jsxs)(`div`,{style:{position:`relative`,width:`100%`,minHeight:260,borderRadius:12,background:`#f8f9fc`,border:`1px solid #e2e8f0`,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:[(0,Q.jsx)(`img`,{src:e,alt:`生成图片`,onLoad:()=>ee({image:`valid`}),onError:()=>ee({image:`invalid`}),style:{display:N.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${j.id}-${e}`),N.image===`checking`?(0,Q.jsx)(B7,{text:`图片加载检测中...`,minHeight:260}):null]})},ce=()=>{if(!j||F||N.video===`invalid`)return null;let e=j.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:ne,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!j.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)(B7,{text:`此视频无封面`,minHeight:340,action:e})});if(N.videoCover===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=M7(j.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:()=>ee({videoCover:`valid`}),onError:()=>ee({videoCover:`invalid`}),style:{display:N.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${j.id}-cover-${t}`),N.videoCover===`checking`?(0,Q.jsx)(B7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,N.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]})},le=()=>{if(!j||j.genType!==`video`||j.status!==`completed`)return null;if(!j.videoUrl)return(0,Q.jsx)(B7,{text:`此视频任务暂无结果视频`,minHeight:340});if(N.video===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoUrl,`视频`),minHeight:340});let e=M7(j.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:L,src:e,preload:`metadata`,controls:F,onLoadedMetadata:()=>ee({video:`valid`}),onCanPlay:()=>ee({video:`valid`}),onPlaying:()=>{I(!0),ee({video:`valid`})},onPause:()=>I(!1),onEnded:()=>I(!1),onError:()=>{I(!1),ee({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!F,pointerEvents:F?`auto`:`none`}},`${j.id}-${e}`),ce()]})},ue=(e,t)=>{let n=I7(e),r=L7(e),i=R7(e,t),a=N.references[i]||F7(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)(B7,{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)(B7,{text:j7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=M7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>re(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&re(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:()=>te(i,`valid`),onError:()=>te(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:()=>te(i,`valid`),onError:()=>te(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`创作记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(Tb,{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)(Tb,{allowClear:!0,showSearch:!0,placeholder:`引擎筛选`,value:f||void 0,style:{width:180},onChange:e=>{p(e||``),s(1),w(e||``)},optionFilterProp:`label`,options:Array.from(new Map(e.filter(e=>e.engineId).map(e=>[e.engineId,{value:e.engineId,label:E7(e.engineSnapshot)||e.engineId}])).values())}),(0,Q.jsx)(tUe,{value:T,onChange:e=>{e&&e[0]&&e[1]?E([e[0].startOf(`day`),e[1].endOf(`day`)]):E(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:m,onChange:e=>h(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)(GN,{placeholder:`用户名搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:g,onChange:e=>_(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:V,style:{borderRadius:8},children:`搜索`}),(0,Q.jsx)($S,{onClick:H,style:{borderRadius:8},children:`重置`})]})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:i,columns:G,dataSource:e,scroll:{x:1650},pagination:{current:o,pageSize:T7,total:n,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:e=>s(e)}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[j?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`创作记录详情`})]}),open:!!j,onCancel:W,footer:null,width:900,destroyOnClose:!0,children:j?(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:[oe?(0,Q.jsx)(jR,{color:oe.color,icon:oe.icon,children:oe.text}):null,K?(0,Q.jsx)(jR,{color:K.color,icon:K.icon,children:K.text}):null,j.pipelineStage?(0,Q.jsx)(jR,{color:`blue`,children:k7[j.pipelineStage]||j.pipelineStage}):null]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`用户名称`,value:j.userName||`未知用户`}),(0,Q.jsx)(V7,{label:`用户ID`,value:j.userId||`-`}),(0,Q.jsx)(V7,{label:`任务ID`,value:j.id})]}),(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:j.originalPrompt||`-`})]}),j.genType===`video`?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`时长`,value:j.duration?`${j.duration}秒`:`-`}),(0,Q.jsx)(V7,{label:`画面比例`,value:j.aspectRatio||`-`}),(0,Q.jsx)(V7,{label:`分辨率`,value:j.resolution||`-`})]}):(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`图片档位`,value:j.imageSize||`-`}),(0,Q.jsx)(V7,{label:`图片比例`,value:j.imageProportion||`-`}),(0,Q.jsx)(V7,{label:`像素尺寸`,value:j.imagePx||`-`})]}),j.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)(V7,{label:`引擎名称`,value:j.engineSnapshot.name||`-`}),(0,Q.jsx)(V7,{label:`服务商`,value:j.engineSnapshot.provider||`-`}),(0,Q.jsx)(V7,{label:`模型`,value:j.engineSnapshot.modelName||`-`}),(0,Q.jsx)(V7,{label:`引擎ID`,value:j.engineSnapshot.id||j.engineId||`-`})]})]}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`总积分`,value:(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:j.creditsCost||0})}),(0,Q.jsx)(V7,{label:`文字积分`,value:`${j.textCreditsCost||0} (${j.textTokensUsed||0} tokens)`}),(0,Q.jsx)(V7,{label:`图片 tokens`,value:j.imageTokensUsed??0}),(0,Q.jsx)(V7,{label:`视频 tokens`,value:j.videoTokensUsed??0})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`第三方任务ID`,value:j.providerTaskId||j.seedanceTaskId||`-`}),(0,Q.jsx)(V7,{label:`轮询次数`,value:j.pollCount??0}),(0,Q.jsx)(V7,{label:`重试次数`,value:j.retryCount??0})]}),!j?.mediaReferences||j.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:j.mediaReferences.map((e,t)=>ue(e,t))})]}),j.mediaReferences&&j.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)(IM,{size:8,wrap:!0,children:j.mediaReferences.map((e,t)=>{let n=I7(e),r=L7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)($S,{size:`small`,icon:r===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(j$,{}),onClick:()=>ie(n,r===`video`?`video`:`image`,i),children:i},t):null})})]}):null,j.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:6},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`},children:j.genType===`video`?`生成视频`:`生成图片`}),j.genType===`video`&&j.videoUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(C0,{}),onClick:()=>ie(j.videoUrl,`video`,`生成视频`),style:{padding:0},children:`弹窗播放`}):null,j.genType===`image`&&j.imageUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(DX,{}),onClick:()=>ie(j.imageUrl,`image`,`生成图片`),style:{padding:0},children:`弹窗查看`}):null]}),j.genType===`video`?le():se()]}):null,j.status===`failed`&&j.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:[`错误信息: `,j.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,N7(j.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,N7(j.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:R?.title||`资源预览`,open:!!R,onCancel:ae,footer:null,width:R?.type===`video`?800:600,destroyOnHidden:!0,children:R?R.type===`video`?(0,Q.jsx)(`video`,{src:R.url,controls:!0,autoPlay:!0,style:{width:`100%`,maxHeight:600,background:`#000`,borderRadius:8}},R.url):(0,Q.jsx)(`img`,{src:R.url,alt:R.title,style:{width:`100%`,maxHeight:600,objectFit:`contain`,borderRadius:8}}):null})]})},W7=20,oUe=[{value:`pending`,label:`已创建`},{value:`waiting_user`,label:`等待用户操作`},{value:`processing`,label:`处理中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`},{value:`cancelled`,label:`已取消`}],sUe={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:`已取消`}},cUe={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},G7=e=>e?B5(e):`-`,K7=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,lUe=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=sUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},uUe=()=>{let e=Ze(),[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 sVe({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:W7});n(e.items||[]),i(e.total||0)}catch(e){CP.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.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`爆款开头复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看任务列表、素材、步骤详情和生成结果。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>k(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`任务状态`,style:{width:160},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:oUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/项目名/核心点`,style:{width:260},value:d,onChange:e=>f(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:p,onChange:e=>m(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:h,onChange:e=>g(e.target.value),onPressEnter:j}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:_,onChange:v,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:j,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(null),b(``),S(``),T(``),D(null),c(1),k(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:W7,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1380},columns:[{title:`项目ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:K7(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:K7(t.userId)})]})},{title:`项目信息`,width:260,render:(e,t)=>(0,Q.jsxs)(IM,{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)(lUe,{status:e})},{title:`当前步骤`,dataIndex:`currentStepCode`,width:140,render:e=>cUe[e]||e||`-`},{title:`图片结果`,dataIndex:`finalImageUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`视频结果`,dataIndex:`finalVideoUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`错误信息`,dataIndex:`errorMessage`,width:220,ellipsis:!0,render:e=>e||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:G7},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:G7},{title:`操作`,fixed:`right`,width:110,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/hot-opening-replications/${n.id}`),children:`详情`})}]})]})})})},q7=({value:e,maxHeight:t=420})=>e==null||e===``?(0,Q.jsx)(Yy,{image:Yy.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)}),dUe=({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)(q7,{value:e})}),t!==void 0&&o.push({key:`output`,label:i,children:(0,Q.jsx)(q7,{value:t})}),n!==void 0&&o.push({key:`raw`,label:a,children:(0,Q.jsx)(q7,{value:n})}),o.length?(0,Q.jsx)(Wh,{size:`small`,style:{marginTop:12},items:o}):null},fUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``);function pUe(e){if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${fUe}${t.startsWith(`/`)?t:`/${t}`}`:``}var J7=({url:e,type:t,height:n=260,emptyDescription:r=`暂无资源`,errorDescription:i=`资源加载失败,可能文件不存在、签名过期或访问权限受限。`})=>{let a=(0,C.useMemo)(()=>pUe(e),[e]),[o,s]=(0,C.useState)(!1);(0,C.useEffect)(()=>{s(!1)},[a]);let c=a?(0,Q.jsxs)(IM,{wrap:!0,style:{marginTop:8},children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(oz,{}),onClick:async()=>{if(a)try{await navigator.clipboard.writeText(a),CP.success(`资源地址已复制`)}catch{CP.error(`复制失败,请手动复制`)}},children:`复制地址`}),(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(j$,{}),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)(cf,{type:`warning`,showIcon:!0,message:`资源预览失败`,description:i,style:{marginBottom:8}}):null,t===`image`?(0,Q.jsx)(jN,{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)(Yy,{image:Yy.PRESENTED_IMAGE_SIMPLE,description:r})})})},Y7={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`},waiting_remote:{text:`等待远端结果`,color:`processing`},polling:{text:`轮询远端结果`,color:`processing`},result_ready:{text:`结果已就绪`,color:`success`},downloading:{text:`下载中`,color:`processing`},done:{text:`已完成`,color:`success`},download_failed:{text:`下载失败`,color:`error`},retry_waiting:{text:`等待重试`,color:`orange`},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`}},X7={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},Z7={hot_opening_replicate:`爆款开头复刻`,shot_replicate:`拆镜复刻`},Q7={ai_suggestion:{text:`AI 建议`,color:`purple`},custom:{text:`自定义`,color:`cyan`},original:{text:`原视频`,color:`blue`}};function $7(e){return e?Z7[e]||e:`-`}function e9(e){return e?X7[e]||e:`-`}function mUe(e){return e?Y7[e]?.text||X7[e]||Z7[e]||Q7[e]?.text||e:`-`}function hUe(e){return e?Y7[e]?.color||Q7[e]?.color||`blue`:`default`}var t9=({status:e,tooltipRaw:t=!0})=>{if(e==null||e===``)return(0,Q.jsx)(jR,{children:`-`});let n=String(e),r=mUe(n),i=(0,Q.jsx)(jR,{color:hUe(n),children:r});return!t||r===n?i:(0,Q.jsx)(hx,{title:n,children:i})};function n9(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function r9(e,...t){for(let n of t){let t=e[n];if(t!=null&&String(t).trim()!==``)return String(t)}return``}function i9(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 gUe(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 a9(e){if(!n9(e))return null;let t=r9(e,`key`);return t?{key:t,label:r9(e,`label`)||t,type:r9(e,`type`)||void 0,enabled:i9(e,!0,`enabled`),editable:i9(e,!0,`editable`),maxLength:gUe(e,`maxLength`,`max_length`)}:null}function o9(e){if(!n9(e))return null;let t=e.data;return n9(t)?t:Array.isArray(e.sections)?e:null}function _Ue(e){return!!o9(e)}function vUe(e){let t=o9(e);return(Array.isArray(t?.sections)?t.sections:[]).map(e=>{let t=a9(e);if(!t||!n9(e))return null;let n=Array.isArray(e.children)?e.children.map(a9).filter(Boolean):[],r=Array.isArray(e.itemFields)?e.itemFields.map(a9).filter(Boolean):Array.isArray(e.item_fields)?e.item_fields.map(a9).filter(Boolean):[];return{...t,contentKey:r9(e,`contentKey`,`content_key`)||void 0,children:n,itemFields:r}}).filter(e=>!!e&&e.enabled)}function yUe(e){return n9(e)?Object.entries(e).filter(([e])=>![`schemaVersion`,`schemaUsage`,`schema_version`,`schema_usage`].includes(e)).map(([e,t])=>Array.isArray(t)&&t.every(n9)?{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:[]}:n9(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 s9=e=>!!e&&typeof e==`object`&&!Array.isArray(e),c9=e=>typeof e==`string`&&e.length>80,l9=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)(q7,{value:e,maxHeight:220}),u9=e=>e?(0,Q.jsx)(jR,{color:`processing`,children:`可编辑`}):(0,Q.jsx)(jR,{color:`default`,children:`只读`}),d9=(e,t)=>e[t],bUe=(e,t)=>{let n=d9(e,t.key);if(!s9(n))return(0,Q.jsx)(q7,{value:n??{},maxHeight:220});let r=t.children.filter(e=>e.enabled);return r.length?(0,Q.jsx)(bM,{size:`small`,column:2,bordered:!0,children:r.map(e=>(0,Q.jsx)(bM.Item,{label:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),span:c9(n[e.key])||s9(n[e.key])||Array.isArray(n[e.key])?2:1,children:l9(n[e.key])},e.key))}):(0,Q.jsx)(q7,{value:n,maxHeight:220})},xUe=(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}))},SUe=(e,t)=>{let n=d9(e,t.key);if(!Array.isArray(n)||!n.every(s9))return(0,Q.jsx)(q7,{value:n??[],maxHeight:260});let r=n,i=xUe(t,r);return(0,Q.jsx)(vR,{size:`small`,rowKey:(e,n)=>`${t.key}-${n}`,columns:i.map(e=>({title:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),dataIndex:e.key,key:e.key,width:c9(r.find(t=>t[e.key])?.[e.key])?320:160,render:e=>l9(e)})),dataSource:r,pagination:!1,scroll:{x:Math.max(900,i.length*180)},tableLayout:`fixed`})},CUe=(e,t)=>l9(d9(e,t.key)),wUe=({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)(Yy,{description:`暂无视频提词 schema`});let s=o?e:{},c=_Ue(n),l=(c?vUe(n):yUe(s)).filter(e=>e.key in s).map(e=>({key:e.key,label:(0,Q.jsxs)(IM,{size:8,wrap:!0,children:[(0,Q.jsx)(`span`,{children:e.label}),u9(e.editable),c?null:(0,Q.jsx)(jR,{color:`warning`,children:`管理后台兜底展示`})]}),children:e.type===`object`?bUe(s,e):e.type===`flow`?SUe(s,e):CUe(s,e)}));return(0,Q.jsxs)(IM,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,Q.jsx)(VA,{size:`small`,title:`Schema 配置来源`,children:(0,Q.jsxs)(bM,{size:`small`,column:3,bordered:!0,children:[(0,Q.jsx)(bM.Item,{label:`来源`,children:r||n?.source||(c?`-`:`viewer_fallback`)}),(0,Q.jsx)(bM.Item,{label:`版本`,children:i||n?.version||`-`}),(0,Q.jsx)(bM.Item,{label:`历史兜底`,children:a||!c?(0,Q.jsx)(jR,{color:`warning`,children:`是`}):(0,Q.jsx)(jR,{color:`success`,children:`否`})})]})}),t?(0,Q.jsx)(VA,{size:`small`,title:`最终视频提示词`,children:(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:t})}):null,l.length?(0,Q.jsx)(Wh,{size:`small`,items:l}):o?(0,Q.jsx)(VA,{size:`small`,title:`视频提词 Schema`,children:(0,Q.jsx)(q7,{value:s,maxHeight:360})}):null,o?(0,Q.jsx)(Wh,{size:`small`,items:[{key:`raw_schema`,label:`原始 JSON / 历史脏字段排查`,children:(0,Q.jsx)(q7,{value:s,maxHeight:420})}]}):null]})},TUe=[`material_input`,`image_prompt_optimize`,`image_generate`,`video_prompt_optimize`,`video_generate`],EUe={material_input:`参考素材、项目名称和核心内容点`,image_prompt_optimize:`图片 AI 提词优化结果`,image_generate:`图片引擎、生成参数和结果图`,video_prompt_optimize:`视频 JSON schema、动作流程和最终提词`,video_generate:`视频引擎、生成参数、封面和结果视频`},f9=e=>e?B5(e):`-`,p9=e=>e?e.length>18?`${e.slice(0,10)}...${e.slice(-4)}`:e:`-`,DUe=({text:e=`-`})=>(0,Q.jsx)(Z.Text,{type:`secondary`,children:e}),m9=({step:e})=>e?(0,Q.jsx)(dUe,{input:e.input,output:e.output}):null,h9=({index:e,stepCode:t,step:n,current:r})=>(0,Q.jsxs)(IM,{wrap:!0,size:8,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`第${e}步:${e9(t)}`}),(0,Q.jsx)(t9,{status:n?.status||`not_started`}),r?(0,Q.jsx)(jR,{color:`blue`,children:`当前步骤`}):null,(0,Q.jsx)(Z.Text,{type:`secondary`,children:EUe[t]||t}),n?.updatedAt?(0,Q.jsxs)(Z.Text,{type:`secondary`,children:[`更新时间:`,f9(n.updatedAt)]}):null,n?.chatTaskId?(0,Q.jsx)(hx,{title:n.chatTaskId,children:(0,Q.jsxs)(jR,{children:[`Chat:`,p9(n.chatTaskId)]})}):null]}),OUe=(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)},g9=(e,t=`错误信息`)=>e?(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:t,description:e,style:{marginTop:12,marginBottom:12}}):null,kUe=(e,t=`暂无提词`)=>e?(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:e}):(0,Q.jsx)(DUe,{text:t}),_9=({moduleType:e=`shot_replicate`})=>{let{projectId:t}=tt(),n=Ze(),[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(!1),s=(0,C.useCallback)(async()=>{if(t){o(!0);try{i(e===`hot_opening_replicate`?await cVe(t):await pVe(t))}catch(e){CP.error(e?.message||`加载复刻项目详情失败`)}finally{o(!1)}}},[e,t]);(0,C.useEffect)(()=>{s()},[s]);let c=(0,C.useMemo)(()=>{let e={};return(r?.steps||[]).forEach(t=>{e[t.stepCode]=t}),e},[r]),l=r?.module||e,u=$7(l),d=(0,C.useMemo)(()=>TUe.map(e=>{let t=c[e],n=`wait`;return t?.status===`completed`?n=`finish`:t?.status===`processing`?n=`process`:t?.status===`failed`&&(n=`error`),{title:e9(e),description:t?(0,Q.jsx)(t9,{status:t.status}):`未创建`,status:n}}),[c]),f=(0,C.useMemo)(()=>OUe(r,c),[r,c]);if(a&&!r)return(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})});if(!r)return(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到复刻项目详情`})});let p=c.material_input,m=c.image_prompt_optimize,h=c.image_generate,g=c.video_prompt_optimize,_=c.video_generate,v=r.imageGeneration?.resultImageUrl||r.finalImageUrl,y=r.videoGeneration?.resultVideoCoverUrl||r.finalVideoCoverUrl,b=r.videoGeneration?.resultVideoUrl||r.finalVideoUrl,x=[{key:`material_input`,label:(0,Q.jsx)(h9,{index:1,stepCode:`material_input`,step:p,current:r.currentStepCode===`material_input`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`素材步骤ID`,children:r.material?.materialStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`参考素材项目名`,children:r.material?.sourceProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成项目名称`,children:r.material?.targetProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`核心内容点`,span:2,children:r.material?.coreContentPoint||`-`})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`素材视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:r.material?.materialVideoUrl,emptyDescription:`暂无素材视频`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`素材图片`]}),children:(0,Q.jsx)(J7,{type:`image`,url:r.material?.materialImageUrl,emptyDescription:`暂无素材图片`})})]}),g9(p?.errorMessage),(0,Q.jsx)(m9,{step:p})]})},{key:`image_prompt_optimize`,label:(0,Q.jsx)(h9,{index:2,stepCode:`image_prompt_optimize`,step:m,current:r.currentStepCode===`image_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.imageGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:m?.status||r.imageGeneration?.status})}),(0,Q.jsx)(bM.Item,{label:`图片提示词`,span:2,children:kUe(r.imageGeneration?.prompt,`暂无图片提示词`)})]}),g9(m?.errorMessage||r.imageGeneration?.errorMessage),(0,Q.jsx)(m9,{step:m})]})},{key:`image_generate`,label:(0,Q.jsx)(h9,{index:3,stepCode:`image_generate`,step:h,current:r.currentStepCode===`image_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.imageGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.imageGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.imageGeneration?.status||h?.status})}),(0,Q.jsx)(bM.Item,{label:`图片引擎ID`,children:r.imageGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`图片引擎名称`,children:r.imageGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.imageGeneration?.params||{},maxHeight:160})})]}),g9(r.imageGeneration?.errorMessage||h?.errorMessage),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`图片结果`]}),children:(0,Q.jsx)(J7,{type:`image`,url:v,height:360,emptyDescription:h?.status===`failed`||r.imageGeneration?.errorMessage?`图片生成失败,未返回图片地址`:`暂无图片结果`,errorDescription:`图片资源加载失败,可能图片文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(m9,{step:h})]})},{key:`video_prompt_optimize`,label:(0,Q.jsx)(h9,{index:4,stepCode:`video_prompt_optimize`,step:g,current:r.currentStepCode===`video_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.videoGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:g?.status})}),(0,Q.jsx)(bM.Item,{label:`提词参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.promptParams||{},maxHeight:160})})]}),g9(g?.errorMessage||r.videoGeneration?.errorMessage),(0,Q.jsx)(wUe,{schema:r.videoGeneration?.promptSchema,finalPrompt:r.videoGeneration?.finalPrompt,schemaConfigSnapshot:r.videoGeneration?.schemaConfigSnapshot,schemaConfigSource:r.videoGeneration?.schemaConfigSource,schemaConfigVersion:r.videoGeneration?.schemaConfigVersion,schemaConfigIsFallback:r.videoGeneration?.schemaConfigIsFallback}),(0,Q.jsx)(m9,{step:g})]})},{key:`video_generate`,label:(0,Q.jsx)(h9,{index:5,stepCode:`video_generate`,step:_,current:r.currentStepCode===`video_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.videoGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.videoGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.videoGeneration?.status||_?.status})}),(0,Q.jsx)(bM.Item,{label:`视频引擎ID`,children:r.videoGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`视频引擎名称`,children:r.videoGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.params||{},maxHeight:160})})]}),g9(r.videoGeneration?.errorMessage||_?.errorMessage),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`视频封面`]}),children:(0,Q.jsx)(J7,{type:`image`,url:y,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回封面`:`暂无视频封面`,errorDescription:`视频封面加载失败,可能文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m8,{}),`最终视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:b,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回视频地址`:`暂无最终视频`,errorDescription:`视频资源加载失败,可能文件不存在、签名过期或访问权限受限。`})})]}),(0,Q.jsx)(m9,{step:_})]})}];return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>n(-1),children:`返回`}),(0,Q.jsxs)(Z.Title,{level:3,style:{margin:0},children:[u,`项目详情`]}),(0,Q.jsx)(t9,{status:r.status}),r.module&&r.module!==e?(0,Q.jsxs)(jR,{color:`gold`,children:[`接口模块:`,$7(r.module)]}):null]}),(0,Q.jsx)($S,{onClick:s,loading:a,children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`基础信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`项目ID`,children:r.id}),(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:r.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:r.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:r.title||`-`}),(0,Q.jsx)(bM.Item,{label:`当前步骤`,children:(0,Q.jsx)(hx,{title:r.currentStepCode||``,children:e9(r.currentStepCode)})}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.status})}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:f9(r.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:f9(r.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`完成时间`,children:f9(r.completedAt)}),r.errorMessage?(0,Q.jsx)(bM.Item,{label:`错误信息`,span:3,children:(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:r.errorMessage})}):null]})}),(0,Q.jsx)(VA,{title:`步骤进度`,children:(0,Q.jsx)(Qme,{items:d})}),(0,Q.jsx)(VA,{title:`最终结果预览`,children:(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:`最终图片`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalImageUrl||r.imageGeneration?.resultImageUrl,height:220,emptyDescription:`暂无最终图片`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频封面`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalVideoCoverUrl||r.videoGeneration?.resultVideoCoverUrl,height:220,emptyDescription:`暂无最终视频封面`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频`,children:(0,Q.jsx)(J7,{type:`video`,url:r.finalVideoUrl||r.videoGeneration?.resultVideoUrl,height:220,emptyDescription:`暂无最终视频`})})]})}),(0,Q.jsx)(Wh,{defaultActiveKey:f,items:x}),(0,Q.jsx)(Wh,{items:[{key:`steps-table`,label:`完整步骤列表`,children:(0,Q.jsx)(vR,{rowKey:`id`,size:`small`,pagination:!1,dataSource:r.steps||[],scroll:{x:1100},columns:[{title:`序号`,dataIndex:`stepIndex`,width:70},{title:`步骤`,dataIndex:`stepCode`,width:160,render:e=>(0,Q.jsx)(hx,{title:e,children:e9(e)})},{title:`状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(t9,{status:e})},{title:`版本`,dataIndex:`version`,width:70},{title:`当前有效`,dataIndex:`isCurrent`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`是`}):(0,Q.jsx)(jR,{children:`否`})},{title:`Chat任务`,dataIndex:`chatTaskId`,width:160,render:e=>(0,Q.jsx)(hx,{title:e||``,children:p9(e)})},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:f9},{title:`完成时间`,dataIndex:`completedAt`,width:170,render:f9},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0,render:e=>e||`-`}]})},{key:`raw-detail`,label:`完整详情原始 JSON`,children:(0,Q.jsx)(q7,{value:r,maxHeight:520})}]})]})})},AUe=()=>(0,Q.jsx)(_9,{moduleType:`hot_opening_replicate`}),v9=20,jUe=[{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:`失败`}],MUe=[{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],NUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],PUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`}},y9=e=>e?B5(e):`-`,b9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,x9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=PUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},FUe=()=>{let e=Ze(),[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 lVe({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:v9});n(e.items||[]),i(e.total||0)}catch(e){CP.error(e?.message||`加载拆镜复刻任务失败`)}finally{o(!1)}},[d,s,A,w,E,O,p,l]);(0,C.useEffect)(()=>{P()},[P,M]);let F=()=>{T(h.trim()),D(_.trim()),k(y.trim()),j(x),c(1)};return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`拆镜复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看拆镜总任务、AI 分析结果、切片列表和关联复刻项目。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>N(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`总任务状态`,style:{width:150},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:jUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:d||void 0,onChange:e=>{f(e||``),c(1)},options:MUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`拆镜状态`,style:{width:140},value:p||void 0,onChange:e=>{m(e||``),c(1)},options:NUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/内容/分类/受众`,style:{width:260},value:h,onChange:e=>g(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:_,onChange:e=>v(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:y,onChange:e=>b(e.target.value),onPressEnter:F}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:x,onChange:S,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:F,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(``),b(``),S(null),T(``),D(``),k(``),j(null),c(1),N(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:v9,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1500},columns:[{title:`任务集ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:b9(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:b9(t.userId)})]})},{title:`任务信息`,width:300,render:(e,t)=>(0,Q.jsxs)(IM,{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)(x9,{status:e})},{title:`分析状态`,dataIndex:`analysisStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`拆镜状态`,dataIndex:`splitStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`切片进度`,width:180,render:(e,t)=>{let n=t.segmentCount||0,r=t.completedSegmentCount||0;return(0,Q.jsx)(zP,{size:`small`,percent:n?Math.round(r/n*100):0,format:()=>`${r}/${n}`})}},{title:`失败片段`,dataIndex:`failedSegmentCount`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`error`,children:e}):(0,Q.jsx)(jR,{children:`0`})},{title:`视频时长`,dataIndex:`videoDurationSeconds`,width:100,render:e=>`${Number(e||0).toFixed(1)}s`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:y9},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:y9},{title:`操作`,fixed:`right`,width:120,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/shot-replications/task-sets/${n.id}`),children:`查看切片`})}]})]})})})},IUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),S9=20,LUe=[{value:`ai_suggestion`,label:`AI 建议`},{value:`custom`,label:`自定义`}],RUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],zUe=[{value:`not_required`,label:`无需分析`},{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],BUe=[{value:`not_started`,label:`未复刻`},{value:`project_created`,label:`已创建项目`},{value:`processing`,label:`复刻中`},{value:`completed`,label:`复刻完成`},{value:`failed`,label:`复刻失败`}],VUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`},not_required:{color:`default`,text:`无需分析`},not_started:{color:`default`,text:`未复刻`},project_created:{color:`processing`,text:`已创建项目`}},HUe=e=>{if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${IUe}${t.startsWith(`/`)?t:`/${t}`}`:``},C9=e=>e?B5(e):`-`,w9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,T9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=VUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},E9=({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:HUe(e),controls:!0,preload:`metadata`,style:{width:`100%`,maxHeight:t,borderRadius:12,background:`#0f172a`}}):(0,Q.jsx)(Yy,{description:`暂无视频`,image:Yy.PRESENTED_IMAGE_SIMPLE}),UUe=({items:e=[]})=>(0,Q.jsx)(vR,{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}]}),WUe=()=>{let{taskSetId:e}=tt(),t=Ze(),[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 uVe(e))}catch(e){CP.error(e?.message||`加载拆镜任务详情失败`)}finally{d(!1)}}},[e]),A=(0,C.useCallback)(async()=>{if(e){p(!0);try{let t=await dVe(e,{sourceMode:g||void 0,splitStatus:v||void 0,analysisStatus:b||void 0,replicateStatus:S||void 0,page:c,pageSize:S9});a(t.items||[]),s(t.total||0)}catch(e){CP.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=async e=>{E(!0),O(null);try{O(await fVe(e))}catch(e){CP.error(e?.message||`加载片段详情失败`)}};return u&&!n?(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})}):n?(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>t(`/shot-replications`),children:`返回列表`}),(0,Q.jsx)(Z.Title,{level:3,style:{margin:0},children:`拆镜任务详情`}),(0,Q.jsx)(T9,{status:n.status})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>h(e=>e+1),children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`总任务信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`任务集ID`,children:n.id}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:n.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:n.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:n.title||`-`}),(0,Q.jsxs)(bM.Item,{label:`视频时长`,children:[Number(n.videoDurationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`总状态`,children:(0,Q.jsx)(T9,{status:n.status})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:n.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`拆镜状态`,children:(0,Q.jsx)(T9,{status:n.splitStatus})}),(0,Q.jsxs)(bM.Item,{label:`片段数量`,children:[n.completedSegmentCount,`/`,n.segmentCount,`,失败 `,n.failedSegmentCount]}),(0,Q.jsx)(bM.Item,{label:`原视频分类`,children:n.originalVideoCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:C9(n.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:C9(n.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`原视频内容`,span:3,children:n.originalVideoContent||`-`}),(0,Q.jsx)(bM.Item,{label:`原视频受众`,span:3,children:n.originalVideoAudience||`-`}),n.analysisErrorMessage?(0,Q.jsx)(bM.Item,{label:`分析错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.analysisErrorMessage})}):null,n.splitErrorMessage?(0,Q.jsx)(bM.Item,{label:`拆镜错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.splitErrorMessage})}):null]})}),(0,Q.jsx)(VA,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`原视频预览`]}),children:(0,Q.jsx)(D9,{url:n.videoUrl,height:360})}),(0,Q.jsxs)(VA,{title:`AI 建议拆镜列表`,children:[n.aiSuggestions?.length?(0,Q.jsx)(UUe,{items:n.aiSuggestions}):(0,Q.jsx)(Yy,{description:`暂无 AI 建议拆镜`}),(0,Q.jsx)(Wh,{size:`small`,ghost:!0,style:{marginTop:12},items:[{key:`raw`,label:`查看原视频分析完整 JSON`,children:(0,Q.jsx)(E9,{value:n.analysisResultJson})}]})]}),(0,Q.jsxs)(VA,{title:`片段列表`,children:[(0,Q.jsxs)(IM,{wrap:!0,style:{marginBottom:16},children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`片段来源`,style:{width:140},value:g||void 0,options:LUe,onChange:e=>{_(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`切割状态`,style:{width:140},value:v||void 0,options:RUe,onChange:e=>{y(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:b||void 0,options:zUe,onChange:e=>{x(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`复刻状态`,style:{width:150},value:S||void 0,options:BUe,onChange:e=>{w(e||``),l(1)}}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(bb,{}),onClick:()=>h(e=>e+1),children:`筛选`}),(0,Q.jsx)($S,{onClick:()=>{_(``),y(``),x(``),w(``),l(1),h(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:f,dataSource:i,pagination:{current:c,pageSize:S9,total:o,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:l},scroll:{x:1550},columns:[{title:`片段ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:w9(e)})},{title:`序号`,dataIndex:`segmentIndex`,width:70},{title:`来源`,dataIndex:`sourceMode`,width:100,render:e=>e===`ai_suggestion`?(0,Q.jsx)(jR,{color:`purple`,children:`AI建议`}):(0,Q.jsx)(jR,{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)(T9,{status:e})},{title:`分析`,dataIndex:`analysisStatus`,width:100,render:e=>(0,Q.jsx)(T9,{status:e})},{title:`复刻`,dataIndex:`replicateStatus`,width:110,render:e=>(0,Q.jsx)(T9,{status:e})},{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)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)($S,{type:`link`,style:{padding:0},onClick:()=>t(`/shot-replications/projects/${n.moduleProjectId}`),children:w9(n.moduleProjectId)}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:n.moduleProjectTitle||e9(n.moduleProjectCurrentStepCode)}),(0,Q.jsx)(T9,{status:n.moduleProjectStatus})]}):(0,Q.jsx)(jR,{children:`未创建`})},{title:`错误`,dataIndex:`splitLastError`,width:220,ellipsis:!0,render:(e,t)=>e||t.analysisErrorMessage||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:C9},{title:`操作`,fixed:`right`,width:100,render:(e,t)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>j(t.id),children:`详情`})}]})]})]}),(0,Q.jsx)(kde,{title:`片段详情`,width:720,open:T,onClose:()=>E(!1),destroyOnClose:!0,children:D?(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`片段ID`,span:2,children:D.id}),(0,Q.jsx)(bM.Item,{label:`时间节点`,children:D.timeNode}),(0,Q.jsxs)(bM.Item,{label:`时长`,children:[Number(D.durationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`切割状态`,children:(0,Q.jsx)(T9,{status:D.splitStatus})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:D.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`复刻状态`,children:(0,Q.jsx)(T9,{status:D.replicateStatus})}),(0,Q.jsx)(bM.Item,{label:`关联项目`,children:D.moduleProjectId?(0,Q.jsx)($S,{type:`link`,onClick:()=>t(`/shot-replications/projects/${D.moduleProjectId}`),children:D.moduleProjectId}):`-`}),(0,Q.jsx)(bM.Item,{label:`片段内容`,span:2,children:D.segmentContent||`-`}),(0,Q.jsx)(bM.Item,{label:`片段分类`,children:D.segmentCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`片段受众`,children:D.segmentAudience||`-`})]}),(0,Q.jsx)(VA,{size:`small`,title:`片段视频`,children:(0,Q.jsx)(D9,{url:D.segmentVideoUrl,height:300})}),D.splitLastError?(0,Q.jsx)(cf,{type:`error`,message:`切割错误`,description:D.splitLastError}):null,D.analysisErrorMessage?(0,Q.jsx)(cf,{type:`error`,message:`分析错误`,description:D.analysisErrorMessage}):null,(0,Q.jsx)(Wh,{size:`small`,items:[{key:`analysis`,label:`片段分析 JSON`,children:(0,Q.jsx)(E9,{value:D.analysisJson})},{key:`suggestion`,label:`AI 建议原始 JSON`,children:(0,Q.jsx)(E9,{value:D.aiSuggestionJson})}]})]}):(0,Q.jsx)(hP,{})})]}):(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到拆镜任务详情`})})},{Title:GUe,Text:O9,Paragraph:KUe}=Z,{TextArea:k9}=GN,A9=[{label:`对象`,value:`object`},{label:`数组`,value:`array`},{label:`字符串`,value:`string`},{label:`数字`,value:`number`},{label:`布尔`,value:`boolean`},{label:`流程数组`,value:`flow`}],j9=`画面属性`,qUe=new Set([`视频时长`,`视频比例`,`清晰度`,`帧率`,`推荐分辨率`]);function M9(e,t){return e===j9&&!!t&&qUe.has(t)}function N9(e){return e===j9}function JUe(e){return JSON.parse(JSON.stringify(e??null))}function P9(e,t,n,r){return!e||typeof e!=`object`?r:e[t]===void 0?e[n]===void 0?r:e[n]:e[t]}function YUe(e){return{key:String(e?.key||e?.label||`新流程字段`),label:String(e?.label||e?.key||`新流程字段`),enabled:e?.enabled??!0,editable:e?.editable??!0,maxLength:Number(P9(e,`maxLength`,`max_length`,800)||800),value:e?.value??``}}function F9(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(P9(e,`maxLength`,`max_length`,t===`flow`?800:1e3)||(t===`flow`?800:1e3))};if(t===`object`)n.children=Array.isArray(e?.children)?e.children.map(F9):[];else if(t===`flow`){n.contentKey=String(P9(e,`contentKey`,`content_key`,e?.key===`镜头流程`?`镜头内容`:`动作内容`));let t=P9(e,`contentAliases`,`content_aliases`,[]);n.contentAliases=Array.isArray(t)?t.map(e=>String(e)).filter(Boolean):[];let r=P9(e,`itemFields`,`item_fields`,[]);n.itemFields=Array.isArray(r)&&r.length>0?r.map(YUe):[{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 XUe(e){let t=Array.isArray(e?.segments)?e.segments:[],n=Array.isArray(e?.ratios)?e.ratios:[];return{minDuration:Number(P9(e,`minDuration`,`min_duration`,1)||1),maxDuration:Number(P9(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 I9(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(F9),timePlanRules:n.map(XUe)}}function L9(e,t){let n=N9(e.key),r=M9(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=>L9(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 R9(e,t){return{version:e.version,enabled:t,sections:(e.sections||[]).map(e=>L9(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 z9(e){return e?.runtimeSchema||e?.runtime_schema||{}}function B9(e){let t=e?.timePlan||e?.time_plan||z9(e)?.动态时间规划||[];return Array.isArray(t)?t:[]}function ZUe(e){return e?.schemaConfigSnapshot||e?.schema_config_snapshot||{}}function QUe(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 V9=(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}),$Ue=()=>({minDuration:1,maxDuration:5,ratios:[.2,.4,.4],segments:[{stage:`开场吸引`,description:`快速吸引注意力`},{stage:`核心展示`,description:`展示主体动作、核心卖点或主要视觉内容`},{stage:`收尾引导`,description:`给出行动引导并稳定落版`}]}),eWe=()=>{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]=X.useForm(),_=(0,C.useRef)(null),v=c?.sections||[],y=c?.timePlanRules||[],b=async()=>{t(!0);try{let e=await mVe();a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),l(I9(e.data)),d(I9(e.defaultData??e.default_data))}catch(e){CP.error(e?.message||`加载失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{b()},[]);let x=e=>{l(t=>{let n=I9(JUe(t));return e(n),n})},S=async()=>{if(c){r(!0);try{let e=await hVe({is_enabled:i,data:R9(c,i)});l(I9(e.data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`保存成功`)}catch(e){CP.error(e?.message||`保存失败`)}finally{r(!1)}}},w=async()=>{r(!0);try{let e=await gVe();l(I9(e.data)),d(I9(e.defaultData??e.default_data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`已恢复默认配置`)}catch(e){CP.error(e?.message||`恢复默认失败`)}finally{r(!1)}},T=async()=>{try{QUe(`video_prompt_schema_config.json`,await _Ve())}catch(e){CP.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 vVe({is_enabled:!!(n.isEnabled??n.is_enabled??i),data:r});l(I9(o.data)),a(!!(o.isEnabled??o.is_enabled??o.data?.enabled??!1)),s(!!(o.usingDefault??o.using_default??!1)),CP.success(`导入成功`)}catch(e){CP.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 yVe({is_enabled:i,data:R9(c,i),duration:Number(e.duration||8),aspect_ratio:e.aspectRatio,resolution:e.resolution,frame_rate:e.frameRate}))}catch(e){CP.error(e?.message||`预览失败`)}},k=()=>{x(e=>{e.sections.push(V9(`object`))})},A=(e,t)=>{x(n=>{let r=n.sections[e];N9(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(V9(`string`))})},N=(e,t,n)=>{x(r=>{let i=r.sections[e],a=i.children||[],o=a[t];M9(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($Ue())})},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)(IM,{children:[(0,Q.jsx)(O9,{strong:!0,children:e.label||e.key||`未命名分组`}),e.key&&e.key!==e.label&&(0,Q.jsxs)(jR,{color:`blue`,children:[`key: `,e.key]}),(0,Q.jsx)(jR,{children:e.type}),N9(e.key)&&(0,Q.jsx)(jR,{color:`red`,children:`系统锁定`}),!e.enabled&&!N9(e.key)&&(0,Q.jsx)(jR,{color:`default`,children:`已禁用`})]}),children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsxs)(WP,{gutter:12,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:N9(e.key),onChange:e=>A(t,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>A(t,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Tb,{value:e.type,options:A9,style:{width:`100%`},disabled:N9(e.key),onChange:e=>A(t,{type:e})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:N9(e.key)?!0:e.enabled,disabled:N9(e.key),onChange:e=>A(t,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`可编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>A(t,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>A(t,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:2,style:{textAlign:`right`},children:(0,Q.jsx)(OP,{title:`确认删除该分组?`,disabled:N9(e.key),onConfirm:()=>j(t),children:(0,Q.jsx)($S,{danger:!0,icon:(0,Q.jsx)(PR,{}),disabled:N9(e.key)})})})]}),e.type===`object`&&(0,Q.jsx)(VA,{size:`small`,title:`对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>M(t),children:`新增字段`}),children:(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.children||[]).map((n,r)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:n.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:n.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>N(t,r,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Tb,{value:n.type,options:A9.filter(e=>e.value!==`object`&&e.value!==`flow`),style:{width:`100%`},disabled:M9(e.key,n.key),onChange:e=>N(t,r,{type:e})})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!0:n.enabled,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!1:n.editable,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{editable:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:n.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>N(t,r,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{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)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),disabled:M9(e.key,n.key),onClick:()=>P(t,r)})})]},`child-${t}-${r}`))})}),e.type===`flow`&&(0,Q.jsxs)(VA,{size:`small`,title:`流程数组对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>F(t),children:`新增流程字段`}),children:[(0,Q.jsxs)(WP,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(GN,{addonBefore:`内容字段`,value:e.contentKey,maxLength:64,onChange:e=>A(t,{contentKey:e.target.value})})}),(0,Q.jsx)(uj,{span:18,children:(0,Q.jsx)(GN,{addonBefore:`别名 / 分隔`,value:(e.contentAliases||[]).join(`/`),onChange:e=>A(t,{contentAliases:e.target.value.split(`/`).map(e=>e.trim()).filter(Boolean)})})})]}),(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.itemFields||[]).map((e,n)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`流程对象字段名`,onChange:e=>I(t,n,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>I(t,n,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:e.enabled,onChange:e=>I(t,n,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>I(t,n,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>I(t,n,{maxLength:Number(e||800)})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(GN,{value:String(e.value??``),maxLength:e.maxLength||800,placeholder:`默认值`,onChange:e=>I(t,n,{value:e.target.value})})}),(0,Q.jsx)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>L(t,n)})})]},`flow-${t}-${n}`))})]}),e.type!==`object`&&e.type!==`flow`&&(0,Q.jsx)(VA,{size:`small`,title:`默认值`,children:(0,Q.jsx)(k9,{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)(hP,{}):(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`large`,children:[(0,Q.jsxs)(WP,{justify:`space-between`,align:`middle`,children:[(0,Q.jsxs)(uj,{children:[(0,Q.jsx)(GUe,{level:3,style:{margin:0},children:`视频提词 Schema 配置`}),(0,Q.jsx)(KUe,{type:`secondary`,style:{marginBottom:0},children:`配置会被爆款开头复刻和拆镜复刻第 4 步视频 AI 提词共同复用。传给 AI 时只保留纯键值 schema,不携带显示名、启用、可编辑等管理字段。`})]}),(0,Q.jsx)(uj,{children:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(O9,{children:`启用自定义配置`}),(0,Q.jsx)(lF,{checked:i,onChange:a}),o&&(0,Q.jsx)(jR,{color:`orange`,children:`当前使用默认配置兜底`}),u&&(0,Q.jsxs)(jR,{children:[`默认分组 `,u.sections.length]})]})})]}),(0,Q.jsx)(cf,{type:`info`,showIcon:!0,message:`长度限制策略`,description:`只对管理后台字段和用户可编辑字段做长度校验,不会自动裁剪 AI 生成结果或第 5 步最终视频 prompt。若供应商因为 prompt 过长拒绝,会按真实失败进入现有日志/退款/重试流程。`}),(0,Q.jsx)(cf,{type:`warning`,showIcon:!0,message:`预览说明`,description:`预览会跟随右上角「启用自定义配置」开关。关闭时会按默认 CLIENT_SCHEMA_V1 兜底预览;打开后才会按当前页面编辑的 sections 和秒数切片规则预览。`}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(a4,{}),loading:n,onClick:S,children:`保存配置`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(IN,{}),onClick:D,children:`预览运行时 Schema`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(yB,{}),onClick:T,children:`导出 JSON`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(Y6,{}),onClick:()=>_.current?.click(),children:`导入 JSON`}),(0,Q.jsx)(OP,{title:`确认恢复默认配置?`,description:`会用 CLIENT_SCHEMA_V1 生成的默认配置覆盖当前配置。`,onConfirm:w,children:(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),children:`恢复默认`})}),(0,Q.jsx)(`input`,{ref:_,type:`file`,accept:`application/json,.json`,style:{display:`none`},onChange:E})]}),(0,Q.jsx)(zA,{items:[{key:`fields`,label:`Schema 字段配置`,children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsx)(cf,{type:`warning`,showIcon:!0,message:`字段说明`,description:`key 是最终传给 AI 和保存到 prompt_schema 的真实字段名,例如「素材理解」「动作流程」;label 只用于管理后台显示,帮助运营/管理员理解这个字段,不会传给 AI;启用关闭后该字段不会进入运行时 schema;可编辑关闭后用户在第 4 步修改时不能改这个字段。「画面属性」里的视频时长、视频比例、清晰度、帧率、推荐分辨率属于系统锁定参数,不能改 key、不能禁用、不能开放用户编辑。`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(gA,{}),onClick:k,children:`新增一级分组`}),(0,Q.jsx)(Wh,{items:W})]})},{key:`time`,label:`秒数切片规则`,children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsx)(cf,{type:`info`,showIcon:!0,message:`切片规则说明`,description:`这里决定指定视频时长会被拆成几段,以及每段的阶段名称和说明。运行时会同步生成「动态时间规划」「动作流程」「镜头流程」三个数组,三者时间段保持一致。`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(gA,{}),onClick:R,children:`新增秒数规则`}),y.map((e,t)=>(0,Q.jsxs)(VA,{size:`small`,title:`${e.minDuration}-${e.maxDuration} 秒:${e.segments.length} 段`,extra:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>B(t),children:`删除规则`}),children:[(0,Q.jsxs)(WP,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,value:e.minDuration,addonBefore:`最小秒`,style:{width:`100%`},onChange:e=>z(t,{minDuration:Number(e||1)})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,value:e.maxDuration,addonBefore:`最大秒`,style:{width:`100%`},onChange:e=>z(t,{maxDuration:Number(e||1)})})}),(0,Q.jsx)(uj,{span:16,children:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>H(t),children:`新增片段`})})]}),(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:e.segments.map((n,r)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Pj,{min:.01,step:.01,value:e.ratios[r],addonBefore:`比例`,style:{width:`100%`},onChange:e=>V(t,r,{ratio:Number(e||.01)})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{value:n.stage,maxLength:64,placeholder:`阶段`,onChange:e=>V(t,r,{stage:e.target.value})})}),(0,Q.jsx)(uj,{span:15,children:(0,Q.jsx)(GN,{value:n.description,maxLength:300,placeholder:`说明`,onChange:e=>V(t,r,{description:e.target.value})})}),(0,Q.jsx)(uj,{span:1,children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>U(t,r)})})]},r))})]},t))]})},{key:`json`,label:`JSON 高级查看`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(R9(c,i),null,2),readOnly:!0})}]})]})}),(0,Q.jsxs)(TP,{title:`预览运行时 Schema`,open:f,onCancel:()=>p(!1),width:980,footer:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{onClick:()=>p(!1),children:`关闭`}),(0,Q.jsx)($S,{type:`primary`,onClick:O,children:`生成预览`})]}),children:[(0,Q.jsxs)(X,{form:g,layout:`inline`,style:{marginBottom:16},children:[(0,Q.jsx)(X.Item,{name:`duration`,label:`时长`,rules:[{required:!0}],children:(0,Q.jsx)(Pj,{min:1,max:3600})}),(0,Q.jsx)(X.Item,{name:`aspectRatio`,label:`比例`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`resolution`,label:`清晰度`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`frameRate`,label:`帧率`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{})})]}),(0,Q.jsx)(oue,{}),m?(0,Q.jsx)(zA,{items:[{key:`runtime`,label:`运行时 Schema`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(z9(m),null,2),readOnly:!0})},{key:`timePlan`,label:`动态时间规划(${B9(m).length} 段)`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(B9(m),null,2),readOnly:!0})},{key:`snapshot`,label:`配置快照`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(ZUe(m),null,2),readOnly:!0})}]}):(0,Q.jsx)(cf,{type:`info`,showIcon:!0,message:`点击生成预览后,可以看到传给 AI 的纯 schema、动态时间规划和本次配置快照。`})]})]})},tWe=()=>{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}=I5(),_=async()=>{if(g?.isAdmin){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 d5.get(`/contact/requests?${e.toString()}`);t(n.items),r(n.total)}catch(e){CP.error(e?.message||`获取失败`)}finally{a(!1)}}};(0,C.useEffect)(()=>{_()},[o,c,u]);let v=async e=>{try{await d5.put(`/contact/requests/${e}/handle`),CP.success(`已标记为处理`),_()}catch(e){CP.error(e?.message||`操作失败`)}},y=async e=>{try{await d5.delete(`/contact/requests/${e}`),CP.success(`已删除`),_()}catch(e){CP.error(e?.message||`删除失败`)}},b=e=>{p(e),h(!0)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(g1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`联系请求管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[`共 `,n,` 条记录`]})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,Q.jsx)($S,{type:u===null?`primary`:`default`,onClick:()=>d(null),icon:(0,Q.jsx)(tZ,{}),size:`small`,children:`全部`}),(0,Q.jsx)($S,{type:u===!1?`primary`:`default`,onClick:()=>d(!1),size:`small`,children:`待处理`}),(0,Q.jsx)($S,{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)(Yy,{description:`暂无联系请求`,style:{padding:`40px 0`}}):(0,Q.jsx)(vR,{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)(jR,{color:e?`green`:`orange`,children:e?`已处理`:`待处理`})},{title:`提交时间`,dataIndex:`createdAt`,key:`createdAt`,width:160,render:e=>B5(e)},{title:`操作`,key:`actions`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>b(t),children:`查看`}),!t.isHandled&&(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(mb,{}),onClick:()=>v(t.id),children:`标记处理`}),(0,Q.jsx)(OP,{title:`确定删除该记录?`,onConfirm:()=>y(t.id),children:(0,Q.jsx)($S,{type:`link`,danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),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)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(IN,{}),`联系请求详情`]}),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)(jR,{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:B5(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)($S,{type:`primary`,onClick:()=>{v(f.id),h(!1)},icon:(0,Q.jsx)(mb,{}),children:`标记为已处理`}),(0,Q.jsx)($S,{onClick:()=>h(!1),children:`关闭`})]})]})})]})},H9=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/$/,``).replace(/\/api\/?$/i,``).replace(/\/$/,``),nWe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),U9=e=>{if(!e)return``;let t=String(e).trim();return t?nWe(t)?t:H9?`${H9}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},rWe=360,W9=280;function G9(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,e)):t}function iWe(e,t){let n=Math.max(0,e);if(!n)return{width:0,height:W9};if(!t?.width||!t?.height)return{width:n,height:W9};let r=Math.min(n/t.width,rWe/t.height);return{width:Math.max(1,Math.round(t.width*r)),height:Math.max(1,Math.round(t.height*r))}}function aWe(e,t){if(e.sizeMode===`px`&&e.widthPx)return G9(e.widthPx,1,Math.max(1,t));let n=G9(e.widthRatio??.18,.01,1);return Math.max(1,t*n)}function oWe(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 sWe(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 cWe=({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)(()=>U9(e),[e]),E=(0,C.useMemo)(()=>U9(n),[n]),D=(0,C.useMemo)(()=>iWe(u,f),[u,f]),O=(0,C.useMemo)(()=>aWe(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=sWe(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 PVe({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=G9(e.clientX-t.left-c.current.x,0,a),u=G9(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 oWe(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=G9(r.customXRatio??.5,0,1),o=G9(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(W9,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||W9,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)(hP,{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:`上传素材后可预览水印效果`})})},lWe=[{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`}],K9={text:`民众普康 AI`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0},q9=({value:e,onChange:t,watermarks:n,mediaUrl:r,mediaType:i})=>{let a=n=>t({...e,...n}),o=t=>{a({textWatermark:{...K9,...e.textWatermark||{},...t}})},s=n.find(t=>t.id===e.watermarkId)?.fileUrl,c={...K9,...e.textWatermark||{}};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(X,{layout:`vertical`,children:[(0,Q.jsx)(X.Item,{label:`水印类型`,required:!0,children:(0,Q.jsxs)(Wk.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)(Wk.Button,{value:`image`,children:`图片水印`}),(0,Q.jsx)(Wk.Button,{value:`repeated_text`,children:`重复文字水印`})]})}),e.watermarkType===`repeated_text`?(0,Q.jsxs)(WP,{gutter:16,children:[(0,Q.jsx)(uj,{span:24,children:(0,Q.jsx)(X.Item,{label:`水印文字`,required:!0,extra:`字体由后端固定开源可商用字体渲染,前端预览层和最终生成使用同一后端渲染逻辑。`,children:(0,Q.jsx)(GN,{maxLength:64,showCount:!0,value:c.text,onChange:e=>o({text:e.target.value}),placeholder:`请输入重复水印文字`})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`文字透明度:${c.opacityLevel}/10`,required:!0,children:(0,Q.jsx)(nM,{min:1,max:10,step:1,value:c.opacityLevel,onChange:e=>o({opacityLevel:e})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`字号(px)`,required:!0,children:(0,Q.jsx)(Pj,{min:8,max:160,style:{width:`100%`},value:c.fontSizePx,onChange:e=>o({fontSizePx:Number(e||28)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`文字颜色`,required:!0,children:(0,Q.jsx)(GN,{value:c.color,onChange:e=>o({color:e.target.value||`#ffffff`}),placeholder:`#ffffff`})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`旋转角度`,required:!0,children:(0,Q.jsx)(Pj,{min:-90,max:90,style:{width:`100%`},value:c.rotateDeg,onChange:e=>o({rotateDeg:Number(e??-30)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`横向间距`,required:!0,children:(0,Q.jsx)(Pj,{min:20,max:2e3,style:{width:`100%`},value:c.gapX,onChange:e=>o({gapX:Number(e||220)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`纵向间距`,required:!0,children:(0,Q.jsx)(Pj,{min:20,max:2e3,style:{width:`100%`},value:c.gapY,onChange:e=>o({gapY:Number(e||140)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`交错排列`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{checked:c.staggered,onChange:e=>o({staggered:e})})})})]}):(0,Q.jsxs)(WP,{gutter:16,children:[(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印图片`,required:!0,children:(0,Q.jsx)(Tb,{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)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`透明度:${e.opacityLevel}/10`,required:!0,children:(0,Q.jsx)(nM,{min:1,max:10,step:1,value:e.opacityLevel,onChange:e=>a({opacityLevel:e})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印位置`,required:!0,children:(0,Q.jsx)(Tb,{value:e.position,onChange:e=>a({position:e}),options:lWe})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`大小模式`,required:!0,children:(0,Q.jsx)(Tb,{value:e.sizeMode,onChange:e=>a({sizeMode:e}),options:[{label:`按素材宽度比例`,value:`ratio`},{label:`固定像素宽度`,value:`px`}]})})}),e.sizeMode===`ratio`?(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印宽度比例`,required:!0,children:(0,Q.jsx)(Pj,{min:.01,max:1,step:.01,style:{width:`100%`},value:e.widthRatio??.18,onChange:e=>a({widthRatio:Number(e||.18)})})})}):(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印宽度(px)`,required:!0,children:(0,Q.jsx)(Pj,{min:1,max:1e4,style:{width:`100%`},value:e.widthPx??200,onChange:e=>a({widthPx:Number(e||200)})})})}),(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(X.Item,{label:`横向边距`,children:(0,Q.jsx)(Pj,{min:0,max:2e3,style:{width:`100%`},value:e.marginX,onChange:e=>a({marginX:Number(e||0)})})})}),(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(X.Item,{label:`纵向边距`,children:(0,Q.jsx)(Pj,{min:0,max:2e3,style:{width:`100%`},value:e.marginY,onChange:e=>a({marginY:Number(e||0)})})})})]})]}),(0,Q.jsx)(cWe,{mediaUrl:r,mediaType:i,watermarkUrl:s,config:e,onChange:e=>a(e)})]})},J9={draft:{text:`草稿`,color:`default`},processing:{text:`处理中`,color:`processing`},success:{text:`成功`,color:`success`},failed:{text:`失败`,color:`error`}},Y9={text:`民众普康 AI`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0},uWe={watermarkType:`image`,watermarkId:null,opacityLevel:6,position:`bottom_right`,customXRatio:null,customYRatio:null,sizeMode:`ratio`,widthRatio:.18,widthPx:null,marginX:24,marginY:24,textWatermark:Y9};function dWe(e){return{text:e?.text||Y9.text,opacityLevel:e?.opacityLevel??e?.opacity_level??Y9.opacityLevel,fontSizePx:e?.fontSizePx??e?.font_size_px??Y9.fontSizePx,color:e?.color||Y9.color,rotateDeg:e?.rotateDeg??e?.rotate_deg??Y9.rotateDeg,gapX:e?.gapX??e?.gap_x??Y9.gapX,gapY:e?.gapY??e?.gap_y??Y9.gapY,staggered:e?.staggered??Y9.staggered}}function X9(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:dWe(n.textWatermark||n.text_watermark)}}function Z9(e){return e.watermarkType===`repeated_text`?!!e.textWatermark?.text?.trim():!!e.watermarkId}var fWe=({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)(uWe),[_,v]=(0,C.useState)(!1),y=async()=>{c(!0);try{let e=await AVe(l);i(e.items),o(e.total)}finally{c(!1)}};(0,C.useEffect)(()=>{y()},[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=>jVe(e.id).catch(()=>null)))).some(e=>e&&e.status!==`processing`)&&y()},2500);return()=>window.clearInterval(t)},[r]);let b=e=>{m(e),g(X9(e.watermarkConfig,e.watermarkId))},x=e=>e.mediaType===`image`?U9(e.watermarkedUrl||e.originalUrl):U9(e.coverUrl||``),S=e=>U9(e.watermarkedUrl||e.originalUrl),w=e=>{TP.confirm({title:`确认删除该素材?`,content:e.title||e.id,okText:`删除`,okButtonProps:{danger:!0},cancelText:`取消`,async onOk(){await IVe(e.id),CP.success(`删除成功`),await y()}})};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(IM,{style:{marginBottom:16},wrap:!0,children:[(0,Q.jsx)(Tb,{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)(Tb,{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)(Tb,{allowClear:!0,style:{width:140},placeholder:`处理状态`,value:l.status,onChange:e=>u(t=>({...t,status:e,page:1})),options:Object.entries(J9).map(([e,t])=>({value:e,label:t.text}))}),(0,Q.jsx)($S,{onClick:y,children:`刷新`})]}),(0,Q.jsx)(vR,{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:1180},columns:[{title:`预览`,width:110,render:(e,t)=>{let n=x(t);if(t.mediaType===`image`)return n?(0,Q.jsx)(jN,{width:86,height:64,style:{objectFit:`cover`,borderRadius:6},src:n}):`-`;let r=S(t),i=U9(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)(jR,{color:J9[e]?.color,children:J9[e]?.text||e})},{title:`水印`,render:(e,t)=>X9(t.watermarkConfig,t.watermarkId).watermarkType===`repeated_text`?`重复文字水印`:t.watermarkName||`图片水印`},{title:`排序`,dataIndex:`sortOrder`},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0},{title:`操作`,width:150,align:`center`,render:(e,t)=>(0,Q.jsxs)(IM,{size:8,children:[(0,Q.jsx)($S,{size:`small`,onClick:()=>f(t),children:`查看`}),(0,Q.jsx)(RM,{trigger:[`click`],menu:{items:[{key:`regenerate`,icon:(0,Q.jsx)(VP,{}),label:`重新生成水印`},{key:`delete`,icon:(0,Q.jsx)(PR,{}),label:`删除素材`,danger:!0}],onClick:({key:e})=>{e===`regenerate`&&b(t),e===`delete`&&w(t)}},children:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(I1,{}),children:`更多`})})]})}]}),(0,Q.jsx)(TP,{title:`素材详情`,open:!!d,onCancel:()=>f(null),footer:null,width:900,destroyOnHidden:!0,children:d&&(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`large`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:`原素材:`}),d.originalUrl?U9(d.originalUrl):`-`]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:`水印素材:`}),d.watermarkedUrl?U9(d.watermarkedUrl):`-`]}),d.mediaType===`image`?(0,Q.jsx)(jN,{src:U9(d.watermarkedUrl||d.originalUrl)}):(0,Q.jsx)(`video`,{src:S(d),poster:U9(d.coverUrl||``)||void 0,controls:!0,style:{width:`100%`,background:`#000`}})]})}),(0,Q.jsx)(TP,{title:`重新生成水印`,open:!!p,onCancel:()=>!_&&m(null),onOk:async()=>{if(!(!p||_)){if(!Z9(h)){CP.warning(h.watermarkType===`repeated_text`?`请输入重复文字水印内容`:`请选择水印图片`);return}v(!0);try{await FVe(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}),CP.success(`已提交重新生成`),m(null),await y()}finally{v(!1)}}},confirmLoading:_,okButtonProps:{disabled:_||!Z9(h)},cancelButtonProps:{disabled:_},width:980,destroyOnHidden:!0,children:p&&(0,Q.jsx)(q9,{value:h,onChange:g,watermarks:t,mediaUrl:U9(p.originalUrl||p.watermarkedUrl),mediaType:p.mediaType})})]})},pWe=Gze,mWe=[{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 Q9(e,t){if(!e)return(0,Q.jsx)(`span`,{style:{color:`#999`},children:`未设置`});let n=pWe[e];return(0,Q.jsxs)(IM,{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 hWe=({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]=X.useForm(),m=async()=>{o(!0);try{let e=await P5({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)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>h(),children:`新增行业`})]}),(0,Q.jsx)(vR,{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=>Q9(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)(IM,{children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>h(n),children:`编辑`}),(0,Q.jsx)(OP,{title:`确认删除该行业?`,onConfirm:async()=>{await EVe(n.id),CP.success(`删除成功`),await m(),e?.()},children:(0,Q.jsx)($S,{size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}]}),(0,Q.jsx)(TP,{title:d?`编辑行业`:`新增行业`,open:l,onOk:async()=>{await TVe({...await p.validateFields(),id:d?.id}),CP.success(`保存成功`),u(!1),await m(),e?.()},onCancel:()=>u(!1),destroyOnHidden:!0,children:(0,Q.jsxs)(X,{form:p,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`name`,label:`行业名称`,rules:[{required:!0,message:`请输入行业名称`}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`key`,label:`行业Key`,rules:[{required:!0,message:`请输入行业Key`},{pattern:/^[A-Za-z0-9_-]+$/,message:`只允许字母、数字、下划线、中划线`}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`description`,label:`描述`,children:(0,Q.jsx)(GN.TextArea,{rows:3})}),(0,Q.jsx)(X.Item,{name:`icon`,label:`图标`,children:(0,Q.jsx)(Tb,{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:mWe.map(e=>({value:e.value,searchText:`${e.label} ${e.value}`,label:Q9(e.value,e.label)}))})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,children:(0,Q.jsx)(Pj,{min:0,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})})]})})]})},$9={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:`民众普康 AI`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0}};function gWe(e){return e.watermarkType===`repeated_text`?!!e.textWatermark?.text?.trim():!!e.watermarkId}var _We=({open:e,onClose:t,categories:n,watermarks:r,onSuccess:i})=>{let[a]=X.useForm(),[o,s]=(0,C.useState)(null),[c,l]=(0,C.useState)([]),[u,d]=(0,C.useState)(`image`),[f,p]=(0,C.useState)($9),[m,h]=(0,C.useState)(!1),[g,_]=(0,C.useState)(``),v=()=>{s(null),l([]),d(`image`),_(``),h(!1)};(0,C.useEffect)(()=>{if(e){v();let e=r.find(e=>e.isDefault)||r[0];p({...$9,watermarkId:e?.id||null}),a.setFieldsValue({media_type:`image`,is_active:!0,sort_order:0,title:void 0})}},[e,r,a]),(0,C.useEffect)(()=>()=>{g.startsWith(`blob:`)&&URL.revokeObjectURL(g)},[g]);let y=(0,C.useMemo)(()=>g||void 0,[g]),b=e=>{let t=e.type.startsWith(`image/`),n=e.type.startsWith(`video/`);if(u===`image`&&!t)return CP.warning(`当前素材类型为图片,请选择图片文件`),TB.LIST_IGNORE;if(u===`video`&&!n)return CP.warning(`当前素材类型为视频,请选择视频文件`),TB.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},x=()=>{s(null),l([]),g.startsWith(`blob:`)&&URL.revokeObjectURL(g),_(``)};return(0,Q.jsxs)(TP,{title:`上传首页素材`,open:e,onCancel:()=>{m||t()},onOk:async()=>{if(m)return;let e=await a.validateFields();if(!o){CP.warning(`请选择素材文件`);return}if(f.watermarkType===`image`&&!f.watermarkId){CP.warning(`请选择水印图片`);return}if(f.watermarkType===`repeated_text`&&!f.textWatermark?.text?.trim()){CP.warning(`请输入重复文字水印内容`);return}h(!0);try{let n=await NVe({categoryId:e.category_id,file:o,mediaType:u,title:e.title?.trim()||null,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});CP.success(n.message||`已提交水印处理`),i(),t()}finally{h(!1)}},confirmLoading:m,okButtonProps:{disabled:m||!o||!gWe(f)},cancelButtonProps:{disabled:m},width:980,destroyOnHidden:!0,children:[(0,Q.jsxs)(X,{form:a,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`category_id`,label:`行业`,rules:[{required:!0,message:`请选择行业`}],children:(0,Q.jsx)(Tb,{options:n.map(e=>({label:e.name,value:e.id})),disabled:m})}),(0,Q.jsx)(X.Item,{name:`media_type`,label:`素材类型`,rules:[{required:!0}],children:(0,Q.jsx)(Tb,{value:u,onChange:e=>{d(e),x()},disabled:m,options:[{label:`图片`,value:`image`},{label:`视频`,value:`video`}]})}),(0,Q.jsx)(X.Item,{label:`素材文件`,required:!0,children:(0,Q.jsx)(TB,{beforeUpload:e=>b(e),onRemove:x,fileList:c,maxCount:1,accept:u===`image`?`image/*`:`video/*`,disabled:m,children:(0,Q.jsxs)($S,{icon:(0,Q.jsx)(Y6,{}),loading:m,disabled:m,children:[`选择`,u===`image`?`图片`:`视频`]})})}),(0,Q.jsx)(X.Item,{name:`title`,label:`素材标题`,extra:`选填;不填时后台显示“未命名素材”,不会再自动使用文件名作为标题。`,children:(0,Q.jsx)(GN,{disabled:m})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,children:(0,Q.jsx)(Pj,{min:0,style:{width:`100%`},disabled:m})}),(0,Q.jsx)(X.Item,{name:`is_active`,label:`前台展示`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{disabled:m})})]}),(0,Q.jsx)(q9,{value:f,onChange:p,watermarks:r,mediaUrl:y,mediaType:u})]})},vWe=({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]=X.useForm(),x=async()=>{s(!0);try{a((await F5({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(),_(U9(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 CP.warning(`请选择图片文件`),TB.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)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:w,children:`上传水印`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:o,dataSource:i,pagination:{pageSize:20},columns:[{title:`预览`,dataIndex:`fileUrl`,render:e=>(0,Q.jsx)(jN,{width:80,src:U9(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)(IM,{children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>T(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确认删除该水印?`,onConfirm:async()=>{await kVe(t.id),CP.success(`删除成功`),await x(),r?.()},children:(0,Q.jsx)($S,{size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}]}),(0,Q.jsx)(TP,{title:u?`编辑水印`:`上传水印`,open:c,onOk:async()=>{if(v)return;let e=await b.validateFields();if(!u&&!f){CP.warning(`请选择水印图片`);return}y(!0);try{u?await OVe(u.id,{name:e.name,is_default:e.is_default,is_active:e.is_active}):f&&await DVe(f,e.name,e.is_default),CP.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)(X,{form:b,layout:`vertical`,children:[!u&&(0,Q.jsxs)(X.Item,{label:`水印图片`,required:!0,children:[(0,Q.jsx)(TB,{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)($S,{icon:(0,Q.jsx)(Y6,{}),loading:v,disabled:v,children:`选择图片`})}),g&&(0,Q.jsx)(`div`,{style:{marginTop:12},children:(0,Q.jsx)(jN,{src:g,alt:`水印预览`,width:180,style:{maxHeight:120,objectFit:`contain`,background:`#0f172a`,borderRadius:8,padding:8}})})]}),u&&g&&(0,Q.jsx)(X.Item,{label:`当前水印`,children:(0,Q.jsx)(jN,{src:g,alt:`当前水印`,width:180,style:{maxHeight:120,objectFit:`contain`,background:`#0f172a`,borderRadius:8,padding:8}})}),(0,Q.jsx)(X.Item,{name:`name`,label:`水印名称`,rules:[{required:!0,message:`请输入水印名称`}],children:(0,Q.jsx)(GN,{disabled:v})}),(0,Q.jsx)(X.Item,{name:`is_default`,label:`默认水印`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{disabled:v})}),(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{disabled:v})})]})})]});return n?O:(0,Q.jsx)(TP,{title:`水印库`,open:e,onCancel:t,footer:null,width:900,destroyOnHidden:!0,children:O})},yWe=()=>{let[e]=X.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([P5({page:1,pageSize:200}),F5({page:1,pageSize:200,isActive:!0})]);i(e.items),o(t.items)},f=async()=>{n(!0);try{let t=await CVe();e.setFieldsValue(t)}finally{n(!1)}};(0,C.useEffect)(()=>{f(),d()},[]);let p=async()=>{await wVe(await e.validateFields()),CP.success(`配置已保存`)},m=async()=>{await d(),u(e=>e+1)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(VA,{style:{marginBottom:16},loading:t,children:(0,Q.jsxs)(X,{form:e,layout:`inline`,initialValues:{enabled:!1,title:`行业素材案例`,subtitle:`精选图片与视频素材展示`,showOriginalInAdmin:!0},children:[(0,Q.jsx)(X.Item,{name:`enabled`,label:`首页展示`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`title`,label:`标题`,rules:[{required:!0,message:`请输入标题`}],children:(0,Q.jsx)(GN,{style:{width:220}})}),(0,Q.jsx)(X.Item,{name:`subtitle`,label:`副标题`,children:(0,Q.jsx)(GN,{style:{width:320}})}),(0,Q.jsx)(X.Item,{name:`showOriginalInAdmin`,label:`后台展示原素材`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{children:(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(a4,{}),onClick:p,children:`保存配置`})})]})}),(0,Q.jsx)(VA,{title:`首页素材行业装修`,extra:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{onClick:m,children:`刷新`}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>c(!0),children:`上传素材`})]}),children:(0,Q.jsx)(zA,{items:[{key:`assets`,label:`素材管理`,children:(0,Q.jsx)(fWe,{categories:r,watermarks:a,reloadKey:l})},{key:`categories`,label:`行业类别`,children:(0,Q.jsx)(hWe,{onChanged:m})},{key:`watermarks`,label:`水印库`,children:(0,Q.jsx)(vWe,{embedded:!0,onChanged:m})}]})}),(0,Q.jsx)(_We,{open:s,onClose:()=>c(!1),categories:r,watermarks:a,onSuccess:m})]})},bWe=({children:e})=>{let{user:t,loading:n,checkAuth:r}=I5();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)(hP,{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}=I5();return(0,C.useEffect)(()=>{e()},[]),(0,Q.jsx)($p,{locale:J8.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)(zv,{children:(0,Q.jsx)(_n,{children:(0,Q.jsxs)(kt,{children:[(0,Q.jsx)(Dt,{path:`/login`,element:(0,Q.jsx)(GVe,{})}),(0,Q.jsxs)(Dt,{path:`/`,element:(0,Q.jsx)(bWe,{children:(0,Q.jsx)(BVe,{})}),children:[(0,Q.jsx)(Dt,{index:!0,element:(0,Q.jsx)(KVe,{})}),(0,Q.jsx)(Dt,{path:`users`,element:(0,Q.jsx)(XVe,{})}),(0,Q.jsx)(Dt,{path:`teams`,element:(0,Q.jsx)(eHe,{})}),(0,Q.jsx)(Dt,{path:`credit-records`,element:(0,Q.jsx)(THe,{})}),(0,Q.jsx)(Dt,{path:`models`,element:(0,Q.jsx)(tHe,{})}),(0,Q.jsx)(Dt,{path:`credit-ratios`,element:(0,Q.jsx)(zHe,{})}),(0,Q.jsx)(Dt,{path:`video-engines`,element:(0,Q.jsx)(NHe,{})}),(0,Q.jsx)(Dt,{path:`image-engines`,element:(0,Q.jsx)(IHe,{})}),(0,Q.jsx)(Dt,{path:`industries`,element:(0,Q.jsx)(MHe,{})}),(0,Q.jsx)(Dt,{path:`menu-configs`,element:(0,Q.jsx)(UHe,{})}),(0,Q.jsx)(Dt,{path:`recharge-packages`,element:(0,Q.jsx)(KHe,{})}),(0,Q.jsx)(Dt,{path:`payment`,element:(0,Q.jsx)(EHe,{})}),(0,Q.jsx)(Dt,{path:`payment-stats`,element:(0,Q.jsx)(OHe,{})}),(0,Q.jsx)(Dt,{path:`settings`,element:(0,Q.jsx)(rHe,{})}),(0,Q.jsx)(Dt,{path:`video-prompt-schema-config`,element:(0,Q.jsx)(eWe,{})}),(0,Q.jsx)(Dt,{path:`notifications`,element:(0,Q.jsx)(iHe,{})}),(0,Q.jsx)(Dt,{path:`oauthapp-list`,element:(0,Q.jsx)(YHe,{})}),(0,Q.jsx)(Dt,{path:`operation-logs`,element:(0,Q.jsx)(JHe,{})}),(0,Q.jsx)(Dt,{path:`generation-records`,element:(0,Q.jsx)(eUe,{})}),(0,Q.jsx)(Dt,{path:`generation-ai`,element:(0,Q.jsx)(aUe,{})}),(0,Q.jsx)(Dt,{path:`hot-opening-replications`,element:(0,Q.jsx)(uUe,{})}),(0,Q.jsx)(Dt,{path:`hot-opening-replications/:projectId`,element:(0,Q.jsx)(AUe,{})}),(0,Q.jsx)(Dt,{path:`shot-replications`,element:(0,Q.jsx)(FUe,{})}),(0,Q.jsx)(Dt,{path:`shot-replications/task-sets/:taskSetId`,element:(0,Q.jsx)(WUe,{})}),(0,Q.jsx)(Dt,{path:`shot-replications/projects/:projectId`,element:(0,Q.jsx)(_9,{moduleType:`shot_replicate`})}),(0,Q.jsx)(Dt,{path:`authoriza`,element:(0,Q.jsx)(HVe,{})}),(0,Q.jsx)(Dt,{path:`consume`,element:(0,Q.jsx)(WVe,{})}),(0,Q.jsx)(Dt,{path:`platform`,element:(0,Q.jsx)(qVe,{})}),(0,Q.jsx)(Dt,{path:`contact-requests`,element:(0,Q.jsx)(tWe,{})}),(0,Q.jsx)(Dt,{path:`home-materials`,element:(0,Q.jsx)(yWe,{})})]}),(0,Q.jsx)(Dt,{path:`*`,element:(0,Q.jsx)(Tt,{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 22a2b12d..4fdbb81c 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/AdminGenerationAiRecords.tsx b/video-gen-admin/src/pages/AdminGenerationAiRecords.tsx
index 85d4d529..804622c9 100644
--- a/video-gen-admin/src/pages/AdminGenerationAiRecords.tsx
+++ b/video-gen-admin/src/pages/AdminGenerationAiRecords.tsx
@@ -436,18 +436,33 @@ const AdminGenerationAiRecords: React.FC = () => {
},
},
{
- title: '附件', key: 'references', width: 110,
+ title: '附件', key: 'references', width: 130,
render: (_: any, r: GenerationAITaskOut) => {
const refs = r.mediaReferences || [];
if (refs.length === 0) return 无;
- const imgCount = refs.filter((ref) => getReferenceType(ref) === 'image').length;
- const vidCount = refs.filter((ref) => getReferenceType(ref) === 'video').length;
- const otherCount = refs.length - imgCount - vidCount;
return (
- {imgCount > 0 ? }>{imgCount} 图 : null}
- {vidCount > 0 ? }>{vidCount} 视频 : null}
- {otherCount > 0 ? {otherCount} 文件 : null}
+ {refs.map((ref, idx) => {
+ const refUrl = getReferenceUrl(ref);
+ const refType = getReferenceType(ref);
+ const title = typeof ref.name === 'string' && ref.name ? ref.name : `附件 ${idx + 1}`;
+ if (!refUrl) return null;
+ return (
+ : }
+ type="link"
+ style={{ padding: 0, fontSize: 12 }}
+ onClick={(e) => {
+ e.stopPropagation();
+ handlePreviewResource(refUrl, refType === 'video' ? 'video' : 'image', title);
+ }}
+ >
+ {title}
+
+ );
+ })}
);
},
@@ -465,7 +480,7 @@ const AdminGenerationAiRecords: React.FC = () => {
icon={}
type="link"
style={{ padding: 0 }}
- onClick={(e) => { e.stopPropagation(); handleOpenExternalResource(r.videoUrl, '视频'); }}
+ onClick={(e) => { e.stopPropagation(); handlePreviewResource(r.videoUrl!, 'video', '生成视频'); }}
>
看视频
@@ -478,7 +493,7 @@ const AdminGenerationAiRecords: React.FC = () => {
icon={}
type="link"
style={{ padding: 0 }}
- onClick={(e) => { e.stopPropagation(); handleOpenExternalResource(r.imageUrl, '图片'); }}
+ onClick={(e) => { e.stopPropagation(); handlePreviewResource(r.imageUrl!, 'image', '生成图片'); }}
>
看图片
@@ -945,7 +960,14 @@ const AdminGenerationAiRecords: React.FC = () => {
/>
{ setCreatedRange(dates); }}
+ onChange={(dates) => {
+ if (dates && dates[0] && dates[1]) {
+ // 自动将结束时间补到当天 23:59:59,确保选一天也能看到整天数据
+ setCreatedRange([dates[0].startOf('day'), dates[1].endOf('day')]);
+ } else {
+ setCreatedRange(dates);
+ }
+ }}
placeholder={['开始日期', '结束日期']}
/>
Date: Fri, 3 Jul 2026 12:40:52 +0800
Subject: [PATCH 5/5] 1
---
.../{index-By9oW19d.js => index-kmFIWx83.js} | 2 +-
video-gen-admin/dist/index.html | 2 +-
.../src/pages/AdminGenerationAiRecords.tsx | 35 +++++++++++--------
3 files changed, 22 insertions(+), 17 deletions(-)
rename video-gen-admin/dist/assets/{index-By9oW19d.js => index-kmFIWx83.js} (97%)
diff --git a/video-gen-admin/dist/assets/index-By9oW19d.js b/video-gen-admin/dist/assets/index-kmFIWx83.js
similarity index 97%
rename from video-gen-admin/dist/assets/index-By9oW19d.js
rename to video-gen-admin/dist/assets/index-kmFIWx83.js
index 507b2b40..91f0eee9 100644
--- a/video-gen-admin/dist/assets/index-By9oW19d.js
+++ b/video-gen-admin/dist/assets/index-kmFIWx83.js
@@ -543,6 +543,6 @@ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC...\r
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...\r
`,disabled:!i})}),(0,Q.jsx)(X.Item,{name:`alipay_gateway`,label:`网关地址`,children:(0,Q.jsx)(GN,{placeholder:`https://openapi.alipay.com/gateway.do`,size:`large`,disabled:!i})}),(0,Q.jsx)(X.Item,{name:`alipay_notify_url`,label:`回调地址`,children:(0,Q.jsx)(GN,{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)($S,{type:`primary`,icon:(0,Q.jsx)(a4,{}),onClick:async()=>{try{let e=await u.validateFields();t(!0),await MBe({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)}),CP.success(`支付配置已保存`),d()}catch{CP.error(`保存失败`)}finally{t(!1)}},loading:e,size:`large`,style:{borderRadius:8,minWidth:160,height:44,fontSize:15},children:`保存配置`})})]})},{Option:r7}=Tb,{RangePicker:DHe}=gM,OHe=()=>{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,tC.default)().format(`YYYY-MM-DD`),endDate:(0,tC.default)().format(`YYYY-MM-DD`)}),f=async()=>{try{t(!0);let[e,n]=await Promise.all([NBe(u),PBe({...u,page:i,pageSize:o})]);r({...e,recent:n.items||[]}),l(n.total)}catch{CP.error(`加载支付统计失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{f()},[u,i,o]);let p=(e,t)=>{a(e),s(t)},m=()=>{d({startDate:(0,tC.default)().format(`YYYY-MM-DD`),endDate:(0,tC.default)().format(`YYYY-MM-DD`)})},h=async e=>{try{t(!0),await FBe(e),CP.success(`退款成功`),await f()}catch(e){CP.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)(KK,{})},pending:{color:`gold`,label:`待支付`,icon:(0,Q.jsx)(fM,{})},cancelled:{color:`default`,label:`已取消`,icon:(0,Q.jsx)(Cq,{})},refunded:{color:`red`,label:`已退款`,icon:(0,Q.jsx)(I6,{})}},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:`paymentMethod`,key:`paymentMethod`,width:100,render:e=>{let t=v[e]||{color:`default`,label:e};return(0,Q.jsx)(jR,{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)(jR,{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?B5(e):`-`})},{title:`支付时间`,dataIndex:`paidAt`,key:`paidAt`,width:160,render:e=>(0,Q.jsx)(`span`,{className:`date-display`,style:{color:`#94a3b8`},children:e?B5(e):`-`})},{title:`操作`,key:`action`,width:120,render:(e,t)=>t.status===`paid`?(0,Q.jsx)(OP,{title:`确认要退款该订单吗?`,description:`退款后积分会扣除,金额会原路返回`,onConfirm:()=>h(t.orderNo),okText:`确认`,cancelText:`取消`,children:(0,Q.jsx)($S,{type:`link`,danger:!0,size:`small`,icon:(0,Q.jsx)(I6,{}),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)($p,{locale:J8.default,children:(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(WP,{gutter:[16,16],style:{marginBottom:24},children:[(0,Q.jsx)(uj,{xs:24,sm:12,lg:12,children:(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsx)(qP,{title:`今日收入`,value:n.today.paidAmount,precision:2,prefix:(0,Q.jsx)(fY,{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)(uj,{xs:24,sm:12,lg:12,children:(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsx)(qP,{title:`本月累计`,value:E.paidAmount,precision:2,prefix:(0,Q.jsx)(fY,{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)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`,marginBottom:16},title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(fY,{}),`订单状态分布`]}),children:(0,Q.jsx)(WP,{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)(uj,{span:6,children:(0,Q.jsxs)(`div`,{style:{padding:16,borderRadius:10,background:`#fafbff`,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(jR,{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)(VA,{bordered:!1,style:{borderRadius:12,border:`1px solid #f0f0f5`},title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(fY,{}),`订单列表`]}),children:[(0,Q.jsxs)(WP,{gutter:[16,16],align:`middle`,style:{marginBottom:24},children:[(0,Q.jsxs)(uj,{xs:24,sm:12,md:6,children:[(0,Q.jsx)(`span`,{style:{marginRight:8},children:`支付方式:`}),(0,Q.jsxs)(Tb,{placeholder:`全部`,allowClear:!0,style:{width:150},value:u.paymentMethod,onChange:e=>d(t=>({...t,paymentMethod:e})),children:[(0,Q.jsx)(r7,{value:`alipay`,children:`支付宝`}),(0,Q.jsx)(r7,{value:`wechat`,children:`微信`})]})]}),(0,Q.jsxs)(uj,{xs:24,sm:12,md:6,children:[(0,Q.jsx)(`span`,{style:{marginRight:8},children:`状态:`}),(0,Q.jsxs)(Tb,{placeholder:`全部`,allowClear:!0,style:{width:150},value:u.status,onChange:e=>d(t=>({...t,status:e})),children:[(0,Q.jsx)(r7,{value:`paid`,children:`已支付`}),(0,Q.jsx)(r7,{value:`pending`,children:`待支付`}),(0,Q.jsx)(r7,{value:`cancelled`,children:`已取消`}),(0,Q.jsx)(r7,{value:`refunded`,children:`已退款`})]})]}),(0,Q.jsxs)(uj,{xs:24,sm:12,md:8,children:[(0,Q.jsx)(`span`,{style:{marginRight:8},children:`日期范围:`}),(0,Q.jsx)(DHe,{value:[(0,tC.default)(u.startDate),(0,tC.default)(u.endDate)],onChange:g})]}),(0,Q.jsx)(uj,{xs:24,sm:12,md:4,children:(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:m,children:`重置`})})]}),(0,Q.jsx)(vR,{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`})]})]})})},i7=[{name:`ShoppingCartOutlined`,label:`购物`,component:(0,Q.jsx)(k4,{})},{name:`BookOutlined`,label:`书籍`,component:(0,Q.jsx)(SW,{})},{name:`HomeOutlined`,label:`房产`,component:(0,Q.jsx)(OQ,{})},{name:`FireOutlined`,label:`火`,component:(0,Q.jsx)(aZ,{})},{name:`RocketOutlined`,label:`科技`,component:(0,Q.jsx)(q2,{})},{name:`SkinOutlined`,label:`时尚`,component:(0,Q.jsx)(G4,{})},{name:`CompassOutlined`,label:`指南`,component:(0,Q.jsx)(nJ,{})},{name:`HeartOutlined`,label:`健康`,component:(0,Q.jsx)(_Q,{})},{name:`CarOutlined`,label:`汽车`,component:(0,Q.jsx)(gK,{})},{name:`CameraOutlined`,label:`相机`,component:(0,Q.jsx)(sK,{})},{name:`CloudOutlined`,label:`云`,component:(0,Q.jsx)(jq,{})},{name:`StarOutlined`,label:`星`,component:(0,Q.jsx)(S3,{})},{name:`TrophyOutlined`,label:`奖杯`,component:(0,Q.jsx)(w6,{})},{name:`ThunderboltOutlined`,label:`闪电`,component:(0,Q.jsx)(s6,{})},{name:`BulbOutlined`,label:`灯泡`,component:(0,Q.jsx)(LG,{})},{name:`CoffeeOutlined`,label:`咖啡`,component:(0,Q.jsx)(Xq,{})},{name:`CrownOutlined`,label:`皇冠`,component:(0,Q.jsx)(DJ,{})},{name:`DashboardOutlined`,label:`仪表`,component:(0,Q.jsx)(FJ,{})},{name:`FlagOutlined`,label:`旗帜`,component:(0,Q.jsx)(lZ,{})},{name:`GlobalOutlined`,label:`全球`,component:(0,Q.jsx)($Z,{})},{name:`GiftOutlined`,label:`礼物`,component:(0,Q.jsx)(KZ,{})},{name:`LaptopOutlined`,label:`笔记本`,component:(0,Q.jsx)(p$,{})},{name:`MobileOutlined`,label:`手机`,component:(0,Q.jsx)(E1,{})},{name:`MonitorOutlined`,label:`显示器`,component:(0,Q.jsx)(M1,{})},{name:`PayCircleOutlined`,label:`支付`,component:(0,Q.jsx)(r0,{})},{name:`PictureOutlined`,label:`图片`,component:(0,Q.jsx)(m0,{})},{name:`PlayCircleOutlined`,label:`播放`,component:(0,Q.jsx)(C0,{})},{name:`SafetyOutlined`,label:`安全`,component:(0,Q.jsx)(n4,{})},{name:`ShoppingOutlined`,label:`商店`,component:(0,Q.jsx)(M4,{})},{name:`SmileOutlined`,label:`笑脸`,component:(0,Q.jsx)(a3,{})},{name:`SoundOutlined`,label:`声音`,component:(0,Q.jsx)(g3,{})},{name:`TagOutlined`,label:`标签`,component:(0,Q.jsx)(J3,{})},{name:`TeamOutlined`,label:`团队`,component:(0,Q.jsx)(i6,{})},{name:`ToolOutlined`,label:`工具`,component:(0,Q.jsx)(m6,{})},{name:`TruckOutlined`,label:`物流`,component:(0,Q.jsx)(O6,{})},{name:`VideoCameraOutlined`,label:`视频`,component:(0,Q.jsx)(m8,{})},{name:`WalletOutlined`,label:`钱包`,component:(0,Q.jsx)(v8,{})},{name:`BankOutlined`,label:`银行`,component:(0,Q.jsx)(TU,{})},{name:`BuildOutlined`,label:`建筑`,component:(0,Q.jsx)(OG,{})},{name:`ExperimentOutlined`,label:`实验`,component:(0,Q.jsx)(YY,{})},{name:`HighlightOutlined`,label:`高亮`,component:(0,Q.jsx)(SQ,{})},{name:`IdcardOutlined`,label:`名片`,component:(0,Q.jsx)(RQ,{})},{name:`MedicineBoxOutlined`,label:`医药`,component:(0,Q.jsx)(Q$,{})},{name:`ReadOutlined`,label:`阅读`,component:(0,Q.jsx)(y2,{})},{name:`RestOutlined`,label:`休息`,component:(0,Q.jsx)(M2,{})},{name:`SketchOutlined`,label:`钻石`,component:(0,Q.jsx)(V4,{})},{name:`SolutionOutlined`,label:`方案`,component:(0,Q.jsx)(d3,{})}],kHe=Object.fromEntries(i7.map(e=>[e.name,e.component]));function a7(e){return kHe[e]||(0,Q.jsx)(OH,{})}function AHe(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 jHe=({value:e,onChange:t})=>{let n=i7.find(t=>t.name===e);return(0,Q.jsx)(RM,{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:i7.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:a7(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)(_b,{style:{fontSize:10,color:`#bfbfbf`,marginLeft:`auto`}})]})})},MHe=()=>{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]=X.useForm(),l=async()=>{r(!0);try{t((await CBe()).map(e=>{let{skillItems:t,optionGroups:n}=AHe(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{CP.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 b5({id:o.item.id,...r}),CP.success(`已更新`)):(await b5(r),CP.success(`已添加`)),s({open:!1,item:null}),c.resetFields(),l()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}finally{a(!1)}},d=async e=>{try{await wBe(e),CP.success(`已删除`),l()}catch(e){CP.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)(VA,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(OH,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`行业与技能配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个行业`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加行业`})]}),(0,Q.jsx)(vR,{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:a7(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)(jR,{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)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除该行业?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(OH,{}),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)(X,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`key`,label:`行业标识`,style:{flex:1},rules:[{required:!0,message:`请输入标识`}],children:(0,Q.jsx)(GN,{placeholder:`例如:ecommerce`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`label`,label:`行业名称`,style:{flex:1},rules:[{required:!0,message:`请输入名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:电商`,size:`large`})})]}),(0,Q.jsx)(X.Item,{name:`icon`,label:`行业图标`,children:(0,Q.jsx)(jHe,{})}),(0,Q.jsx)(X.Item,{name:`description`,label:`行业描述`,children:(0,Q.jsx)(GN.TextArea,{rows:2,placeholder:`行业描述`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`skills_wentutujie`,label:`文图理解生成视频提示词`,extra:`用于LLM优化视频提示词的系统指令,根据行业特点引导AI理解文案与画面的关系`,children:(0,Q.jsx)(GN.TextArea,{rows:3,placeholder:`请输入文图理解生成视频提示词,例如:
你是一位专业的电商视频文案专家,擅长将产品卖点转化为视觉语言`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`skills_wentutujie_image`,label:`文图理解生成图片提示词`,extra:`用于LLM优化图片提示词的系统指令,根据行业特点引导AI理解文案与画面的关系`,children:(0,Q.jsx)(GN.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)(X.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)(X.Item,{...r,name:[t,`name`],label:`选项名称`,style:{marginBottom:0},rules:[{required:!0,message:`请输入选项名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:视频风格`,size:`middle`,style:{borderRadius:8}})}),(0,Q.jsx)(X.Item,{...r,name:[t,`options`],label:`选项内容`,style:{marginBottom:0},children:(0,Q.jsx)(Tb,{mode:`tags`,size:`middle`,placeholder:`输入选项后回车添加`,style:{borderRadius:8},tokenSeparators:[`,`,`,`,`、`]})})]}),(0,Q.jsx)(b1,{onClick:()=>n(t),style:{color:`#ef4444`,fontSize:16,marginTop:34,cursor:`pointer`,flexShrink:0}})]},e)),(0,Q.jsx)($S,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,Q.jsx)(gA,{}),style:{borderRadius:8,height:36},children:`添加选项组`})]})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]})]})})]})};function o7(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}var NHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await TBe()).map(e=>({...e,supportedRatios:o7(e.supportedRatios),supportedResolutions:o7(e.supportedResolutions),supportedDurations:o7(e.supportedDurations)})))}catch{CP.error(`加载视频引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=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};i.engine?(await x5({id:i.engine.id,...t}),CP.success(`已更新`)):(await x5(t),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await EBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{a({open:!0,engine:e||null}),e?o.setFieldsValue(e):(o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,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]}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`视频引擎配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(C0,{})}),(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)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{children:e},e))})},{title:`支持分辨率`,dataIndex:`supportedResolutions`,width:150,render:e=>(0,Q.jsx)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{color:`blue`,children:e},e))})},{title:`支持时长`,dataIndex:`supportedDurations`,width:120,render:e=>(0,Q.jsx)(jR,{color:`orange`,children:e?.length?`${Math.min(...e)}-${Math.max(...e)}s`:`-`})},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`最大视频`,dataIndex:`maxVideoCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`cyan`,children:[e,` 个`]})},{title:`最大音频`,dataIndex:`maxAudioCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:e>0?`geekblue`:`default`,children:[e||0,` 段`]})},{title:`首尾帧`,dataIndex:`supportsFirstLastFrame`,width:90,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`支持`:`不支持`})},{title:`全能参考`,dataIndex:`supportsUniversalReference`,width:100,render:e=>(0,Q.jsx)(jR,{color:e?`purple`:`default`,children:e?`支持`:`不支持`})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1200}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:620,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`Seedance 2.0`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`模型名称`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedance-2-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedRatios`,label:`支持比例`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`supportedResolutions`,label:`支持分辨率`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:[{value:`480p`},{value:`720p`},{value:`1080p`}]})}),(0,Q.jsx)(X.Item,{name:`supportedDurations`,label:`支持时长(秒)`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:Array.from({length:12},(e,t)=>({value:t+4,label:`${t+4}秒`}))})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`maxDuration`,label:`最大时长(秒)`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxVideoCount`,label:`最大视频数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`maxAudioCount`,label:`最大参考音频数`,style:{flex:1},extra:`0 表示不支持音频参考,最大 3 段`,rules:[{validator:(e,t)=>{let n=Number(t??0);return!Number.isInteger(n)||n<0||n>3?Promise.reject(Error(`最大参考音频数必须为 0-3 的整数`)):Promise.resolve()}}],children:(0,Q.jsx)(GN,{type:`number`,size:`large`,min:0,max:3})})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`supportsFirstLastFrame`,label:`首尾帧模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`supportsUniversalReference`,label:`全能参考模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,style:{flex:1},children:(0,Q.jsx)(Tb,{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 PHe(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}function FHe(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 s7={"2K":{"1:1":`2048×2048`,"4:3":`2304×1728`,"3:4":`1728×2304`,"16:9":`2560×1440`,"9:16":`1600×2848`,"3:2":`2496×1664`,"2:3":`1664×2496`,"21:9":`3024×1296`},"4K":{"1:1":`4096×4096`,"4:3":`4608×3456`,"3:4":`3520×4704`,"16:9":`5404×3040`,"9:16":`3040×5504`,"3:2":`4992×3328`,"2:3":`3328×4992`,"21:9":`6197×2656`}},c7=[`1:1`,`4:3`,`3:4`,`16:9`,`9:16`,`3:2`,`2:3`,`21:9`],IHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await DBe()).map(e=>({...e,supportedModels:PHe(e.supportedModels),supportedSizes:FHe(e.supportedSizes)})))}catch{CP.error(`加载图片引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={};for(let n of[`2K`,`4K`]){let r=e[`size_${n}`]||[];if(r.length>0){t[n]={};for(let e of r)t[n][e]=s7[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};i.engine?(await S5({id:i.engine.id,...n}),CP.success(`已更新`)):(await S5(n),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await OBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{if(a({open:!0,engine:e||null}),e){let t={};for(let n of[`2K`,`4K`])t[`size_${n}`]=Object.keys(e.supportedSizes?.[n]||{});o.setFieldsValue({...e,...t})}else o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,supportedModels:[`doubao-seedream-5-0-260128`],defaultSize:`2K`,maxImageCount:0,size_2K:c7,size_4K:c7})};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{style:{fontSize:18,color:`#10b981`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`图片引擎配置`}),(0,Q.jsxs)(jR,{color:`green`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(m0,{})}),(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:`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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` `,t.supportedSizes[`4K`][e]]},e))})}},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1e3}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:680,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`豆包文生图`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`默认模型`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedream-5-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedModels`,label:`支持模型列表`,children:(0,Q.jsx)(Tb,{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`})]}),[`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)(X.Item,{name:`size_${e}`,style:{marginTop:8,marginBottom:0},children:(0,Q.jsx)(ij.Group,{style:{width:`100%`},children:(0,Q.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(4, 1fr)`,gap:`6px 0`},children:c7.map(t=>(0,Q.jsxs)(ij,{value:t,style:{fontSize:12},children:[t,` `,(0,Q.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:11},children:s7[e]?.[t]})]},t))})})})]},e)),(0,Q.jsx)(X.Item,{name:`defaultSize`,label:`默认尺寸档位`,children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`2K`,label:`2K`},{value:`4K`,label:`4K`}]})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`generateUrl`,label:`生成接口地址`,children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3/images/generations`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30},children:(0,Q.jsx)(lF,{})})]})]})})]})},LHe=[`2K`,`4K`],RHe=[`480p`,`720p`,`1080p`],zHe=()=>{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]=X.useForm(),[l,u]=(0,C.useState)(10),[d,f]=(0,C.useState)(null),[p,m]=(0,C.useState)(!1),h=X.useWatch(`genType`,c)||`video`,g=X.useWatch(`modelConfigId`,c),_=async()=>{a(!0);try{let[e,n,i]=await Promise.all([kBe(),g5(),aVe()]),a=(i?.engine?.image||[]).map(e=>({...e,genType:`image`})),o=(i?.engine?.video||[]).map(e=>({...e,genType:`video`}));t(e),r([...o,...a]);let s=n.find(e=>e.key===`text_credits_per_1000_tokens`);s&&(u(Number(s.value)||10),f({id:s.id}))}catch{CP.error(`加载积分比例失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{_()},[]);let v=(0,C.useMemo)(()=>n.filter(e=>e.genType===h).map(e=>({value:e.id,label:`${e.name}${e.modelName?`(${e.modelName})`:``}`})),[n,h]),y=(0,C.useMemo)(()=>n.find(e=>e.id===g&&e.genType===h),[n,h,g]),b=(0,C.useMemo)(()=>{if(h===`image`){let e=y?.supportedSizes?Object.keys(y.supportedSizes):[];return(e.length?e:LHe).map(e=>({value:e,label:e}))}let e=y?.supportedResolutions||[];return(e.length?e:RHe).map(e=>({value:e,label:e}))},[h,y]),x=(e,t)=>n.find(n=>n.id===e&&(!t||n.genType===t))?.name||e,S=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),o.ratio?(await C5({id:o.ratio.id,...t}),CP.success(`已更新`)):(await C5(t),CP.success(`已添加`)),s({open:!1,ratio:null}),c.resetFields(),_()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},w=async e=>{try{await ABe(e),CP.success(`已删除`),_()}catch{CP.error(`删除失败`)}},T=async()=>{if(d){m(!0);try{await _5(d.id,String(l)),CP.success(`文字积分费率已更新`)}catch(e){CP.error(e?.message||`保存失败`)}finally{m(!1)}}},E=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}):(c.resetFields(),c.setFieldsValue({genType:`video`,ratio:1,baseCredits:60,perSecondCredits:2,inputVideoRatio:1,inputVideoBaseCredits:0,inputVideoPerSecondCredits:.5}))};return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(xZ,{style:{fontSize:18,color:`#f59e0b`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`文字积分费率`})]}),(0,Q.jsx)($S,{type:`primary`,loading:p,onClick:T,style:{borderRadius:8},children:`保存`})]}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{display:`block`,marginBottom:16,fontSize:13},children:`文字积分计算公式:ceil(总token数 x 费率 / 1000),最低1积分`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:16},children:[(0,Q.jsx)(Z.Text,{children:`每1000 token消耗积分:`}),(0,Q.jsxs)(IM.Compact,{style:{width:160},children:[(0,Q.jsx)(Pj,{min:0,max:1e3,step:.01,value:l,onChange:e=>u(e||0),size:`large`,style:{width:`100%`}}),(0,Q.jsx)(Z.Text,{children:`积分`})]}),(0,Q.jsxs)(Z.Text,{type:`secondary`,style:{fontSize:12},children:[`示例:1000 token = `,l,` 积分,500 token = `,(500*l/1e3).toFixed(4),` 积分`]})]})]}),(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KG,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`积分比例配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 条规则`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>E(),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)(vR,{columns:[{title:`类型`,dataIndex:`genType`,width:80,render:e=>(0,Q.jsx)(jR,{color:e===`image`?`cyan`:`orange`,children:e===`image`?`图片`:`视频`})},{title:`引擎`,dataIndex:`modelConfigId`,width:180,render:(e,t)=>(0,Q.jsx)(jR,{color:t.genType===`image`?`cyan`:`purple`,children:x(e,t.genType)})},{title:`分辨率/尺寸`,dataIndex:`resolution`,width:110,render:e=>(0,Q.jsx)(jR,{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:`视频倍率`,dataIndex:`inputVideoRatio`,width:100,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:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分`})},{title:`视频每秒积分`,dataIndex:`inputVideoPerSecondCredits`,width:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分/秒`})},{title:`示例计算(视频15秒,上传视频15秒)`,key:`example`,width:140,render:(e,t)=>{let n;return t.genType===`image`?n=Math.round(t.baseCredits*t.ratio):(n=Math.round((t.baseCredits+t.perSecondCredits*15)*t.ratio),t.inputVideoRatio&&t.inputVideoPerSecondCredits&&(n+=Math.round((t.inputVideoBaseCredits+t.inputVideoPerSecondCredits*15)*t.inputVideoRatio))),(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)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>E(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>w(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:!1,scroll:{x:1180}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KG,{}),o.ratio?`编辑比例`:`添加比例`]}),open:o.open,onOk:S,onCancel:()=>{s({open:!1,ratio:null}),c.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`genType`,label:`生成类型`,rules:[{required:!0,message:`请选择生成类型`}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`video`,label:`视频`},{value:`image`,label:`图片`}],onChange:()=>{c.setFieldsValue({modelConfigId:void 0,resolution:void 0})}})}),(0,Q.jsx)(X.Item,{name:`modelConfigId`,label:`引擎`,rules:[{required:!0,message:`请选择引擎`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:`请选择引擎`,options:v,showSearch:!0,optionFilterProp:`label`,onChange:()=>c.setFieldsValue({resolution:void 0})})}),(0,Q.jsx)(X.Item,{name:`resolution`,label:h===`image`?`图片尺寸`:`分辨率`,rules:[{required:!0,message:h===`image`?`请选择图片尺寸`:`请选择分辨率`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:h===`image`?`请选择图片尺寸`:`请选择分辨率`,options:b})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`ratio`,label:`倍率`,style:{flex:1},rules:[{required:!0,message:`请输入倍率`}],children:(0,Q.jsx)(Pj,{min:.1,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`baseCredits`,label:`基础积分`,style:{flex:1},rules:[{required:!0,message:`请输入基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:1e3,style:{width:`100%`},size:`large`})}),h!==`image`&&(0,Q.jsx)(X.Item,{name:`perSecondCredits`,label:`每秒积分`,style:{flex:1},rules:[{required:!0,message:`请输入每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`})})]}),h!==`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)(X.Item,{name:`inputVideoRatio`,label:`倍率`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频倍率`}],children:(0,Q.jsx)(Pj,{min:0,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoBaseCredits`,label:`基础积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:500,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoPerSecondCredits`,label:`每秒积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:50,style:{width:`100%`},size:`large`})})]})]})]})})]})},l7={HomeOutlined:(0,Q.jsx)(OQ,{}),PlayCircleOutlined:(0,Q.jsx)(C0,{}),WalletOutlined:(0,Q.jsx)(v8,{}),RobotOutlined:(0,Q.jsx)(W2,{}),SettingOutlined:(0,Q.jsx)(x4,{}),BellOutlined:(0,Q.jsx)(QU,{}),UserOutlined:(0,Q.jsx)(n8,{}),AppstoreOutlined:(0,Q.jsx)(OH,{}),FileTextOutlined:(0,Q.jsx)(BM,{}),StarOutlined:(0,Q.jsx)(S3,{}),HeartOutlined:(0,Q.jsx)(_Q,{}),CameraOutlined:(0,Q.jsx)(sK,{}),DashboardOutlined:(0,Q.jsx)(FJ,{}),CalculatorOutlined:(0,Q.jsx)(KG,{}),DollarOutlined:(0,Q.jsx)(fY,{}),GiftOutlined:(0,Q.jsx)(KZ,{}),ThunderboltOutlined:(0,Q.jsx)(s6,{}),FireOutlined:(0,Q.jsx)(aZ,{}),CloudOutlined:(0,Q.jsx)(jq,{}),SmileOutlined:(0,Q.jsx)(a3,{}),TrophyOutlined:(0,Q.jsx)(w6,{}),RocketOutlined:(0,Q.jsx)(q2,{}),BulbOutlined:(0,Q.jsx)(LG,{}),CodeOutlined:(0,Q.jsx)(Bq,{}),PictureOutlined:(0,Q.jsx)(m0,{}),VideoCameraOutlined:(0,Q.jsx)(m8,{}),AudioOutlined:(0,Q.jsx)(iU,{}),MailOutlined:(0,Q.jsx)(q$,{}),PhoneOutlined:(0,Q.jsx)(s0,{}),GlobalOutlined:(0,Q.jsx)($Z,{}),ShoppingCartOutlined:(0,Q.jsx)(k4,{}),TeamOutlined:(0,Q.jsx)(i6,{}),BarChartOutlined:(0,Q.jsx)(jU,{}),PieChartOutlined:(0,Q.jsx)(_0,{}),LineChartOutlined:(0,Q.jsx)(D$,{}),SecurityScanOutlined:(0,Q.jsx)(m4,{}),ApiOutlined:(0,Q.jsx)(uH,{}),DatabaseOutlined:(0,Q.jsx)(zJ,{}),CloudServerOutlined:(0,Q.jsx)(Nq,{}),MenuOutlined:(0,Q.jsx)(l1,{})},BHe=Object.keys(l7).map(e=>({value:e,label:(0,Q.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[l7[e],` `,e.replace(`Outlined`,``)]})})),VHe={page:`blue`,group:`purple`},HHe={page:`页面`,group:`分组`},UHe=()=>{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]=X.useForm(),l=async()=>{r(!0);try{t(await w5())}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 T5({...t,id:o.menu.id}):await T5(t),CP.success(o.menu?.id?`菜单已更新`:`菜单已添加`),s({open:!1,menu:null}),c.resetFields(),l()}catch{}},d=async e=>{try{await BBe(e),CP.success(`菜单已删除`),l()}catch(e){CP.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&&l7[e]?(0,Q.jsx)(`span`,{style:{fontSize:16,color:`#6366f1`},children:l7[e]}):`-`},{title:`类型`,dataIndex:`menuType`,width:80,render:e=>(0,Q.jsx)(jR,{color:VHe[e]||`default`,children:HHe[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)(jR,{color:`green`,children:`默认`}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})}]:[],{title:`操作`,key:`action`,width:150,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除该菜单?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}];return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`菜单配置`})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加菜单`})]}),(0,Q.jsx)(zA,{activeKey:i,onChange:a,items:[{key:`frontend`,label:`前台菜单`},{key:`admin`,label:`后台菜单`}]}),(0,Q.jsx)(vR,{columns:v,dataSource:h,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(l1,{}),o.menu?.id?`编辑菜单`:`添加菜单`]}),open:o.open,onOk:u,onCancel:()=>{s({open:!1,menu:null}),c.resetFields()},okText:`确认`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`label`,label:`菜单名称`,rules:[{required:!0,message:`请输入菜单名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:我的项目`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`path`,label:`路由路径`,tooltip:`分组类型可留空`,children:(0,Q.jsx)(GN,{placeholder:`例如:/projects(分组可留空)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`menuType`,label:`菜单类型`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`page`,label:`页面`},{value:`group`,label:`分组`}]})}),(0,Q.jsx)(X.Item,{name:`menuTarget`,label:`适用端`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`icon`,label:`图标`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:BHe})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`,placeholder:`默认0`})})]}),(0,Q.jsx)(X.Item,{name:`parentId`,label:`上级菜单`,children:(0,Q.jsx)(Tb,{size:`large`,options:m,allowClear:!0,placeholder:`顶级菜单`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.menuTarget!==t.menuTarget,children:({getFieldValue:e})=>e(`menuTarget`)===`admin`?null:(0,Q.jsx)(X.Item,{name:`isDefault`,label:`新用户默认显示`,valuePropName:`checked`,tooltip:`开启后,新注册用户默认显示此菜单`,children:(0,Q.jsx)(lF,{})})})]})})]})},WHe={normal:`blue`,gift:`green`,promo:`purple`},GHe={normal:`常规`,gift:`赠送`,promo:`促销`},KHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,item:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await D5()).map(e=>({id:e.id,name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonus_credits??e.bonusCredits??0,totalCredits:e.total_credits??e.totalCredits??e.credits,description:e.description,packageType:e.package_type??e.packageType??`normal`,isGift:e.is_gift??e.isGift??!1,isActive:e.is_active??e.isActive??!0,sortOrder:e.sort_order??e.sortOrder??0})))}catch{CP.error(`加载充值套餐失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={name:e.name,credits:e.credits,price:e.price,bonus_credits:e.bonusCredits||0,description:e.description||null,package_type:e.packageType||`normal`,is_gift:e.isGift||!1,is_active:e.isActive??!0,sort_order:e.sortOrder??0};i.item?.id?(await O5({id:i.item.id,...t}),CP.success(`已更新`)):(await O5(t),CP.success(`已添加`)),a({open:!1,item:null}),o.resetFields(),s()}catch{}},l=async e=>{try{await GBe(e),CP.success(`已删除`),s()}catch(e){CP.error(e?.message||`删除失败`)}},u=e=>{a({open:!0,item:e||null}),e?o.setFieldsValue({name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonusCredits,description:e.description,packageType:e.packageType,isGift:e.isGift,isActive:e.isActive,sortOrder:e.sortOrder}):(o.resetFields(),o.setFieldsValue({isActive:!0,sortOrder:0,packageType:`normal`,bonusCredits:0,isGift:!1}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KZ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`充值套餐管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个套餐`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加套餐`})]}),(0,Q.jsx)(vR,{columns:[{title:`套餐名称`,key:`name`,width:160,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),t.description&&(0,Q.jsx)(`div`,{style:{color:`#94a3b8`,fontSize:12},children:t.description})]})},{title:`基础积分`,dataIndex:`credits`,width:100,render:e=>(0,Q.jsx)(Z.Text,{children:e.toLocaleString()})},{title:`赠送积分`,dataIndex:`bonusCredits`,width:100,render:e=>e>0?(0,Q.jsxs)(jR,{color:`green`,children:[`+`,e.toLocaleString()]}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})},{title:`总积分`,key:`total`,width:100,render:(e,t)=>(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:(t.credits+t.bonusCredits).toLocaleString()})},{title:`价格(元)`,dataIndex:`price`,width:100,render:e=>(0,Q.jsxs)(Z.Text,{strong:!0,children:[`¥`,e]})},{title:`类型`,dataIndex:`packageType`,width:80,render:e=>(0,Q.jsx)(jR,{color:WHe[e]||`default`,children:GHe[e]||e})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KZ,{}),i.item?`编辑套餐`:`添加套餐`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,item:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`套餐名称`,rules:[{required:!0,message:`请输入套餐名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:进阶包`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`credits`,label:`基础积分`,rules:[{required:!0,message:`请输入积分`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:1,placeholder:`2000`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`price`,label:`价格(元)`,rules:[{required:!0,message:`请输入价格`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:.01,step:1,placeholder:`168`,size:`large`,style:{width:`100%`}})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`bonusCredits`,label:`赠送积分`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,placeholder:`0`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`packageType`,label:`套餐类型`,initialValue:`normal`,style:{flex:1},children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`normal`,label:`常规`},{value:`gift`,label:`赠送`},{value:`promo`,label:`促销`}]})})]}),(0,Q.jsx)(X.Item,{name:`description`,label:`描述`,children:(0,Q.jsx)(GN,{placeholder:`套餐描述(可选)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`isGift`,label:`是否赠送`,valuePropName:`checked`,initialValue:!1,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{size:`large`,style:{width:`100%`}})})]})]})})]})},qHe={POST:`green`,PUT:`blue`,DELETE:`red`},JHe=()=>{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 KBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载操作日志失败`)}finally{a(!1)}};return(0,C.useEffect)(()=>{c()},[]),(0,Q.jsx)(`div`,{children:(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(TQ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`操作日志`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>c(),children:`刷新`})]}),(0,Q.jsx)(vR,{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)(jR,{color:qHe[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:B5(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}})]})})},YHe=()=>{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]=X.useForm(),[_]=X.useForm(),v=async e=>{a(!0);try{let n=await qBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载应用管理列表失败`)}finally{a(!1)}},y=async()=>{try{let e=await g.validateFields();await JBe({app_id:e.app_id,secret:e.secret,open_type:e.open_type,count:e.count,auth_url:e.auth_url,company:e.company}),CP.success(`创建成功`),l(!1),g.resetFields(),v()}catch(e){CP.error(e?.message||`创建失败`)}},b=async e=>{try{h(await k5(e)),d(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},x=async e=>{try{let t=await k5(e);h(t),_.setFieldsValue({app_id:t.app_id,secret:t.secret,open_type:t.open_type,count:t.max_count,auth_url:t.auth_url,company:t.company}),p(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},S=async()=>{if(m)try{let e=await _.validateFields();await YBe(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}),CP.success(`更新成功`),p(!1),_.resetFields(),v()}catch(e){CP.error(e?.message||`更新失败`)}},w=e=>{TP.confirm({title:`确认删除`,content:`确定要删除这个应用管理吗?`,okText:`删除`,okType:`danger`,cancelText:`取消`,onOk:async()=>{try{await XBe(e),CP.success(`删除成功`),v()}catch(e){CP.error(e?.message||`删除失败`)}}})};return(0,C.useEffect)(()=>{v()},[]),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`应用管理列表`})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>v(),children:`刷新`}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>l(!0),children:`创建`})]})]}),(0,Q.jsx)(vR,{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)(hx,{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)(jR,{color:e===1?`green`:`red`,children:e===1?`正常`:`禁用`})},{title:`授权URL`,dataIndex:`authUrl`,width:200,render:e=>e?(0,Q.jsx)(hx,{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:B5(e)})},{title:`更新时间`,dataIndex:`updatedAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:B5(e)})},{title:`操作`,width:120,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(IN,{}),size:`small`,onClick:()=>b(t.id),children:`详情`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(LR,{}),size:`small`,onClick:()=>x(t.id),children:`更新`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(PR,{}),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)(TP,{title:`创建应用管理`,open:c,onOk:y,onCancel:()=>{l(!1),g.resetFields()},okText:`创建`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:g,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,initialValue:100,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})}),(0,Q.jsx)(TP,{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.app_id]}),(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.open_type]||m.open_type]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`归属公司:`}),` `,m.company||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`授权次数:`}),` `,m.max_count]}),(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.auth_url||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建人:`}),` `,m.create_by]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建时间:`}),` `,B5(m.created_at)]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`更新时间:`}),` `,B5(m.updated_at)]})]})}),(0,Q.jsx)(TP,{title:`更新应用管理`,open:f,onOk:S,onCancel:()=>{p(!1),_.resetFields(),h(null)},okText:`更新`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:_,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})})]})},u7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),d7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},f7={optimizing:{color:`processing`,text:`优化中`,icon:(0,Q.jsx)(fm,{spin:!0})},prompt_optimized:{color:`processing`,text:`待生成`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},p7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},XHe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),m7=e=>!!e&&/^blob:/i.test(e.trim()),h7=e=>{if(!e)return``;let t=String(e).trim();return t?XHe(t)?t:u7?`${u7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},ZHe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,g7=e=>e?B5(e):`-`,QHe=e=>e==null||e===``,_7=e=>{if(!e||m7(e))return!1;try{let t=new URL(h7(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}},v7=e=>e?m7(e)||_7(e)?`invalid`:`checking`:`empty`,y7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},$He=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=y7(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`},b7=(e,t)=>`${t}-${y7(e)||`empty`}`,x7=(e,t=`资源`)=>m7(e)?`本地临时素材已失效`:_7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,S7=({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]}),C7=({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:QHe(t)?`-`:t})]}),eUe=()=>{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)(0),[h,g]=(0,C.useState)(null),[_,v]=(0,C.useState)(d7),[y,b]=(0,C.useState)(!1),x=(0,C.useRef)(null),[S,w]=(0,C.useState)(null),[T,E]=(0,C.useState)(null),D=(0,C.useCallback)(async()=>{a(!0);try{let e=await nVe({userId:d.trim()||void 0,status:l||void 0,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}))),r(e.total||0)}catch{CP.error(`加载记录失败`)}finally{a(!1)}},[l,d,o,c]);(0,C.useEffect)(()=>{D()},[D,p]),(0,C.useEffect)(()=>{if(!h){v(d7);return}let e=(h.references||[]).reduce((e,t,n)=>{let r=y7(t);return e[b7(t,n)]=v7(r),e},{});x.current&&(x.current.pause(),x.current.currentTime=0),b(!1),v({image:v7(h.imageUrl),video:v7(h.videoUrl),videoCover:v7(h.videoCoverUrl),references:e})},[h]);let O=()=>{s(1),m(e=>e+1)},k=(0,C.useCallback)(e=>{g(e)},[]),A=()=>{x.current&&x.current.pause(),b(!1),g(null)},j=e=>{v(t=>({...t,...e}))},M=(e,t)=>{v(n=>({...n,references:{...n.references,[e]:t}}))},N=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(m7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(_7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(h7(e),`_blank`,`noopener,noreferrer`)},P=()=>{if(h?.videoUrl){if(_7(h.videoUrl)){j({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}b(!0),window.setTimeout(()=>{x.current?.play().catch(()=>{b(!1),j({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},F=async(e,t,n)=>{w(e);try{await rVe(e,t,n),CP.success(`状态已更新`),D()}catch(e){CP.error(e?.message||`更新失败`)}finally{w(null)}},I=async()=>{if(T){w(T.record.id);try{await iVe(T.record.id,T.ratio,T.resolution,T.image_size),CP.success(`已提交${T.record.genType===`video`?`视频`:`图片`}生成`),E(null),D()}catch(e){CP.error(e?.message||`生成失败`)}finally{w(null)}}},L=(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:ZHe(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)(jR,{color:`cyan`,children:e||`-`})},{title:`类型`,dataIndex:`genType`,width:90,ellipsis:!0,render:e=>{let t=p7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`提示词`,key:`prompt`,ellipsis:!0,render:(e,t)=>(0,Q.jsx)(hx,{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`?t.duration||t.aspectRatio||t.resolution?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`})},{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=f7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`时间`,key:`time`,width:150,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:g7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,g7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>k(t),children:`详情`}),t.status===`generating`?(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`}):null,t.status===`failed`?(0,Q.jsx)($S,{size:`small`,type:`primary`,danger:!0,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),children:`重试生成`}):null,t.status===`prompt_optimized`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)($S,{size:`small`,type:`primary`,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),style:{background:`#6366f1`,border:`none`},children:[`生成`,t.genType===`video`?`视频`:`图片`]}),(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`})]}):null]})}],[k,S]),R=h?p7[h.genType||``]||{text:h.genType||`-`,color:`default`,icon:null}:null,z=h?f7[h.status]||{color:`default`,text:h.status||`-`,icon:null}:null,B=()=>{if(!h||h.genType!==`image`||h.status!==`completed`)return null;if(!h.imageUrl)return(0,Q.jsx)(S7,{text:`此图片任务暂无结果图片`,minHeight:260});if(_.image===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.imageUrl,`图片`),minHeight:260});let e=h7(h.imageUrl);return(0,Q.jsxs)(`div`,{title:`点击新页面查看图片`,onClick:()=>N(h.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:()=>j({image:`valid`}),onError:()=>j({image:`invalid`}),style:{display:_.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${h.id}-${e}`),_.image===`checking`?(0,Q.jsx)(S7,{text:`图片加载检测中...`,minHeight:260}):null]})},V=()=>{if(!h||y||_.video===`invalid`)return null;let e=h.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:P,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!h.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)(S7,{text:`此视频无封面`,minHeight:340,action:e})});if(_.videoCover===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=h7(h.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:()=>j({videoCover:`valid`}),onError:()=>j({videoCover:`invalid`}),style:{display:_.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${h.id}-cover-${t}`),_.videoCover===`checking`?(0,Q.jsx)(S7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,_.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]})},H=()=>{if(!h||h.genType!==`video`||h.status!==`completed`)return null;if(!h.videoUrl)return(0,Q.jsx)(S7,{text:`此视频任务暂无结果视频`,minHeight:340});if(_.video===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoUrl,`视频`),minHeight:340});let e=h7(h.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:x,src:e,preload:`metadata`,controls:y,onLoadedMetadata:()=>j({video:`valid`}),onCanPlay:()=>j({video:`valid`}),onPlaying:()=>{b(!0),j({video:`valid`})},onPause:()=>b(!1),onEnded:()=>b(!1),onError:()=>{b(!1),j({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!y,pointerEvents:y?`auto`:`none`}},`${h.id}-${e}`),V()]})},U=(e,t)=>{let n=y7(e),r=$He(e),i=b7(e,t),a=_.references[i]||v7(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)(S7,{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)(S7,{text:m7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=h7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>N(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&N(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:()=>M(i,`valid`),onError:()=>M(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:()=>M(i,`valid`),onError:()=>M(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(m8,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`生成记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:200},value:d,onChange:e=>f(e.target.value),onPressEnter:O,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:O,style:{borderRadius:8},children:`搜索`})]})]}),(0,Q.jsx)(vR,{columns:L,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)(TP,{title:(0,Q.jsxs)(IM,{children:[h?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`生成记录详情`})]}),open:!!h,onCancel:A,footer:null,width:900,destroyOnClose:!0,children:h?(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:h.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:h.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)(IM,{size:4,wrap:!0,children:[R?(0,Q.jsx)(jR,{color:R.color,icon:R.icon,children:R.text}):null,z?(0,Q.jsx)(jR,{color:z.color,icon:z.icon,children:z.text}):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:h.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:h.optimizedPrompt||`-`})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`文字积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#f59e0b`},children:h.textCreditsCost||0}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.textTokensUsed||0,` tokens)`]})]})}),(0,Q.jsx)(C7,{label:`${h.genType===`image`?`图片`:`视频`}积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:h.creditsCost||0}),h.genType===`video`&&h.videoTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.videoTokensUsed,` tokens)`]}):null,h.genType===`image`&&h.imageTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.imageTokensUsed,` tokens)`]}):null]})}),(0,Q.jsx)(C7,{label:`总积分`,value:(h.textCreditsCost||0)+(h.creditsCost||0)})]}),h.genType===`video`?h.duration||h.aspectRatio||h.resolution?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`时长`,value:h.duration?`${h.duration}秒`:`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.aspectRatio||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.resolution||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`视频参数待用户配置`})}):null,h.genType===`image`?h.imageSize||h.imageProportion||h.imagePx?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`尺寸`,value:h.imagePx||`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.imageProportion||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.imageSize||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`图片参数待用户配置`})}):null,!h?.references||h.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:h.references.map((e,t)=>U(e,t))})]}),h.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:h.genType===`video`?`生成视频`:`生成图片`}),h.genType===`video`?H():B()]}):null,h.status===`failed`&&h.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:[`错误信息: `,h.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,g7(h.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,g7(h.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[T&&(T.record.genType===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(DX,{})),T&&(T.record.genType===`video`?`生成视频`:`生成图片`)]}),open:!!T,onCancel:()=>E(null),onOk:I,okText:`提交生成`,cancelText:`取消`,confirmLoading:T?S===T.record.id:!1,width:420,children:T?(0,Q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginTop:16},children:T.record.genType===`video`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`时长`}),(0,Q.jsxs)(Z.Text,{strong:!0,children:[T.record.duration||5,`s`]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`画面比例`}),(0,Q.jsx)(Tb,{value:T.ratio,onChange:e=>E(t=>t?{...t,ratio:e}:null),style:{width:`100%`},options:[`16:9`,`4:3`,`1:1`,`3:4`,`9:16`,`21:9`].map(e=>({value:e,label:e}))})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.resolution,onChange:e=>E(t=>t?{...t,resolution:e}:null),style:{width:`100%`},options:[`480p`,`720p`,`1080p`].map(e=>({value:e,label:e}))})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{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:T.record.imagePx||`-`})]}),(0,Q.jsxs)(`div`,{style:{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:T.record.imageProportion||`-`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.image_size,onChange:e=>E(t=>t?{...t,image_size:e}:null),style:{width:`100%`},options:[`2K`,`4K`].map(e=>({value:e,label:e}))})]})]})}):null})]})},{RangePicker:tUe}=gM,w7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),T7=20,E7=e=>e&&(e.name||e.modelName||e.id)||null,D7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},O7={pending:{color:`default`,text:`待处理`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},k7={timeout:`任务超时`,queued:`已入队`,preparing:`准备中`,creating_provider_task:`创建任务中`,waiting_remote:`等待生成`,result_ready:`结果就绪`,downloading:`下载中`,done:`完成`,download_failed:`下载失败`,polling:`轮询中`,failed:`失败`},A7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},nUe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),j7=e=>!!e&&/^blob:/i.test(e.trim()),M7=e=>{if(!e)return``;let t=String(e).trim();return t?nUe(t)?t:w7?`${w7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},rUe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,N7=e=>e?B5(e):`-`,iUe=e=>e==null||e===``,P7=e=>{if(!e||j7(e))return!1;try{let t=new URL(M7(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}},F7=e=>e?j7(e)||P7(e)?`invalid`:`checking`:`empty`,I7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},L7=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=I7(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`},R7=(e,t)=>`${t}-${I7(e)||`empty`}`,z7=(e,t=`资源`)=>j7(e)?`本地临时素材已失效`:P7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,B7=({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]}),V7=({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:iUe(t)?`-`:t})]}),H7=()=>(0,tC.default)().startOf(`day`),U7=()=>(0,tC.default)().endOf(`day`),aUe=()=>{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)([H7(),U7()]),[D,O]=(0,C.useState)([H7(),U7()]),[k,A]=(0,C.useState)(0),[j,M]=(0,C.useState)(null),[N,P]=(0,C.useState)(D7),[F,I]=(0,C.useState)(!1),L=(0,C.useRef)(null),[R,z]=(0,C.useState)(null),B=(0,C.useCallback)(async()=>{a(!0);try{let e=await oVe({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:T7});t(e.items||[]),r(e.total||0)}catch(e){CP.error(e?.message||`加载创作记录失败`)}finally{a(!1)}},[u,c,o,v,b,S,D]);(0,C.useEffect)(()=>{B()},[B,k]),(0,C.useEffect)(()=>{if(!j){P(D7);return}let e=(j.mediaReferences||[]).reduce((e,t,n)=>{let r=I7(t);return e[R7(t,n)]=F7(r),e},{});L.current&&(L.current.pause(),L.current.currentTime=0),I(!1),P({image:F7(j.imageUrl),video:F7(j.videoUrl),videoCover:F7(j.videoCoverUrl),references:e})},[j]);let V=()=>{s(1),y(m.trim()),x(g.trim()),w(f),O(T),A(e=>e+1)},H=()=>{l(``),d(``),p(``),h(``),_(``),y(``),x(``),w(``);let e=[H7(),U7()];E(e),O(e),s(1),A(e=>e+1)},U=(0,C.useCallback)(e=>{M(e)},[]),W=()=>{L.current&&L.current.pause(),I(!1),M(null)},ee=e=>{P(t=>({...t,...e}))},te=(e,t)=>{P(n=>({...n,references:{...n.references,[e]:t}}))},ne=()=>{if(j?.videoUrl){if(P7(j.videoUrl)){ee({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}I(!0),window.setTimeout(()=>{L.current?.play().catch(()=>{I(!1),ee({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},re=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(M7(e),`_blank`,`noopener,noreferrer`)},ie=(e,t,n)=>{if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`链接已超时,请刷新列表或重新搜索后再查看`);return}z({url:M7(e),type:t,title:n})},ae=()=>z(null),G=(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:rUe(t.userId)})]})},{title:`类型`,dataIndex:`genType`,width:90,render:e=>{let t=A7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`引擎`,key:`engine`,width:160,render:(e,t)=>{let n=E7(t.engineSnapshot);return(0,Q.jsx)(hx,{title:t.engineId||`未知引擎`,placement:`topLeft`,children:(0,Q.jsx)(jR,{icon:(0,Q.jsx)(W2,{}),color:`cyan`,children:n||t.engineId||`-`})})}},{title:`附件`,key:`references`,width:130,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)(IM,{size:4,wrap:!0,children:n.map((e,t)=>{let n=I7(e),r=L7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)($S,{size:`small`,icon:r===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(DX,{}),type:`link`,style:{padding:0,fontSize:12},onClick:e=>{e.stopPropagation(),ie(n,r===`video`?`video`:`image`,i)},children:i},t):null})})}},{title:`结果`,key:`result`,width:90,render:(e,t)=>t.status===`completed`?t.genType===`video`&&t.videoUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(C0,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),ie(t.videoUrl,`video`,`生成视频`)},children:`看视频`}):t.genType===`image`&&t.imageUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(DX,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),ie(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)(hx,{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)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`无参数`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{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=O7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`阶段`,dataIndex:`pipelineStage`,width:120,render:e=>(0,Q.jsx)(jR,{color:`blue`,children:k7[e]||e||`-`})},{title:`时间`,key:`time`,width:170,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:N7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,N7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:90,fixed:`right`,render:(e,t)=>(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>U(t),children:`详情`})}],[U]),oe=j?A7[j.genType]||{text:j.genType||`-`,color:`default`,icon:null}:null,K=j?O7[j.status]||{color:`default`,text:j.status||`-`,icon:null}:null,se=()=>{if(!j||j.genType!==`image`||j.status!==`completed`)return null;if(!j.imageUrl)return(0,Q.jsx)(B7,{text:`此图片任务暂无结果图片`,minHeight:260});if(N.image===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.imageUrl,`图片`),minHeight:260});let e=M7(j.imageUrl);return(0,Q.jsxs)(`div`,{style:{position:`relative`,width:`100%`,minHeight:260,borderRadius:12,background:`#f8f9fc`,border:`1px solid #e2e8f0`,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:[(0,Q.jsx)(`img`,{src:e,alt:`生成图片`,onLoad:()=>ee({image:`valid`}),onError:()=>ee({image:`invalid`}),style:{display:N.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${j.id}-${e}`),N.image===`checking`?(0,Q.jsx)(B7,{text:`图片加载检测中...`,minHeight:260}):null]})},ce=()=>{if(!j||F||N.video===`invalid`)return null;let e=j.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:ne,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!j.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)(B7,{text:`此视频无封面`,minHeight:340,action:e})});if(N.videoCover===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=M7(j.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:()=>ee({videoCover:`valid`}),onError:()=>ee({videoCover:`invalid`}),style:{display:N.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${j.id}-cover-${t}`),N.videoCover===`checking`?(0,Q.jsx)(B7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,N.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]})},le=()=>{if(!j||j.genType!==`video`||j.status!==`completed`)return null;if(!j.videoUrl)return(0,Q.jsx)(B7,{text:`此视频任务暂无结果视频`,minHeight:340});if(N.video===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoUrl,`视频`),minHeight:340});let e=M7(j.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:L,src:e,preload:`metadata`,controls:F,onLoadedMetadata:()=>ee({video:`valid`}),onCanPlay:()=>ee({video:`valid`}),onPlaying:()=>{I(!0),ee({video:`valid`})},onPause:()=>I(!1),onEnded:()=>I(!1),onError:()=>{I(!1),ee({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!F,pointerEvents:F?`auto`:`none`}},`${j.id}-${e}`),ce()]})},ue=(e,t)=>{let n=I7(e),r=L7(e),i=R7(e,t),a=N.references[i]||F7(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)(B7,{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)(B7,{text:j7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=M7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>re(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&re(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:()=>te(i,`valid`),onError:()=>te(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:()=>te(i,`valid`),onError:()=>te(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`创作记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(Tb,{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)(Tb,{allowClear:!0,showSearch:!0,placeholder:`引擎筛选`,value:f||void 0,style:{width:180},onChange:e=>{p(e||``),s(1),w(e||``)},optionFilterProp:`label`,options:Array.from(new Map(e.filter(e=>e.engineId).map(e=>[e.engineId,{value:e.engineId,label:E7(e.engineSnapshot)||e.engineId}])).values())}),(0,Q.jsx)(tUe,{value:T,onChange:e=>{e&&e[0]&&e[1]?E([e[0].startOf(`day`),e[1].endOf(`day`)]):E(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:m,onChange:e=>h(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)(GN,{placeholder:`用户名搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:g,onChange:e=>_(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:V,style:{borderRadius:8},children:`搜索`}),(0,Q.jsx)($S,{onClick:H,style:{borderRadius:8},children:`重置`})]})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:i,columns:G,dataSource:e,scroll:{x:1650},pagination:{current:o,pageSize:T7,total:n,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:e=>s(e)}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[j?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`创作记录详情`})]}),open:!!j,onCancel:W,footer:null,width:900,destroyOnClose:!0,children:j?(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:[oe?(0,Q.jsx)(jR,{color:oe.color,icon:oe.icon,children:oe.text}):null,K?(0,Q.jsx)(jR,{color:K.color,icon:K.icon,children:K.text}):null,j.pipelineStage?(0,Q.jsx)(jR,{color:`blue`,children:k7[j.pipelineStage]||j.pipelineStage}):null]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`用户名称`,value:j.userName||`未知用户`}),(0,Q.jsx)(V7,{label:`用户ID`,value:j.userId||`-`}),(0,Q.jsx)(V7,{label:`任务ID`,value:j.id})]}),(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:j.originalPrompt||`-`})]}),j.genType===`video`?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`时长`,value:j.duration?`${j.duration}秒`:`-`}),(0,Q.jsx)(V7,{label:`画面比例`,value:j.aspectRatio||`-`}),(0,Q.jsx)(V7,{label:`分辨率`,value:j.resolution||`-`})]}):(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`图片档位`,value:j.imageSize||`-`}),(0,Q.jsx)(V7,{label:`图片比例`,value:j.imageProportion||`-`}),(0,Q.jsx)(V7,{label:`像素尺寸`,value:j.imagePx||`-`})]}),j.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)(V7,{label:`引擎名称`,value:j.engineSnapshot.name||`-`}),(0,Q.jsx)(V7,{label:`服务商`,value:j.engineSnapshot.provider||`-`}),(0,Q.jsx)(V7,{label:`模型`,value:j.engineSnapshot.modelName||`-`}),(0,Q.jsx)(V7,{label:`引擎ID`,value:j.engineSnapshot.id||j.engineId||`-`})]})]}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`总积分`,value:(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:j.creditsCost||0})}),(0,Q.jsx)(V7,{label:`文字积分`,value:`${j.textCreditsCost||0} (${j.textTokensUsed||0} tokens)`}),(0,Q.jsx)(V7,{label:`图片 tokens`,value:j.imageTokensUsed??0}),(0,Q.jsx)(V7,{label:`视频 tokens`,value:j.videoTokensUsed??0})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`第三方任务ID`,value:j.providerTaskId||j.seedanceTaskId||`-`}),(0,Q.jsx)(V7,{label:`轮询次数`,value:j.pollCount??0}),(0,Q.jsx)(V7,{label:`重试次数`,value:j.retryCount??0})]}),!j?.mediaReferences||j.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:j.mediaReferences.map((e,t)=>ue(e,t))})]}),j.mediaReferences&&j.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)(IM,{size:8,wrap:!0,children:j.mediaReferences.map((e,t)=>{let n=I7(e),r=L7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)($S,{size:`small`,icon:r===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(j$,{}),onClick:()=>ie(n,r===`video`?`video`:`image`,i),children:i},t):null})})]}):null,j.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:6},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`},children:j.genType===`video`?`生成视频`:`生成图片`}),j.genType===`video`&&j.videoUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(C0,{}),onClick:()=>ie(j.videoUrl,`video`,`生成视频`),style:{padding:0},children:`弹窗播放`}):null,j.genType===`image`&&j.imageUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(DX,{}),onClick:()=>ie(j.imageUrl,`image`,`生成图片`),style:{padding:0},children:`弹窗查看`}):null]}),j.genType===`video`?le():se()]}):null,j.status===`failed`&&j.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:[`错误信息: `,j.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,N7(j.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,N7(j.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:R?.title||`资源预览`,open:!!R,onCancel:ae,footer:null,width:R?.type===`video`?800:600,destroyOnHidden:!0,children:R?R.type===`video`?(0,Q.jsx)(`video`,{src:R.url,controls:!0,autoPlay:!0,style:{width:`100%`,maxHeight:600,background:`#000`,borderRadius:8}},R.url):(0,Q.jsx)(`img`,{src:R.url,alt:R.title,style:{width:`100%`,maxHeight:600,objectFit:`contain`,borderRadius:8}}):null})]})},W7=20,oUe=[{value:`pending`,label:`已创建`},{value:`waiting_user`,label:`等待用户操作`},{value:`processing`,label:`处理中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`},{value:`cancelled`,label:`已取消`}],sUe={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:`已取消`}},cUe={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},G7=e=>e?B5(e):`-`,K7=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,lUe=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=sUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},uUe=()=>{let e=Ze(),[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 sVe({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:W7});n(e.items||[]),i(e.total||0)}catch(e){CP.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.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`爆款开头复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看任务列表、素材、步骤详情和生成结果。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>k(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`任务状态`,style:{width:160},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:oUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/项目名/核心点`,style:{width:260},value:d,onChange:e=>f(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:p,onChange:e=>m(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:h,onChange:e=>g(e.target.value),onPressEnter:j}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:_,onChange:v,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:j,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(null),b(``),S(``),T(``),D(null),c(1),k(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:W7,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1380},columns:[{title:`项目ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:K7(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:K7(t.userId)})]})},{title:`项目信息`,width:260,render:(e,t)=>(0,Q.jsxs)(IM,{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)(lUe,{status:e})},{title:`当前步骤`,dataIndex:`currentStepCode`,width:140,render:e=>cUe[e]||e||`-`},{title:`图片结果`,dataIndex:`finalImageUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`视频结果`,dataIndex:`finalVideoUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`错误信息`,dataIndex:`errorMessage`,width:220,ellipsis:!0,render:e=>e||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:G7},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:G7},{title:`操作`,fixed:`right`,width:110,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/hot-opening-replications/${n.id}`),children:`详情`})}]})]})})})},q7=({value:e,maxHeight:t=420})=>e==null||e===``?(0,Q.jsx)(Yy,{image:Yy.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)}),dUe=({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)(q7,{value:e})}),t!==void 0&&o.push({key:`output`,label:i,children:(0,Q.jsx)(q7,{value:t})}),n!==void 0&&o.push({key:`raw`,label:a,children:(0,Q.jsx)(q7,{value:n})}),o.length?(0,Q.jsx)(Wh,{size:`small`,style:{marginTop:12},items:o}):null},fUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``);function pUe(e){if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${fUe}${t.startsWith(`/`)?t:`/${t}`}`:``}var J7=({url:e,type:t,height:n=260,emptyDescription:r=`暂无资源`,errorDescription:i=`资源加载失败,可能文件不存在、签名过期或访问权限受限。`})=>{let a=(0,C.useMemo)(()=>pUe(e),[e]),[o,s]=(0,C.useState)(!1);(0,C.useEffect)(()=>{s(!1)},[a]);let c=a?(0,Q.jsxs)(IM,{wrap:!0,style:{marginTop:8},children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(oz,{}),onClick:async()=>{if(a)try{await navigator.clipboard.writeText(a),CP.success(`资源地址已复制`)}catch{CP.error(`复制失败,请手动复制`)}},children:`复制地址`}),(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(j$,{}),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)(cf,{type:`warning`,showIcon:!0,message:`资源预览失败`,description:i,style:{marginBottom:8}}):null,t===`image`?(0,Q.jsx)(jN,{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)(Yy,{image:Yy.PRESENTED_IMAGE_SIMPLE,description:r})})})},Y7={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`},waiting_remote:{text:`等待远端结果`,color:`processing`},polling:{text:`轮询远端结果`,color:`processing`},result_ready:{text:`结果已就绪`,color:`success`},downloading:{text:`下载中`,color:`processing`},done:{text:`已完成`,color:`success`},download_failed:{text:`下载失败`,color:`error`},retry_waiting:{text:`等待重试`,color:`orange`},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`}},X7={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},Z7={hot_opening_replicate:`爆款开头复刻`,shot_replicate:`拆镜复刻`},Q7={ai_suggestion:{text:`AI 建议`,color:`purple`},custom:{text:`自定义`,color:`cyan`},original:{text:`原视频`,color:`blue`}};function $7(e){return e?Z7[e]||e:`-`}function e9(e){return e?X7[e]||e:`-`}function mUe(e){return e?Y7[e]?.text||X7[e]||Z7[e]||Q7[e]?.text||e:`-`}function hUe(e){return e?Y7[e]?.color||Q7[e]?.color||`blue`:`default`}var t9=({status:e,tooltipRaw:t=!0})=>{if(e==null||e===``)return(0,Q.jsx)(jR,{children:`-`});let n=String(e),r=mUe(n),i=(0,Q.jsx)(jR,{color:hUe(n),children:r});return!t||r===n?i:(0,Q.jsx)(hx,{title:n,children:i})};function n9(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function r9(e,...t){for(let n of t){let t=e[n];if(t!=null&&String(t).trim()!==``)return String(t)}return``}function i9(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 gUe(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 a9(e){if(!n9(e))return null;let t=r9(e,`key`);return t?{key:t,label:r9(e,`label`)||t,type:r9(e,`type`)||void 0,enabled:i9(e,!0,`enabled`),editable:i9(e,!0,`editable`),maxLength:gUe(e,`maxLength`,`max_length`)}:null}function o9(e){if(!n9(e))return null;let t=e.data;return n9(t)?t:Array.isArray(e.sections)?e:null}function _Ue(e){return!!o9(e)}function vUe(e){let t=o9(e);return(Array.isArray(t?.sections)?t.sections:[]).map(e=>{let t=a9(e);if(!t||!n9(e))return null;let n=Array.isArray(e.children)?e.children.map(a9).filter(Boolean):[],r=Array.isArray(e.itemFields)?e.itemFields.map(a9).filter(Boolean):Array.isArray(e.item_fields)?e.item_fields.map(a9).filter(Boolean):[];return{...t,contentKey:r9(e,`contentKey`,`content_key`)||void 0,children:n,itemFields:r}}).filter(e=>!!e&&e.enabled)}function yUe(e){return n9(e)?Object.entries(e).filter(([e])=>![`schemaVersion`,`schemaUsage`,`schema_version`,`schema_usage`].includes(e)).map(([e,t])=>Array.isArray(t)&&t.every(n9)?{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:[]}:n9(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 s9=e=>!!e&&typeof e==`object`&&!Array.isArray(e),c9=e=>typeof e==`string`&&e.length>80,l9=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)(q7,{value:e,maxHeight:220}),u9=e=>e?(0,Q.jsx)(jR,{color:`processing`,children:`可编辑`}):(0,Q.jsx)(jR,{color:`default`,children:`只读`}),d9=(e,t)=>e[t],bUe=(e,t)=>{let n=d9(e,t.key);if(!s9(n))return(0,Q.jsx)(q7,{value:n??{},maxHeight:220});let r=t.children.filter(e=>e.enabled);return r.length?(0,Q.jsx)(bM,{size:`small`,column:2,bordered:!0,children:r.map(e=>(0,Q.jsx)(bM.Item,{label:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),span:c9(n[e.key])||s9(n[e.key])||Array.isArray(n[e.key])?2:1,children:l9(n[e.key])},e.key))}):(0,Q.jsx)(q7,{value:n,maxHeight:220})},xUe=(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}))},SUe=(e,t)=>{let n=d9(e,t.key);if(!Array.isArray(n)||!n.every(s9))return(0,Q.jsx)(q7,{value:n??[],maxHeight:260});let r=n,i=xUe(t,r);return(0,Q.jsx)(vR,{size:`small`,rowKey:(e,n)=>`${t.key}-${n}`,columns:i.map(e=>({title:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),dataIndex:e.key,key:e.key,width:c9(r.find(t=>t[e.key])?.[e.key])?320:160,render:e=>l9(e)})),dataSource:r,pagination:!1,scroll:{x:Math.max(900,i.length*180)},tableLayout:`fixed`})},CUe=(e,t)=>l9(d9(e,t.key)),wUe=({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)(Yy,{description:`暂无视频提词 schema`});let s=o?e:{},c=_Ue(n),l=(c?vUe(n):yUe(s)).filter(e=>e.key in s).map(e=>({key:e.key,label:(0,Q.jsxs)(IM,{size:8,wrap:!0,children:[(0,Q.jsx)(`span`,{children:e.label}),u9(e.editable),c?null:(0,Q.jsx)(jR,{color:`warning`,children:`管理后台兜底展示`})]}),children:e.type===`object`?bUe(s,e):e.type===`flow`?SUe(s,e):CUe(s,e)}));return(0,Q.jsxs)(IM,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,Q.jsx)(VA,{size:`small`,title:`Schema 配置来源`,children:(0,Q.jsxs)(bM,{size:`small`,column:3,bordered:!0,children:[(0,Q.jsx)(bM.Item,{label:`来源`,children:r||n?.source||(c?`-`:`viewer_fallback`)}),(0,Q.jsx)(bM.Item,{label:`版本`,children:i||n?.version||`-`}),(0,Q.jsx)(bM.Item,{label:`历史兜底`,children:a||!c?(0,Q.jsx)(jR,{color:`warning`,children:`是`}):(0,Q.jsx)(jR,{color:`success`,children:`否`})})]})}),t?(0,Q.jsx)(VA,{size:`small`,title:`最终视频提示词`,children:(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:t})}):null,l.length?(0,Q.jsx)(Wh,{size:`small`,items:l}):o?(0,Q.jsx)(VA,{size:`small`,title:`视频提词 Schema`,children:(0,Q.jsx)(q7,{value:s,maxHeight:360})}):null,o?(0,Q.jsx)(Wh,{size:`small`,items:[{key:`raw_schema`,label:`原始 JSON / 历史脏字段排查`,children:(0,Q.jsx)(q7,{value:s,maxHeight:420})}]}):null]})},TUe=[`material_input`,`image_prompt_optimize`,`image_generate`,`video_prompt_optimize`,`video_generate`],EUe={material_input:`参考素材、项目名称和核心内容点`,image_prompt_optimize:`图片 AI 提词优化结果`,image_generate:`图片引擎、生成参数和结果图`,video_prompt_optimize:`视频 JSON schema、动作流程和最终提词`,video_generate:`视频引擎、生成参数、封面和结果视频`},f9=e=>e?B5(e):`-`,p9=e=>e?e.length>18?`${e.slice(0,10)}...${e.slice(-4)}`:e:`-`,DUe=({text:e=`-`})=>(0,Q.jsx)(Z.Text,{type:`secondary`,children:e}),m9=({step:e})=>e?(0,Q.jsx)(dUe,{input:e.input,output:e.output}):null,h9=({index:e,stepCode:t,step:n,current:r})=>(0,Q.jsxs)(IM,{wrap:!0,size:8,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`第${e}步:${e9(t)}`}),(0,Q.jsx)(t9,{status:n?.status||`not_started`}),r?(0,Q.jsx)(jR,{color:`blue`,children:`当前步骤`}):null,(0,Q.jsx)(Z.Text,{type:`secondary`,children:EUe[t]||t}),n?.updatedAt?(0,Q.jsxs)(Z.Text,{type:`secondary`,children:[`更新时间:`,f9(n.updatedAt)]}):null,n?.chatTaskId?(0,Q.jsx)(hx,{title:n.chatTaskId,children:(0,Q.jsxs)(jR,{children:[`Chat:`,p9(n.chatTaskId)]})}):null]}),OUe=(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)},g9=(e,t=`错误信息`)=>e?(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:t,description:e,style:{marginTop:12,marginBottom:12}}):null,kUe=(e,t=`暂无提词`)=>e?(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:e}):(0,Q.jsx)(DUe,{text:t}),_9=({moduleType:e=`shot_replicate`})=>{let{projectId:t}=tt(),n=Ze(),[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(!1),s=(0,C.useCallback)(async()=>{if(t){o(!0);try{i(e===`hot_opening_replicate`?await cVe(t):await pVe(t))}catch(e){CP.error(e?.message||`加载复刻项目详情失败`)}finally{o(!1)}}},[e,t]);(0,C.useEffect)(()=>{s()},[s]);let c=(0,C.useMemo)(()=>{let e={};return(r?.steps||[]).forEach(t=>{e[t.stepCode]=t}),e},[r]),l=r?.module||e,u=$7(l),d=(0,C.useMemo)(()=>TUe.map(e=>{let t=c[e],n=`wait`;return t?.status===`completed`?n=`finish`:t?.status===`processing`?n=`process`:t?.status===`failed`&&(n=`error`),{title:e9(e),description:t?(0,Q.jsx)(t9,{status:t.status}):`未创建`,status:n}}),[c]),f=(0,C.useMemo)(()=>OUe(r,c),[r,c]);if(a&&!r)return(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})});if(!r)return(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到复刻项目详情`})});let p=c.material_input,m=c.image_prompt_optimize,h=c.image_generate,g=c.video_prompt_optimize,_=c.video_generate,v=r.imageGeneration?.resultImageUrl||r.finalImageUrl,y=r.videoGeneration?.resultVideoCoverUrl||r.finalVideoCoverUrl,b=r.videoGeneration?.resultVideoUrl||r.finalVideoUrl,x=[{key:`material_input`,label:(0,Q.jsx)(h9,{index:1,stepCode:`material_input`,step:p,current:r.currentStepCode===`material_input`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`素材步骤ID`,children:r.material?.materialStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`参考素材项目名`,children:r.material?.sourceProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成项目名称`,children:r.material?.targetProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`核心内容点`,span:2,children:r.material?.coreContentPoint||`-`})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`素材视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:r.material?.materialVideoUrl,emptyDescription:`暂无素材视频`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`素材图片`]}),children:(0,Q.jsx)(J7,{type:`image`,url:r.material?.materialImageUrl,emptyDescription:`暂无素材图片`})})]}),g9(p?.errorMessage),(0,Q.jsx)(m9,{step:p})]})},{key:`image_prompt_optimize`,label:(0,Q.jsx)(h9,{index:2,stepCode:`image_prompt_optimize`,step:m,current:r.currentStepCode===`image_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.imageGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:m?.status||r.imageGeneration?.status})}),(0,Q.jsx)(bM.Item,{label:`图片提示词`,span:2,children:kUe(r.imageGeneration?.prompt,`暂无图片提示词`)})]}),g9(m?.errorMessage||r.imageGeneration?.errorMessage),(0,Q.jsx)(m9,{step:m})]})},{key:`image_generate`,label:(0,Q.jsx)(h9,{index:3,stepCode:`image_generate`,step:h,current:r.currentStepCode===`image_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.imageGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.imageGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.imageGeneration?.status||h?.status})}),(0,Q.jsx)(bM.Item,{label:`图片引擎ID`,children:r.imageGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`图片引擎名称`,children:r.imageGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.imageGeneration?.params||{},maxHeight:160})})]}),g9(r.imageGeneration?.errorMessage||h?.errorMessage),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`图片结果`]}),children:(0,Q.jsx)(J7,{type:`image`,url:v,height:360,emptyDescription:h?.status===`failed`||r.imageGeneration?.errorMessage?`图片生成失败,未返回图片地址`:`暂无图片结果`,errorDescription:`图片资源加载失败,可能图片文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(m9,{step:h})]})},{key:`video_prompt_optimize`,label:(0,Q.jsx)(h9,{index:4,stepCode:`video_prompt_optimize`,step:g,current:r.currentStepCode===`video_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.videoGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:g?.status})}),(0,Q.jsx)(bM.Item,{label:`提词参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.promptParams||{},maxHeight:160})})]}),g9(g?.errorMessage||r.videoGeneration?.errorMessage),(0,Q.jsx)(wUe,{schema:r.videoGeneration?.promptSchema,finalPrompt:r.videoGeneration?.finalPrompt,schemaConfigSnapshot:r.videoGeneration?.schemaConfigSnapshot,schemaConfigSource:r.videoGeneration?.schemaConfigSource,schemaConfigVersion:r.videoGeneration?.schemaConfigVersion,schemaConfigIsFallback:r.videoGeneration?.schemaConfigIsFallback}),(0,Q.jsx)(m9,{step:g})]})},{key:`video_generate`,label:(0,Q.jsx)(h9,{index:5,stepCode:`video_generate`,step:_,current:r.currentStepCode===`video_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.videoGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.videoGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.videoGeneration?.status||_?.status})}),(0,Q.jsx)(bM.Item,{label:`视频引擎ID`,children:r.videoGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`视频引擎名称`,children:r.videoGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.params||{},maxHeight:160})})]}),g9(r.videoGeneration?.errorMessage||_?.errorMessage),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`视频封面`]}),children:(0,Q.jsx)(J7,{type:`image`,url:y,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回封面`:`暂无视频封面`,errorDescription:`视频封面加载失败,可能文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m8,{}),`最终视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:b,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回视频地址`:`暂无最终视频`,errorDescription:`视频资源加载失败,可能文件不存在、签名过期或访问权限受限。`})})]}),(0,Q.jsx)(m9,{step:_})]})}];return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>n(-1),children:`返回`}),(0,Q.jsxs)(Z.Title,{level:3,style:{margin:0},children:[u,`项目详情`]}),(0,Q.jsx)(t9,{status:r.status}),r.module&&r.module!==e?(0,Q.jsxs)(jR,{color:`gold`,children:[`接口模块:`,$7(r.module)]}):null]}),(0,Q.jsx)($S,{onClick:s,loading:a,children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`基础信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`项目ID`,children:r.id}),(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:r.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:r.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:r.title||`-`}),(0,Q.jsx)(bM.Item,{label:`当前步骤`,children:(0,Q.jsx)(hx,{title:r.currentStepCode||``,children:e9(r.currentStepCode)})}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.status})}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:f9(r.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:f9(r.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`完成时间`,children:f9(r.completedAt)}),r.errorMessage?(0,Q.jsx)(bM.Item,{label:`错误信息`,span:3,children:(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:r.errorMessage})}):null]})}),(0,Q.jsx)(VA,{title:`步骤进度`,children:(0,Q.jsx)(Qme,{items:d})}),(0,Q.jsx)(VA,{title:`最终结果预览`,children:(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:`最终图片`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalImageUrl||r.imageGeneration?.resultImageUrl,height:220,emptyDescription:`暂无最终图片`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频封面`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalVideoCoverUrl||r.videoGeneration?.resultVideoCoverUrl,height:220,emptyDescription:`暂无最终视频封面`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频`,children:(0,Q.jsx)(J7,{type:`video`,url:r.finalVideoUrl||r.videoGeneration?.resultVideoUrl,height:220,emptyDescription:`暂无最终视频`})})]})}),(0,Q.jsx)(Wh,{defaultActiveKey:f,items:x}),(0,Q.jsx)(Wh,{items:[{key:`steps-table`,label:`完整步骤列表`,children:(0,Q.jsx)(vR,{rowKey:`id`,size:`small`,pagination:!1,dataSource:r.steps||[],scroll:{x:1100},columns:[{title:`序号`,dataIndex:`stepIndex`,width:70},{title:`步骤`,dataIndex:`stepCode`,width:160,render:e=>(0,Q.jsx)(hx,{title:e,children:e9(e)})},{title:`状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(t9,{status:e})},{title:`版本`,dataIndex:`version`,width:70},{title:`当前有效`,dataIndex:`isCurrent`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`是`}):(0,Q.jsx)(jR,{children:`否`})},{title:`Chat任务`,dataIndex:`chatTaskId`,width:160,render:e=>(0,Q.jsx)(hx,{title:e||``,children:p9(e)})},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:f9},{title:`完成时间`,dataIndex:`completedAt`,width:170,render:f9},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0,render:e=>e||`-`}]})},{key:`raw-detail`,label:`完整详情原始 JSON`,children:(0,Q.jsx)(q7,{value:r,maxHeight:520})}]})]})})},AUe=()=>(0,Q.jsx)(_9,{moduleType:`hot_opening_replicate`}),v9=20,jUe=[{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:`失败`}],MUe=[{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],NUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],PUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`}},y9=e=>e?B5(e):`-`,b9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,x9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=PUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},FUe=()=>{let e=Ze(),[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 lVe({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:v9});n(e.items||[]),i(e.total||0)}catch(e){CP.error(e?.message||`加载拆镜复刻任务失败`)}finally{o(!1)}},[d,s,A,w,E,O,p,l]);(0,C.useEffect)(()=>{P()},[P,M]);let F=()=>{T(h.trim()),D(_.trim()),k(y.trim()),j(x),c(1)};return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`拆镜复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看拆镜总任务、AI 分析结果、切片列表和关联复刻项目。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>N(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`总任务状态`,style:{width:150},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:jUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:d||void 0,onChange:e=>{f(e||``),c(1)},options:MUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`拆镜状态`,style:{width:140},value:p||void 0,onChange:e=>{m(e||``),c(1)},options:NUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/内容/分类/受众`,style:{width:260},value:h,onChange:e=>g(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:_,onChange:e=>v(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:y,onChange:e=>b(e.target.value),onPressEnter:F}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:x,onChange:S,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:F,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(``),b(``),S(null),T(``),D(``),k(``),j(null),c(1),N(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:v9,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1500},columns:[{title:`任务集ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:b9(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:b9(t.userId)})]})},{title:`任务信息`,width:300,render:(e,t)=>(0,Q.jsxs)(IM,{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)(x9,{status:e})},{title:`分析状态`,dataIndex:`analysisStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`拆镜状态`,dataIndex:`splitStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`切片进度`,width:180,render:(e,t)=>{let n=t.segmentCount||0,r=t.completedSegmentCount||0;return(0,Q.jsx)(zP,{size:`small`,percent:n?Math.round(r/n*100):0,format:()=>`${r}/${n}`})}},{title:`失败片段`,dataIndex:`failedSegmentCount`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`error`,children:e}):(0,Q.jsx)(jR,{children:`0`})},{title:`视频时长`,dataIndex:`videoDurationSeconds`,width:100,render:e=>`${Number(e||0).toFixed(1)}s`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:y9},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:y9},{title:`操作`,fixed:`right`,width:120,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/shot-replications/task-sets/${n.id}`),children:`查看切片`})}]})]})})})},IUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),S9=20,LUe=[{value:`ai_suggestion`,label:`AI 建议`},{value:`custom`,label:`自定义`}],RUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],zUe=[{value:`not_required`,label:`无需分析`},{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],BUe=[{value:`not_started`,label:`未复刻`},{value:`project_created`,label:`已创建项目`},{value:`processing`,label:`复刻中`},{value:`completed`,label:`复刻完成`},{value:`failed`,label:`复刻失败`}],VUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`},not_required:{color:`default`,text:`无需分析`},not_started:{color:`default`,text:`未复刻`},project_created:{color:`processing`,text:`已创建项目`}},HUe=e=>{if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${IUe}${t.startsWith(`/`)?t:`/${t}`}`:``},C9=e=>e?B5(e):`-`,w9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,T9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=VUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},E9=({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:HUe(e),controls:!0,preload:`metadata`,style:{width:`100%`,maxHeight:t,borderRadius:12,background:`#0f172a`}}):(0,Q.jsx)(Yy,{description:`暂无视频`,image:Yy.PRESENTED_IMAGE_SIMPLE}),UUe=({items:e=[]})=>(0,Q.jsx)(vR,{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}]}),WUe=()=>{let{taskSetId:e}=tt(),t=Ze(),[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 uVe(e))}catch(e){CP.error(e?.message||`加载拆镜任务详情失败`)}finally{d(!1)}}},[e]),A=(0,C.useCallback)(async()=>{if(e){p(!0);try{let t=await dVe(e,{sourceMode:g||void 0,splitStatus:v||void 0,analysisStatus:b||void 0,replicateStatus:S||void 0,page:c,pageSize:S9});a(t.items||[]),s(t.total||0)}catch(e){CP.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=async e=>{E(!0),O(null);try{O(await fVe(e))}catch(e){CP.error(e?.message||`加载片段详情失败`)}};return u&&!n?(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})}):n?(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>t(`/shot-replications`),children:`返回列表`}),(0,Q.jsx)(Z.Title,{level:3,style:{margin:0},children:`拆镜任务详情`}),(0,Q.jsx)(T9,{status:n.status})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>h(e=>e+1),children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`总任务信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`任务集ID`,children:n.id}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:n.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:n.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:n.title||`-`}),(0,Q.jsxs)(bM.Item,{label:`视频时长`,children:[Number(n.videoDurationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`总状态`,children:(0,Q.jsx)(T9,{status:n.status})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:n.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`拆镜状态`,children:(0,Q.jsx)(T9,{status:n.splitStatus})}),(0,Q.jsxs)(bM.Item,{label:`片段数量`,children:[n.completedSegmentCount,`/`,n.segmentCount,`,失败 `,n.failedSegmentCount]}),(0,Q.jsx)(bM.Item,{label:`原视频分类`,children:n.originalVideoCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:C9(n.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:C9(n.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`原视频内容`,span:3,children:n.originalVideoContent||`-`}),(0,Q.jsx)(bM.Item,{label:`原视频受众`,span:3,children:n.originalVideoAudience||`-`}),n.analysisErrorMessage?(0,Q.jsx)(bM.Item,{label:`分析错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.analysisErrorMessage})}):null,n.splitErrorMessage?(0,Q.jsx)(bM.Item,{label:`拆镜错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.splitErrorMessage})}):null]})}),(0,Q.jsx)(VA,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`原视频预览`]}),children:(0,Q.jsx)(D9,{url:n.videoUrl,height:360})}),(0,Q.jsxs)(VA,{title:`AI 建议拆镜列表`,children:[n.aiSuggestions?.length?(0,Q.jsx)(UUe,{items:n.aiSuggestions}):(0,Q.jsx)(Yy,{description:`暂无 AI 建议拆镜`}),(0,Q.jsx)(Wh,{size:`small`,ghost:!0,style:{marginTop:12},items:[{key:`raw`,label:`查看原视频分析完整 JSON`,children:(0,Q.jsx)(E9,{value:n.analysisResultJson})}]})]}),(0,Q.jsxs)(VA,{title:`片段列表`,children:[(0,Q.jsxs)(IM,{wrap:!0,style:{marginBottom:16},children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`片段来源`,style:{width:140},value:g||void 0,options:LUe,onChange:e=>{_(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`切割状态`,style:{width:140},value:v||void 0,options:RUe,onChange:e=>{y(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:b||void 0,options:zUe,onChange:e=>{x(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`复刻状态`,style:{width:150},value:S||void 0,options:BUe,onChange:e=>{w(e||``),l(1)}}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(bb,{}),onClick:()=>h(e=>e+1),children:`筛选`}),(0,Q.jsx)($S,{onClick:()=>{_(``),y(``),x(``),w(``),l(1),h(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:f,dataSource:i,pagination:{current:c,pageSize:S9,total:o,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:l},scroll:{x:1550},columns:[{title:`片段ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:w9(e)})},{title:`序号`,dataIndex:`segmentIndex`,width:70},{title:`来源`,dataIndex:`sourceMode`,width:100,render:e=>e===`ai_suggestion`?(0,Q.jsx)(jR,{color:`purple`,children:`AI建议`}):(0,Q.jsx)(jR,{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)(T9,{status:e})},{title:`分析`,dataIndex:`analysisStatus`,width:100,render:e=>(0,Q.jsx)(T9,{status:e})},{title:`复刻`,dataIndex:`replicateStatus`,width:110,render:e=>(0,Q.jsx)(T9,{status:e})},{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)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)($S,{type:`link`,style:{padding:0},onClick:()=>t(`/shot-replications/projects/${n.moduleProjectId}`),children:w9(n.moduleProjectId)}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:n.moduleProjectTitle||e9(n.moduleProjectCurrentStepCode)}),(0,Q.jsx)(T9,{status:n.moduleProjectStatus})]}):(0,Q.jsx)(jR,{children:`未创建`})},{title:`错误`,dataIndex:`splitLastError`,width:220,ellipsis:!0,render:(e,t)=>e||t.analysisErrorMessage||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:C9},{title:`操作`,fixed:`right`,width:100,render:(e,t)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>j(t.id),children:`详情`})}]})]})]}),(0,Q.jsx)(kde,{title:`片段详情`,width:720,open:T,onClose:()=>E(!1),destroyOnClose:!0,children:D?(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`片段ID`,span:2,children:D.id}),(0,Q.jsx)(bM.Item,{label:`时间节点`,children:D.timeNode}),(0,Q.jsxs)(bM.Item,{label:`时长`,children:[Number(D.durationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`切割状态`,children:(0,Q.jsx)(T9,{status:D.splitStatus})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:D.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`复刻状态`,children:(0,Q.jsx)(T9,{status:D.replicateStatus})}),(0,Q.jsx)(bM.Item,{label:`关联项目`,children:D.moduleProjectId?(0,Q.jsx)($S,{type:`link`,onClick:()=>t(`/shot-replications/projects/${D.moduleProjectId}`),children:D.moduleProjectId}):`-`}),(0,Q.jsx)(bM.Item,{label:`片段内容`,span:2,children:D.segmentContent||`-`}),(0,Q.jsx)(bM.Item,{label:`片段分类`,children:D.segmentCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`片段受众`,children:D.segmentAudience||`-`})]}),(0,Q.jsx)(VA,{size:`small`,title:`片段视频`,children:(0,Q.jsx)(D9,{url:D.segmentVideoUrl,height:300})}),D.splitLastError?(0,Q.jsx)(cf,{type:`error`,message:`切割错误`,description:D.splitLastError}):null,D.analysisErrorMessage?(0,Q.jsx)(cf,{type:`error`,message:`分析错误`,description:D.analysisErrorMessage}):null,(0,Q.jsx)(Wh,{size:`small`,items:[{key:`analysis`,label:`片段分析 JSON`,children:(0,Q.jsx)(E9,{value:D.analysisJson})},{key:`suggestion`,label:`AI 建议原始 JSON`,children:(0,Q.jsx)(E9,{value:D.aiSuggestionJson})}]})]}):(0,Q.jsx)(hP,{})})]}):(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到拆镜任务详情`})})},{Title:GUe,Text:O9,Paragraph:KUe}=Z,{TextArea:k9}=GN,A9=[{label:`对象`,value:`object`},{label:`数组`,value:`array`},{label:`字符串`,value:`string`},{label:`数字`,value:`number`},{label:`布尔`,value:`boolean`},{label:`流程数组`,value:`flow`}],j9=`画面属性`,qUe=new Set([`视频时长`,`视频比例`,`清晰度`,`帧率`,`推荐分辨率`]);function M9(e,t){return e===j9&&!!t&&qUe.has(t)}function N9(e){return e===j9}function JUe(e){return JSON.parse(JSON.stringify(e??null))}function P9(e,t,n,r){return!e||typeof e!=`object`?r:e[t]===void 0?e[n]===void 0?r:e[n]:e[t]}function YUe(e){return{key:String(e?.key||e?.label||`新流程字段`),label:String(e?.label||e?.key||`新流程字段`),enabled:e?.enabled??!0,editable:e?.editable??!0,maxLength:Number(P9(e,`maxLength`,`max_length`,800)||800),value:e?.value??``}}function F9(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(P9(e,`maxLength`,`max_length`,t===`flow`?800:1e3)||(t===`flow`?800:1e3))};if(t===`object`)n.children=Array.isArray(e?.children)?e.children.map(F9):[];else if(t===`flow`){n.contentKey=String(P9(e,`contentKey`,`content_key`,e?.key===`镜头流程`?`镜头内容`:`动作内容`));let t=P9(e,`contentAliases`,`content_aliases`,[]);n.contentAliases=Array.isArray(t)?t.map(e=>String(e)).filter(Boolean):[];let r=P9(e,`itemFields`,`item_fields`,[]);n.itemFields=Array.isArray(r)&&r.length>0?r.map(YUe):[{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 XUe(e){let t=Array.isArray(e?.segments)?e.segments:[],n=Array.isArray(e?.ratios)?e.ratios:[];return{minDuration:Number(P9(e,`minDuration`,`min_duration`,1)||1),maxDuration:Number(P9(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 I9(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(F9),timePlanRules:n.map(XUe)}}function L9(e,t){let n=N9(e.key),r=M9(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=>L9(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 R9(e,t){return{version:e.version,enabled:t,sections:(e.sections||[]).map(e=>L9(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 z9(e){return e?.runtimeSchema||e?.runtime_schema||{}}function B9(e){let t=e?.timePlan||e?.time_plan||z9(e)?.动态时间规划||[];return Array.isArray(t)?t:[]}function ZUe(e){return e?.schemaConfigSnapshot||e?.schema_config_snapshot||{}}function QUe(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 V9=(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}),$Ue=()=>({minDuration:1,maxDuration:5,ratios:[.2,.4,.4],segments:[{stage:`开场吸引`,description:`快速吸引注意力`},{stage:`核心展示`,description:`展示主体动作、核心卖点或主要视觉内容`},{stage:`收尾引导`,description:`给出行动引导并稳定落版`}]}),eWe=()=>{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]=X.useForm(),_=(0,C.useRef)(null),v=c?.sections||[],y=c?.timePlanRules||[],b=async()=>{t(!0);try{let e=await mVe();a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),l(I9(e.data)),d(I9(e.defaultData??e.default_data))}catch(e){CP.error(e?.message||`加载失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{b()},[]);let x=e=>{l(t=>{let n=I9(JUe(t));return e(n),n})},S=async()=>{if(c){r(!0);try{let e=await hVe({is_enabled:i,data:R9(c,i)});l(I9(e.data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`保存成功`)}catch(e){CP.error(e?.message||`保存失败`)}finally{r(!1)}}},w=async()=>{r(!0);try{let e=await gVe();l(I9(e.data)),d(I9(e.defaultData??e.default_data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`已恢复默认配置`)}catch(e){CP.error(e?.message||`恢复默认失败`)}finally{r(!1)}},T=async()=>{try{QUe(`video_prompt_schema_config.json`,await _Ve())}catch(e){CP.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 vVe({is_enabled:!!(n.isEnabled??n.is_enabled??i),data:r});l(I9(o.data)),a(!!(o.isEnabled??o.is_enabled??o.data?.enabled??!1)),s(!!(o.usingDefault??o.using_default??!1)),CP.success(`导入成功`)}catch(e){CP.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 yVe({is_enabled:i,data:R9(c,i),duration:Number(e.duration||8),aspect_ratio:e.aspectRatio,resolution:e.resolution,frame_rate:e.frameRate}))}catch(e){CP.error(e?.message||`预览失败`)}},k=()=>{x(e=>{e.sections.push(V9(`object`))})},A=(e,t)=>{x(n=>{let r=n.sections[e];N9(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(V9(`string`))})},N=(e,t,n)=>{x(r=>{let i=r.sections[e],a=i.children||[],o=a[t];M9(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($Ue())})},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)(IM,{children:[(0,Q.jsx)(O9,{strong:!0,children:e.label||e.key||`未命名分组`}),e.key&&e.key!==e.label&&(0,Q.jsxs)(jR,{color:`blue`,children:[`key: `,e.key]}),(0,Q.jsx)(jR,{children:e.type}),N9(e.key)&&(0,Q.jsx)(jR,{color:`red`,children:`系统锁定`}),!e.enabled&&!N9(e.key)&&(0,Q.jsx)(jR,{color:`default`,children:`已禁用`})]}),children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsxs)(WP,{gutter:12,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:N9(e.key),onChange:e=>A(t,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>A(t,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Tb,{value:e.type,options:A9,style:{width:`100%`},disabled:N9(e.key),onChange:e=>A(t,{type:e})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:N9(e.key)?!0:e.enabled,disabled:N9(e.key),onChange:e=>A(t,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`可编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>A(t,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>A(t,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:2,style:{textAlign:`right`},children:(0,Q.jsx)(OP,{title:`确认删除该分组?`,disabled:N9(e.key),onConfirm:()=>j(t),children:(0,Q.jsx)($S,{danger:!0,icon:(0,Q.jsx)(PR,{}),disabled:N9(e.key)})})})]}),e.type===`object`&&(0,Q.jsx)(VA,{size:`small`,title:`对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>M(t),children:`新增字段`}),children:(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.children||[]).map((n,r)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:n.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:n.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>N(t,r,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Tb,{value:n.type,options:A9.filter(e=>e.value!==`object`&&e.value!==`flow`),style:{width:`100%`},disabled:M9(e.key,n.key),onChange:e=>N(t,r,{type:e})})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!0:n.enabled,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!1:n.editable,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{editable:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:n.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>N(t,r,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{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)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),disabled:M9(e.key,n.key),onClick:()=>P(t,r)})})]},`child-${t}-${r}`))})}),e.type===`flow`&&(0,Q.jsxs)(VA,{size:`small`,title:`流程数组对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>F(t),children:`新增流程字段`}),children:[(0,Q.jsxs)(WP,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(GN,{addonBefore:`内容字段`,value:e.contentKey,maxLength:64,onChange:e=>A(t,{contentKey:e.target.value})})}),(0,Q.jsx)(uj,{span:18,children:(0,Q.jsx)(GN,{addonBefore:`别名 / 分隔`,value:(e.contentAliases||[]).join(`/`),onChange:e=>A(t,{contentAliases:e.target.value.split(`/`).map(e=>e.trim()).filter(Boolean)})})})]}),(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.itemFields||[]).map((e,n)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`流程对象字段名`,onChange:e=>I(t,n,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>I(t,n,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:e.enabled,onChange:e=>I(t,n,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>I(t,n,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>I(t,n,{maxLength:Number(e||800)})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(GN,{value:String(e.value??``),maxLength:e.maxLength||800,placeholder:`默认值`,onChange:e=>I(t,n,{value:e.target.value})})}),(0,Q.jsx)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>L(t,n)})})]},`flow-${t}-${n}`))})]}),e.type!==`object`&&e.type!==`flow`&&(0,Q.jsx)(VA,{size:`small`,title:`默认值`,children:(0,Q.jsx)(k9,{rows:3,value:Array.isArray(e.value)?e.value.join(`
+你是一位专业的电商图片文案专家,擅长将产品卖点转化为图片生成提示词`,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)(X.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)(X.Item,{...r,name:[t,`name`],label:`选项名称`,style:{marginBottom:0},rules:[{required:!0,message:`请输入选项名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:视频风格`,size:`middle`,style:{borderRadius:8}})}),(0,Q.jsx)(X.Item,{...r,name:[t,`options`],label:`选项内容`,style:{marginBottom:0},children:(0,Q.jsx)(Tb,{mode:`tags`,size:`middle`,placeholder:`输入选项后回车添加`,style:{borderRadius:8},tokenSeparators:[`,`,`,`,`、`]})})]}),(0,Q.jsx)(b1,{onClick:()=>n(t),style:{color:`#ef4444`,fontSize:16,marginTop:34,cursor:`pointer`,flexShrink:0}})]},e)),(0,Q.jsx)($S,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,Q.jsx)(gA,{}),style:{borderRadius:8,height:36},children:`添加选项组`})]})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]})]})})]})};function o7(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}var NHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await TBe()).map(e=>({...e,supportedRatios:o7(e.supportedRatios),supportedResolutions:o7(e.supportedResolutions),supportedDurations:o7(e.supportedDurations)})))}catch{CP.error(`加载视频引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=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};i.engine?(await x5({id:i.engine.id,...t}),CP.success(`已更新`)):(await x5(t),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await EBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{a({open:!0,engine:e||null}),e?o.setFieldsValue(e):(o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,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]}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`视频引擎配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(C0,{})}),(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)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{children:e},e))})},{title:`支持分辨率`,dataIndex:`supportedResolutions`,width:150,render:e=>(0,Q.jsx)(IM,{size:2,wrap:!0,children:e.map(e=>(0,Q.jsx)(jR,{color:`blue`,children:e},e))})},{title:`支持时长`,dataIndex:`supportedDurations`,width:120,render:e=>(0,Q.jsx)(jR,{color:`orange`,children:e?.length?`${Math.min(...e)}-${Math.max(...e)}s`:`-`})},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`最大视频`,dataIndex:`maxVideoCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`cyan`,children:[e,` 个`]})},{title:`最大音频`,dataIndex:`maxAudioCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:e>0?`geekblue`:`default`,children:[e||0,` 段`]})},{title:`首尾帧`,dataIndex:`supportsFirstLastFrame`,width:90,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`支持`:`不支持`})},{title:`全能参考`,dataIndex:`supportsUniversalReference`,width:100,render:e=>(0,Q.jsx)(jR,{color:e?`purple`:`default`,children:e?`支持`:`不支持`})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1200}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:620,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`Seedance 2.0`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`模型名称`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedance-2-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedRatios`,label:`支持比例`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`supportedResolutions`,label:`支持分辨率`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:[{value:`480p`},{value:`720p`},{value:`1080p`}]})}),(0,Q.jsx)(X.Item,{name:`supportedDurations`,label:`支持时长(秒)`,style:{flex:1},children:(0,Q.jsx)(Tb,{mode:`multiple`,size:`large`,options:Array.from({length:12},(e,t)=>({value:t+4,label:`${t+4}秒`}))})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`maxDuration`,label:`最大时长(秒)`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`maxVideoCount`,label:`最大视频数量`,style:{flex:1},children:(0,Q.jsx)(GN,{type:`number`,size:`large`})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`maxAudioCount`,label:`最大参考音频数`,style:{flex:1},extra:`0 表示不支持音频参考,最大 3 段`,rules:[{validator:(e,t)=>{let n=Number(t??0);return!Number.isInteger(n)||n<0||n>3?Promise.reject(Error(`最大参考音频数必须为 0-3 的整数`)):Promise.resolve()}}],children:(0,Q.jsx)(GN,{type:`number`,size:`large`,min:0,max:3})})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`supportsFirstLastFrame`,label:`首尾帧模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`supportsUniversalReference`,label:`全能参考模式`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{checkedChildren:`支持`,unCheckedChildren:`不支持`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30,flex:1},children:(0,Q.jsx)(lF,{})})]}),(0,Q.jsx)(`div`,{style:{display:`flex`,gap:16},children:(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,style:{flex:1},children:(0,Q.jsx)(Tb,{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 PHe(e){if(Array.isArray(e))return e;if(typeof e==`string`)try{return JSON.parse(e)}catch{return[]}return[]}function FHe(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 s7={"2K":{"1:1":`2048×2048`,"4:3":`2304×1728`,"3:4":`1728×2304`,"16:9":`2560×1440`,"9:16":`1600×2848`,"3:2":`2496×1664`,"2:3":`1664×2496`,"21:9":`3024×1296`},"4K":{"1:1":`4096×4096`,"4:3":`4608×3456`,"3:4":`3520×4704`,"16:9":`5404×3040`,"9:16":`3040×5504`,"3:2":`4992×3328`,"2:3":`3328×4992`,"21:9":`6197×2656`}},c7=[`1:1`,`4:3`,`3:4`,`16:9`,`9:16`,`3:2`,`2:3`,`21:9`],IHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,engine:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await DBe()).map(e=>({...e,supportedModels:PHe(e.supportedModels),supportedSizes:FHe(e.supportedSizes)})))}catch{CP.error(`加载图片引擎失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={};for(let n of[`2K`,`4K`]){let r=e[`size_${n}`]||[];if(r.length>0){t[n]={};for(let e of r)t[n][e]=s7[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};i.engine?(await S5({id:i.engine.id,...n}),CP.success(`已更新`)):(await S5(n),CP.success(`已添加`)),a({open:!1,engine:null}),o.resetFields(),s()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},l=async e=>{try{await OBe(e),CP.success(`已删除`),s()}catch{CP.error(`删除失败`)}},u=e=>{if(a({open:!0,engine:e||null}),e){let t={};for(let n of[`2K`,`4K`])t[`size_${n}`]=Object.keys(e.supportedSizes?.[n]||{});o.setFieldsValue({...e,...t})}else o.resetFields(),o.setFieldsValue({isActive:!0,priority:0,supportedModels:[`doubao-seedream-5-0-260128`],defaultSize:`2K`,maxImageCount:0,size_2K:c7,size_4K:c7})};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{style:{fontSize:18,color:`#10b981`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`图片引擎配置`}),(0,Q.jsxs)(jR,{color:`green`,children:[e.length,` 个引擎`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加引擎`})]}),(0,Q.jsx)(vR,{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)(m0,{})}),(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:`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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{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)(IM,{size:2,wrap:!0,children:n.map(e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` `,t.supportedSizes[`4K`][e]]},e))})}},{title:`最大图片`,dataIndex:`maxImageCount`,width:100,render:e=>(0,Q.jsxs)(jR,{color:`purple`,children:[e,` 张`]})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:1e3}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m0,{}),i.engine?`编辑引擎`:`添加引擎`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,engine:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:680,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`引擎名称`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`豆包文生图`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`provider`,label:`提供商`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`ark`,label:`火山引擎 (Ark)`}]})})]}),(0,Q.jsx)(X.Item,{name:`apiBase`,label:`API基础地址`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`apiKey`,label:`API Key`,children:(0,Q.jsx)(GN.Password,{placeholder:`sk-****`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`modelName`,label:`默认模型`,children:(0,Q.jsx)(GN,{placeholder:`doubao-seedream-5-0-260128`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`supportedModels`,label:`支持模型列表`,children:(0,Q.jsx)(Tb,{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`})]}),[`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)(X.Item,{name:`size_${e}`,style:{marginTop:8,marginBottom:0},children:(0,Q.jsx)(ij.Group,{style:{width:`100%`},children:(0,Q.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(4, 1fr)`,gap:`6px 0`},children:c7.map(t=>(0,Q.jsxs)(ij,{value:t,style:{fontSize:12},children:[t,` `,(0,Q.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:11},children:s7[e]?.[t]})]},t))})})})]},e)),(0,Q.jsx)(X.Item,{name:`defaultSize`,label:`默认尺寸档位`,children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`2K`,label:`2K`},{value:`4K`,label:`4K`}]})}),(0,Q.jsx)(X.Item,{name:`maxImageCount`,label:`最大图片数量`,children:(0,Q.jsx)(GN,{type:`number`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`generateUrl`,label:`生成接口地址`,children:(0,Q.jsx)(GN,{placeholder:`https://ark.cn-beijing.volces.com/api/v3/images/generations`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`priority`,label:`优先级`,children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,style:{paddingTop:30},children:(0,Q.jsx)(lF,{})})]})]})})]})},LHe=[`2K`,`4K`],RHe=[`480p`,`720p`,`1080p`],zHe=()=>{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]=X.useForm(),[l,u]=(0,C.useState)(10),[d,f]=(0,C.useState)(null),[p,m]=(0,C.useState)(!1),h=X.useWatch(`genType`,c)||`video`,g=X.useWatch(`modelConfigId`,c),_=async()=>{a(!0);try{let[e,n,i]=await Promise.all([kBe(),g5(),aVe()]),a=(i?.engine?.image||[]).map(e=>({...e,genType:`image`})),o=(i?.engine?.video||[]).map(e=>({...e,genType:`video`}));t(e),r([...o,...a]);let s=n.find(e=>e.key===`text_credits_per_1000_tokens`);s&&(u(Number(s.value)||10),f({id:s.id}))}catch{CP.error(`加载积分比例失败`)}finally{a(!1)}};(0,C.useEffect)(()=>{_()},[]);let v=(0,C.useMemo)(()=>n.filter(e=>e.genType===h).map(e=>({value:e.id,label:`${e.name}${e.modelName?`(${e.modelName})`:``}`})),[n,h]),y=(0,C.useMemo)(()=>n.find(e=>e.id===g&&e.genType===h),[n,h,g]),b=(0,C.useMemo)(()=>{if(h===`image`){let e=y?.supportedSizes?Object.keys(y.supportedSizes):[];return(e.length?e:LHe).map(e=>({value:e,label:e}))}let e=y?.supportedResolutions||[];return(e.length?e:RHe).map(e=>({value:e,label:e}))},[h,y]),x=(e,t)=>n.find(n=>n.id===e&&(!t||n.genType===t))?.name||e,S=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),o.ratio?(await C5({id:o.ratio.id,...t}),CP.success(`已更新`)):(await C5(t),CP.success(`已添加`)),s({open:!1,ratio:null}),c.resetFields(),_()}catch(e){if(e?.errorFields)return;CP.error(e?.message||`保存失败`)}},w=async e=>{try{await ABe(e),CP.success(`已删除`),_()}catch{CP.error(`删除失败`)}},T=async()=>{if(d){m(!0);try{await _5(d.id,String(l)),CP.success(`文字积分费率已更新`)}catch(e){CP.error(e?.message||`保存失败`)}finally{m(!1)}}},E=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}):(c.resetFields(),c.setFieldsValue({genType:`video`,ratio:1,baseCredits:60,perSecondCredits:2,inputVideoRatio:1,inputVideoBaseCredits:0,inputVideoPerSecondCredits:.5}))};return(0,Q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,Q.jsxs)(VA,{variant:`outlined`,style:{borderRadius:12,border:`1px solid #f0f0f5`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:16},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(xZ,{style:{fontSize:18,color:`#f59e0b`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`文字积分费率`})]}),(0,Q.jsx)($S,{type:`primary`,loading:p,onClick:T,style:{borderRadius:8},children:`保存`})]}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{display:`block`,marginBottom:16,fontSize:13},children:`文字积分计算公式:ceil(总token数 x 费率 / 1000),最低1积分`}),(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:16},children:[(0,Q.jsx)(Z.Text,{children:`每1000 token消耗积分:`}),(0,Q.jsxs)(IM.Compact,{style:{width:160},children:[(0,Q.jsx)(Pj,{min:0,max:1e3,step:.01,value:l,onChange:e=>u(e||0),size:`large`,style:{width:`100%`}}),(0,Q.jsx)(Z.Text,{children:`积分`})]}),(0,Q.jsxs)(Z.Text,{type:`secondary`,style:{fontSize:12},children:[`示例:1000 token = `,l,` 积分,500 token = `,(500*l/1e3).toFixed(4),` 积分`]})]})]}),(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KG,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`积分比例配置`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 条规则`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>E(),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)(vR,{columns:[{title:`类型`,dataIndex:`genType`,width:80,render:e=>(0,Q.jsx)(jR,{color:e===`image`?`cyan`:`orange`,children:e===`image`?`图片`:`视频`})},{title:`引擎`,dataIndex:`modelConfigId`,width:180,render:(e,t)=>(0,Q.jsx)(jR,{color:t.genType===`image`?`cyan`:`purple`,children:x(e,t.genType)})},{title:`分辨率/尺寸`,dataIndex:`resolution`,width:110,render:e=>(0,Q.jsx)(jR,{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:`视频倍率`,dataIndex:`inputVideoRatio`,width:100,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:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分`})},{title:`视频每秒积分`,dataIndex:`inputVideoPerSecondCredits`,width:110,render:(e,t)=>(0,Q.jsx)(Z.Text,{children:t.genType===`image`?`-`:`${e} 积分/秒`})},{title:`示例计算(视频15秒,上传视频15秒)`,key:`example`,width:140,render:(e,t)=>{let n;return t.genType===`image`?n=Math.round(t.baseCredits*t.ratio):(n=Math.round((t.baseCredits+t.perSecondCredits*15)*t.ratio),t.inputVideoRatio&&t.inputVideoPerSecondCredits&&(n+=Math.round((t.inputVideoBaseCredits+t.inputVideoPerSecondCredits*15)*t.inputVideoRatio))),(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)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>E(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>w(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:i,pagination:!1,scroll:{x:1180}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KG,{}),o.ratio?`编辑比例`:`添加比例`]}),open:o.open,onOk:S,onCancel:()=>{s({open:!1,ratio:null}),c.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`genType`,label:`生成类型`,rules:[{required:!0,message:`请选择生成类型`}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`video`,label:`视频`},{value:`image`,label:`图片`}],onChange:()=>{c.setFieldsValue({modelConfigId:void 0,resolution:void 0})}})}),(0,Q.jsx)(X.Item,{name:`modelConfigId`,label:`引擎`,rules:[{required:!0,message:`请选择引擎`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:`请选择引擎`,options:v,showSearch:!0,optionFilterProp:`label`,onChange:()=>c.setFieldsValue({resolution:void 0})})}),(0,Q.jsx)(X.Item,{name:`resolution`,label:h===`image`?`图片尺寸`:`分辨率`,rules:[{required:!0,message:h===`image`?`请选择图片尺寸`:`请选择分辨率`}],children:(0,Q.jsx)(Tb,{size:`large`,placeholder:h===`image`?`请选择图片尺寸`:`请选择分辨率`,options:b})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`ratio`,label:`倍率`,style:{flex:1},rules:[{required:!0,message:`请输入倍率`}],children:(0,Q.jsx)(Pj,{min:.1,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`baseCredits`,label:`基础积分`,style:{flex:1},rules:[{required:!0,message:`请输入基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:1e3,style:{width:`100%`},size:`large`})}),h!==`image`&&(0,Q.jsx)(X.Item,{name:`perSecondCredits`,label:`每秒积分`,style:{flex:1},rules:[{required:!0,message:`请输入每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`})})]}),h!==`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)(X.Item,{name:`inputVideoRatio`,label:`倍率`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频倍率`}],children:(0,Q.jsx)(Pj,{min:0,max:10,step:.1,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoBaseCredits`,label:`基础积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频基础积分`}],children:(0,Q.jsx)(Pj,{min:0,max:500,style:{width:`100%`},size:`large`})}),(0,Q.jsx)(X.Item,{name:`inputVideoPerSecondCredits`,label:`每秒积分`,style:{flex:1,marginBottom:0},rules:[{required:!0,message:`请输入传入视频每秒积分`}],children:(0,Q.jsx)(Pj,{min:0,max:50,style:{width:`100%`},size:`large`})})]})]})]})})]})},l7={HomeOutlined:(0,Q.jsx)(OQ,{}),PlayCircleOutlined:(0,Q.jsx)(C0,{}),WalletOutlined:(0,Q.jsx)(v8,{}),RobotOutlined:(0,Q.jsx)(W2,{}),SettingOutlined:(0,Q.jsx)(x4,{}),BellOutlined:(0,Q.jsx)(QU,{}),UserOutlined:(0,Q.jsx)(n8,{}),AppstoreOutlined:(0,Q.jsx)(OH,{}),FileTextOutlined:(0,Q.jsx)(BM,{}),StarOutlined:(0,Q.jsx)(S3,{}),HeartOutlined:(0,Q.jsx)(_Q,{}),CameraOutlined:(0,Q.jsx)(sK,{}),DashboardOutlined:(0,Q.jsx)(FJ,{}),CalculatorOutlined:(0,Q.jsx)(KG,{}),DollarOutlined:(0,Q.jsx)(fY,{}),GiftOutlined:(0,Q.jsx)(KZ,{}),ThunderboltOutlined:(0,Q.jsx)(s6,{}),FireOutlined:(0,Q.jsx)(aZ,{}),CloudOutlined:(0,Q.jsx)(jq,{}),SmileOutlined:(0,Q.jsx)(a3,{}),TrophyOutlined:(0,Q.jsx)(w6,{}),RocketOutlined:(0,Q.jsx)(q2,{}),BulbOutlined:(0,Q.jsx)(LG,{}),CodeOutlined:(0,Q.jsx)(Bq,{}),PictureOutlined:(0,Q.jsx)(m0,{}),VideoCameraOutlined:(0,Q.jsx)(m8,{}),AudioOutlined:(0,Q.jsx)(iU,{}),MailOutlined:(0,Q.jsx)(q$,{}),PhoneOutlined:(0,Q.jsx)(s0,{}),GlobalOutlined:(0,Q.jsx)($Z,{}),ShoppingCartOutlined:(0,Q.jsx)(k4,{}),TeamOutlined:(0,Q.jsx)(i6,{}),BarChartOutlined:(0,Q.jsx)(jU,{}),PieChartOutlined:(0,Q.jsx)(_0,{}),LineChartOutlined:(0,Q.jsx)(D$,{}),SecurityScanOutlined:(0,Q.jsx)(m4,{}),ApiOutlined:(0,Q.jsx)(uH,{}),DatabaseOutlined:(0,Q.jsx)(zJ,{}),CloudServerOutlined:(0,Q.jsx)(Nq,{}),MenuOutlined:(0,Q.jsx)(l1,{})},BHe=Object.keys(l7).map(e=>({value:e,label:(0,Q.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[l7[e],` `,e.replace(`Outlined`,``)]})})),VHe={page:`blue`,group:`purple`},HHe={page:`页面`,group:`分组`},UHe=()=>{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]=X.useForm(),l=async()=>{r(!0);try{t(await w5())}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 T5({...t,id:o.menu.id}):await T5(t),CP.success(o.menu?.id?`菜单已更新`:`菜单已添加`),s({open:!1,menu:null}),c.resetFields(),l()}catch{}},d=async e=>{try{await BBe(e),CP.success(`菜单已删除`),l()}catch(e){CP.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&&l7[e]?(0,Q.jsx)(`span`,{style:{fontSize:16,color:`#6366f1`},children:l7[e]}):`-`},{title:`类型`,dataIndex:`menuType`,width:80,render:e=>(0,Q.jsx)(jR,{color:VHe[e]||`default`,children:HHe[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)(jR,{color:`green`,children:`默认`}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})}]:[],{title:`操作`,key:`action`,width:150,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>f(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除该菜单?`,onConfirm:()=>d(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}];return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`菜单配置`})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>f(),style:{borderRadius:8},children:`添加菜单`})]}),(0,Q.jsx)(zA,{activeKey:i,onChange:a,items:[{key:`frontend`,label:`前台菜单`},{key:`admin`,label:`后台菜单`}]}),(0,Q.jsx)(vR,{columns:v,dataSource:h,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(l1,{}),o.menu?.id?`编辑菜单`:`添加菜单`]}),open:o.open,onOk:u,onCancel:()=>{s({open:!1,menu:null}),c.resetFields()},okText:`确认`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:c,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`label`,label:`菜单名称`,rules:[{required:!0,message:`请输入菜单名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:我的项目`,size:`large`})}),(0,Q.jsx)(X.Item,{name:`path`,label:`路由路径`,tooltip:`分组类型可留空`,children:(0,Q.jsx)(GN,{placeholder:`例如:/projects(分组可留空)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`menuType`,label:`菜单类型`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`page`,label:`页面`},{value:`group`,label:`分组`}]})}),(0,Q.jsx)(X.Item,{name:`menuTarget`,label:`适用端`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{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)(X.Item,{name:`icon`,label:`图标`,style:{flex:1},rules:[{required:!0}],children:(0,Q.jsx)(Tb,{size:`large`,options:BHe})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,max:100,style:{width:`100%`},size:`large`,placeholder:`默认0`})})]}),(0,Q.jsx)(X.Item,{name:`parentId`,label:`上级菜单`,children:(0,Q.jsx)(Tb,{size:`large`,options:m,allowClear:!0,placeholder:`顶级菜单`})}),(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.menuTarget!==t.menuTarget,children:({getFieldValue:e})=>e(`menuTarget`)===`admin`?null:(0,Q.jsx)(X.Item,{name:`isDefault`,label:`新用户默认显示`,valuePropName:`checked`,tooltip:`开启后,新注册用户默认显示此菜单`,children:(0,Q.jsx)(lF,{})})})]})})]})},WHe={normal:`blue`,gift:`green`,promo:`purple`},GHe={normal:`常规`,gift:`赠送`,promo:`促销`},KHe=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(!1),[i,a]=(0,C.useState)({open:!1,item:null}),[o]=X.useForm(),s=async()=>{r(!0);try{t((await D5()).map(e=>({id:e.id,name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonus_credits??e.bonusCredits??0,totalCredits:e.total_credits??e.totalCredits??e.credits,description:e.description,packageType:e.package_type??e.packageType??`normal`,isGift:e.is_gift??e.isGift??!1,isActive:e.is_active??e.isActive??!0,sortOrder:e.sort_order??e.sortOrder??0})))}catch{CP.error(`加载充值套餐失败`)}finally{r(!1)}};(0,C.useEffect)(()=>{s()},[]);let c=async()=>{try{let e=await o.validateFields(),t={name:e.name,credits:e.credits,price:e.price,bonus_credits:e.bonusCredits||0,description:e.description||null,package_type:e.packageType||`normal`,is_gift:e.isGift||!1,is_active:e.isActive??!0,sort_order:e.sortOrder??0};i.item?.id?(await O5({id:i.item.id,...t}),CP.success(`已更新`)):(await O5(t),CP.success(`已添加`)),a({open:!1,item:null}),o.resetFields(),s()}catch{}},l=async e=>{try{await GBe(e),CP.success(`已删除`),s()}catch(e){CP.error(e?.message||`删除失败`)}},u=e=>{a({open:!0,item:e||null}),e?o.setFieldsValue({name:e.name,credits:e.credits,price:e.price,bonusCredits:e.bonusCredits,description:e.description,packageType:e.packageType,isGift:e.isGift,isActive:e.isActive,sortOrder:e.sortOrder}):(o.resetFields(),o.setFieldsValue({isActive:!0,sortOrder:0,packageType:`normal`,bonusCredits:0,isGift:!1}))};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(KZ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`充值套餐管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[e.length,` 个套餐`]})]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>u(),style:{borderRadius:8},children:`添加套餐`})]}),(0,Q.jsx)(vR,{columns:[{title:`套餐名称`,key:`name`,width:160,render:(e,t)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{strong:!0,children:t.name}),t.description&&(0,Q.jsx)(`div`,{style:{color:`#94a3b8`,fontSize:12},children:t.description})]})},{title:`基础积分`,dataIndex:`credits`,width:100,render:e=>(0,Q.jsx)(Z.Text,{children:e.toLocaleString()})},{title:`赠送积分`,dataIndex:`bonusCredits`,width:100,render:e=>e>0?(0,Q.jsxs)(jR,{color:`green`,children:[`+`,e.toLocaleString()]}):(0,Q.jsx)(Z.Text,{type:`secondary`,children:`-`})},{title:`总积分`,key:`total`,width:100,render:(e,t)=>(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:(t.credits+t.bonusCredits).toLocaleString()})},{title:`价格(元)`,dataIndex:`price`,width:100,render:e=>(0,Q.jsxs)(Z.Text,{strong:!0,children:[`¥`,e]})},{title:`类型`,dataIndex:`packageType`,width:80,render:e=>(0,Q.jsx)(jR,{color:WHe[e]||`default`,children:GHe[e]||e})},{title:`状态`,dataIndex:`isActive`,width:80,render:e=>(0,Q.jsx)(jR,{color:e?`green`:`default`,children:e?`启用`:`停用`})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>u(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确定删除?`,onConfirm:()=>l(t.id),children:(0,Q.jsx)($S,{type:`link`,size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}],dataSource:e,rowKey:`id`,loading:n,pagination:!1,scroll:{x:900}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(KZ,{}),i.item?`编辑套餐`:`添加套餐`]}),open:i.open,onOk:c,onCancel:()=>{a({open:!1,item:null}),o.resetFields()},okText:`保存`,cancelText:`取消`,width:520,children:(0,Q.jsxs)(X,{form:o,layout:`vertical`,style:{marginTop:16},children:[(0,Q.jsx)(X.Item,{name:`name`,label:`套餐名称`,rules:[{required:!0,message:`请输入套餐名称`}],children:(0,Q.jsx)(GN,{placeholder:`例如:进阶包`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`credits`,label:`基础积分`,rules:[{required:!0,message:`请输入积分`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:1,placeholder:`2000`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`price`,label:`价格(元)`,rules:[{required:!0,message:`请输入价格`}],style:{flex:1},children:(0,Q.jsx)(Pj,{min:.01,step:1,placeholder:`168`,size:`large`,style:{width:`100%`}})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`bonusCredits`,label:`赠送积分`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{min:0,placeholder:`0`,size:`large`,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`packageType`,label:`套餐类型`,initialValue:`normal`,style:{flex:1},children:(0,Q.jsx)(Tb,{size:`large`,options:[{value:`normal`,label:`常规`},{value:`gift`,label:`赠送`},{value:`promo`,label:`促销`}]})})]}),(0,Q.jsx)(X.Item,{name:`description`,label:`描述`,children:(0,Q.jsx)(GN,{placeholder:`套餐描述(可选)`,size:`large`})}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,Q.jsx)(X.Item,{name:`isActive`,label:`启用状态`,valuePropName:`checked`,initialValue:!0,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`isGift`,label:`是否赠送`,valuePropName:`checked`,initialValue:!1,style:{flex:1},children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`sortOrder`,label:`排序`,initialValue:0,style:{flex:1},children:(0,Q.jsx)(Pj,{size:`large`,style:{width:`100%`}})})]})]})})]})},qHe={POST:`green`,PUT:`blue`,DELETE:`red`},JHe=()=>{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 KBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载操作日志失败`)}finally{a(!1)}};return(0,C.useEffect)(()=>{c()},[]),(0,Q.jsx)(`div`,{children:(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(TQ,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`操作日志`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>c(),children:`刷新`})]}),(0,Q.jsx)(vR,{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)(jR,{color:qHe[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:B5(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}})]})})},YHe=()=>{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]=X.useForm(),[_]=X.useForm(),v=async e=>{a(!0);try{let n=await qBe(e||o);t(n.items||[]),r(n.total||0)}catch{CP.error(`加载应用管理列表失败`)}finally{a(!1)}},y=async()=>{try{let e=await g.validateFields();await JBe({app_id:e.app_id,secret:e.secret,open_type:e.open_type,count:e.count,auth_url:e.auth_url,company:e.company}),CP.success(`创建成功`),l(!1),g.resetFields(),v()}catch(e){CP.error(e?.message||`创建失败`)}},b=async e=>{try{h(await k5(e)),d(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},x=async e=>{try{let t=await k5(e);h(t),_.setFieldsValue({app_id:t.app_id,secret:t.secret,open_type:t.open_type,count:t.max_count,auth_url:t.auth_url,company:t.company}),p(!0)}catch(e){CP.error(e?.message||`获取详情失败`)}},S=async()=>{if(m)try{let e=await _.validateFields();await YBe(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}),CP.success(`更新成功`),p(!1),_.resetFields(),v()}catch(e){CP.error(e?.message||`更新失败`)}},w=e=>{TP.confirm({title:`确认删除`,content:`确定要删除这个应用管理吗?`,okText:`删除`,okType:`danger`,cancelText:`取消`,onOk:async()=>{try{await XBe(e),CP.success(`删除成功`),v()}catch(e){CP.error(e?.message||`删除失败`)}}})};return(0,C.useEffect)(()=>{v()},[]),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(l1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`应用管理列表`})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>v(),children:`刷新`}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>l(!0),children:`创建`})]})]}),(0,Q.jsx)(vR,{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)(hx,{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)(jR,{color:e===1?`green`:`red`,children:e===1?`正常`:`禁用`})},{title:`授权URL`,dataIndex:`authUrl`,width:200,render:e=>e?(0,Q.jsx)(hx,{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:B5(e)})},{title:`更新时间`,dataIndex:`updatedAt`,width:160,render:e=>(0,Q.jsx)(Z.Text,{children:B5(e)})},{title:`操作`,width:120,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(IN,{}),size:`small`,onClick:()=>b(t.id),children:`详情`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(LR,{}),size:`small`,onClick:()=>x(t.id),children:`更新`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(PR,{}),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)(TP,{title:`创建应用管理`,open:c,onOk:y,onCancel:()=>{l(!1),g.resetFields()},okText:`创建`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:g,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,initialValue:100,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})}),(0,Q.jsx)(TP,{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.app_id]}),(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.open_type]||m.open_type]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`归属公司:`}),` `,m.company||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`授权次数:`}),` `,m.max_count]}),(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.auth_url||`-`]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建人:`}),` `,m.create_by]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`创建时间:`}),` `,B5(m.created_at)]}),(0,Q.jsxs)(`p`,{children:[(0,Q.jsx)(`strong`,{children:`更新时间:`}),` `,B5(m.updated_at)]})]})}),(0,Q.jsx)(TP,{title:`更新应用管理`,open:f,onOk:S,onCancel:()=>{p(!1),_.resetFields(),h(null)},okText:`更新`,cancelText:`取消`,width:600,children:(0,Q.jsxs)(X,{form:_,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`app_id`,label:`应用ID`,rules:[{required:!0,message:`请输入应用ID`},{max:64,message:`应用ID不能超过64个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用ID`})}),(0,Q.jsx)(X.Item,{name:`secret`,label:`应用密钥`,rules:[{required:!0,message:`请输入应用密钥`},{max:256,message:`应用密钥不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用密钥`})}),(0,Q.jsx)(X.Item,{name:`open_type`,label:`开户方式`,rules:[{required:!0,message:`请选择开户方式`}],children:(0,Q.jsxs)(Tb,{placeholder:`请选择开户方式`,children:[(0,Q.jsx)(Tb.Option,{value:1,children:`千川`}),(0,Q.jsx)(Tb.Option,{value:2,children:`广告`}),(0,Q.jsx)(Tb.Option,{value:3,children:`本地推`}),(0,Q.jsx)(Tb.Option,{value:4,children:`星图`}),(0,Q.jsx)(Tb.Option,{value:5,children:`快手代理商`}),(0,Q.jsx)(Tb.Option,{value:6,children:`巨量星图`}),(0,Q.jsx)(Tb.Option,{value:7,children:`巨量服务单`}),(0,Q.jsx)(Tb.Option,{value:8,children:`腾讯服务单`}),(0,Q.jsx)(Tb.Option,{value:9,children:`腾讯营销K2`}),(0,Q.jsx)(Tb.Option,{value:10,children:`腾讯营销K3`})]})}),(0,Q.jsx)(X.Item,{name:`count`,label:`最大授权用户数`,children:(0,Q.jsx)(Pj,{min:1,placeholder:`应用最大可以授权多少个用户`})}),(0,Q.jsx)(X.Item,{name:`auth_url`,label:`应用授权链接`,children:(0,Q.jsx)(GN,{placeholder:`请输入应用授权链接`})}),(0,Q.jsx)(X.Item,{name:`company`,label:`应用归属公司名称`,rules:[{max:256,message:`公司名称不能超过256个字符`}],children:(0,Q.jsx)(GN,{placeholder:`请输入应用归属公司名称`})})]})})]})},u7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),d7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},f7={optimizing:{color:`processing`,text:`优化中`,icon:(0,Q.jsx)(fm,{spin:!0})},prompt_optimized:{color:`processing`,text:`待生成`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},p7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},XHe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),m7=e=>!!e&&/^blob:/i.test(e.trim()),h7=e=>{if(!e)return``;let t=String(e).trim();return t?XHe(t)?t:u7?`${u7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},ZHe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,g7=e=>e?B5(e):`-`,QHe=e=>e==null||e===``,_7=e=>{if(!e||m7(e))return!1;try{let t=new URL(h7(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}},v7=e=>e?m7(e)||_7(e)?`invalid`:`checking`:`empty`,y7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},$He=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=y7(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`},b7=(e,t)=>`${t}-${y7(e)||`empty`}`,x7=(e,t=`资源`)=>m7(e)?`本地临时素材已失效`:_7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,S7=({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]}),C7=({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:QHe(t)?`-`:t})]}),eUe=()=>{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)(0),[h,g]=(0,C.useState)(null),[_,v]=(0,C.useState)(d7),[y,b]=(0,C.useState)(!1),x=(0,C.useRef)(null),[S,w]=(0,C.useState)(null),[T,E]=(0,C.useState)(null),D=(0,C.useCallback)(async()=>{a(!0);try{let e=await nVe({userId:d.trim()||void 0,status:l||void 0,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}))),r(e.total||0)}catch{CP.error(`加载记录失败`)}finally{a(!1)}},[l,d,o,c]);(0,C.useEffect)(()=>{D()},[D,p]),(0,C.useEffect)(()=>{if(!h){v(d7);return}let e=(h.references||[]).reduce((e,t,n)=>{let r=y7(t);return e[b7(t,n)]=v7(r),e},{});x.current&&(x.current.pause(),x.current.currentTime=0),b(!1),v({image:v7(h.imageUrl),video:v7(h.videoUrl),videoCover:v7(h.videoCoverUrl),references:e})},[h]);let O=()=>{s(1),m(e=>e+1)},k=(0,C.useCallback)(e=>{g(e)},[]),A=()=>{x.current&&x.current.pause(),b(!1),g(null)},j=e=>{v(t=>({...t,...e}))},M=(e,t)=>{v(n=>({...n,references:{...n.references,[e]:t}}))},N=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(m7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(_7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(h7(e),`_blank`,`noopener,noreferrer`)},P=()=>{if(h?.videoUrl){if(_7(h.videoUrl)){j({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}b(!0),window.setTimeout(()=>{x.current?.play().catch(()=>{b(!1),j({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},F=async(e,t,n)=>{w(e);try{await rVe(e,t,n),CP.success(`状态已更新`),D()}catch(e){CP.error(e?.message||`更新失败`)}finally{w(null)}},I=async()=>{if(T){w(T.record.id);try{await iVe(T.record.id,T.ratio,T.resolution,T.image_size),CP.success(`已提交${T.record.genType===`video`?`视频`:`图片`}生成`),E(null),D()}catch(e){CP.error(e?.message||`生成失败`)}finally{w(null)}}},L=(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:ZHe(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)(jR,{color:`cyan`,children:e||`-`})},{title:`类型`,dataIndex:`genType`,width:90,ellipsis:!0,render:e=>{let t=p7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`提示词`,key:`prompt`,ellipsis:!0,render:(e,t)=>(0,Q.jsx)(hx,{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`?t.duration||t.aspectRatio||t.resolution?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`待配置`})},{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=f7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`时间`,key:`time`,width:150,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:g7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,g7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:150,fixed:`right`,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>k(t),children:`详情`}),t.status===`generating`?(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`}):null,t.status===`failed`?(0,Q.jsx)($S,{size:`small`,type:`primary`,danger:!0,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),children:`重试生成`}):null,t.status===`prompt_optimized`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)($S,{size:`small`,type:`primary`,loading:S===t.id,onClick:()=>E({record:t,ratio:t.aspectRatio||`16:9`,resolution:t.resolution||`720p`,image_size:t.imageSize||`2K`}),style:{background:`#6366f1`,border:`none`},children:[`生成`,t.genType===`video`?`视频`:`图片`]}),(0,Q.jsx)($S,{size:`small`,danger:!0,loading:S===t.id,onClick:()=>{TP.confirm({title:`确认操作`,icon:(0,Q.jsx)(HY,{}),content:`确定将此记录标记为失败?`,onOk:()=>F(t.id,`failed`)})},children:`标记失败`})]}):null]})}],[k,S]),R=h?p7[h.genType||``]||{text:h.genType||`-`,color:`default`,icon:null}:null,z=h?f7[h.status]||{color:`default`,text:h.status||`-`,icon:null}:null,B=()=>{if(!h||h.genType!==`image`||h.status!==`completed`)return null;if(!h.imageUrl)return(0,Q.jsx)(S7,{text:`此图片任务暂无结果图片`,minHeight:260});if(_.image===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.imageUrl,`图片`),minHeight:260});let e=h7(h.imageUrl);return(0,Q.jsxs)(`div`,{title:`点击新页面查看图片`,onClick:()=>N(h.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:()=>j({image:`valid`}),onError:()=>j({image:`invalid`}),style:{display:_.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${h.id}-${e}`),_.image===`checking`?(0,Q.jsx)(S7,{text:`图片加载检测中...`,minHeight:260}):null]})},V=()=>{if(!h||y||_.video===`invalid`)return null;let e=h.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:P,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!h.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)(S7,{text:`此视频无封面`,minHeight:340,action:e})});if(_.videoCover===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=h7(h.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:()=>j({videoCover:`valid`}),onError:()=>j({videoCover:`invalid`}),style:{display:_.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${h.id}-cover-${t}`),_.videoCover===`checking`?(0,Q.jsx)(S7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,_.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]})},H=()=>{if(!h||h.genType!==`video`||h.status!==`completed`)return null;if(!h.videoUrl)return(0,Q.jsx)(S7,{text:`此视频任务暂无结果视频`,minHeight:340});if(_.video===`invalid`)return(0,Q.jsx)(S7,{text:x7(h.videoUrl,`视频`),minHeight:340});let e=h7(h.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:x,src:e,preload:`metadata`,controls:y,onLoadedMetadata:()=>j({video:`valid`}),onCanPlay:()=>j({video:`valid`}),onPlaying:()=>{b(!0),j({video:`valid`})},onPause:()=>b(!1),onEnded:()=>b(!1),onError:()=>{b(!1),j({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!y,pointerEvents:y?`auto`:`none`}},`${h.id}-${e}`),V()]})},U=(e,t)=>{let n=y7(e),r=$He(e),i=b7(e,t),a=_.references[i]||v7(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)(S7,{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)(S7,{text:m7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=h7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>N(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&N(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:()=>M(i,`valid`),onError:()=>M(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:()=>M(i,`valid`),onError:()=>M(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(m8,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`生成记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:200},value:d,onChange:e=>f(e.target.value),onPressEnter:O,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:O,style:{borderRadius:8},children:`搜索`})]})]}),(0,Q.jsx)(vR,{columns:L,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)(TP,{title:(0,Q.jsxs)(IM,{children:[h?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`生成记录详情`})]}),open:!!h,onCancel:A,footer:null,width:900,destroyOnClose:!0,children:h?(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:h.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:h.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)(IM,{size:4,wrap:!0,children:[R?(0,Q.jsx)(jR,{color:R.color,icon:R.icon,children:R.text}):null,z?(0,Q.jsx)(jR,{color:z.color,icon:z.icon,children:z.text}):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:h.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:h.optimizedPrompt||`-`})})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`文字积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#f59e0b`},children:h.textCreditsCost||0}),(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.textTokensUsed||0,` tokens)`]})]})}),(0,Q.jsx)(C7,{label:`${h.genType===`image`?`图片`:`视频`}积分`,value:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:h.creditsCost||0}),h.genType===`video`&&h.videoTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.videoTokensUsed,` tokens)`]}):null,h.genType===`image`&&h.imageTokensUsed?(0,Q.jsxs)(Z.Text,{style:{fontSize:11,color:`#94a3b8`},children:[` (`,h.imageTokensUsed,` tokens)`]}):null]})}),(0,Q.jsx)(C7,{label:`总积分`,value:(h.textCreditsCost||0)+(h.creditsCost||0)})]}),h.genType===`video`?h.duration||h.aspectRatio||h.resolution?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`时长`,value:h.duration?`${h.duration}秒`:`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.aspectRatio||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.resolution||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`视频参数待用户配置`})}):null,h.genType===`image`?h.imageSize||h.imageProportion||h.imagePx?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(C7,{label:`尺寸`,value:h.imagePx||`-`}),(0,Q.jsx)(C7,{label:`比例`,value:h.imageProportion||`-`}),(0,Q.jsx)(C7,{label:`分辨率`,value:h.imageSize||`-`})]}):(0,Q.jsx)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`,textAlign:`center`},children:(0,Q.jsx)(jR,{color:`default`,children:`图片参数待用户配置`})}):null,!h?.references||h.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:h.references.map((e,t)=>U(e,t))})]}),h.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`,marginBottom:6},children:h.genType===`video`?`生成视频`:`生成图片`}),h.genType===`video`?H():B()]}):null,h.status===`failed`&&h.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:[`错误信息: `,h.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,g7(h.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,g7(h.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[T&&(T.record.genType===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(DX,{})),T&&(T.record.genType===`video`?`生成视频`:`生成图片`)]}),open:!!T,onCancel:()=>E(null),onOk:I,okText:`提交生成`,cancelText:`取消`,confirmLoading:T?S===T.record.id:!1,width:420,children:T?(0,Q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginTop:16},children:T.record.genType===`video`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{padding:12,borderRadius:10,background:`#f8f9fc`},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:11,color:`#94a3b8`,display:`block`},children:`时长`}),(0,Q.jsxs)(Z.Text,{strong:!0,children:[T.record.duration||5,`s`]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`画面比例`}),(0,Q.jsx)(Tb,{value:T.ratio,onChange:e=>E(t=>t?{...t,ratio:e}:null),style:{width:`100%`},options:[`16:9`,`4:3`,`1:1`,`3:4`,`9:16`,`21:9`].map(e=>({value:e,label:e}))})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.resolution,onChange:e=>E(t=>t?{...t,resolution:e}:null),style:{width:`100%`},options:[`480p`,`720p`,`1080p`].map(e=>({value:e,label:e}))})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{style:{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:T.record.imagePx||`-`})]}),(0,Q.jsxs)(`div`,{style:{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:T.record.imageProportion||`-`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#64748b`,display:`block`,marginBottom:6},children:`分辨率`}),(0,Q.jsx)(Tb,{value:T.image_size,onChange:e=>E(t=>t?{...t,image_size:e}:null),style:{width:`100%`},options:[`2K`,`4K`].map(e=>({value:e,label:e}))})]})]})}):null})]})},{RangePicker:tUe}=gM,w7=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),T7=20,E7=e=>e&&(e.name||e.modelName||e.id)||null,D7={image:`empty`,video:`empty`,videoCover:`empty`,references:{}},O7={pending:{color:`default`,text:`待处理`,icon:(0,Q.jsx)(fM,{})},generating:{color:`warning`,text:`生成中`,icon:(0,Q.jsx)(fm,{spin:!0})},completed:{color:`success`,text:`已完成`,icon:(0,Q.jsx)(KK,{})},failed:{color:`error`,text:`失败`,icon:(0,Q.jsx)(Cq,{})}},k7={timeout:`任务超时`,queued:`已入队`,preparing:`准备中`,creating_provider_task:`创建任务中`,waiting_remote:`等待生成`,result_ready:`结果就绪`,downloading:`下载中`,done:`完成`,download_failed:`下载失败`,polling:`轮询中`,failed:`失败`},A7={image:{text:`图片`,color:`purple`,icon:(0,Q.jsx)(DX,{})},video:{text:`视频`,color:`geekblue`,icon:(0,Q.jsx)(m8,{})}},nUe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),j7=e=>!!e&&/^blob:/i.test(e.trim()),M7=e=>{if(!e)return``;let t=String(e).trim();return t?nUe(t)?t:w7?`${w7}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},rUe=e=>e?e.length>12?`${e.slice(0,8)}...`:e:`-`,N7=e=>e?B5(e):`-`,iUe=e=>e==null||e===``,P7=e=>{if(!e||j7(e))return!1;try{let t=new URL(M7(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}},F7=e=>e?j7(e)||P7(e)?`invalid`:`checking`:`empty`,I7=e=>{let t=e.url||e.mediaUrl||e.fileUrl;return typeof t==`string`&&t.trim()?t.trim():void 0},L7=e=>{let t=String(e.type||e.mediaType||e.mimeType||``).toLowerCase(),n=I7(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`},R7=(e,t)=>`${t}-${I7(e)||`empty`}`,z7=(e,t=`资源`)=>j7(e)?`本地临时素材已失效`:P7(e)?`${t}链接已超时,请刷新列表或重新搜索后再查看`:`${t}加载失败,请刷新列表或重新搜索后再查看`,B7=({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]}),V7=({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:iUe(t)?`-`:t})]}),H7=()=>(0,tC.default)().startOf(`day`),U7=()=>(0,tC.default)().endOf(`day`),aUe=()=>{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)([H7(),U7()]),[D,O]=(0,C.useState)([H7(),U7()]),[k,A]=(0,C.useState)(0),[j,M]=(0,C.useState)(null),[N,P]=(0,C.useState)(D7),[F,I]=(0,C.useState)(!1),L=(0,C.useRef)(null),[R,z]=(0,C.useState)(null),B=(0,C.useCallback)(async()=>{a(!0);try{let e=await oVe({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:T7});t(e.items||[]),r(e.total||0)}catch(e){CP.error(e?.message||`加载创作记录失败`)}finally{a(!1)}},[u,c,o,v,b,S,D]);(0,C.useEffect)(()=>{B()},[B,k]),(0,C.useEffect)(()=>{if(!j){P(D7);return}let e=(j.mediaReferences||[]).reduce((e,t,n)=>{let r=I7(t);return e[R7(t,n)]=F7(r),e},{});L.current&&(L.current.pause(),L.current.currentTime=0),I(!1),P({image:F7(j.imageUrl),video:F7(j.videoUrl),videoCover:F7(j.videoCoverUrl),references:e})},[j]);let V=()=>{s(1),y(m.trim()),x(g.trim()),w(f),O(T),A(e=>e+1)},H=()=>{l(``),d(``),p(``),h(``),_(``),y(``),x(``),w(``);let e=[H7(),U7()];E(e),O(e),s(1),A(e=>e+1)},U=(0,C.useCallback)(e=>{M(e)},[]),W=()=>{L.current&&L.current.pause(),I(!1),M(null)},ee=e=>{P(t=>({...t,...e}))},te=(e,t)=>{P(n=>({...n,references:{...n.references,[e]:t}}))},ne=()=>{if(j?.videoUrl){if(P7(j.videoUrl)){ee({video:`invalid`}),CP.warning(`视频链接已超时,请刷新列表或重新搜索后再查看`);return}I(!0),window.setTimeout(()=>{L.current?.play().catch(()=>{I(!1),ee({video:`invalid`}),CP.warning(`视频播放失败,请确认资源链接是否仍然有效`)})},0)}},re=(e,t=`素材`)=>{if(!e){CP.warning(`${t}链接为空,暂无法查看`);return}if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`${t}链接已超时,请刷新列表或重新搜索后再查看`);return}window.open(M7(e),`_blank`,`noopener,noreferrer`)},ie=(e,t,n)=>{if(j7(e)){CP.warning(`本地临时素材已失效,暂无法查看`);return}if(P7(e)){CP.warning(`链接已超时,请刷新列表或重新搜索后再查看`);return}z({url:M7(e),type:t,title:n})},ae=()=>z(null),G=(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:rUe(t.userId)})]})},{title:`类型`,dataIndex:`genType`,width:90,render:e=>{let t=A7[e]||{text:e||`-`,color:`default`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`引擎`,key:`engine`,width:160,render:(e,t)=>{let n=E7(t.engineSnapshot);return(0,Q.jsx)(hx,{title:t.engineId||`未知引擎`,placement:`topLeft`,children:(0,Q.jsx)(jR,{icon:(0,Q.jsx)(W2,{}),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)(IM,{size:2,wrap:!0,children:n.map((e,t)=>{let n=I7(e),r=L7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)(hx,{title:i,children:(0,Q.jsx)($S,{size:`small`,type:`text`,icon:r===`video`?(0,Q.jsx)(m8,{style:{color:`#6366f1`}}):r===`audio`?(0,Q.jsx)(iU,{style:{color:`#f59e0b`}}):(0,Q.jsx)(DX,{style:{color:`#8b5cf6`}}),style:{width:28,height:28,padding:0},onClick:e=>{e.stopPropagation(),ie(n,r===`video`?`video`:`image`,i)}})},t):null})})}},{title:`结果`,key:`result`,width:90,render:(e,t)=>t.status===`completed`?t.genType===`video`&&t.videoUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(C0,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),ie(t.videoUrl,`video`,`生成视频`)},children:`看视频`}):t.genType===`image`&&t.imageUrl?(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(DX,{}),type:`link`,style:{padding:0},onClick:e=>{e.stopPropagation(),ie(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)(hx,{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)(IM,{size:4,wrap:!0,children:[t.duration?(0,Q.jsxs)(jR,{children:[t.duration,`s`]}):null,t.aspectRatio?(0,Q.jsx)(jR,{children:t.aspectRatio}):null,t.resolution?(0,Q.jsx)(jR,{children:t.resolution}):null]}):(0,Q.jsx)(jR,{color:`default`,children:`无参数`}):t.imageSize||t.imageProportion||t.imagePx?(0,Q.jsxs)(IM,{size:4,wrap:!0,children:[t.imageSize?(0,Q.jsx)(jR,{children:t.imageSize}):null,t.imageProportion?(0,Q.jsx)(jR,{children:t.imageProportion}):null,t.imagePx?(0,Q.jsx)(jR,{children:t.imagePx}):null]}):(0,Q.jsx)(jR,{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=O7[e]||{color:`default`,text:e||`-`,icon:null};return(0,Q.jsx)(jR,{color:t.color,icon:t.icon,children:t.text})}},{title:`阶段`,dataIndex:`pipelineStage`,width:120,render:e=>(0,Q.jsx)(jR,{color:`blue`,children:k7[e]||e||`-`})},{title:`时间`,key:`time`,width:170,render:(e,t)=>(0,Q.jsxs)(`div`,{style:{fontSize:12,color:`#94a3b8`},children:[(0,Q.jsx)(`div`,{children:N7(t.createdAt)}),t.generatedAt?(0,Q.jsxs)(`div`,{style:{color:`#10b981`},children:[`生成: `,N7(t.generatedAt)]}):null]})},{title:`操作`,key:`action`,width:90,fixed:`right`,render:(e,t)=>(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>U(t),children:`详情`})}],[U]),oe=j?A7[j.genType]||{text:j.genType||`-`,color:`default`,icon:null}:null,K=j?O7[j.status]||{color:`default`,text:j.status||`-`,icon:null}:null,se=()=>{if(!j||j.genType!==`image`||j.status!==`completed`)return null;if(!j.imageUrl)return(0,Q.jsx)(B7,{text:`此图片任务暂无结果图片`,minHeight:260});if(N.image===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.imageUrl,`图片`),minHeight:260});let e=M7(j.imageUrl);return(0,Q.jsxs)(`div`,{style:{position:`relative`,width:`100%`,minHeight:260,borderRadius:12,background:`#f8f9fc`,border:`1px solid #e2e8f0`,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:[(0,Q.jsx)(`img`,{src:e,alt:`生成图片`,onLoad:()=>ee({image:`valid`}),onError:()=>ee({image:`invalid`}),style:{display:N.image===`valid`?`block`:`none`,width:`100%`,maxHeight:560,objectFit:`contain`,background:`#fff`}},`${j.id}-${e}`),N.image===`checking`?(0,Q.jsx)(B7,{text:`图片加载检测中...`,minHeight:260}):null]})},ce=()=>{if(!j||F||N.video===`invalid`)return null;let e=j.videoUrl?(0,Q.jsx)($S,{type:`primary`,shape:`circle`,size:`large`,icon:(0,Q.jsx)(C0,{}),onClick:ne,style:{boxShadow:`0 8px 20px rgba(15,23,42,0.25)`}}):null;if(!j.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)(B7,{text:`此视频无封面`,minHeight:340,action:e})});if(N.videoCover===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoCoverUrl,`视频封面`),minHeight:340,action:e});let t=M7(j.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:()=>ee({videoCover:`valid`}),onError:()=>ee({videoCover:`invalid`}),style:{display:N.videoCover===`valid`?`block`:`none`,width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`}},`${j.id}-cover-${t}`),N.videoCover===`checking`?(0,Q.jsx)(B7,{text:`视频封面加载检测中...`,minHeight:340,action:e}):null,N.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]})},le=()=>{if(!j||j.genType!==`video`||j.status!==`completed`)return null;if(!j.videoUrl)return(0,Q.jsx)(B7,{text:`此视频任务暂无结果视频`,minHeight:340});if(N.video===`invalid`)return(0,Q.jsx)(B7,{text:z7(j.videoUrl,`视频`),minHeight:340});let e=M7(j.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:L,src:e,preload:`metadata`,controls:F,onLoadedMetadata:()=>ee({video:`valid`}),onCanPlay:()=>ee({video:`valid`}),onPlaying:()=>{I(!0),ee({video:`valid`})},onPause:()=>I(!1),onEnded:()=>I(!1),onError:()=>{I(!1),ee({video:`invalid`})},style:{width:`100%`,height:`100%`,objectFit:`contain`,background:`#000`,opacity:+!!F,pointerEvents:F?`auto`:`none`}},`${j.id}-${e}`),ce()]})},ue=(e,t)=>{let n=I7(e),r=L7(e),i=R7(e,t),a=N.references[i]||F7(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)(B7,{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)(B7,{text:j7(n)?`本地临时素材已失效`:`素材不可访问`,compact:!0})}),(0,Q.jsx)(hx,{title:c,children:(0,Q.jsx)(Z.Text,{ellipsis:!0,style:{display:`block`,marginTop:4,fontSize:11,color:`#94a3b8`},children:c})})]},i);let l=M7(n);return(0,Q.jsxs)(`div`,{style:{width:94},children:[(0,Q.jsxs)(`div`,{role:`button`,tabIndex:0,title:`点击新页面查看素材`,onClick:()=>re(n,s?`视频素材`:o?`图片素材`:`素材`),onKeyDown:e=>{e.key===`Enter`&&re(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:()=>te(i,`valid`),onError:()=>te(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:()=>te(i,`valid`),onError:()=>te(i,`invalid`),style:{display:`none`}}),(0,Q.jsxs)(`div`,{style:{color:`#64748b`,fontSize:12,textAlign:`center`},children:[(0,Q.jsx)(C0,{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)(fm,{style:{color:`#6366f1`}})}):null]}),(0,Q.jsx)(hx,{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)(VA,{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)(IM,{children:[(0,Q.jsx)(C0,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`创作记录管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[n,` 条记录`]})]}),(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(Tb,{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)(Tb,{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)(Tb,{allowClear:!0,showSearch:!0,placeholder:`引擎筛选`,value:f||void 0,style:{width:180},onChange:e=>{p(e||``),s(1),w(e||``)},optionFilterProp:`label`,options:Array.from(new Map(e.filter(e=>e.engineId).map(e=>[e.engineId,{value:e.engineId,label:E7(e.engineSnapshot)||e.engineId}])).values())}),(0,Q.jsx)(tUe,{value:T,onChange:e=>{e&&e[0]&&e[1]?E([e[0].startOf(`day`),e[1].endOf(`day`)]):E(e)},placeholder:[`开始日期`,`结束日期`]}),(0,Q.jsx)(GN,{placeholder:`用户ID搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:m,onChange:e=>h(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)(GN,{placeholder:`用户名搜索`,prefix:(0,Q.jsx)(bb,{style:{color:`#94a3b8`}}),style:{width:150},value:g,onChange:e=>_(e.target.value),onPressEnter:V,allowClear:!0}),(0,Q.jsx)($S,{type:`primary`,onClick:V,style:{borderRadius:8},children:`搜索`}),(0,Q.jsx)($S,{onClick:H,style:{borderRadius:8},children:`重置`})]})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:i,columns:G,dataSource:e,scroll:{x:1650},pagination:{current:o,pageSize:T7,total:n,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:e=>s(e)}})]}),(0,Q.jsx)(TP,{title:(0,Q.jsxs)(IM,{children:[j?.genType===`video`?(0,Q.jsx)(m8,{}):(0,Q.jsx)(DX,{}),(0,Q.jsx)(`span`,{children:`创作记录详情`})]}),open:!!j,onCancel:W,footer:null,width:900,destroyOnClose:!0,children:j?(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:[oe?(0,Q.jsx)(jR,{color:oe.color,icon:oe.icon,children:oe.text}):null,K?(0,Q.jsx)(jR,{color:K.color,icon:K.icon,children:K.text}):null,j.pipelineStage?(0,Q.jsx)(jR,{color:`blue`,children:k7[j.pipelineStage]||j.pipelineStage}):null]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`用户名称`,value:j.userName||`未知用户`}),(0,Q.jsx)(V7,{label:`用户ID`,value:j.userId||`-`}),(0,Q.jsx)(V7,{label:`任务ID`,value:j.id})]}),(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:j.originalPrompt||`-`})]}),j.genType===`video`?(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`时长`,value:j.duration?`${j.duration}秒`:`-`}),(0,Q.jsx)(V7,{label:`画面比例`,value:j.aspectRatio||`-`}),(0,Q.jsx)(V7,{label:`分辨率`,value:j.resolution||`-`})]}):(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`图片档位`,value:j.imageSize||`-`}),(0,Q.jsx)(V7,{label:`图片比例`,value:j.imageProportion||`-`}),(0,Q.jsx)(V7,{label:`像素尺寸`,value:j.imagePx||`-`})]}),j.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)(V7,{label:`引擎名称`,value:j.engineSnapshot.name||`-`}),(0,Q.jsx)(V7,{label:`服务商`,value:j.engineSnapshot.provider||`-`}),(0,Q.jsx)(V7,{label:`模型`,value:j.engineSnapshot.modelName||`-`}),(0,Q.jsx)(V7,{label:`引擎ID`,value:j.engineSnapshot.id||j.engineId||`-`})]})]}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`总积分`,value:(0,Q.jsx)(Z.Text,{strong:!0,style:{color:`#6366f1`},children:j.creditsCost||0})}),(0,Q.jsx)(V7,{label:`文字积分`,value:`${j.textCreditsCost||0} (${j.textTokensUsed||0} tokens)`}),(0,Q.jsx)(V7,{label:`图片 tokens`,value:j.imageTokensUsed??0}),(0,Q.jsx)(V7,{label:`视频 tokens`,value:j.videoTokensUsed??0})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,padding:12,borderRadius:10,background:`#f8f9fc`,flexWrap:`wrap`},children:[(0,Q.jsx)(V7,{label:`第三方任务ID`,value:j.providerTaskId||j.seedanceTaskId||`-`}),(0,Q.jsx)(V7,{label:`轮询次数`,value:j.pollCount??0}),(0,Q.jsx)(V7,{label:`重试次数`,value:j.retryCount??0})]}),!j?.mediaReferences||j.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:j.mediaReferences.map((e,t)=>ue(e,t))})]}),j.mediaReferences&&j.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)(IM,{size:8,wrap:!0,children:j.mediaReferences.map((e,t)=>{let n=I7(e),r=L7(e),i=typeof e.name==`string`&&e.name?e.name:`附件 ${t+1}`;return n?(0,Q.jsx)($S,{size:`small`,icon:r===`video`?(0,Q.jsx)(C0,{}):(0,Q.jsx)(j$,{}),onClick:()=>ie(n,r===`video`?`video`:`image`,i),children:i},t):null})})]}):null,j.status===`completed`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:6},children:[(0,Q.jsx)(Z.Text,{style:{fontSize:12,color:`#94a3b8`,display:`block`},children:j.genType===`video`?`生成视频`:`生成图片`}),j.genType===`video`&&j.videoUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(C0,{}),onClick:()=>ie(j.videoUrl,`video`,`生成视频`),style:{padding:0},children:`弹窗播放`}):null,j.genType===`image`&&j.imageUrl?(0,Q.jsx)($S,{size:`small`,type:`link`,icon:(0,Q.jsx)(DX,{}),onClick:()=>ie(j.imageUrl,`image`,`生成图片`),style:{padding:0},children:`弹窗查看`}):null]}),j.genType===`video`?le():se()]}):null,j.status===`failed`&&j.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:[`错误信息: `,j.errorMessage]})}):null,(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:16,fontSize:12,color:`#94a3b8`,flexWrap:`wrap`},children:[(0,Q.jsxs)(`span`,{children:[`创建: `,N7(j.createdAt)]}),(0,Q.jsxs)(`span`,{children:[`生成: `,N7(j.generatedAt)]})]})]}):(0,Q.jsx)(Yy,{description:`暂无详情`})}),(0,Q.jsx)(TP,{title:R?.title||`资源预览`,open:!!R,onCancel:ae,footer:null,width:R?.type===`video`?800:600,destroyOnHidden:!0,children:R?R.type===`video`?(0,Q.jsx)(`video`,{src:R.url,controls:!0,autoPlay:!0,style:{width:`100%`,maxHeight:600,background:`#000`,borderRadius:8}},R.url):(0,Q.jsx)(`img`,{src:R.url,alt:R.title,style:{width:`100%`,maxHeight:600,objectFit:`contain`,borderRadius:8}}):null})]})},W7=20,oUe=[{value:`pending`,label:`已创建`},{value:`waiting_user`,label:`等待用户操作`},{value:`processing`,label:`处理中`},{value:`completed`,label:`已完成`},{value:`failed`,label:`失败`},{value:`cancelled`,label:`已取消`}],sUe={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:`已取消`}},cUe={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},G7=e=>e?B5(e):`-`,K7=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,lUe=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=sUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},uUe=()=>{let e=Ze(),[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 sVe({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:W7});n(e.items||[]),i(e.total||0)}catch(e){CP.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.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`爆款开头复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看任务列表、素材、步骤详情和生成结果。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>k(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`任务状态`,style:{width:160},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:oUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/项目名/核心点`,style:{width:260},value:d,onChange:e=>f(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:p,onChange:e=>m(e.target.value),onPressEnter:j}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:h,onChange:e=>g(e.target.value),onPressEnter:j}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:_,onChange:v,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:j,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(null),b(``),S(``),T(``),D(null),c(1),k(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:W7,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1380},columns:[{title:`项目ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:K7(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:K7(t.userId)})]})},{title:`项目信息`,width:260,render:(e,t)=>(0,Q.jsxs)(IM,{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)(lUe,{status:e})},{title:`当前步骤`,dataIndex:`currentStepCode`,width:140,render:e=>cUe[e]||e||`-`},{title:`图片结果`,dataIndex:`finalImageUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`视频结果`,dataIndex:`finalVideoUrl`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`有`}):(0,Q.jsx)(jR,{children:`无`})},{title:`错误信息`,dataIndex:`errorMessage`,width:220,ellipsis:!0,render:e=>e||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:G7},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:G7},{title:`操作`,fixed:`right`,width:110,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/hot-opening-replications/${n.id}`),children:`详情`})}]})]})})})},q7=({value:e,maxHeight:t=420})=>e==null||e===``?(0,Q.jsx)(Yy,{image:Yy.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)}),dUe=({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)(q7,{value:e})}),t!==void 0&&o.push({key:`output`,label:i,children:(0,Q.jsx)(q7,{value:t})}),n!==void 0&&o.push({key:`raw`,label:a,children:(0,Q.jsx)(q7,{value:n})}),o.length?(0,Q.jsx)(Wh,{size:`small`,style:{marginTop:12},items:o}):null},fUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``);function pUe(e){if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${fUe}${t.startsWith(`/`)?t:`/${t}`}`:``}var J7=({url:e,type:t,height:n=260,emptyDescription:r=`暂无资源`,errorDescription:i=`资源加载失败,可能文件不存在、签名过期或访问权限受限。`})=>{let a=(0,C.useMemo)(()=>pUe(e),[e]),[o,s]=(0,C.useState)(!1);(0,C.useEffect)(()=>{s(!1)},[a]);let c=a?(0,Q.jsxs)(IM,{wrap:!0,style:{marginTop:8},children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(oz,{}),onClick:async()=>{if(a)try{await navigator.clipboard.writeText(a),CP.success(`资源地址已复制`)}catch{CP.error(`复制失败,请手动复制`)}},children:`复制地址`}),(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(j$,{}),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)(cf,{type:`warning`,showIcon:!0,message:`资源预览失败`,description:i,style:{marginBottom:8}}):null,t===`image`?(0,Q.jsx)(jN,{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)(Yy,{image:Yy.PRESENTED_IMAGE_SIMPLE,description:r})})})},Y7={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`},waiting_remote:{text:`等待远端结果`,color:`processing`},polling:{text:`轮询远端结果`,color:`processing`},result_ready:{text:`结果已就绪`,color:`success`},downloading:{text:`下载中`,color:`processing`},done:{text:`已完成`,color:`success`},download_failed:{text:`下载失败`,color:`error`},retry_waiting:{text:`等待重试`,color:`orange`},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`}},X7={material_input:`素材输入`,image_prompt_optimize:`图片 AI 提词`,image_generate:`图片生成`,video_prompt_optimize:`视频 AI 提词`,video_generate:`视频生成`},Z7={hot_opening_replicate:`爆款开头复刻`,shot_replicate:`拆镜复刻`},Q7={ai_suggestion:{text:`AI 建议`,color:`purple`},custom:{text:`自定义`,color:`cyan`},original:{text:`原视频`,color:`blue`}};function $7(e){return e?Z7[e]||e:`-`}function e9(e){return e?X7[e]||e:`-`}function mUe(e){return e?Y7[e]?.text||X7[e]||Z7[e]||Q7[e]?.text||e:`-`}function hUe(e){return e?Y7[e]?.color||Q7[e]?.color||`blue`:`default`}var t9=({status:e,tooltipRaw:t=!0})=>{if(e==null||e===``)return(0,Q.jsx)(jR,{children:`-`});let n=String(e),r=mUe(n),i=(0,Q.jsx)(jR,{color:hUe(n),children:r});return!t||r===n?i:(0,Q.jsx)(hx,{title:n,children:i})};function n9(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function r9(e,...t){for(let n of t){let t=e[n];if(t!=null&&String(t).trim()!==``)return String(t)}return``}function i9(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 gUe(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 a9(e){if(!n9(e))return null;let t=r9(e,`key`);return t?{key:t,label:r9(e,`label`)||t,type:r9(e,`type`)||void 0,enabled:i9(e,!0,`enabled`),editable:i9(e,!0,`editable`),maxLength:gUe(e,`maxLength`,`max_length`)}:null}function o9(e){if(!n9(e))return null;let t=e.data;return n9(t)?t:Array.isArray(e.sections)?e:null}function _Ue(e){return!!o9(e)}function vUe(e){let t=o9(e);return(Array.isArray(t?.sections)?t.sections:[]).map(e=>{let t=a9(e);if(!t||!n9(e))return null;let n=Array.isArray(e.children)?e.children.map(a9).filter(Boolean):[],r=Array.isArray(e.itemFields)?e.itemFields.map(a9).filter(Boolean):Array.isArray(e.item_fields)?e.item_fields.map(a9).filter(Boolean):[];return{...t,contentKey:r9(e,`contentKey`,`content_key`)||void 0,children:n,itemFields:r}}).filter(e=>!!e&&e.enabled)}function yUe(e){return n9(e)?Object.entries(e).filter(([e])=>![`schemaVersion`,`schemaUsage`,`schema_version`,`schema_usage`].includes(e)).map(([e,t])=>Array.isArray(t)&&t.every(n9)?{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:[]}:n9(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 s9=e=>!!e&&typeof e==`object`&&!Array.isArray(e),c9=e=>typeof e==`string`&&e.length>80,l9=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)(q7,{value:e,maxHeight:220}),u9=e=>e?(0,Q.jsx)(jR,{color:`processing`,children:`可编辑`}):(0,Q.jsx)(jR,{color:`default`,children:`只读`}),d9=(e,t)=>e[t],bUe=(e,t)=>{let n=d9(e,t.key);if(!s9(n))return(0,Q.jsx)(q7,{value:n??{},maxHeight:220});let r=t.children.filter(e=>e.enabled);return r.length?(0,Q.jsx)(bM,{size:`small`,column:2,bordered:!0,children:r.map(e=>(0,Q.jsx)(bM.Item,{label:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),span:c9(n[e.key])||s9(n[e.key])||Array.isArray(n[e.key])?2:1,children:l9(n[e.key])},e.key))}):(0,Q.jsx)(q7,{value:n,maxHeight:220})},xUe=(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}))},SUe=(e,t)=>{let n=d9(e,t.key);if(!Array.isArray(n)||!n.every(s9))return(0,Q.jsx)(q7,{value:n??[],maxHeight:260});let r=n,i=xUe(t,r);return(0,Q.jsx)(vR,{size:`small`,rowKey:(e,n)=>`${t.key}-${n}`,columns:i.map(e=>({title:(0,Q.jsxs)(IM,{size:4,children:[e.label,u9(e.editable)]}),dataIndex:e.key,key:e.key,width:c9(r.find(t=>t[e.key])?.[e.key])?320:160,render:e=>l9(e)})),dataSource:r,pagination:!1,scroll:{x:Math.max(900,i.length*180)},tableLayout:`fixed`})},CUe=(e,t)=>l9(d9(e,t.key)),wUe=({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)(Yy,{description:`暂无视频提词 schema`});let s=o?e:{},c=_Ue(n),l=(c?vUe(n):yUe(s)).filter(e=>e.key in s).map(e=>({key:e.key,label:(0,Q.jsxs)(IM,{size:8,wrap:!0,children:[(0,Q.jsx)(`span`,{children:e.label}),u9(e.editable),c?null:(0,Q.jsx)(jR,{color:`warning`,children:`管理后台兜底展示`})]}),children:e.type===`object`?bUe(s,e):e.type===`flow`?SUe(s,e):CUe(s,e)}));return(0,Q.jsxs)(IM,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,Q.jsx)(VA,{size:`small`,title:`Schema 配置来源`,children:(0,Q.jsxs)(bM,{size:`small`,column:3,bordered:!0,children:[(0,Q.jsx)(bM.Item,{label:`来源`,children:r||n?.source||(c?`-`:`viewer_fallback`)}),(0,Q.jsx)(bM.Item,{label:`版本`,children:i||n?.version||`-`}),(0,Q.jsx)(bM.Item,{label:`历史兜底`,children:a||!c?(0,Q.jsx)(jR,{color:`warning`,children:`是`}):(0,Q.jsx)(jR,{color:`success`,children:`否`})})]})}),t?(0,Q.jsx)(VA,{size:`small`,title:`最终视频提示词`,children:(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:t})}):null,l.length?(0,Q.jsx)(Wh,{size:`small`,items:l}):o?(0,Q.jsx)(VA,{size:`small`,title:`视频提词 Schema`,children:(0,Q.jsx)(q7,{value:s,maxHeight:360})}):null,o?(0,Q.jsx)(Wh,{size:`small`,items:[{key:`raw_schema`,label:`原始 JSON / 历史脏字段排查`,children:(0,Q.jsx)(q7,{value:s,maxHeight:420})}]}):null]})},TUe=[`material_input`,`image_prompt_optimize`,`image_generate`,`video_prompt_optimize`,`video_generate`],EUe={material_input:`参考素材、项目名称和核心内容点`,image_prompt_optimize:`图片 AI 提词优化结果`,image_generate:`图片引擎、生成参数和结果图`,video_prompt_optimize:`视频 JSON schema、动作流程和最终提词`,video_generate:`视频引擎、生成参数、封面和结果视频`},f9=e=>e?B5(e):`-`,p9=e=>e?e.length>18?`${e.slice(0,10)}...${e.slice(-4)}`:e:`-`,DUe=({text:e=`-`})=>(0,Q.jsx)(Z.Text,{type:`secondary`,children:e}),m9=({step:e})=>e?(0,Q.jsx)(dUe,{input:e.input,output:e.output}):null,h9=({index:e,stepCode:t,step:n,current:r})=>(0,Q.jsxs)(IM,{wrap:!0,size:8,children:[(0,Q.jsx)(Z.Text,{strong:!0,children:`第${e}步:${e9(t)}`}),(0,Q.jsx)(t9,{status:n?.status||`not_started`}),r?(0,Q.jsx)(jR,{color:`blue`,children:`当前步骤`}):null,(0,Q.jsx)(Z.Text,{type:`secondary`,children:EUe[t]||t}),n?.updatedAt?(0,Q.jsxs)(Z.Text,{type:`secondary`,children:[`更新时间:`,f9(n.updatedAt)]}):null,n?.chatTaskId?(0,Q.jsx)(hx,{title:n.chatTaskId,children:(0,Q.jsxs)(jR,{children:[`Chat:`,p9(n.chatTaskId)]})}):null]}),OUe=(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)},g9=(e,t=`错误信息`)=>e?(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:t,description:e,style:{marginTop:12,marginBottom:12}}):null,kUe=(e,t=`暂无提词`)=>e?(0,Q.jsx)(Z.Paragraph,{style:{whiteSpace:`pre-wrap`,marginBottom:0},children:e}):(0,Q.jsx)(DUe,{text:t}),_9=({moduleType:e=`shot_replicate`})=>{let{projectId:t}=tt(),n=Ze(),[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(!1),s=(0,C.useCallback)(async()=>{if(t){o(!0);try{i(e===`hot_opening_replicate`?await cVe(t):await pVe(t))}catch(e){CP.error(e?.message||`加载复刻项目详情失败`)}finally{o(!1)}}},[e,t]);(0,C.useEffect)(()=>{s()},[s]);let c=(0,C.useMemo)(()=>{let e={};return(r?.steps||[]).forEach(t=>{e[t.stepCode]=t}),e},[r]),l=r?.module||e,u=$7(l),d=(0,C.useMemo)(()=>TUe.map(e=>{let t=c[e],n=`wait`;return t?.status===`completed`?n=`finish`:t?.status===`processing`?n=`process`:t?.status===`failed`&&(n=`error`),{title:e9(e),description:t?(0,Q.jsx)(t9,{status:t.status}):`未创建`,status:n}}),[c]),f=(0,C.useMemo)(()=>OUe(r,c),[r,c]);if(a&&!r)return(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})});if(!r)return(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到复刻项目详情`})});let p=c.material_input,m=c.image_prompt_optimize,h=c.image_generate,g=c.video_prompt_optimize,_=c.video_generate,v=r.imageGeneration?.resultImageUrl||r.finalImageUrl,y=r.videoGeneration?.resultVideoCoverUrl||r.finalVideoCoverUrl,b=r.videoGeneration?.resultVideoUrl||r.finalVideoUrl,x=[{key:`material_input`,label:(0,Q.jsx)(h9,{index:1,stepCode:`material_input`,step:p,current:r.currentStepCode===`material_input`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`素材步骤ID`,children:r.material?.materialStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`参考素材项目名`,children:r.material?.sourceProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成项目名称`,children:r.material?.targetProjectName||`-`}),(0,Q.jsx)(bM.Item,{label:`核心内容点`,span:2,children:r.material?.coreContentPoint||`-`})]}),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`素材视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:r.material?.materialVideoUrl,emptyDescription:`暂无素材视频`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`素材图片`]}),children:(0,Q.jsx)(J7,{type:`image`,url:r.material?.materialImageUrl,emptyDescription:`暂无素材图片`})})]}),g9(p?.errorMessage),(0,Q.jsx)(m9,{step:p})]})},{key:`image_prompt_optimize`,label:(0,Q.jsx)(h9,{index:2,stepCode:`image_prompt_optimize`,step:m,current:r.currentStepCode===`image_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.imageGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:m?.status||r.imageGeneration?.status})}),(0,Q.jsx)(bM.Item,{label:`图片提示词`,span:2,children:kUe(r.imageGeneration?.prompt,`暂无图片提示词`)})]}),g9(m?.errorMessage||r.imageGeneration?.errorMessage),(0,Q.jsx)(m9,{step:m})]})},{key:`image_generate`,label:(0,Q.jsx)(h9,{index:3,stepCode:`image_generate`,step:h,current:r.currentStepCode===`image_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.imageGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.imageGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.imageGeneration?.status||h?.status})}),(0,Q.jsx)(bM.Item,{label:`图片引擎ID`,children:r.imageGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`图片引擎名称`,children:r.imageGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.imageGeneration?.params||{},maxHeight:160})})]}),g9(r.imageGeneration?.errorMessage||h?.errorMessage),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`图片结果`]}),children:(0,Q.jsx)(J7,{type:`image`,url:v,height:360,emptyDescription:h?.status===`failed`||r.imageGeneration?.errorMessage?`图片生成失败,未返回图片地址`:`暂无图片结果`,errorDescription:`图片资源加载失败,可能图片文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(m9,{step:h})]})},{key:`video_prompt_optimize`,label:(0,Q.jsx)(h9,{index:4,stepCode:`video_prompt_optimize`,step:g,current:r.currentStepCode===`video_prompt_optimize`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`提词步骤ID`,children:r.videoGeneration?.promptStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`步骤状态`,children:(0,Q.jsx)(t9,{status:g?.status})}),(0,Q.jsx)(bM.Item,{label:`提词参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.promptParams||{},maxHeight:160})})]}),g9(g?.errorMessage||r.videoGeneration?.errorMessage),(0,Q.jsx)(wUe,{schema:r.videoGeneration?.promptSchema,finalPrompt:r.videoGeneration?.finalPrompt,schemaConfigSnapshot:r.videoGeneration?.schemaConfigSnapshot,schemaConfigSource:r.videoGeneration?.schemaConfigSource,schemaConfigVersion:r.videoGeneration?.schemaConfigVersion,schemaConfigIsFallback:r.videoGeneration?.schemaConfigIsFallback}),(0,Q.jsx)(m9,{step:g})]})},{key:`video_generate`,label:(0,Q.jsx)(h9,{index:5,stepCode:`video_generate`,step:_,current:r.currentStepCode===`video_generate`}),children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`生成步骤ID`,children:r.videoGeneration?.generateStepId||`-`}),(0,Q.jsx)(bM.Item,{label:`Chat任务ID`,children:r.videoGeneration?.chatTaskId||`-`}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.videoGeneration?.status||_?.status})}),(0,Q.jsx)(bM.Item,{label:`视频引擎ID`,children:r.videoGeneration?.engineId||`-`}),(0,Q.jsx)(bM.Item,{label:`视频引擎名称`,children:r.videoGeneration?.engineName||`-`}),(0,Q.jsx)(bM.Item,{label:`生成参数`,span:3,children:(0,Q.jsx)(q7,{value:r.videoGeneration?.params||{},maxHeight:160})})]}),g9(r.videoGeneration?.errorMessage||_?.errorMessage),(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(320px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(DX,{}),`视频封面`]}),children:(0,Q.jsx)(J7,{type:`image`,url:y,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回封面`:`暂无视频封面`,errorDescription:`视频封面加载失败,可能文件不存在、签名过期或访问权限受限。`})}),(0,Q.jsx)(VA,{size:`small`,title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(m8,{}),`最终视频`]}),children:(0,Q.jsx)(J7,{type:`video`,url:b,emptyDescription:_?.status===`failed`||r.videoGeneration?.errorMessage?`视频生成失败,未返回视频地址`:`暂无最终视频`,errorDescription:`视频资源加载失败,可能文件不存在、签名过期或访问权限受限。`})})]}),(0,Q.jsx)(m9,{step:_})]})}];return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>n(-1),children:`返回`}),(0,Q.jsxs)(Z.Title,{level:3,style:{margin:0},children:[u,`项目详情`]}),(0,Q.jsx)(t9,{status:r.status}),r.module&&r.module!==e?(0,Q.jsxs)(jR,{color:`gold`,children:[`接口模块:`,$7(r.module)]}):null]}),(0,Q.jsx)($S,{onClick:s,loading:a,children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`基础信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`项目ID`,children:r.id}),(0,Q.jsx)(bM.Item,{label:`模块类型`,children:(0,Q.jsx)(t9,{status:l})}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:r.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:r.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:r.title||`-`}),(0,Q.jsx)(bM.Item,{label:`当前步骤`,children:(0,Q.jsx)(hx,{title:r.currentStepCode||``,children:e9(r.currentStepCode)})}),(0,Q.jsx)(bM.Item,{label:`状态`,children:(0,Q.jsx)(t9,{status:r.status})}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:f9(r.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:f9(r.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`完成时间`,children:f9(r.completedAt)}),r.errorMessage?(0,Q.jsx)(bM.Item,{label:`错误信息`,span:3,children:(0,Q.jsx)(cf,{type:`error`,showIcon:!0,message:r.errorMessage})}):null]})}),(0,Q.jsx)(VA,{title:`步骤进度`,children:(0,Q.jsx)(Qme,{items:d})}),(0,Q.jsx)(VA,{title:`最终结果预览`,children:(0,Q.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`,gap:16},children:[(0,Q.jsx)(VA,{size:`small`,title:`最终图片`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalImageUrl||r.imageGeneration?.resultImageUrl,height:220,emptyDescription:`暂无最终图片`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频封面`,children:(0,Q.jsx)(J7,{type:`image`,url:r.finalVideoCoverUrl||r.videoGeneration?.resultVideoCoverUrl,height:220,emptyDescription:`暂无最终视频封面`})}),(0,Q.jsx)(VA,{size:`small`,title:`最终视频`,children:(0,Q.jsx)(J7,{type:`video`,url:r.finalVideoUrl||r.videoGeneration?.resultVideoUrl,height:220,emptyDescription:`暂无最终视频`})})]})}),(0,Q.jsx)(Wh,{defaultActiveKey:f,items:x}),(0,Q.jsx)(Wh,{items:[{key:`steps-table`,label:`完整步骤列表`,children:(0,Q.jsx)(vR,{rowKey:`id`,size:`small`,pagination:!1,dataSource:r.steps||[],scroll:{x:1100},columns:[{title:`序号`,dataIndex:`stepIndex`,width:70},{title:`步骤`,dataIndex:`stepCode`,width:160,render:e=>(0,Q.jsx)(hx,{title:e,children:e9(e)})},{title:`状态`,dataIndex:`status`,width:120,render:e=>(0,Q.jsx)(t9,{status:e})},{title:`版本`,dataIndex:`version`,width:70},{title:`当前有效`,dataIndex:`isCurrent`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`success`,children:`是`}):(0,Q.jsx)(jR,{children:`否`})},{title:`Chat任务`,dataIndex:`chatTaskId`,width:160,render:e=>(0,Q.jsx)(hx,{title:e||``,children:p9(e)})},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:f9},{title:`完成时间`,dataIndex:`completedAt`,width:170,render:f9},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0,render:e=>e||`-`}]})},{key:`raw-detail`,label:`完整详情原始 JSON`,children:(0,Q.jsx)(q7,{value:r,maxHeight:520})}]})]})})},AUe=()=>(0,Q.jsx)(_9,{moduleType:`hot_opening_replicate`}),v9=20,jUe=[{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:`失败`}],MUe=[{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],NUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],PUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`}},y9=e=>e?B5(e):`-`,b9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,x9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=PUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},FUe=()=>{let e=Ze(),[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 lVe({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:v9});n(e.items||[]),i(e.total||0)}catch(e){CP.error(e?.message||`加载拆镜复刻任务失败`)}finally{o(!1)}},[d,s,A,w,E,O,p,l]);(0,C.useEffect)(()=>{P()},[P,M]);let F=()=>{T(h.trim()),D(_.trim()),k(y.trim()),j(x),c(1)};return(0,Q.jsx)(`div`,{style:{padding:24},children:(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{align:`center`,style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(Z.Title,{level:3,style:{marginBottom:4},children:`拆镜复刻`}),(0,Q.jsx)(Z.Text,{type:`secondary`,children:`只读排查页面:查看拆镜总任务、AI 分析结果、切片列表和关联复刻项目。`})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>N(e=>e+1),children:`刷新`})]}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`总任务状态`,style:{width:150},value:l||void 0,onChange:e=>{u(e||``),c(1)},options:jUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:d||void 0,onChange:e=>{f(e||``),c(1)},options:MUe}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`拆镜状态`,style:{width:140},value:p||void 0,onChange:e=>{m(e||``),c(1)},options:NUe}),(0,Q.jsx)(GN,{allowClear:!0,prefix:(0,Q.jsx)(bb,{}),placeholder:`关键词:标题/内容/分类/受众`,style:{width:260},value:h,onChange:e=>g(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户ID(管理员)`,style:{width:190},value:_,onChange:e=>v(e.target.value),onPressEnter:F}),(0,Q.jsx)(GN,{allowClear:!0,placeholder:`用户名(管理员)`,style:{width:230},value:y,onChange:e=>b(e.target.value),onPressEnter:F}),(0,Q.jsx)(gM.RangePicker,{showTime:!0,value:x,onChange:S,placeholder:[`创建开始`,`创建结束`]}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(bb,{}),onClick:F,children:`搜索`}),(0,Q.jsx)($S,{onClick:()=>{u(``),f(``),m(``),g(``),v(``),b(``),S(null),T(``),D(``),k(``),j(null),c(1),N(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:a,dataSource:t,pagination:{current:s,pageSize:v9,total:r,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:c},scroll:{x:1500},columns:[{title:`任务集ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:b9(e)})},{title:`用户`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)(Z.Text,{children:t.userName||`-`}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:b9(t.userId)})]})},{title:`任务信息`,width:300,render:(e,t)=>(0,Q.jsxs)(IM,{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)(x9,{status:e})},{title:`分析状态`,dataIndex:`analysisStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`拆镜状态`,dataIndex:`splitStatus`,width:110,render:e=>(0,Q.jsx)(x9,{status:e})},{title:`切片进度`,width:180,render:(e,t)=>{let n=t.segmentCount||0,r=t.completedSegmentCount||0;return(0,Q.jsx)(zP,{size:`small`,percent:n?Math.round(r/n*100):0,format:()=>`${r}/${n}`})}},{title:`失败片段`,dataIndex:`failedSegmentCount`,width:90,render:e=>e?(0,Q.jsx)(jR,{color:`error`,children:e}):(0,Q.jsx)(jR,{children:`0`})},{title:`视频时长`,dataIndex:`videoDurationSeconds`,width:100,render:e=>`${Number(e||0).toFixed(1)}s`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:y9},{title:`更新时间`,dataIndex:`updatedAt`,width:170,render:y9},{title:`操作`,fixed:`right`,width:120,render:(t,n)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>e(`/shot-replications/task-sets/${n.id}`),children:`查看切片`})}]})]})})})},IUe=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/api\/?$/i,``).replace(/\/$/,``),S9=20,LUe=[{value:`ai_suggestion`,label:`AI 建议`},{value:`custom`,label:`自定义`}],RUe=[{value:`none`,label:`未拆镜`},{value:`pending`,label:`待拆镜`},{value:`processing`,label:`拆镜中`},{value:`completed`,label:`拆镜完成`},{value:`failed`,label:`拆镜失败`},{value:`retry_waiting`,label:`等待重试`}],zUe=[{value:`not_required`,label:`无需分析`},{value:`pending`,label:`待分析`},{value:`processing`,label:`分析中`},{value:`completed`,label:`分析完成`},{value:`failed`,label:`分析失败`}],BUe=[{value:`not_started`,label:`未复刻`},{value:`project_created`,label:`已创建项目`},{value:`processing`,label:`复刻中`},{value:`completed`,label:`复刻完成`},{value:`failed`,label:`复刻失败`}],VUe={pending_analysis:{color:`default`,text:`等待分析`},analyzing:{color:`processing`,text:`分析中`},analysis_completed:{color:`success`,text:`分析完成`},analysis_failed:{color:`error`,text:`分析失败`},splitting:{color:`warning`,text:`拆镜中`},split_completed:{color:`success`,text:`拆镜完成`},partial_failed:{color:`orange`,text:`部分失败`},failed:{color:`error`,text:`失败`},none:{color:`default`,text:`未拆镜`},pending:{color:`default`,text:`待处理`},processing:{color:`warning`,text:`处理中`},completed:{color:`success`,text:`完成`},retry_waiting:{color:`orange`,text:`等待重试`},not_required:{color:`default`,text:`无需分析`},not_started:{color:`default`,text:`未复刻`},project_created:{color:`processing`,text:`已创建项目`}},HUe=e=>{if(!e)return``;let t=String(e).trim();return t?/^(https?:)?\/\//i.test(t)||/^(blob|data):/i.test(t)?t:`${IUe}${t.startsWith(`/`)?t:`/${t}`}`:``},C9=e=>e?B5(e):`-`,w9=e=>e?e.length>16?`${e.slice(0,10)}...`:e:`-`,T9=({status:e})=>{if(!e)return(0,Q.jsx)(jR,{children:`-`});let t=VUe[e]||{color:`blue`,text:e};return(0,Q.jsx)(jR,{color:t.color,children:t.text})},E9=({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:HUe(e),controls:!0,preload:`metadata`,style:{width:`100%`,maxHeight:t,borderRadius:12,background:`#0f172a`}}):(0,Q.jsx)(Yy,{description:`暂无视频`,image:Yy.PRESENTED_IMAGE_SIMPLE}),UUe=({items:e=[]})=>(0,Q.jsx)(vR,{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}]}),WUe=()=>{let{taskSetId:e}=tt(),t=Ze(),[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 uVe(e))}catch(e){CP.error(e?.message||`加载拆镜任务详情失败`)}finally{d(!1)}}},[e]),A=(0,C.useCallback)(async()=>{if(e){p(!0);try{let t=await dVe(e,{sourceMode:g||void 0,splitStatus:v||void 0,analysisStatus:b||void 0,replicateStatus:S||void 0,page:c,pageSize:S9});a(t.items||[]),s(t.total||0)}catch(e){CP.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=async e=>{E(!0),O(null);try{O(await fVe(e))}catch(e){CP.error(e?.message||`加载片段详情失败`)}};return u&&!n?(0,Q.jsx)(`div`,{style:{padding:64,textAlign:`center`},children:(0,Q.jsx)(hP,{size:`large`})}):n?(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(IM,{style:{justifyContent:`space-between`,width:`100%`},children:[(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{icon:(0,Q.jsx)(BH,{}),onClick:()=>t(`/shot-replications`),children:`返回列表`}),(0,Q.jsx)(Z.Title,{level:3,style:{margin:0},children:`拆镜任务详情`}),(0,Q.jsx)(T9,{status:n.status})]}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),onClick:()=>h(e=>e+1),children:`刷新`})]}),(0,Q.jsx)(VA,{children:(0,Q.jsxs)(bM,{title:`总任务信息`,column:3,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`任务集ID`,children:n.id}),(0,Q.jsx)(bM.Item,{label:`用户ID`,children:n.userId||`-`}),(0,Q.jsx)(bM.Item,{label:`用户名`,children:n.userName||`-`}),(0,Q.jsx)(bM.Item,{label:`标题`,children:n.title||`-`}),(0,Q.jsxs)(bM.Item,{label:`视频时长`,children:[Number(n.videoDurationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`总状态`,children:(0,Q.jsx)(T9,{status:n.status})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:n.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`拆镜状态`,children:(0,Q.jsx)(T9,{status:n.splitStatus})}),(0,Q.jsxs)(bM.Item,{label:`片段数量`,children:[n.completedSegmentCount,`/`,n.segmentCount,`,失败 `,n.failedSegmentCount]}),(0,Q.jsx)(bM.Item,{label:`原视频分类`,children:n.originalVideoCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`创建时间`,children:C9(n.createdAt)}),(0,Q.jsx)(bM.Item,{label:`更新时间`,children:C9(n.updatedAt)}),(0,Q.jsx)(bM.Item,{label:`原视频内容`,span:3,children:n.originalVideoContent||`-`}),(0,Q.jsx)(bM.Item,{label:`原视频受众`,span:3,children:n.originalVideoAudience||`-`}),n.analysisErrorMessage?(0,Q.jsx)(bM.Item,{label:`分析错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.analysisErrorMessage})}):null,n.splitErrorMessage?(0,Q.jsx)(bM.Item,{label:`拆镜错误`,span:3,children:(0,Q.jsx)(cf,{type:`error`,message:n.splitErrorMessage})}):null]})}),(0,Q.jsx)(VA,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(C0,{}),`原视频预览`]}),children:(0,Q.jsx)(D9,{url:n.videoUrl,height:360})}),(0,Q.jsxs)(VA,{title:`AI 建议拆镜列表`,children:[n.aiSuggestions?.length?(0,Q.jsx)(UUe,{items:n.aiSuggestions}):(0,Q.jsx)(Yy,{description:`暂无 AI 建议拆镜`}),(0,Q.jsx)(Wh,{size:`small`,ghost:!0,style:{marginTop:12},items:[{key:`raw`,label:`查看原视频分析完整 JSON`,children:(0,Q.jsx)(E9,{value:n.analysisResultJson})}]})]}),(0,Q.jsxs)(VA,{title:`片段列表`,children:[(0,Q.jsxs)(IM,{wrap:!0,style:{marginBottom:16},children:[(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`片段来源`,style:{width:140},value:g||void 0,options:LUe,onChange:e=>{_(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`切割状态`,style:{width:140},value:v||void 0,options:RUe,onChange:e=>{y(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`分析状态`,style:{width:140},value:b||void 0,options:zUe,onChange:e=>{x(e||``),l(1)}}),(0,Q.jsx)(Tb,{allowClear:!0,placeholder:`复刻状态`,style:{width:150},value:S||void 0,options:BUe,onChange:e=>{w(e||``),l(1)}}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(bb,{}),onClick:()=>h(e=>e+1),children:`筛选`}),(0,Q.jsx)($S,{onClick:()=>{_(``),y(``),x(``),w(``),l(1),h(e=>e+1)},children:`重置`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:f,dataSource:i,pagination:{current:c,pageSize:S9,total:o,showSizeChanger:!1,showTotal:e=>`共 ${e} 条`,onChange:l},scroll:{x:1550},columns:[{title:`片段ID`,dataIndex:`id`,width:150,render:e=>(0,Q.jsx)(hx,{title:e,children:w9(e)})},{title:`序号`,dataIndex:`segmentIndex`,width:70},{title:`来源`,dataIndex:`sourceMode`,width:100,render:e=>e===`ai_suggestion`?(0,Q.jsx)(jR,{color:`purple`,children:`AI建议`}):(0,Q.jsx)(jR,{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)(T9,{status:e})},{title:`分析`,dataIndex:`analysisStatus`,width:100,render:e=>(0,Q.jsx)(T9,{status:e})},{title:`复刻`,dataIndex:`replicateStatus`,width:110,render:e=>(0,Q.jsx)(T9,{status:e})},{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)(IM,{direction:`vertical`,size:0,children:[(0,Q.jsx)($S,{type:`link`,style:{padding:0},onClick:()=>t(`/shot-replications/projects/${n.moduleProjectId}`),children:w9(n.moduleProjectId)}),(0,Q.jsx)(Z.Text,{type:`secondary`,style:{fontSize:12},children:n.moduleProjectTitle||e9(n.moduleProjectCurrentStepCode)}),(0,Q.jsx)(T9,{status:n.moduleProjectStatus})]}):(0,Q.jsx)(jR,{children:`未创建`})},{title:`错误`,dataIndex:`splitLastError`,width:220,ellipsis:!0,render:(e,t)=>e||t.analysisErrorMessage||`-`},{title:`创建时间`,dataIndex:`createdAt`,width:170,render:C9},{title:`操作`,fixed:`right`,width:100,render:(e,t)=>(0,Q.jsx)($S,{type:`link`,icon:(0,Q.jsx)(IN,{}),onClick:()=>j(t.id),children:`详情`})}]})]})]}),(0,Q.jsx)(kde,{title:`片段详情`,width:720,open:T,onClose:()=>E(!1),destroyOnClose:!0,children:D?(0,Q.jsxs)(IM,{direction:`vertical`,size:16,style:{width:`100%`},children:[(0,Q.jsxs)(bM,{column:2,bordered:!0,size:`small`,children:[(0,Q.jsx)(bM.Item,{label:`片段ID`,span:2,children:D.id}),(0,Q.jsx)(bM.Item,{label:`时间节点`,children:D.timeNode}),(0,Q.jsxs)(bM.Item,{label:`时长`,children:[Number(D.durationSeconds||0).toFixed(2),`s`]}),(0,Q.jsx)(bM.Item,{label:`切割状态`,children:(0,Q.jsx)(T9,{status:D.splitStatus})}),(0,Q.jsx)(bM.Item,{label:`分析状态`,children:(0,Q.jsx)(T9,{status:D.analysisStatus})}),(0,Q.jsx)(bM.Item,{label:`复刻状态`,children:(0,Q.jsx)(T9,{status:D.replicateStatus})}),(0,Q.jsx)(bM.Item,{label:`关联项目`,children:D.moduleProjectId?(0,Q.jsx)($S,{type:`link`,onClick:()=>t(`/shot-replications/projects/${D.moduleProjectId}`),children:D.moduleProjectId}):`-`}),(0,Q.jsx)(bM.Item,{label:`片段内容`,span:2,children:D.segmentContent||`-`}),(0,Q.jsx)(bM.Item,{label:`片段分类`,children:D.segmentCategory||`-`}),(0,Q.jsx)(bM.Item,{label:`片段受众`,children:D.segmentAudience||`-`})]}),(0,Q.jsx)(VA,{size:`small`,title:`片段视频`,children:(0,Q.jsx)(D9,{url:D.segmentVideoUrl,height:300})}),D.splitLastError?(0,Q.jsx)(cf,{type:`error`,message:`切割错误`,description:D.splitLastError}):null,D.analysisErrorMessage?(0,Q.jsx)(cf,{type:`error`,message:`分析错误`,description:D.analysisErrorMessage}):null,(0,Q.jsx)(Wh,{size:`small`,items:[{key:`analysis`,label:`片段分析 JSON`,children:(0,Q.jsx)(E9,{value:D.analysisJson})},{key:`suggestion`,label:`AI 建议原始 JSON`,children:(0,Q.jsx)(E9,{value:D.aiSuggestionJson})}]})]}):(0,Q.jsx)(hP,{})})]}):(0,Q.jsx)(VA,{style:{margin:24},children:(0,Q.jsx)(Yy,{description:`未找到拆镜任务详情`})})},{Title:GUe,Text:O9,Paragraph:KUe}=Z,{TextArea:k9}=GN,A9=[{label:`对象`,value:`object`},{label:`数组`,value:`array`},{label:`字符串`,value:`string`},{label:`数字`,value:`number`},{label:`布尔`,value:`boolean`},{label:`流程数组`,value:`flow`}],j9=`画面属性`,qUe=new Set([`视频时长`,`视频比例`,`清晰度`,`帧率`,`推荐分辨率`]);function M9(e,t){return e===j9&&!!t&&qUe.has(t)}function N9(e){return e===j9}function JUe(e){return JSON.parse(JSON.stringify(e??null))}function P9(e,t,n,r){return!e||typeof e!=`object`?r:e[t]===void 0?e[n]===void 0?r:e[n]:e[t]}function YUe(e){return{key:String(e?.key||e?.label||`新流程字段`),label:String(e?.label||e?.key||`新流程字段`),enabled:e?.enabled??!0,editable:e?.editable??!0,maxLength:Number(P9(e,`maxLength`,`max_length`,800)||800),value:e?.value??``}}function F9(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(P9(e,`maxLength`,`max_length`,t===`flow`?800:1e3)||(t===`flow`?800:1e3))};if(t===`object`)n.children=Array.isArray(e?.children)?e.children.map(F9):[];else if(t===`flow`){n.contentKey=String(P9(e,`contentKey`,`content_key`,e?.key===`镜头流程`?`镜头内容`:`动作内容`));let t=P9(e,`contentAliases`,`content_aliases`,[]);n.contentAliases=Array.isArray(t)?t.map(e=>String(e)).filter(Boolean):[];let r=P9(e,`itemFields`,`item_fields`,[]);n.itemFields=Array.isArray(r)&&r.length>0?r.map(YUe):[{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 XUe(e){let t=Array.isArray(e?.segments)?e.segments:[],n=Array.isArray(e?.ratios)?e.ratios:[];return{minDuration:Number(P9(e,`minDuration`,`min_duration`,1)||1),maxDuration:Number(P9(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 I9(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(F9),timePlanRules:n.map(XUe)}}function L9(e,t){let n=N9(e.key),r=M9(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=>L9(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 R9(e,t){return{version:e.version,enabled:t,sections:(e.sections||[]).map(e=>L9(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 z9(e){return e?.runtimeSchema||e?.runtime_schema||{}}function B9(e){let t=e?.timePlan||e?.time_plan||z9(e)?.动态时间规划||[];return Array.isArray(t)?t:[]}function ZUe(e){return e?.schemaConfigSnapshot||e?.schema_config_snapshot||{}}function QUe(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 V9=(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}),$Ue=()=>({minDuration:1,maxDuration:5,ratios:[.2,.4,.4],segments:[{stage:`开场吸引`,description:`快速吸引注意力`},{stage:`核心展示`,description:`展示主体动作、核心卖点或主要视觉内容`},{stage:`收尾引导`,description:`给出行动引导并稳定落版`}]}),eWe=()=>{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]=X.useForm(),_=(0,C.useRef)(null),v=c?.sections||[],y=c?.timePlanRules||[],b=async()=>{t(!0);try{let e=await mVe();a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),l(I9(e.data)),d(I9(e.defaultData??e.default_data))}catch(e){CP.error(e?.message||`加载失败`)}finally{t(!1)}};(0,C.useEffect)(()=>{b()},[]);let x=e=>{l(t=>{let n=I9(JUe(t));return e(n),n})},S=async()=>{if(c){r(!0);try{let e=await hVe({is_enabled:i,data:R9(c,i)});l(I9(e.data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`保存成功`)}catch(e){CP.error(e?.message||`保存失败`)}finally{r(!1)}}},w=async()=>{r(!0);try{let e=await gVe();l(I9(e.data)),d(I9(e.defaultData??e.default_data)),a(!!(e.isEnabled??e.is_enabled??e.data?.enabled??!1)),s(!!(e.usingDefault??e.using_default??!1)),CP.success(`已恢复默认配置`)}catch(e){CP.error(e?.message||`恢复默认失败`)}finally{r(!1)}},T=async()=>{try{QUe(`video_prompt_schema_config.json`,await _Ve())}catch(e){CP.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 vVe({is_enabled:!!(n.isEnabled??n.is_enabled??i),data:r});l(I9(o.data)),a(!!(o.isEnabled??o.is_enabled??o.data?.enabled??!1)),s(!!(o.usingDefault??o.using_default??!1)),CP.success(`导入成功`)}catch(e){CP.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 yVe({is_enabled:i,data:R9(c,i),duration:Number(e.duration||8),aspect_ratio:e.aspectRatio,resolution:e.resolution,frame_rate:e.frameRate}))}catch(e){CP.error(e?.message||`预览失败`)}},k=()=>{x(e=>{e.sections.push(V9(`object`))})},A=(e,t)=>{x(n=>{let r=n.sections[e];N9(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(V9(`string`))})},N=(e,t,n)=>{x(r=>{let i=r.sections[e],a=i.children||[],o=a[t];M9(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($Ue())})},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)(IM,{children:[(0,Q.jsx)(O9,{strong:!0,children:e.label||e.key||`未命名分组`}),e.key&&e.key!==e.label&&(0,Q.jsxs)(jR,{color:`blue`,children:[`key: `,e.key]}),(0,Q.jsx)(jR,{children:e.type}),N9(e.key)&&(0,Q.jsx)(jR,{color:`red`,children:`系统锁定`}),!e.enabled&&!N9(e.key)&&(0,Q.jsx)(jR,{color:`default`,children:`已禁用`})]}),children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsxs)(WP,{gutter:12,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:N9(e.key),onChange:e=>A(t,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>A(t,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Tb,{value:e.type,options:A9,style:{width:`100%`},disabled:N9(e.key),onChange:e=>A(t,{type:e})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:N9(e.key)?!0:e.enabled,disabled:N9(e.key),onChange:e=>A(t,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`可编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>A(t,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>A(t,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:2,style:{textAlign:`right`},children:(0,Q.jsx)(OP,{title:`确认删除该分组?`,disabled:N9(e.key),onConfirm:()=>j(t),children:(0,Q.jsx)($S,{danger:!0,icon:(0,Q.jsx)(PR,{}),disabled:N9(e.key)})})})]}),e.type===`object`&&(0,Q.jsx)(VA,{size:`small`,title:`对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>M(t),children:`新增字段`}),children:(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.children||[]).map((n,r)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:n.key,maxLength:64,placeholder:`传给 AI 的字段名`,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:n.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>N(t,r,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Tb,{value:n.type,options:A9.filter(e=>e.value!==`object`&&e.value!==`flow`),style:{width:`100%`},disabled:M9(e.key,n.key),onChange:e=>N(t,r,{type:e})})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!0:n.enabled,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:2,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:M9(e.key,n.key)?!1:n.editable,disabled:M9(e.key,n.key),onChange:e=>N(t,r,{editable:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:n.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>N(t,r,{maxLength:Number(e||1e3)})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{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)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),disabled:M9(e.key,n.key),onClick:()=>P(t,r)})})]},`child-${t}-${r}`))})}),e.type===`flow`&&(0,Q.jsxs)(VA,{size:`small`,title:`流程数组对象字段`,extra:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>F(t),children:`新增流程字段`}),children:[(0,Q.jsxs)(WP,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(GN,{addonBefore:`内容字段`,value:e.contentKey,maxLength:64,onChange:e=>A(t,{contentKey:e.target.value})})}),(0,Q.jsx)(uj,{span:18,children:(0,Q.jsx)(GN,{addonBefore:`别名 / 分隔`,value:(e.contentAliases||[]).join(`/`),onChange:e=>A(t,{contentAliases:e.target.value.split(`/`).map(e=>e.trim()).filter(Boolean)})})})]}),(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:(e.itemFields||[]).map((e,n)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`key`,value:e.key,maxLength:64,placeholder:`流程对象字段名`,onChange:e=>I(t,n,{key:e.target.value})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{addonBefore:`label`,value:e.label,maxLength:64,placeholder:`后台显示名称`,onChange:e=>I(t,n,{label:e.target.value})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`启用`,(0,Q.jsx)(lF,{checked:e.enabled,onChange:e=>I(t,n,{enabled:e})})]})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsxs)(IM,{children:[`编辑`,(0,Q.jsx)(lF,{checked:e.editable,onChange:e=>I(t,n,{editable:e})})]})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,max:2e4,value:e.maxLength,addonBefore:`长度`,style:{width:`100%`},onChange:e=>I(t,n,{maxLength:Number(e||800)})})}),(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(GN,{value:String(e.value??``),maxLength:e.maxLength||800,placeholder:`默认值`,onChange:e=>I(t,n,{value:e.target.value})})}),(0,Q.jsx)(uj,{span:1,style:{textAlign:`right`},children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>L(t,n)})})]},`flow-${t}-${n}`))})]}),e.type!==`object`&&e.type!==`flow`&&(0,Q.jsx)(VA,{size:`small`,title:`默认值`,children:(0,Q.jsx)(k9,{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)(hP,{}):(0,Q.jsxs)(`div`,{style:{padding:24},children:[(0,Q.jsx)(VA,{children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`large`,children:[(0,Q.jsxs)(WP,{justify:`space-between`,align:`middle`,children:[(0,Q.jsxs)(uj,{children:[(0,Q.jsx)(GUe,{level:3,style:{margin:0},children:`视频提词 Schema 配置`}),(0,Q.jsx)(KUe,{type:`secondary`,style:{marginBottom:0},children:`配置会被爆款开头复刻和拆镜复刻第 4 步视频 AI 提词共同复用。传给 AI 时只保留纯键值 schema,不携带显示名、启用、可编辑等管理字段。`})]}),(0,Q.jsx)(uj,{children:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(O9,{children:`启用自定义配置`}),(0,Q.jsx)(lF,{checked:i,onChange:a}),o&&(0,Q.jsx)(jR,{color:`orange`,children:`当前使用默认配置兜底`}),u&&(0,Q.jsxs)(jR,{children:[`默认分组 `,u.sections.length]})]})})]}),(0,Q.jsx)(cf,{type:`info`,showIcon:!0,message:`长度限制策略`,description:`只对管理后台字段和用户可编辑字段做长度校验,不会自动裁剪 AI 生成结果或第 5 步最终视频 prompt。若供应商因为 prompt 过长拒绝,会按真实失败进入现有日志/退款/重试流程。`}),(0,Q.jsx)(cf,{type:`warning`,showIcon:!0,message:`预览说明`,description:`预览会跟随右上角「启用自定义配置」开关。关闭时会按默认 CLIENT_SCHEMA_V1 兜底预览;打开后才会按当前页面编辑的 sections 和秒数切片规则预览。`}),(0,Q.jsxs)(IM,{wrap:!0,children:[(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(a4,{}),loading:n,onClick:S,children:`保存配置`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(IN,{}),onClick:D,children:`预览运行时 Schema`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(yB,{}),onClick:T,children:`导出 JSON`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(Y6,{}),onClick:()=>_.current?.click(),children:`导入 JSON`}),(0,Q.jsx)(OP,{title:`确认恢复默认配置?`,description:`会用 CLIENT_SCHEMA_V1 生成的默认配置覆盖当前配置。`,onConfirm:w,children:(0,Q.jsx)($S,{icon:(0,Q.jsx)(VP,{}),children:`恢复默认`})}),(0,Q.jsx)(`input`,{ref:_,type:`file`,accept:`application/json,.json`,style:{display:`none`},onChange:E})]}),(0,Q.jsx)(zA,{items:[{key:`fields`,label:`Schema 字段配置`,children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsx)(cf,{type:`warning`,showIcon:!0,message:`字段说明`,description:`key 是最终传给 AI 和保存到 prompt_schema 的真实字段名,例如「素材理解」「动作流程」;label 只用于管理后台显示,帮助运营/管理员理解这个字段,不会传给 AI;启用关闭后该字段不会进入运行时 schema;可编辑关闭后用户在第 4 步修改时不能改这个字段。「画面属性」里的视频时长、视频比例、清晰度、帧率、推荐分辨率属于系统锁定参数,不能改 key、不能禁用、不能开放用户编辑。`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(gA,{}),onClick:k,children:`新增一级分组`}),(0,Q.jsx)(Wh,{items:W})]})},{key:`time`,label:`秒数切片规则`,children:(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`middle`,children:[(0,Q.jsx)(cf,{type:`info`,showIcon:!0,message:`切片规则说明`,description:`这里决定指定视频时长会被拆成几段,以及每段的阶段名称和说明。运行时会同步生成「动态时间规划」「动作流程」「镜头流程」三个数组,三者时间段保持一致。`}),(0,Q.jsx)($S,{icon:(0,Q.jsx)(gA,{}),onClick:R,children:`新增秒数规则`}),y.map((e,t)=>(0,Q.jsxs)(VA,{size:`small`,title:`${e.minDuration}-${e.maxDuration} 秒:${e.segments.length} 段`,extra:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>B(t),children:`删除规则`}),children:[(0,Q.jsxs)(WP,{gutter:12,style:{marginBottom:12},children:[(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,value:e.minDuration,addonBefore:`最小秒`,style:{width:`100%`},onChange:e=>z(t,{minDuration:Number(e||1)})})}),(0,Q.jsx)(uj,{span:4,children:(0,Q.jsx)(Pj,{min:1,value:e.maxDuration,addonBefore:`最大秒`,style:{width:`100%`},onChange:e=>z(t,{maxDuration:Number(e||1)})})}),(0,Q.jsx)(uj,{span:16,children:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(gA,{}),onClick:()=>H(t),children:`新增片段`})})]}),(0,Q.jsx)(IM,{direction:`vertical`,style:{width:`100%`},children:e.segments.map((n,r)=>(0,Q.jsxs)(WP,{gutter:8,align:`middle`,children:[(0,Q.jsx)(uj,{span:3,children:(0,Q.jsx)(Pj,{min:.01,step:.01,value:e.ratios[r],addonBefore:`比例`,style:{width:`100%`},onChange:e=>V(t,r,{ratio:Number(e||.01)})})}),(0,Q.jsx)(uj,{span:5,children:(0,Q.jsx)(GN,{value:n.stage,maxLength:64,placeholder:`阶段`,onChange:e=>V(t,r,{stage:e.target.value})})}),(0,Q.jsx)(uj,{span:15,children:(0,Q.jsx)(GN,{value:n.description,maxLength:300,placeholder:`说明`,onChange:e=>V(t,r,{description:e.target.value})})}),(0,Q.jsx)(uj,{span:1,children:(0,Q.jsx)($S,{danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),onClick:()=>U(t,r)})})]},r))})]},t))]})},{key:`json`,label:`JSON 高级查看`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(R9(c,i),null,2),readOnly:!0})}]})]})}),(0,Q.jsxs)(TP,{title:`预览运行时 Schema`,open:f,onCancel:()=>p(!1),width:980,footer:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{onClick:()=>p(!1),children:`关闭`}),(0,Q.jsx)($S,{type:`primary`,onClick:O,children:`生成预览`})]}),children:[(0,Q.jsxs)(X,{form:g,layout:`inline`,style:{marginBottom:16},children:[(0,Q.jsx)(X.Item,{name:`duration`,label:`时长`,rules:[{required:!0}],children:(0,Q.jsx)(Pj,{min:1,max:3600})}),(0,Q.jsx)(X.Item,{name:`aspectRatio`,label:`比例`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`resolution`,label:`清晰度`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`frameRate`,label:`帧率`,rules:[{required:!0}],children:(0,Q.jsx)(GN,{})})]}),(0,Q.jsx)(oue,{}),m?(0,Q.jsx)(zA,{items:[{key:`runtime`,label:`运行时 Schema`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(z9(m),null,2),readOnly:!0})},{key:`timePlan`,label:`动态时间规划(${B9(m).length} 段)`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(B9(m),null,2),readOnly:!0})},{key:`snapshot`,label:`配置快照`,children:(0,Q.jsx)(k9,{rows:24,value:JSON.stringify(ZUe(m),null,2),readOnly:!0})}]}):(0,Q.jsx)(cf,{type:`info`,showIcon:!0,message:`点击生成预览后,可以看到传给 AI 的纯 schema、动态时间规划和本次配置快照。`})]})]})},tWe=()=>{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}=I5(),_=async()=>{if(g?.isAdmin){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 d5.get(`/contact/requests?${e.toString()}`);t(n.items),r(n.total)}catch(e){CP.error(e?.message||`获取失败`)}finally{a(!1)}}};(0,C.useEffect)(()=>{_()},[o,c,u]);let v=async e=>{try{await d5.put(`/contact/requests/${e}/handle`),CP.success(`已标记为处理`),_()}catch(e){CP.error(e?.message||`操作失败`)}},y=async e=>{try{await d5.delete(`/contact/requests/${e}`),CP.success(`已删除`),_()}catch(e){CP.error(e?.message||`删除失败`)}},b=e=>{p(e),h(!0)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(VA,{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)(IM,{children:[(0,Q.jsx)(g1,{style:{fontSize:18,color:`#6366f1`}}),(0,Q.jsx)(Z.Text,{strong:!0,style:{fontSize:16},children:`联系请求管理`}),(0,Q.jsxs)(jR,{color:`purple`,children:[`共 `,n,` 条记录`]})]}),(0,Q.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,Q.jsx)($S,{type:u===null?`primary`:`default`,onClick:()=>d(null),icon:(0,Q.jsx)(tZ,{}),size:`small`,children:`全部`}),(0,Q.jsx)($S,{type:u===!1?`primary`:`default`,onClick:()=>d(!1),size:`small`,children:`待处理`}),(0,Q.jsx)($S,{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)(Yy,{description:`暂无联系请求`,style:{padding:`40px 0`}}):(0,Q.jsx)(vR,{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)(jR,{color:e?`green`:`orange`,children:e?`已处理`:`待处理`})},{title:`提交时间`,dataIndex:`createdAt`,key:`createdAt`,width:160,render:e=>B5(e)},{title:`操作`,key:`actions`,width:180,render:(e,t)=>(0,Q.jsxs)(IM,{size:4,children:[(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(IN,{}),onClick:()=>b(t),children:`查看`}),!t.isHandled&&(0,Q.jsx)($S,{type:`link`,size:`small`,icon:(0,Q.jsx)(mb,{}),onClick:()=>v(t.id),children:`标记处理`}),(0,Q.jsx)(OP,{title:`确定删除该记录?`,onConfirm:()=>y(t.id),children:(0,Q.jsx)($S,{type:`link`,danger:!0,size:`small`,icon:(0,Q.jsx)(PR,{}),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)(TP,{title:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)(IN,{}),`联系请求详情`]}),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)(jR,{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:B5(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)($S,{type:`primary`,onClick:()=>{v(f.id),h(!1)},icon:(0,Q.jsx)(mb,{}),children:`标记为已处理`}),(0,Q.jsx)($S,{onClick:()=>h(!1),children:`关闭`})]})]})})]})},H9=`http://ceshi.apiforeign.minzhong.cn`.replace(/\/$/,``).replace(/\/api\/?$/i,``).replace(/\/$/,``),nWe=e=>/^(https?:)?\/\//i.test(e)||/^(blob|data):/i.test(e),U9=e=>{if(!e)return``;let t=String(e).trim();return t?nWe(t)?t:H9?`${H9}${t.startsWith(`/`)?t:`/${t}`}`:t.startsWith(`/`)?t:`/${t}`:``},rWe=360,W9=280;function G9(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,e)):t}function iWe(e,t){let n=Math.max(0,e);if(!n)return{width:0,height:W9};if(!t?.width||!t?.height)return{width:n,height:W9};let r=Math.min(n/t.width,rWe/t.height);return{width:Math.max(1,Math.round(t.width*r)),height:Math.max(1,Math.round(t.height*r))}}function aWe(e,t){if(e.sizeMode===`px`&&e.widthPx)return G9(e.widthPx,1,Math.max(1,t));let n=G9(e.widthRatio??.18,.01,1);return Math.max(1,t*n)}function oWe(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 sWe(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 cWe=({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)(()=>U9(e),[e]),E=(0,C.useMemo)(()=>U9(n),[n]),D=(0,C.useMemo)(()=>iWe(u,f),[u,f]),O=(0,C.useMemo)(()=>aWe(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=sWe(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 PVe({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=G9(e.clientX-t.left-c.current.x,0,a),u=G9(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 oWe(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=G9(r.customXRatio??.5,0,1),o=G9(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(W9,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||W9,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)(hP,{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:`上传素材后可预览水印效果`})})},lWe=[{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`}],K9={text:`民众普康 AI`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0},q9=({value:e,onChange:t,watermarks:n,mediaUrl:r,mediaType:i})=>{let a=n=>t({...e,...n}),o=t=>{a({textWatermark:{...K9,...e.textWatermark||{},...t}})},s=n.find(t=>t.id===e.watermarkId)?.fileUrl,c={...K9,...e.textWatermark||{}};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(X,{layout:`vertical`,children:[(0,Q.jsx)(X.Item,{label:`水印类型`,required:!0,children:(0,Q.jsxs)(Wk.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)(Wk.Button,{value:`image`,children:`图片水印`}),(0,Q.jsx)(Wk.Button,{value:`repeated_text`,children:`重复文字水印`})]})}),e.watermarkType===`repeated_text`?(0,Q.jsxs)(WP,{gutter:16,children:[(0,Q.jsx)(uj,{span:24,children:(0,Q.jsx)(X.Item,{label:`水印文字`,required:!0,extra:`字体由后端固定开源可商用字体渲染,前端预览层和最终生成使用同一后端渲染逻辑。`,children:(0,Q.jsx)(GN,{maxLength:64,showCount:!0,value:c.text,onChange:e=>o({text:e.target.value}),placeholder:`请输入重复水印文字`})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`文字透明度:${c.opacityLevel}/10`,required:!0,children:(0,Q.jsx)(nM,{min:1,max:10,step:1,value:c.opacityLevel,onChange:e=>o({opacityLevel:e})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`字号(px)`,required:!0,children:(0,Q.jsx)(Pj,{min:8,max:160,style:{width:`100%`},value:c.fontSizePx,onChange:e=>o({fontSizePx:Number(e||28)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`文字颜色`,required:!0,children:(0,Q.jsx)(GN,{value:c.color,onChange:e=>o({color:e.target.value||`#ffffff`}),placeholder:`#ffffff`})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`旋转角度`,required:!0,children:(0,Q.jsx)(Pj,{min:-90,max:90,style:{width:`100%`},value:c.rotateDeg,onChange:e=>o({rotateDeg:Number(e??-30)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`横向间距`,required:!0,children:(0,Q.jsx)(Pj,{min:20,max:2e3,style:{width:`100%`},value:c.gapX,onChange:e=>o({gapX:Number(e||220)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`纵向间距`,required:!0,children:(0,Q.jsx)(Pj,{min:20,max:2e3,style:{width:`100%`},value:c.gapY,onChange:e=>o({gapY:Number(e||140)})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`交错排列`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{checked:c.staggered,onChange:e=>o({staggered:e})})})})]}):(0,Q.jsxs)(WP,{gutter:16,children:[(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印图片`,required:!0,children:(0,Q.jsx)(Tb,{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)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`透明度:${e.opacityLevel}/10`,required:!0,children:(0,Q.jsx)(nM,{min:1,max:10,step:1,value:e.opacityLevel,onChange:e=>a({opacityLevel:e})})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印位置`,required:!0,children:(0,Q.jsx)(Tb,{value:e.position,onChange:e=>a({position:e}),options:lWe})})}),(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`大小模式`,required:!0,children:(0,Q.jsx)(Tb,{value:e.sizeMode,onChange:e=>a({sizeMode:e}),options:[{label:`按素材宽度比例`,value:`ratio`},{label:`固定像素宽度`,value:`px`}]})})}),e.sizeMode===`ratio`?(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印宽度比例`,required:!0,children:(0,Q.jsx)(Pj,{min:.01,max:1,step:.01,style:{width:`100%`},value:e.widthRatio??.18,onChange:e=>a({widthRatio:Number(e||.18)})})})}):(0,Q.jsx)(uj,{span:12,children:(0,Q.jsx)(X.Item,{label:`水印宽度(px)`,required:!0,children:(0,Q.jsx)(Pj,{min:1,max:1e4,style:{width:`100%`},value:e.widthPx??200,onChange:e=>a({widthPx:Number(e||200)})})})}),(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(X.Item,{label:`横向边距`,children:(0,Q.jsx)(Pj,{min:0,max:2e3,style:{width:`100%`},value:e.marginX,onChange:e=>a({marginX:Number(e||0)})})})}),(0,Q.jsx)(uj,{span:6,children:(0,Q.jsx)(X.Item,{label:`纵向边距`,children:(0,Q.jsx)(Pj,{min:0,max:2e3,style:{width:`100%`},value:e.marginY,onChange:e=>a({marginY:Number(e||0)})})})})]})]}),(0,Q.jsx)(cWe,{mediaUrl:r,mediaType:i,watermarkUrl:s,config:e,onChange:e=>a(e)})]})},J9={draft:{text:`草稿`,color:`default`},processing:{text:`处理中`,color:`processing`},success:{text:`成功`,color:`success`},failed:{text:`失败`,color:`error`}},Y9={text:`民众普康 AI`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0},uWe={watermarkType:`image`,watermarkId:null,opacityLevel:6,position:`bottom_right`,customXRatio:null,customYRatio:null,sizeMode:`ratio`,widthRatio:.18,widthPx:null,marginX:24,marginY:24,textWatermark:Y9};function dWe(e){return{text:e?.text||Y9.text,opacityLevel:e?.opacityLevel??e?.opacity_level??Y9.opacityLevel,fontSizePx:e?.fontSizePx??e?.font_size_px??Y9.fontSizePx,color:e?.color||Y9.color,rotateDeg:e?.rotateDeg??e?.rotate_deg??Y9.rotateDeg,gapX:e?.gapX??e?.gap_x??Y9.gapX,gapY:e?.gapY??e?.gap_y??Y9.gapY,staggered:e?.staggered??Y9.staggered}}function X9(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:dWe(n.textWatermark||n.text_watermark)}}function Z9(e){return e.watermarkType===`repeated_text`?!!e.textWatermark?.text?.trim():!!e.watermarkId}var fWe=({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)(uWe),[_,v]=(0,C.useState)(!1),y=async()=>{c(!0);try{let e=await AVe(l);i(e.items),o(e.total)}finally{c(!1)}};(0,C.useEffect)(()=>{y()},[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=>jVe(e.id).catch(()=>null)))).some(e=>e&&e.status!==`processing`)&&y()},2500);return()=>window.clearInterval(t)},[r]);let b=e=>{m(e),g(X9(e.watermarkConfig,e.watermarkId))},x=e=>e.mediaType===`image`?U9(e.watermarkedUrl||e.originalUrl):U9(e.coverUrl||``),S=e=>U9(e.watermarkedUrl||e.originalUrl),w=e=>{TP.confirm({title:`确认删除该素材?`,content:e.title||e.id,okText:`删除`,okButtonProps:{danger:!0},cancelText:`取消`,async onOk(){await IVe(e.id),CP.success(`删除成功`),await y()}})};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(IM,{style:{marginBottom:16},wrap:!0,children:[(0,Q.jsx)(Tb,{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)(Tb,{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)(Tb,{allowClear:!0,style:{width:140},placeholder:`处理状态`,value:l.status,onChange:e=>u(t=>({...t,status:e,page:1})),options:Object.entries(J9).map(([e,t])=>({value:e,label:t.text}))}),(0,Q.jsx)($S,{onClick:y,children:`刷新`})]}),(0,Q.jsx)(vR,{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:1180},columns:[{title:`预览`,width:110,render:(e,t)=>{let n=x(t);if(t.mediaType===`image`)return n?(0,Q.jsx)(jN,{width:86,height:64,style:{objectFit:`cover`,borderRadius:6},src:n}):`-`;let r=S(t),i=U9(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)(jR,{color:J9[e]?.color,children:J9[e]?.text||e})},{title:`水印`,render:(e,t)=>X9(t.watermarkConfig,t.watermarkId).watermarkType===`repeated_text`?`重复文字水印`:t.watermarkName||`图片水印`},{title:`排序`,dataIndex:`sortOrder`},{title:`错误`,dataIndex:`errorMessage`,ellipsis:!0},{title:`操作`,width:150,align:`center`,render:(e,t)=>(0,Q.jsxs)(IM,{size:8,children:[(0,Q.jsx)($S,{size:`small`,onClick:()=>f(t),children:`查看`}),(0,Q.jsx)(RM,{trigger:[`click`],menu:{items:[{key:`regenerate`,icon:(0,Q.jsx)(VP,{}),label:`重新生成水印`},{key:`delete`,icon:(0,Q.jsx)(PR,{}),label:`删除素材`,danger:!0}],onClick:({key:e})=>{e===`regenerate`&&b(t),e===`delete`&&w(t)}},children:(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(I1,{}),children:`更多`})})]})}]}),(0,Q.jsx)(TP,{title:`素材详情`,open:!!d,onCancel:()=>f(null),footer:null,width:900,destroyOnHidden:!0,children:d&&(0,Q.jsxs)(IM,{direction:`vertical`,style:{width:`100%`},size:`large`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:`原素材:`}),d.originalUrl?U9(d.originalUrl):`-`]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`b`,{children:`水印素材:`}),d.watermarkedUrl?U9(d.watermarkedUrl):`-`]}),d.mediaType===`image`?(0,Q.jsx)(jN,{src:U9(d.watermarkedUrl||d.originalUrl)}):(0,Q.jsx)(`video`,{src:S(d),poster:U9(d.coverUrl||``)||void 0,controls:!0,style:{width:`100%`,background:`#000`}})]})}),(0,Q.jsx)(TP,{title:`重新生成水印`,open:!!p,onCancel:()=>!_&&m(null),onOk:async()=>{if(!(!p||_)){if(!Z9(h)){CP.warning(h.watermarkType===`repeated_text`?`请输入重复文字水印内容`:`请选择水印图片`);return}v(!0);try{await FVe(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}),CP.success(`已提交重新生成`),m(null),await y()}finally{v(!1)}}},confirmLoading:_,okButtonProps:{disabled:_||!Z9(h)},cancelButtonProps:{disabled:_},width:980,destroyOnHidden:!0,children:p&&(0,Q.jsx)(q9,{value:h,onChange:g,watermarks:t,mediaUrl:U9(p.originalUrl||p.watermarkedUrl),mediaType:p.mediaType})})]})},pWe=Gze,mWe=[{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 Q9(e,t){if(!e)return(0,Q.jsx)(`span`,{style:{color:`#999`},children:`未设置`});let n=pWe[e];return(0,Q.jsxs)(IM,{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 hWe=({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]=X.useForm(),m=async()=>{o(!0);try{let e=await P5({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)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>h(),children:`新增行业`})]}),(0,Q.jsx)(vR,{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=>Q9(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)(IM,{children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>h(n),children:`编辑`}),(0,Q.jsx)(OP,{title:`确认删除该行业?`,onConfirm:async()=>{await EVe(n.id),CP.success(`删除成功`),await m(),e?.()},children:(0,Q.jsx)($S,{size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}]}),(0,Q.jsx)(TP,{title:d?`编辑行业`:`新增行业`,open:l,onOk:async()=>{await TVe({...await p.validateFields(),id:d?.id}),CP.success(`保存成功`),u(!1),await m(),e?.()},onCancel:()=>u(!1),destroyOnHidden:!0,children:(0,Q.jsxs)(X,{form:p,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`name`,label:`行业名称`,rules:[{required:!0,message:`请输入行业名称`}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`key`,label:`行业Key`,rules:[{required:!0,message:`请输入行业Key`},{pattern:/^[A-Za-z0-9_-]+$/,message:`只允许字母、数字、下划线、中划线`}],children:(0,Q.jsx)(GN,{})}),(0,Q.jsx)(X.Item,{name:`description`,label:`描述`,children:(0,Q.jsx)(GN.TextArea,{rows:3})}),(0,Q.jsx)(X.Item,{name:`icon`,label:`图标`,children:(0,Q.jsx)(Tb,{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:mWe.map(e=>({value:e.value,searchText:`${e.label} ${e.value}`,label:Q9(e.value,e.label)}))})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,children:(0,Q.jsx)(Pj,{min:0,style:{width:`100%`}})}),(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})})]})})]})},$9={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:`民众普康 AI`,opacityLevel:2,fontSizePx:28,color:`#ffffff`,rotateDeg:-30,gapX:220,gapY:140,staggered:!0}};function gWe(e){return e.watermarkType===`repeated_text`?!!e.textWatermark?.text?.trim():!!e.watermarkId}var _We=({open:e,onClose:t,categories:n,watermarks:r,onSuccess:i})=>{let[a]=X.useForm(),[o,s]=(0,C.useState)(null),[c,l]=(0,C.useState)([]),[u,d]=(0,C.useState)(`image`),[f,p]=(0,C.useState)($9),[m,h]=(0,C.useState)(!1),[g,_]=(0,C.useState)(``),v=()=>{s(null),l([]),d(`image`),_(``),h(!1)};(0,C.useEffect)(()=>{if(e){v();let e=r.find(e=>e.isDefault)||r[0];p({...$9,watermarkId:e?.id||null}),a.setFieldsValue({media_type:`image`,is_active:!0,sort_order:0,title:void 0})}},[e,r,a]),(0,C.useEffect)(()=>()=>{g.startsWith(`blob:`)&&URL.revokeObjectURL(g)},[g]);let y=(0,C.useMemo)(()=>g||void 0,[g]),b=e=>{let t=e.type.startsWith(`image/`),n=e.type.startsWith(`video/`);if(u===`image`&&!t)return CP.warning(`当前素材类型为图片,请选择图片文件`),TB.LIST_IGNORE;if(u===`video`&&!n)return CP.warning(`当前素材类型为视频,请选择视频文件`),TB.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},x=()=>{s(null),l([]),g.startsWith(`blob:`)&&URL.revokeObjectURL(g),_(``)};return(0,Q.jsxs)(TP,{title:`上传首页素材`,open:e,onCancel:()=>{m||t()},onOk:async()=>{if(m)return;let e=await a.validateFields();if(!o){CP.warning(`请选择素材文件`);return}if(f.watermarkType===`image`&&!f.watermarkId){CP.warning(`请选择水印图片`);return}if(f.watermarkType===`repeated_text`&&!f.textWatermark?.text?.trim()){CP.warning(`请输入重复文字水印内容`);return}h(!0);try{let n=await NVe({categoryId:e.category_id,file:o,mediaType:u,title:e.title?.trim()||null,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});CP.success(n.message||`已提交水印处理`),i(),t()}finally{h(!1)}},confirmLoading:m,okButtonProps:{disabled:m||!o||!gWe(f)},cancelButtonProps:{disabled:m},width:980,destroyOnHidden:!0,children:[(0,Q.jsxs)(X,{form:a,layout:`vertical`,children:[(0,Q.jsx)(X.Item,{name:`category_id`,label:`行业`,rules:[{required:!0,message:`请选择行业`}],children:(0,Q.jsx)(Tb,{options:n.map(e=>({label:e.name,value:e.id})),disabled:m})}),(0,Q.jsx)(X.Item,{name:`media_type`,label:`素材类型`,rules:[{required:!0}],children:(0,Q.jsx)(Tb,{value:u,onChange:e=>{d(e),x()},disabled:m,options:[{label:`图片`,value:`image`},{label:`视频`,value:`video`}]})}),(0,Q.jsx)(X.Item,{label:`素材文件`,required:!0,children:(0,Q.jsx)(TB,{beforeUpload:e=>b(e),onRemove:x,fileList:c,maxCount:1,accept:u===`image`?`image/*`:`video/*`,disabled:m,children:(0,Q.jsxs)($S,{icon:(0,Q.jsx)(Y6,{}),loading:m,disabled:m,children:[`选择`,u===`image`?`图片`:`视频`]})})}),(0,Q.jsx)(X.Item,{name:`title`,label:`素材标题`,extra:`选填;不填时后台显示“未命名素材”,不会再自动使用文件名作为标题。`,children:(0,Q.jsx)(GN,{disabled:m})}),(0,Q.jsx)(X.Item,{name:`sort_order`,label:`排序`,children:(0,Q.jsx)(Pj,{min:0,style:{width:`100%`},disabled:m})}),(0,Q.jsx)(X.Item,{name:`is_active`,label:`前台展示`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{disabled:m})})]}),(0,Q.jsx)(q9,{value:f,onChange:p,watermarks:r,mediaUrl:y,mediaType:u})]})},vWe=({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]=X.useForm(),x=async()=>{s(!0);try{a((await F5({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(),_(U9(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 CP.warning(`请选择图片文件`),TB.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)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:w,children:`上传水印`})]}),(0,Q.jsx)(vR,{rowKey:`id`,loading:o,dataSource:i,pagination:{pageSize:20},columns:[{title:`预览`,dataIndex:`fileUrl`,render:e=>(0,Q.jsx)(jN,{width:80,src:U9(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)(IM,{children:[(0,Q.jsx)($S,{size:`small`,icon:(0,Q.jsx)(LR,{}),onClick:()=>T(t),children:`编辑`}),(0,Q.jsx)(OP,{title:`确认删除该水印?`,onConfirm:async()=>{await kVe(t.id),CP.success(`删除成功`),await x(),r?.()},children:(0,Q.jsx)($S,{size:`small`,danger:!0,icon:(0,Q.jsx)(PR,{}),children:`删除`})})]})}]}),(0,Q.jsx)(TP,{title:u?`编辑水印`:`上传水印`,open:c,onOk:async()=>{if(v)return;let e=await b.validateFields();if(!u&&!f){CP.warning(`请选择水印图片`);return}y(!0);try{u?await OVe(u.id,{name:e.name,is_default:e.is_default,is_active:e.is_active}):f&&await DVe(f,e.name,e.is_default),CP.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)(X,{form:b,layout:`vertical`,children:[!u&&(0,Q.jsxs)(X.Item,{label:`水印图片`,required:!0,children:[(0,Q.jsx)(TB,{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)($S,{icon:(0,Q.jsx)(Y6,{}),loading:v,disabled:v,children:`选择图片`})}),g&&(0,Q.jsx)(`div`,{style:{marginTop:12},children:(0,Q.jsx)(jN,{src:g,alt:`水印预览`,width:180,style:{maxHeight:120,objectFit:`contain`,background:`#0f172a`,borderRadius:8,padding:8}})})]}),u&&g&&(0,Q.jsx)(X.Item,{label:`当前水印`,children:(0,Q.jsx)(jN,{src:g,alt:`当前水印`,width:180,style:{maxHeight:120,objectFit:`contain`,background:`#0f172a`,borderRadius:8,padding:8}})}),(0,Q.jsx)(X.Item,{name:`name`,label:`水印名称`,rules:[{required:!0,message:`请输入水印名称`}],children:(0,Q.jsx)(GN,{disabled:v})}),(0,Q.jsx)(X.Item,{name:`is_default`,label:`默认水印`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{disabled:v})}),(0,Q.jsx)(X.Item,{name:`is_active`,label:`启用`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{disabled:v})})]})})]});return n?O:(0,Q.jsx)(TP,{title:`水印库`,open:e,onCancel:t,footer:null,width:900,destroyOnHidden:!0,children:O})},yWe=()=>{let[e]=X.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([P5({page:1,pageSize:200}),F5({page:1,pageSize:200,isActive:!0})]);i(e.items),o(t.items)},f=async()=>{n(!0);try{let t=await CVe();e.setFieldsValue(t)}finally{n(!1)}};(0,C.useEffect)(()=>{f(),d()},[]);let p=async()=>{await wVe(await e.validateFields()),CP.success(`配置已保存`)},m=async()=>{await d(),u(e=>e+1)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(VA,{style:{marginBottom:16},loading:t,children:(0,Q.jsxs)(X,{form:e,layout:`inline`,initialValues:{enabled:!1,title:`行业素材案例`,subtitle:`精选图片与视频素材展示`,showOriginalInAdmin:!0},children:[(0,Q.jsx)(X.Item,{name:`enabled`,label:`首页展示`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{name:`title`,label:`标题`,rules:[{required:!0,message:`请输入标题`}],children:(0,Q.jsx)(GN,{style:{width:220}})}),(0,Q.jsx)(X.Item,{name:`subtitle`,label:`副标题`,children:(0,Q.jsx)(GN,{style:{width:320}})}),(0,Q.jsx)(X.Item,{name:`showOriginalInAdmin`,label:`后台展示原素材`,valuePropName:`checked`,children:(0,Q.jsx)(lF,{})}),(0,Q.jsx)(X.Item,{children:(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(a4,{}),onClick:p,children:`保存配置`})})]})}),(0,Q.jsx)(VA,{title:`首页素材行业装修`,extra:(0,Q.jsxs)(IM,{children:[(0,Q.jsx)($S,{onClick:m,children:`刷新`}),(0,Q.jsx)($S,{type:`primary`,icon:(0,Q.jsx)(gA,{}),onClick:()=>c(!0),children:`上传素材`})]}),children:(0,Q.jsx)(zA,{items:[{key:`assets`,label:`素材管理`,children:(0,Q.jsx)(fWe,{categories:r,watermarks:a,reloadKey:l})},{key:`categories`,label:`行业类别`,children:(0,Q.jsx)(hWe,{onChanged:m})},{key:`watermarks`,label:`水印库`,children:(0,Q.jsx)(vWe,{embedded:!0,onChanged:m})}]})}),(0,Q.jsx)(_We,{open:s,onClose:()=>c(!1),categories:r,watermarks:a,onSuccess:m})]})},bWe=({children:e})=>{let{user:t,loading:n,checkAuth:r}=I5();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)(hP,{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}=I5();return(0,C.useEffect)(()=>{e()},[]),(0,Q.jsx)($p,{locale:J8.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)(zv,{children:(0,Q.jsx)(_n,{children:(0,Q.jsxs)(kt,{children:[(0,Q.jsx)(Dt,{path:`/login`,element:(0,Q.jsx)(GVe,{})}),(0,Q.jsxs)(Dt,{path:`/`,element:(0,Q.jsx)(bWe,{children:(0,Q.jsx)(BVe,{})}),children:[(0,Q.jsx)(Dt,{index:!0,element:(0,Q.jsx)(KVe,{})}),(0,Q.jsx)(Dt,{path:`users`,element:(0,Q.jsx)(XVe,{})}),(0,Q.jsx)(Dt,{path:`teams`,element:(0,Q.jsx)(eHe,{})}),(0,Q.jsx)(Dt,{path:`credit-records`,element:(0,Q.jsx)(THe,{})}),(0,Q.jsx)(Dt,{path:`models`,element:(0,Q.jsx)(tHe,{})}),(0,Q.jsx)(Dt,{path:`credit-ratios`,element:(0,Q.jsx)(zHe,{})}),(0,Q.jsx)(Dt,{path:`video-engines`,element:(0,Q.jsx)(NHe,{})}),(0,Q.jsx)(Dt,{path:`image-engines`,element:(0,Q.jsx)(IHe,{})}),(0,Q.jsx)(Dt,{path:`industries`,element:(0,Q.jsx)(MHe,{})}),(0,Q.jsx)(Dt,{path:`menu-configs`,element:(0,Q.jsx)(UHe,{})}),(0,Q.jsx)(Dt,{path:`recharge-packages`,element:(0,Q.jsx)(KHe,{})}),(0,Q.jsx)(Dt,{path:`payment`,element:(0,Q.jsx)(EHe,{})}),(0,Q.jsx)(Dt,{path:`payment-stats`,element:(0,Q.jsx)(OHe,{})}),(0,Q.jsx)(Dt,{path:`settings`,element:(0,Q.jsx)(rHe,{})}),(0,Q.jsx)(Dt,{path:`video-prompt-schema-config`,element:(0,Q.jsx)(eWe,{})}),(0,Q.jsx)(Dt,{path:`notifications`,element:(0,Q.jsx)(iHe,{})}),(0,Q.jsx)(Dt,{path:`oauthapp-list`,element:(0,Q.jsx)(YHe,{})}),(0,Q.jsx)(Dt,{path:`operation-logs`,element:(0,Q.jsx)(JHe,{})}),(0,Q.jsx)(Dt,{path:`generation-records`,element:(0,Q.jsx)(eUe,{})}),(0,Q.jsx)(Dt,{path:`generation-ai`,element:(0,Q.jsx)(aUe,{})}),(0,Q.jsx)(Dt,{path:`hot-opening-replications`,element:(0,Q.jsx)(uUe,{})}),(0,Q.jsx)(Dt,{path:`hot-opening-replications/:projectId`,element:(0,Q.jsx)(AUe,{})}),(0,Q.jsx)(Dt,{path:`shot-replications`,element:(0,Q.jsx)(FUe,{})}),(0,Q.jsx)(Dt,{path:`shot-replications/task-sets/:taskSetId`,element:(0,Q.jsx)(WUe,{})}),(0,Q.jsx)(Dt,{path:`shot-replications/projects/:projectId`,element:(0,Q.jsx)(_9,{moduleType:`shot_replicate`})}),(0,Q.jsx)(Dt,{path:`authoriza`,element:(0,Q.jsx)(HVe,{})}),(0,Q.jsx)(Dt,{path:`consume`,element:(0,Q.jsx)(WVe,{})}),(0,Q.jsx)(Dt,{path:`platform`,element:(0,Q.jsx)(qVe,{})}),(0,Q.jsx)(Dt,{path:`contact-requests`,element:(0,Q.jsx)(tWe,{})}),(0,Q.jsx)(Dt,{path:`home-materials`,element:(0,Q.jsx)(yWe,{})})]}),(0,Q.jsx)(Dt,{path:`*`,element:(0,Q.jsx)(Tt,{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 4fdbb81c..4adcb86d 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/AdminGenerationAiRecords.tsx b/video-gen-admin/src/pages/AdminGenerationAiRecords.tsx
index 804622c9..4525e7c9 100644
--- a/video-gen-admin/src/pages/AdminGenerationAiRecords.tsx
+++ b/video-gen-admin/src/pages/AdminGenerationAiRecords.tsx
@@ -15,6 +15,7 @@ import {
Typography,
} from 'antd';
import {
+ AudioOutlined,
CheckCircleOutlined,
ClockCircleOutlined,
CloseCircleOutlined,
@@ -436,31 +437,35 @@ const AdminGenerationAiRecords: React.FC = () => {
},
},
{
- title: '附件', key: 'references', width: 130,
+ title: '附件', key: 'references', width: 100,
render: (_: any, r: GenerationAITaskOut) => {
const refs = r.mediaReferences || [];
if (refs.length === 0) return 无;
return (
-
+
{refs.map((ref, idx) => {
const refUrl = getReferenceUrl(ref);
const refType = getReferenceType(ref);
const title = typeof ref.name === 'string' && ref.name ? ref.name : `附件 ${idx + 1}`;
if (!refUrl) return null;
+ const icon = refType === 'video'
+ ?
+ : refType === 'audio'
+ ?
+ : ;
return (
- : }
- type="link"
- style={{ padding: 0, fontSize: 12 }}
- onClick={(e) => {
- e.stopPropagation();
- handlePreviewResource(refUrl, refType === 'video' ? 'video' : 'image', title);
- }}
- >
- {title}
-
+
+
);
})}