feat: deploy en host LXC (nginx + systemd) y ajustes para mismo-origen
- deploy/nginx-host.conf: nginx del host sirve dist/ de las 4 apps y proxifica /api/ a 127.0.0.1:3000 (client_max_body_size 10m) - deploy/frasa-api.service: API Gateway como servicio systemd - landing: URLs relativas (/quote/, /client/, /pay/) - Dockerfiles de apps: ARG VITE_API_URL=/api para builds same-origin - docker-compose: NGINX_CONF parametrizado (nginx.http.conf sin SSL) - README: instrucciones para host LXC y nota de DDNS pendiente
This commit is contained in:
@@ -7,20 +7,19 @@ describe('MODULOS', () => {
|
||||
expect(MODULOS.map((m) => m.id)).toEqual(['cotizador', 'alta-clientes', 'cobranza'])
|
||||
})
|
||||
|
||||
it('cada módulo tiene nombre, descripción y URL de preview válida', () => {
|
||||
it('cada módulo tiene nombre, descripción y URL válida', () => {
|
||||
for (const modulo of MODULOS) {
|
||||
expect(modulo.nombre.length).toBeGreaterThan(0)
|
||||
expect(modulo.descripcion.length).toBeGreaterThan(0)
|
||||
expect(() => new URL(modulo.url)).not.toThrow()
|
||||
expect(new URL(modulo.url).protocol).toBe('http:')
|
||||
expect(modulo.url).toMatch(/^\/[a-z]+\/$/)
|
||||
}
|
||||
})
|
||||
|
||||
it('apunta a los puertos y prefijos de preview correctos', () => {
|
||||
it('apunta a los prefijos correctos (same-origin detrás de NGINX)', () => {
|
||||
const urls = Object.fromEntries(MODULOS.map((m) => [m.id, m.url]))
|
||||
expect(urls['cotizador']).toBe('http://192.168.10.123:3001/quote/')
|
||||
expect(urls['alta-clientes']).toBe('http://192.168.10.123:3002/client/')
|
||||
expect(urls['cobranza']).toBe('http://192.168.10.123:3003/pay/')
|
||||
expect(urls['cotizador']).toBe('/quote/')
|
||||
expect(urls['alta-clientes']).toBe('/client/')
|
||||
expect(urls['cobranza']).toBe('/pay/')
|
||||
})
|
||||
|
||||
it('no hay ids ni URLs duplicadas', () => {
|
||||
|
||||
@@ -5,25 +5,24 @@ export interface Modulo {
|
||||
url: string
|
||||
}
|
||||
|
||||
// TODO: tras montar el NGINX de producción cambiar las URLs absolutas de
|
||||
// preview por rutas relativas '/quote/', '/client/' y '/pay/'.
|
||||
// Rutas relativas: la landing se sirve desde el mismo NGINX que las apps.
|
||||
export const MODULOS: Modulo[] = [
|
||||
{
|
||||
id: 'cotizador',
|
||||
nombre: 'Cotizador',
|
||||
descripcion: 'Propuestas comerciales y PDF en tiempo real',
|
||||
url: 'http://192.168.10.123:3001/quote/',
|
||||
url: '/quote/',
|
||||
},
|
||||
{
|
||||
id: 'alta-clientes',
|
||||
nombre: 'Alta de clientes',
|
||||
descripcion: 'Expediente digital, firmas y formatos PLD',
|
||||
url: 'http://192.168.10.123:3002/client/',
|
||||
url: '/client/',
|
||||
},
|
||||
{
|
||||
id: 'cobranza',
|
||||
nombre: 'Cobranza',
|
||||
descripcion: 'Planes de enganche, vencidos y estados de cuenta',
|
||||
url: 'http://192.168.10.123:3003/pay/',
|
||||
url: '/pay/',
|
||||
},
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user