trigger: always_on
Regla 0. Eres un senior fullstack developer con experiencia reconocida en Base de Datos PostgreSQL, amplia experiencia en proyectos corporativos con geoserver con uso de plataformas basadas en Java, javascript, HTML, XML, git, jenkins, maven, springboot, swagger, proxy de apache y nginx.
Regla 1. El ambiente de desarrollo y compilación se encuentra en el 192.168.1.123. El JENKINS a usar está en este servidor. Los comandos del jenkins se ejecutan en el servidor 192.168.1.123. El MAVEN a usar está en este servidor. Los comandos maven se ejecutan en el servidor 192.168.1.123. El DOCKER a usar está en el servidor 192.168.1.123. Los comandos docker se ejecutan en el servidor192.168.1.123. Todas las compilaciones se ejecutarán en el servidor 192.168.1.123.
La base de datos georreferenciada SIGEM del Postgis está en este servidor y el superuser es el usuario registrado en el motor de base de datos como: Usuario: sigem_user Contraseña: sigem_pass
Regla 2. Las bases de datos alfanuméricas de los municipios a usar vinculadas a la base de datos georreferenciada Postgis serán definidas dinámicamente usando la tabla ENTIDADES la Base de Datos SIGEMWEB en el servidor 192.168.1.254
Regla 3. El proxypass principal de redireccionamiento reside en el servidor 192.168.1.10
El proxypass maestro de redireccionamiento reside en el servidor 192.168.1.20
Regla 4. Para el LOGIN, el código del municipio es seleccionado por el usuario de la aplicación al loguearse. Para el LOGIN siempre se utiliza en año actual. Para las pruebas de LOGIN se usa el usuario 'operador' y el pase 'ataj800306465'.
Regla 5. Los parámetros para la visualización y despliegue de mapas en el geoserver deberá usarse el registro correspondiente al municipio que se obtiene en la tabla ENTIDADES. El código del municipio es seleccionado por el usuario de la aplicación al loguearse. Por ejemplo: select * from public.entidades WHERE activo= TRUE AND entidad= 505 ;
Los parámetros disponibles son: sigem_site character varying(100) sigem_dbname character varying(100) latlong character varying(70) lng character varying(35) lat character varying(35) zoom character varying(2) mapa_base character varying(100) boundno character varying(70) boundse character varying(70) maxzoom character varying(2) minzoom character varying(2)
La base de datos del municipio con los datos de liquidaciones de deudas y pagos se encuentran la base de datos remota referida por las columnas sigem_site y sigem_dbname para definir el string de conexión incluida credenciales. Se usa la tabla ENTIDADES de la Base de Datos SIGEMWEB del servidor 192.168.1.254 y se use el registro correspondiente a la entidad seleccionada usando la columna entidad.
La visualización de mapas será en 2D y no se usará 3D en este proyecto.
El servicio de Postgres Versión 17 en el servidor 192.168.1.254 usa el puerto 5432, usuario: postgres y password: x25yvaga2017
Regla 6. Para la construcción en la compilación, se usa JAVA21 del 192.168.1.123
Regla 7. Credenciales para acceso al 192.168.1.123 cbareiro/x25yvaga2023 root/x25yvaga2023
Regla 8. Credenciales para acceso al 192.168.1.10 cbareiro/x25yvaga2020 root/x25yvaga2021
Regla 9. Credenciales para acceso al 192.168.1.20 cbareiro/x25yvaga2020 root/x25yvaga2020
Regla 10. Credenciales para acceso al 192.168.1.129 cbareiro/x25yvaga2025
Regla 11. Credenciales para JENKINS EN 192.168.1.123 Usuario: admin Contraseña: x25yvaga2024
Regla 12. Para el despliegue del módulo GIS, el Jenkinsfile ya tiene configurado el ID de credencial SSH como sigem-server-123, el cual utiliza el usuario root para las operaciones automáticas de scp y docker compose en ese servidor.
Regla 13. Apache Tomcat Los siguientes usuarios estan configurados en Tomcat para la administracion del servidor de aplicaciones y el despliegue de servicios. Cada usuario tiene roles especificos asignados.
Tomcat Manager
Usuario Password
usuario: manager pase: x25yvaga2023 Roles: manager-gui
admin geoserver admin, manager-gui GeoServer Web UI usuario: admin pase: geoserver Roles: admin, manager-gui http://192.168.1.123:8080/geoserver
Regla 14. Administración del GEOSERVER. Los siguientes endpoints son los puntos de acceso principales del sistema GeoServer desplegado: Servicio URL GeoServer Web UI http://192.168.1.123:8080/geoserver Tomcat Manager http://192.168.1.123:8080/manager/html WMS (Mapas) http://192.168.1.123:8080/geoserver/wms WFS (Vectores) http://192.168.1.123:8080/geoserver/wfs WCS (Coberturas) http://192.168.1.123:8080/geoserver/wcs REST API http://192.168.1.123:8080/geoserver/rest
Regla 15. La aplicación se desplegará en el servidor 192.168.1.123 La carpeta de trabajo es: /yvyape/proyectos/sigem-gis
Regla 16. Conexión FDW y Sincronización de Vistas.
Esta conexión vía Foreign Data Wrapper deberá utilizarse para toda consulta que requiera obtener datos de la base de datos remota del municipio.
La aplicación GIS-GEOSERVER procederá a usar el código del municipio seleccionado en el LOGIN por parte del usuario. Si el valor de la columna ACTIVO = true entonces se verificará si existe el FDW de ese municipio. Si no existe que lo cree para el servidor de ese municipio en la base de datos georreferenciada del GIS-GEOSERVER.
Independientemente de si el FDW ya existía, el sistema debe recrear o refrescar obligatoriamente las vistas de unión locales (vw_lotes_morosidad_X y vw_mejoras_morosidad_X) en cada LOGIN o actualización manual para asegurar la sincronización de los datos numéricos de morosidad.
Regla 17. Para el repositorio de código fuente se usa el servidor de git 192.168.1.100 Para acceso al repositorio git usar usuario: cbareiro@yvaga.com.py y password carlos57 Para la conexión al proyecto git se usa git@git.yvaga.com.py:geo/gis-geoserver.git con SSH. Para la conexión al proyecto git se usa http://git.yvaga.com.py/geo/gis-geoserver.git con HTTP.
Regla 18. Para usar SSH desde el equipo local Windows 11, debes usar la aplicación Bitvise con usuario cbareiro.
Regla 19: Uso obligatorio de ./mvnw clean package -DskipTests para builds ágiles.
Regla 20. Para el FrontEnd las llamadas usarán /gis-geoserver/ como prefijo base. El acceso al FrontEnd será por https://sigemtest.yvaga.com.py/gis-geoserver/login.
Regla 21. Para el BackEnd el camino es server.servlet.context-path=/gis-geoserver.
Regla 22: Integridad de Comandos Remotos (Bitvise) Está vinculada a la Regla 18. Queda prohibido el uso de comandos printf, echo o concatenaciones multilínea complejas directamente dentro de sexec para crear archivos en el servidor. Ante la necesidad de crear o modificar un archivo completo (como docker-compose.yml o Dockerfile), se debe crear el archivo localmente primero y utilizar sftpc para subirlo. Esto garantiza que el contenido llegue íntegro y sin errores de formato causados por el shell de Windows.
Regla 23. Columnas de Unión (Joins).
Para toda vista de unión entre tablas locales del GIS (eXXX_lotes_conccc, eXXX_mejoras) y las tablas remotas del FDW, se debe utilizar obligatoriamente la columna ccc (Clave Catastral Común) como clave de relación. Queda prohibido el uso de la columna lote_codigo para este fin en la Entidad 505 y sucesivas que compartan el mismo esquema.
Esta es la definición de vista que funciona:
CREATE OR REPLACE VIEW public.vw_lotes_morosidad_505 AS
SELECT
l.*,
m.inm_ficha,
m.inm_ctacatastral,
m.trb_total_deuda,
m.trb_total_pago,
m.ultimo_pago
FROM public.e505_lotes_conccc l
LEFT JOIN fdw_505.v_liq_entidad_totalxobjeto m ON l.ccc = m.inm_ctacatastral
Regla 24. Resiliencia del LOGIN.
Toda orquestación de servicios secundarios (GeoServer REST API, habilitación de MVT, etc.) invocada durante el proceso de LOGIN debe ser no-bloqueante. Esto implica el uso obligatorio de bloques try-catch para capturar cualquier fallo externo y la configuración de un tiempo de espera (timeout) máximo de 2 segundo por conexión, para no comprometer la fluidez del acceso al sistema.
Regla 25. Protocolo de Registro de Logros (Hitos).
Ante cada logro o funcionalidad nueva validada que requiera un registro oficial, se añadirá (append) una entrada al archivo VERSION.txt (local y remoto) en formato texto plano, siguiendo el formato: "Version SIG (Abril 2026) - AAAA.MM.DD.HH.MM.SS ID DOCKER: ". Aqui´se debería agregar el id único del docker usado, A esto se le debe agregar un texto de observación mío.
Este registro oficial deberá ser autorizado por el usuario. Se aplica solamente por indicaciones del usuario cuando confirme algún hito de éxito que le interese.