Files
memind/vite.config.ts
T
john b5c600ad81 Split back-office into standalone memind_adm service
Carve the platform super-admin API (/admin-api) and plaza operations console
API (/api/ops/v1) out of the public server.mjs into their own process, so the
user-facing fleet can no longer be taken down or scaled by back-office traffic.

Architecture (split-ready, single process for now):
- admin-routes.mjs: createAdminApi / createOpsApi route factories (DI, single
  source of truth; the route logic moved verbatim out of server.mjs).
- admin-bootstrap.mjs: lean service container (user-auth, LLM providers, minimal
  plaza graph) with no user-facing daemons.
- admin-server.mjs: standalone entry with a console registry. ADMIN_CONSOLES
  selects which consoles a process mounts (default both), so splitting into two
  processes later is a config change, not a code change.
- admin-guard.mjs (+ tests): per-console host / IP-CIDR allowlists, letting the
  super-admin surface be locked down harder than moderation.

server.mjs no longer serves or mounts either surface. user-auth.mjs gains
pagination on listUsers/listUsageRecords/listBillingLedger to back the admin
dashboards. dev.mjs launches memind_adm; the ops SPA proxies /api to it while
/auth stays on the portal. Sessions are read from the shared cookie
(H5_COOKIE_DOMAIN=.tkmind.cn); login stays on the main domain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 20:55:23 +08:00

32 lines
837 B
TypeScript

import { defineConfig, loadEnv } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), '');
const portalTarget = env.H5_DEV_PORTAL ?? 'http://127.0.0.1:8081';
// Platform super-admin API now lives in the standalone memind_adm service.
const adminTarget = env.H5_DEV_ADMIN ?? 'http://127.0.0.1:8082';
return {
plugins: [react()],
server: {
host: true,
port: 5173,
strictPort: true,
proxy: {
'/api': portalTarget,
'/auth': portalTarget,
'/admin-api': adminTarget,
'/MindSpace': portalTarget,
'^/u/': portalTarget,
'^/s/': portalTarget,
'^/user/': portalTarget,
},
},
build: {
outDir: 'dist',
emptyOutDir: true,
},
};
});