Новый сервис pcp-tgu-ui-service: ТГУ-фронт на headless-auth nstart + платформенный CI/деплой

This commit is contained in:
Дмитрий Соловьев
2026-06-09 13:35:13 +03:00
parent 0b617594fd
commit 505bf1f31c
129 changed files with 21640 additions and 0 deletions
@@ -0,0 +1,66 @@
import { fileURLToPath } from 'node:url'
import { nstartAuth } from '@nstart/auth/vite'
import react from '@vitejs/plugin-react'
// vitest/config расширяет vite defineConfig — нужно для блока test ниже.
import { defineConfig } from 'vitest/config'
// Сборочная заглушка @nstart/ui: @nstart/auth реэкспортирует ProfilePage/UserPanel
// (с lottie ~6 МБ), которые в сервисе не используются. Алиас отдаёт их импорты в
// лёгкий стаб, чтобы их UI не попадал в бандл. Типы tsc берёт из реального пакета.
const nstartUiStub = fileURLToPath(new URL('./src/stubs/nstart-ui.tsx', import.meta.url))
export default defineConfig({
// nstartAuth() обслуживает /silent-check-sso.html (нужен части режимов входа);
// при loginMode=redirect безвреден. @nstart/ui-плагины и tailwind НЕ подключаем —
// их UI в сервисе не используется.
plugins: [nstartAuth(), react()],
resolve: {
dedupe: ['react', 'react-dom'],
alias: [{ find: /^@nstart\/ui$/, replacement: nstartUiStub }],
},
server: {
host: '0.0.0.0',
port: 5174,
// ТГУ ходит в несколько бэкендов через префиксы. В проде эти маршруты
// повторяются в nginx.conf (зеркало) либо на gateway/ingress.
proxy: {
'/api/pcp-request': {
target: 'http://localhost:7005',
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/api\/pcp-request/, ''),
},
'/api/pcp-ballistics': {
target: 'http://localhost:7003',
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/api\/pcp-ballistics/, ''),
},
'/api/pcp-mission': {
target: 'http://localhost:7010',
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/api\/pcp-mission/, ''),
},
'/api/pcp-tgu': {
target: 'http://localhost:7011',
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/api\/pcp-tgu/, ''),
},
'/api/pcp-complex': {
target: 'http://localhost:7002',
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/api\/pcp-complex/, ''),
},
'/api/stations': {
target: 'http://localhost:7009',
changeOrigin: true,
},
'/api': {
target: 'http://localhost:7008',
changeOrigin: true,
},
},
},
test: {
environment: 'jsdom',
globals: true,
},
})