diff --git a/docker-compose.yml b/docker-compose.yml index d3423ec7..6d4d1ffb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -162,7 +162,7 @@ services: - KEYCLOAK_REALM=${KEYCLOAK_REALM:-master} - KEYCLOAK_CLIENT_ID=${KEYCLOAK_CLIENT_ID:-anexo76-backend} - KEYCLOAK_CLIENT_SECRET=${KEYCLOAK_CLIENT_SECRET:-dev-secret} - - CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:5180,http://localhost:3000} + - CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:5173,http://localhost:3000} ports: - "8000:8000" depends_on: @@ -219,7 +219,7 @@ services: - KEYCLOAK_CLIENT_ID=${KEYCLOAK_CLIENT_ID:-anexo76-backend} - KEYCLOAK_CLIENT_SECRET=${KEYCLOAK_CLIENT_SECRET:-zRU5NuvUFtBSOuh7Kdc372AItoWGLgz9} ports: - - "5180:5180" + - "5173:5173" depends_on: backend: condition: service_healthy @@ -234,7 +234,7 @@ services: restart: unless-stopped command: ["pnpm", "run", "dev", "--", "--host", "0.0.0.0"] healthcheck: - test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:5180/ || exit 1"] + test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:5173/ || exit 1"] interval: 15s timeout: 5s retries: 5 diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 478712b4..bd5ede6d 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -24,7 +24,7 @@ COPY . . # RUN pnpm run build # Exponer puerto -EXPOSE 5180 +EXPOSE 5173 # Comando por defecto (desarrollo) CMD ["pnpm", "run", "dev", "--", "--host", "0.0.0.0"] diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 13f94b7a..c7bff032 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -5,7 +5,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; export default defineConfig({ server: { - port: 5180, // fija el puerto + port: 5173, // fija el puerto host: true // escucha en 0.0.0.0 }, plugins: [ diff --git a/scripts/init_first_time.sh b/scripts/init_first_time.sh index 67aeb7f3..591a52ac 100755 --- a/scripts/init_first_time.sh +++ b/scripts/init_first_time.sh @@ -182,7 +182,7 @@ else "baseUrl": "http://localhost:8000/api", "redirectUris": [ "http://localhost:8000/*", - "http://localhost:5180/*" + "http://localhost:5173/*" ], "webOrigins": ["http://localhost:8000/api"], "attributes": { @@ -273,18 +273,11 @@ else "baseUrl": "http://localhost:5173", "redirectUris": [ "http://localhost:5173/*", - "http://localhost:3000/*", - "http://localhost:5180/*" - ], - "postLogoutRedirectUris": [ - "http://localhost:5173/*", - "http://localhost:3000/*", - "http://localhost:5180/*" + "http://localhost:3000/*" ], "webOrigins": [ "http://localhost:5173", - "http://localhost:3000", - "http://localhost:5180" + "http://localhost:3000" ], "attributes": { "pkce.code.challenge.method": "S256" @@ -292,6 +285,8 @@ else }') HTTP_CODE=$(echo "$CREATE_FRONTEND" | tail -n1) + RESPONSE_BODY=$(echo "$CREATE_FRONTEND" | head -n -1) + if [ "$HTTP_CODE" = "201" ]; then echo -e "${GREEN}✓ Cliente Frontend creado${NC}" # Obtener ID del cliente recién creado @@ -301,6 +296,7 @@ else FRONTEND_CLIENT_ID=$(echo "$FRONTEND_CLIENT_EXISTS" | grep -o '"id":"[^"]*' | head -1 | sed 's/"id":"//') else echo -e "${RED}✗ Error al crear cliente Frontend (HTTP ${HTTP_CODE})${NC}" + echo "Respuesta del servidor: $RESPONSE_BODY" fi fi @@ -488,62 +484,66 @@ echo -e "\n${YELLOW}[8/8] Creando tenant y company en PostgreSQL...${NC}" # Esperar a que PostgreSQL esté listo echo "Esperando a que PostgreSQL esté disponible..." -MAX_PG_RETRIES=30 +MAX_PG_RETRIES=60 PG_RETRY_COUNT=0 while [ $PG_RETRY_COUNT -lt $MAX_PG_RETRIES ]; do - if PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -c "SELECT 1;" > /dev/null 2>&1; then + # Usar docker exec para verificar pg_isready directamente + if docker exec anexo76-postgres-a76 pg_isready -h localhost -U "${POSTGRES_USER}" > /dev/null 2>&1; then echo -e "${GREEN}✓ PostgreSQL está listo${NC}" break fi PG_RETRY_COUNT=$((PG_RETRY_COUNT + 1)) echo "Intento $PG_RETRY_COUNT/$MAX_PG_RETRIES..." - sleep 2 + sleep 1 done if [ $PG_RETRY_COUNT -eq $MAX_PG_RETRIES ]; then - echo -e "${RED}✗ Error: PostgreSQL no está disponible${NC}" + echo -e "${RED}✗ Error: PostgreSQL no está disponible después de $MAX_PG_RETRIES intentos${NC}" exit 1 fi # Insertar o actualizar tenant -PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" <&1 -# Obtener el ID del tenant -TENANT_ID=$(PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT id FROM a76.tenants WHERE slug = '${TENANT_SLUG}';") -TENANT_ID=$(echo "$TENANT_ID" | xargs) # Trim whitespace +# Obtener el ID del tenant con mejor manejo de errores +echo "Obteniendo ID del tenant..." +TENANT_ID_RESULT=$(docker exec -e PGPASSWORD="${POSTGRES_PASSWORD}" anexo76-postgres-a76 psql -h localhost -p 5432 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT id FROM a76.tenants WHERE slug = '${TENANT_SLUG}';" 2>&1) + +if [ $? -ne 0 ]; then + echo -e "${RED}✗ Error al consultar el tenant:${NC}" + echo "$TENANT_ID_RESULT" + echo -e "${YELLOW}Verificando si la tabla existe...${NC}" + docker exec -e PGPASSWORD="${POSTGRES_PASSWORD}" anexo76-postgres-a76 psql -h localhost -p 5432 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -c "\dt a76.tenants;" + exit 1 +fi + +TENANT_ID=$(echo "$TENANT_ID_RESULT" | xargs) # Trim whitespace if [ -z "$TENANT_ID" ]; then echo -e "${RED}✗ Error: No se pudo obtener el ID del tenant${NC}" + echo "Resultado de la consulta: '$TENANT_ID_RESULT'" + echo -e "${YELLOW}Intentando ver todos los tenants...${NC}" + docker exec -e PGPASSWORD="${POSTGRES_PASSWORD}" anexo76-postgres-a76 psql -h localhost -p 5432 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -c "SELECT id, slug FROM a76.tenants LIMIT 10;" exit 1 fi echo -e "${GREEN}✓ Tenant ID: ${TENANT_ID}${NC}" # Insertar company si no existe -COMPANY_EXISTS=$(PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT COUNT(*) FROM a76.company WHERE tenant_id = ${TENANT_ID};") +COMPANY_EXISTS=$(docker exec -e PGPASSWORD="${POSTGRES_PASSWORD}" anexo76-postgres-a76 psql -h localhost -p 5432 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT COUNT(*) FROM a76.company WHERE tenant_id = ${TENANT_ID};") COMPANY_EXISTS=$(echo "$COMPANY_EXISTS" | xargs) if [ "$COMPANY_EXISTS" = "0" ]; then - PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" <&1 echo -e "${GREEN}✓ Company creada${NC}" else echo -e "${YELLOW}⚠ Company ya existe para este tenant${NC}" fi # Obtener información de la company -COMPANY_INFO=$(PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT id, name FROM a76.company WHERE tenant_id = ${TENANT_ID} LIMIT 1;") +COMPANY_INFO=$(docker exec -e PGPASSWORD="${POSTGRES_PASSWORD}" anexo76-postgres-a76 psql -h localhost -p 5432 -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -t -c "SELECT id, name FROM a76.company WHERE tenant_id = ${TENANT_ID} LIMIT 1;") echo -e "${GREEN}✓ Company: ${COMPANY_INFO}${NC}" @@ -564,14 +564,7 @@ echo -e "${GREEN}✓ Atributo tenant_id asignado al usuario${NC}" # Agregar relación usuario-tenant en la base de datos echo -e "\n${YELLOW}Creando relación usuario-tenant en la base de datos...${NC}" -PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" <&1 echo -e "${GREEN}✓ Relación usuario-tenant creada en la base de datos${NC}" @@ -609,5 +602,5 @@ echo -e "\n${YELLOW}Configuración del usuario demo:${NC}" echo -e " ${GREEN}✓${NC} tenant_id actualizado al ID real: ${TENANT_ID}" echo -e " ${GREEN}✓${NC} Relación usuario-tenant creada (rol: admin)" echo -e "\n${YELLOW}Puedes acceder al sistema en:${NC}" -echo -e " ${GREEN}http://localhost:5180${NC}" +echo -e " ${GREEN}http://localhost:5173${NC}" echo -e "\n${GREEN}════════════════════════════════════════════════════════${NC}\n" diff --git a/start.sh b/start.sh index 61308fda..c5c0b66a 100755 --- a/start.sh +++ b/start.sh @@ -155,7 +155,7 @@ echo -e "${GREEN} ✓ Instalación Completada${NC}" echo "=========================================" echo "" echo "Servicios disponibles:" -echo -e " ${GREEN}•${NC} Frontend: ${BLUE}http://localhost:5180${NC}" +echo -e " ${GREEN}•${NC} Frontend: ${BLUE}http://localhost:5173${NC}" echo -e " ${GREEN}•${NC} Backend: ${BLUE}http://localhost:8000/api${NC}" echo -e " ${GREEN}•${NC} API Docs: ${BLUE}http://localhost:8000/api/docs${NC}" echo -e " ${GREEN}•${NC} Keycloak: ${BLUE}http://localhost:8080${NC}"