import { defineConfig } from '@vben/vite-config'; export default defineConfig(async () => { return { application: {}, vite: { server: { allowedHosts: true, proxy: { // ==================== Video 模块统一路由 ==================== // video/alarm, video/edge -> 告警服务 :8000(直通) '/admin-api/video/alarm': { changeOrigin: true, target: 'http://127.0.0.1:8000', }, '/admin-api/video/edge': { changeOrigin: true, target: 'http://127.0.0.1:8000', }, // 告警截图静态文件 -> 告警服务 :8000 '/uploads': { changeOrigin: true, target: 'http://127.0.0.1:8000', }, // Edge 本地截图(COS 未配置时回退)-> 告警服务 :8000 '/captures': { changeOrigin: true, target: 'http://127.0.0.1:8000', }, // COS 存储相关接口 -> 告警服务 :8000 '/admin-api/video/storage': { changeOrigin: true, target: 'http://127.0.0.1:8000', }, // video/device/* -> WVP :18080(按子路径分别 rewrite) // 注意:更具体的路径必须写在通配路径前面 // 摄像头拉流代理: /admin-api/video/device/proxy -> /api/proxy '/admin-api/video/device/proxy': { changeOrigin: true, target: 'http://127.0.0.1:18080', rewrite: (path: string) => path.replace('/admin-api/video/device/proxy', '/api/proxy'), }, // WVP 用户认证: /admin-api/video/device/user -> /api/user '/admin-api/video/device/user': { changeOrigin: true, target: 'http://127.0.0.1:18080', rewrite: (path: string) => path.replace('/admin-api/video/device/user', '/api/user'), }, // 媒体服务器: /admin-api/video/device/server -> /api/server/media_server '/admin-api/video/device/server': { changeOrigin: true, target: 'http://127.0.0.1:18080', rewrite: (path: string) => path.replace( '/admin-api/video/device/server', '/api/server/media_server', ), }, // ROI/算法/配置等: /admin-api/video/device -> /api/ai(通配,放最后) '/admin-api/video/device': { changeOrigin: true, target: 'http://127.0.0.1:18080', rewrite: (path: string) => path.replace('/admin-api/video/device', '/api/ai'), }, // ==================== 芋道主平台 ==================== // 所有 system/*、infra/* 等基础接口 -> 芋道后端 48080 '/admin-api': { changeOrigin: true, rewrite: (path) => path.replace(/^\/admin-api/, ''), // mock代理目标地址 target: 'http://localhost:48080/admin-api', ws: true, }, }, }, }, }; });