feat: Docker部署与CI/CD集成, 搜索栏修复, 上传目录改为data

This commit is contained in:
xiner
2025-11-28 18:42:30 +08:00
commit 8351d6bbfc
243 changed files with 13192 additions and 0 deletions

View File

@@ -0,0 +1 @@
self.__BUILD_MANIFEST=function(s,e){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/7b3a7bf8-bf0e044ebc1c1648.js",s,e,"static/chunks/pages/index-fab3e6df678d43cd.js"],"/_error":["static/chunks/pages/_error-5a00309fd5f4b49e.js"],"/auth/login":[s,"static/chunks/pages/auth/login-f89d7cc3b92cdbb6.js"],"/auth/register":[s,"static/chunks/pages/auth/register-7764882a4d5e8b33.js"],"/console":[e,"static/chunks/pages/console-4f917759f5d20401.js"],sortedPages:["/","/_app","/_error","/auth/login","/auth/register","/console"]}}("static/chunks/605-a9ef1a4d7e037b3d.js","static/chunks/221-4d0521e8c44484d0.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

View File

@@ -0,0 +1 @@
self.__SSG_MANIFEST=new Set,self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,16 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[888],{4297:function(e,t,r){"use strict";r.d(t,{Z:function(){return c}});var n=r(7294),i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let s=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),c=(e,t)=>{let r=(0,n.forwardRef)(({color:r="currentColor",size:c=24,strokeWidth:a=2,absoluteStrokeWidth:o,className:l="",children:u,...d},h)=>(0,n.createElement)("svg",{ref:h,...i,width:c,height:c,stroke:r,strokeWidth:o?24*Number(a)/Number(c):a,className:["lucide",`lucide-${s(e)}`,l].join(" "),...d},[...t.map(([e,t])=>(0,n.createElement)(e,t)),...Array.isArray(u)?u:[u]]));return r.displayName=`${e}`,r}},1352:function(e,t,r){"use strict";r.d(t,{Z:function(){return n}});/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let n=(0,r(4297).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},6840:function(e,t,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return r(1484)}])},9189:function(e,t,r){"use strict";r.d(t,{V:function(){return h},p:function(){return d}});var n=r(5893),i=r(7294),s=r(4297);/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let c=(0,s.Z)("CheckCircle",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),a=(0,s.Z)("AlertCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]),o=(0,s.Z)("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);var l=r(1352);let u=(0,i.createContext)(void 0),d=()=>{let e=(0,i.useContext)(u);if(!e)throw Error("useToast must be used within ToastProvider");return e},h=e=>{let{children:t}=e,[r,s]=(0,i.useState)([]),d=(0,i.useCallback)((e,t)=>{let r=Math.random().toString(36).substring(7),n={id:r,message:e,type:t};s(e=>[...e,n]),setTimeout(()=>{s(e=>e.filter(e=>e.id!==r))},5e3)},[]),h=(0,i.useCallback)(e=>d(e,"success"),[d]),f=(0,i.useCallback)(e=>d(e,"error"),[d]),p=(0,i.useCallback)(e=>d(e,"info"),[d]),x=e=>{s(t=>t.filter(t=>t.id!==e))};return(0,n.jsxs)(u.Provider,{value:{showToast:d,success:h,error:f,info:p},children:[t,(0,n.jsx)("div",{className:"fixed top-4 right-4 z-[9999] space-y-2",children:r.map(e=>(0,n.jsxs)("div",{className:"\n flex items-center gap-3 min-w-[300px] max-w-md p-4 rounded-lg \n backdrop-blur-md border shadow-lg\n animate-in slide-in-from-right duration-300\n ".concat("success"===e.type?"bg-green-900/90 border-green-500 text-green-100":"","\n ").concat("error"===e.type?"bg-red-900/90 border-red-500 text-red-100":"","\n ").concat("info"===e.type?"bg-blue-900/90 border-blue-500 text-blue-100":"","\n "),children:["success"===e.type&&(0,n.jsx)(c,{className:"w-5 h-5 flex-shrink-0"}),"error"===e.type&&(0,n.jsx)(a,{className:"w-5 h-5 flex-shrink-0"}),"info"===e.type&&(0,n.jsx)(o,{className:"w-5 h-5 flex-shrink-0"}),(0,n.jsx)("p",{className:"flex-1 text-sm font-mono",children:e.message}),(0,n.jsx)("button",{onClick:()=>x(e.id),className:"flex-shrink-0 hover:opacity-70 transition-opacity",children:(0,n.jsx)(l.Z,{className:"w-4 h-4"})})]},e.id))})]})}},1484:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a}});var n=r(5893);r(7133);var i=r(9008),s=r.n(i),c=r(9189);function a(e){let{Component:t,pageProps:r}=e;return(0,n.jsxs)(c.V,{children:[(0,n.jsxs)(s(),{children:[(0,n.jsx)("title",{children:"NEXUS_MAT.OS"}),(0,n.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1"})]}),(0,n.jsx)(t,{...r})]})}},7133:function(){},9008:function(e,t,r){e.exports=r(6665)}},function(e){var t=function(t){return e(e.s=t)};e.O(0,[774,179],function(){return t(6840),t(3035)}),_N_E=e.O()}]);

View File

@@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[820],{1981:function(n,_,u){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return u(8539)}])}},function(n){n.O(0,[888,774,179],function(){return n(n.s=1981)}),_N_E=n.O()}]);

View File

@@ -0,0 +1,16 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[344],{9013:function(e,t,r){"use strict";r.d(t,{Z:function(){return s}});/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let s=(0,r(4297).Z)("Hexagon",[["path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z",key:"yt0hxn"}]])},5977:function(e,t,r){"use strict";r.d(t,{Z:function(){return s}});/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let s=(0,r(4297).Z)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},163:function(e,t,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/auth/login",function(){return r(6517)}])},6517:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return m}});var s=r(5893),n=r(7294),a=r(1664),o=r.n(a),l=r(1163),i=r(9013),c=r(4009),d=r(5977);/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let x=(0,r(4297).Z)("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);var u=r(9008),h=r.n(u);function m(){let e=(0,l.useRouter)(),[t,r]=(0,n.useState)(!1),[a,u]=(0,n.useState)(""),m=async t=>{t.preventDefault(),r(!0),u("");let s=new FormData(t.currentTarget),n=s.get("username"),a=s.get("password");try{let t=await fetch("/api/v1/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:n,password:a})}),r=await t.json();r.success?(localStorage.setItem("NEXUS_DATA_MODE","REAL"),e.push("/")):u(r.error||"Login failed")}catch(e){u("Network error. Please try again.")}finally{r(!1)}};return(0,s.jsxs)("div",{className:"min-h-screen flex items-center justify-center relative overflow-hidden bg-[#020202]",children:[(0,s.jsx)(h(),{children:(0,s.jsx)("title",{children:"NEXUS_MAT.OS"})}),(0,s.jsx)("div",{className:"absolute inset-0 bg-[url('https://grainy-gradients.vercel.app/noise.svg')] opacity-20"}),(0,s.jsx)("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-cyber-neon/5 rounded-full blur-[100px] pointer-events-none"}),(0,s.jsxs)("div",{className:"w-full max-w-md p-8 relative z-10",children:[(0,s.jsxs)("div",{className:"mb-10 text-center",children:[(0,s.jsxs)(o(),{href:"/",className:"inline-flex items-center gap-2 group cursor-pointer mb-6",children:[(0,s.jsx)(i.Z,{className:"text-cyber-neon w-10 h-10 group-hover:rotate-180 transition-transform duration-700"}),(0,s.jsxs)("span",{className:"text-3xl font-mono font-bold tracking-tighter text-white",children:["NEXUS_MAT",(0,s.jsx)("span",{className:"text-cyber-neon",children:".OS"})]})]}),(0,s.jsx)("h2",{className:"text-gray-400 font-mono text-sm tracking-widest",children:"IDENTITY_VERIFICATION_PROTOCOL"})]}),(0,s.jsxs)("div",{className:"bg-cyber-panel/40 backdrop-blur-md border border-white/10 p-8 rounded-lg shadow-2xl relative overflow-hidden group",children:[(0,s.jsx)("div",{className:"absolute inset-0 border border-cyber-neon/0 group-hover:border-cyber-neon/50 transition-colors duration-500 rounded-lg pointer-events-none"}),(0,s.jsxs)("form",{onSubmit:m,className:"space-y-6",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("label",{className:"text-xs font-mono text-cyber-neon",children:"USER_ID"}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)("input",{name:"username",type:"text",className:"w-full bg-black/50 border border-gray-800 focus:border-cyber-neon text-white p-3 pl-10 rounded-sm outline-none transition-all font-mono",placeholder:"Enter username",required:!0}),(0,s.jsx)(c.Z,{className:"absolute left-3 top-3 text-gray-500 w-4 h-4"})]})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("label",{className:"text-xs font-mono text-cyber-neon",children:"ACCESS_KEY"}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)("input",{name:"password",type:"password",className:"w-full bg-black/50 border border-gray-800 focus:border-cyber-neon text-white p-3 pl-10 rounded-sm outline-none transition-all font-mono",placeholder:"••••••••",required:!0}),(0,s.jsx)(d.Z,{className:"absolute left-3 top-3 text-gray-500 w-4 h-4"})]})]}),a&&(0,s.jsx)("div",{className:"bg-red-900/20 border border-red-500 text-red-500 p-3 rounded text-xs font-mono",children:a}),(0,s.jsx)("button",{type:"submit",disabled:t,className:"w-full bg-cyber-neon text-black font-bold py-3 mt-4 hover:bg-white transition-colors flex items-center justify-center gap-2 font-mono uppercase tracking-wider",children:t?"AUTHENTICATING...":(0,s.jsxs)(s.Fragment,{children:["INITIATE_SESSION ",(0,s.jsx)(x,{size:16})]})})]}),(0,s.jsxs)("div",{className:"mt-6 flex justify-between items-center text-xs font-mono text-gray-500",children:[(0,s.jsx)(o(),{href:"/auth/register",className:"hover:text-cyber-neon transition-colors",children:"[ CREATE_NEW_IDENTITY ]"}),(0,s.jsx)("a",{href:"#",className:"hover:text-white transition-colors",children:"FORGOT_KEY?"})]})]}),(0,s.jsx)("div",{className:"mt-8 text-center",children:(0,s.jsxs)("p",{className:"text-[10px] text-gray-700 font-mono",children:["SECURE CONNECTION ESTABLISHED ",(0,s.jsx)("br",{}),"ENCRYPTION: AES-256-GCM"]})})]})]})}},1163:function(e,t,r){e.exports=r(3035)}},function(e){e.O(0,[605,888,774,179],function(){return e(e.s=163)}),_N_E=e.O()}]);

View File

@@ -0,0 +1,11 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[461],{5977:function(e,t,s){"use strict";s.d(t,{Z:function(){return r}});/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let r=(0,s(4297).Z)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},6659:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/auth/register",function(){return s(1291)}])},1291:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return m}});var r=s(5893),a=s(7294),n=s(1664),o=s.n(n),l=s(1163),i=s(4009),c=s(5977);/**
* @license lucide-react v0.344.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/let d=(0,s(4297).Z)("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);var x=s(9008),u=s.n(x);function m(){let e=(0,l.useRouter)(),[t,s]=(0,a.useState)(!1),[n,x]=(0,a.useState)(""),m=async t=>{t.preventDefault(),s(!0),x("");let r=new FormData(t.currentTarget),a=r.get("username"),n=r.get("password");if(n!==r.get("confirmPassword")){x("Passwords do not match"),s(!1);return}try{let t=await fetch("/api/v1/auth/register",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:a,password:n})}),s=await t.json();s.success?(localStorage.setItem("NEXUS_DATA_MODE","REAL"),e.push("/")):x(s.error||"Registration failed")}catch(e){x("Network error. Please try again.")}finally{s(!1)}};return(0,r.jsxs)("div",{className:"min-h-screen flex items-center justify-center relative overflow-hidden bg-[#020202]",children:[(0,r.jsx)(u(),{children:(0,r.jsx)("title",{children:"NEXUS_MAT.OS"})}),(0,r.jsx)("div",{className:"absolute inset-0 bg-[url('https://grainy-gradients.vercel.app/noise.svg')] opacity-20"}),(0,r.jsx)("div",{className:"absolute bottom-0 right-0 w-[600px] h-[600px] bg-cyber-pink/5 rounded-full blur-[100px] pointer-events-none"}),(0,r.jsxs)("div",{className:"w-full max-w-lg p-8 relative z-10",children:[(0,r.jsxs)("div",{className:"mb-8 text-center",children:[(0,r.jsx)("h1",{className:"text-3xl font-mono font-bold text-white mb-2",children:"JOIN_NETWORK"}),(0,r.jsx)("p",{className:"text-xs text-gray-500 font-mono",children:"ESTABLISH NEW NEURAL LINK"})]}),(0,r.jsxs)("div",{className:"bg-cyber-panel/40 backdrop-blur-md border border-white/10 p-8 rounded-lg shadow-2xl",children:[(0,r.jsxs)("form",{onSubmit:m,className:"space-y-4",children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("label",{className:"text-[10px] font-mono text-gray-400",children:"USERNAME"}),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("input",{name:"username",type:"text",className:"w-full bg-black/50 border border-gray-800 focus:border-cyber-pink text-white p-2.5 pl-8 rounded-sm outline-none font-mono text-sm",required:!0}),(0,r.jsx)(i.Z,{className:"absolute left-2.5 top-3 text-gray-600 w-3 h-3"})]})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("label",{className:"text-[10px] font-mono text-gray-400",children:"PASSWORD"}),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("input",{name:"password",type:"password",className:"w-full bg-black/50 border border-gray-800 focus:border-cyber-pink text-white p-2.5 pl-8 rounded-sm outline-none font-mono text-sm",required:!0}),(0,r.jsx)(c.Z,{className:"absolute left-2.5 top-3 text-gray-600 w-3 h-3"})]})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("label",{className:"text-[10px] font-mono text-gray-400",children:"CONFIRM_PASSWORD"}),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("input",{name:"confirmPassword",type:"password",className:"w-full bg-black/50 border border-gray-800 focus:border-cyber-pink text-white p-2.5 pl-8 rounded-sm outline-none font-mono text-sm",required:!0}),(0,r.jsx)(d,{className:"absolute left-2.5 top-3 text-gray-600 w-3 h-3"})]})]}),n&&(0,r.jsx)("div",{className:"bg-red-900/20 border border-red-500 text-red-500 p-3 rounded text-xs font-mono",children:n}),(0,r.jsx)("button",{type:"submit",disabled:t,className:"w-full bg-cyber-pink text-white font-bold py-3 mt-4 hover:bg-white hover:text-black transition-colors font-mono uppercase tracking-wider shadow-[0_0_15px_rgba(255,0,85,0.3)]",children:t?"PROCESSING...":"CREATE_ACCOUNT"})]}),(0,r.jsxs)("div",{className:"mt-6 text-center text-xs font-mono text-gray-500",children:["ALREADY LINKED? ",(0,r.jsx)(o(),{href:"/auth/login",className:"text-cyber-pink hover:underline",children:"ACCESS_TERMINAL"})]})]})]})]})}},1163:function(e,t,s){e.exports=s(3035)}},function(e){e.O(0,[605,888,774,179],function(){return e(e.s=6659)}),_N_E=e.O()}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
!function(){"use strict";var e,n,r,t,o={},u={};function i(e){var n=u[e];if(void 0!==n)return n.exports;var r=u[e]={exports:{}},t=!0;try{o[e](r,r.exports,i),t=!1}finally{t&&delete u[e]}return r.exports}i.m=o,e=[],i.O=function(n,r,t,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,t,o];return}for(var f=1/0,u=0;u<e.length;u++){for(var r=e[u][0],t=e[u][1],o=e[u][2],l=!0,c=0;c<r.length;c++)f>=o&&Object.keys(i.O).every(function(e){return i.O[e](r[c])})?r.splice(c--,1):(l=!1,o<f&&(f=o));if(l){e.splice(u--,1);var a=t();void 0!==a&&(n=a)}}return n},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,{a:n}),n},i.d=function(e,n){for(var r in n)i.o(n,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="/_next/",n={272:0},i.O.j=function(e){return 0===n[e]},r=function(e,r){var t,o,u=r[0],f=r[1],l=r[2],c=0;if(u.some(function(e){return 0!==n[e]})){for(t in f)i.o(f,t)&&(i.m[t]=f[t]);if(l)var a=l(i)}for(e&&e(r);c<u.length;c++)o=u[c],i.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return i.O(a)},(t=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))}();

File diff suppressed because one or more lines are too long