1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3480],{24224:(e,s,i)=>{"use strict";i.r(s),i.d(s,{__N_SSP:()=>m,default:()=>p});var a=i(37876),r=i(14232),n=i(77328),l=i.n(n),t=i(55006),c=i(19512),d=i(87868),o=i(60577),x=i(8961),h=i(30338),_=i(33115),m=!0;function p(){let{config:e}=(0,o.r)(),[s,i]=(0,r.useState)(5),{taskResults:n,expandedResult:m,setExpandedResult:p,isTaskLoading:u,runAdminTask:k,runConfirmedTask:g}=(0,x.hN)();return(0,_.B)()?(0,a.jsxs)(d.A,{children:[(0,a.jsx)(l(),{children:(0,a.jsx)("title",{children:"Admin â System"})}),(0,a.jsxs)("div",{className:"flex flex-col gap-10 pb-8",children:[(0,a.jsx)(x.hR,{title:"System",description:"Environment: production",children:(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,a.jsxs)(x.mk,{title:"Elasticsearch â destructive",description:"These remove data from search. Re-index after deleting if needed.",children:[(0,a.jsx)(x.DR,{loading:u("empty_es"),onClick:()=>g("empty_es","Delete ES Docs","/api/admin/empty_es","Delete ALL Elasticsearch documents? Search will be empty until re-index completes."),variant:"outlined",children:"Delete ES Docs"}),(0,a.jsx)(x.DR,{loading:u("cleanup_orphaned_es"),onClick:()=>g("cleanup_orphaned_es","Cleanup Orphaned ES Docs","/api/admin/cleanup_orphaned_es","Remove Elasticsearch documents that no longer exist in the database?"),variant:"outlined",children:"Cleanup Orphaned ES Docs"})]}),(0,a.jsx)(x.mk,{title:"Elasticsearch â full re-index",description:"Rebuilds all search indexes. Can take several minutes.",children:(0,a.jsx)(x.DR,{loading:u("reindex_es"),onClick:()=>g("reindex_es","Re-index ES All","/api/admin/reindex_es","Re-index ALL Elasticsearch data (tracks, releases, sellers, interest, purchases, merch)?"),children:"Re-index ES All"})}),(0,a.jsx)(x.mk,{title:"Elasticsearch â re-index by type",description:"Rebuild one index at a time.",children:(0,a.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:[(0,a.jsx)(x.DR,{loading:u("reindex_es_tracks"),onClick:()=>g("reindex_es_tracks","Re-index Tracks Only","/api/admin/reindex_es_tracks","Re-index all tracks in Elasticsearch?"),children:"Tracks"}),(0,a.jsx)(x.DR,{loading:u("reindex_es_releases"),onClick:()=>g("reindex_es_releases","Re-index Releases Only","/api/admin/reindex_es_releases","Re-index all releases in Elasticsearch?"),children:"Releases"}),(0,a.jsx)(x.DR,{loading:u("reindex_es_merch"),onClick:()=>g("reindex_es_merch","Re-index Merch Only","/api/admin/reindex_es_merch","Re-index all merch in Elasticsearch?"),children:"Merch"}),(0,a.jsx)(x.DR,{loading:u("reindex_es_sellers"),onClick:()=>g("reindex_es_sellers","Re-index Sellers Only","/api/admin/reindex_es_sellers","Re-index all sellers in Elasticsearch?"),children:"Sellers"}),(0,a.jsx)(x.DR,{loading:u("reindex_es_interest"),onClick:()=>g("reindex_es_interest","Re-index Interest Only","/api/admin/reindex_es_interest","Re-index all user interest data in Elasticsearch?"),children:"Interest"}),(0,a.jsx)(x.DR,{loading:u("reindex_es_purchases"),onClick:()=>g("reindex_es_purchases","Re-index Purchases Only","/api/admin/reindex_es_purchases","Re-index all purchases in Elasticsearch?"),children:"Purchases"})]})}),(0,a.jsxs)(x.mk,{title:"Currencies",description:"Import or reload exchange rate data.",children:[(0,a.jsx)(x.DR,{loading:u("import_currencies"),onClick:()=>g("import_currencies","Import Currencies","/api/admin/import_currencies","Re-import currencies from the external source? This overwrites existing rate data."),children:"Import Currencies"}),(0,a.jsx)(x.DR,{loading:u("reload_currencies"),onClick:()=>g("reload_currencies","ReLoad Currencies","/api/admin/reload_currencies","Reload currency rates from the database into the application cache?"),children:"ReLoad Currencies"})]}),(0,a.jsxs)(x.mk,{title:"Buyer location â debug",description:"Set a broken US cookie (no region) to verify cart self-heal. Complete claims stay sticky; incomplete ones clear and fall through to Cloudflare/IP.",children:[(0,a.jsx)(x.DR,{loading:u("location_bad_us_cookie"),onClick:()=>g("location_bad_us_cookie","Set incomplete US cookie","/api/admin/location/test_cookie","Set artcore_bl to US with no region? Then reload a page with cart items â cart should still load and the cookie should heal.",{body:{action:"set_incomplete_us"}}),variant:"outlined",children:"Set incomplete US cookie"}),(0,a.jsx)(x.DR,{loading:u("location_clear_cookie"),onClick:()=>g("location_clear_cookie","Clear location cookie","/api/admin/location/test_cookie","Clear artcore_bl buyer location cookie?",{body:{action:"clear"}}),children:"Clear location cookie"})]}),e.flags.fakeSellers?(0,a.jsxs)(x.mk,{title:"Test data",description:"Fake artists and sellers for User 1. Dev/staging only.",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[u("generate_tracks")?(0,a.jsx)(t.A,{size:16}):(0,a.jsx)("span",{className:"w-4 shrink-0"}),(0,a.jsx)("input",{type:"number",min:"1",max:"100",value:s,onChange:e=>i(parseInt(e.target.value)),className:"w-16 bg-neutral-800 border border-neutral-600 rounded px-2 py-1 text-sm"}),(0,a.jsxs)(c.A,{onClick:()=>g("generate_tracks",`Generate ${s} Fake Artists`,"/api/admin/generate_tracks",`Generate fake data for ${s} artists for User 1?`,{body:{fakeArtists:s}}),id:"play-icon",disabled:u("generate_tracks"),size:"small",children:["Generate ",s," Fake Artists for User 1"]}
1)]}),(0,a.jsx)(x.DR,{loading:u("delete_tracks"),onClick:()=>g("delete_tracks","Delete all sellers for User 1","/api/admin/delete_tracks","Delete ALL sellers and related data for User 1?"),variant:"outlined",children:"Delete all sellers for User 1"})]}):null]})}),(0,a.jsxs)(x.hR,{title:"Task Results",description:"Output from system tasks. Newest first.",children:[0===n.length?(0,a.jsx)("p",{className:"text-sm text-neutral-500",children:"No admin tasks run yet."}):(0,a.jsx)("div",{className:"flex flex-col gap-4",children:n.map(e=>(0,a.jsxs)("div",{className:"border border-neutral-700 rounded p-3",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-2 text-sm",children:[(0,a.jsx)("strong",{children:e.label}),(0,a.jsx)("span",{className:"running"===e.status?"text-yellow-400":"success"===e.status?"text-green-400":"text-red-400",children:e.status}),"running"===e.status&&(0,a.jsx)(t.A,{size:14}),(0,a.jsxs)("span",{className:"text-neutral-500",children:[new Date(e.startedAt).toLocaleTimeString(),e.completedAt?` â ${new Date(e.completedAt).toLocaleTimeString()}`:""]})]}),(0,x.Kk)(e)&&(0,a.jsx)(x.A3,{result:e,onExpand:()=>p(e)})]},e.id))}),(0,a.jsx)(x.JK,{result:m,onClose:()=>p(null)})]})]})]}):(0,a.jsx)(h.G,{})}},31640:(e,s,i)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_admin/system",function(){return i(24224)}])}},e=>{e.O(0,[5712,2103,636,6593,8792],()=>e(e.s=31640)),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.