GIS-GEOSERVER-REGLAS.md 8.32 KB

Reglas del Proyecto: GIS-GEOSERVER (SNC + SIGEM)

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. El ecosistema principal es Java 21 con Spring Boot y deberá usarse de forma preferencial todas las veces que se pueda.

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 Estos proxypass no deben ser modificados por ningún motivo.

Regla 4. Para el LOGIN, para el campo desplegable de las ENTIDADES (Municipios) los datos deben ser obtenidos de la tabla ENTIDADES del SIGEMWEB del servidor 192.168.1.254. Para el LOGIN, el usuario debe utilizar su usuario y contraseña del SIGEM del municipio. Para tus pruebas, por ahora tienes disponible las credenciales para acceder a esa BD. En caso de error detectado al intentar iniciar sesión, la aplicación debe dar un mensaje de error simple y claro del motivo, y permitir al usuario que vuelva a intentar.

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. Los parámetros disponibles son: sigem_site, sigem_dbname, latlong, lng, lat, zoom, mapa_base, boundno, boundse, maxzoom, minzoom.

Para obtener los datos de los municipios se debe utilizar la propia API de la aplicación.

Regla 6. Para la construcción en la compilación, se usa JAVA21 del 192.168.1.123, en sincronía con la Regla 1.

Regla 7. Credenciales 192.168.1.123: cbareiro/x25yvaga2023, root/x25yvaga2023.

Regla 8. Credenciales 192.168.1.10: cbareiro/x25yvaga2020, root/x25yvaga2021.

Regla 9. Credenciales 192.168.1.20: cbareiro/x25yvaga2020, root/x25yvaga2020.

Regla 10. Credenciales 192.168.1.129: cbareiro/x25yvaga2025.

Regla 11. Jenkins (.123): admin / x25yvaga2024.

Regla 12. Jenkins SSH Credential ID: sigem-server-123 (root).

Regla 13. Tomcat Manager: manager / x25yvaga2023. GeoServer Web UI: admin / geoserver.

Regla 14. Endpoints Geoserver (.123:8080): /geoserver/wms, /geoserver/wfs, /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. Debe verificarse la existencia del FDW del municipio en cada LOGIN. Si no existe, crearlo. Refrescar obligatoriamente las vistas vw_lotes_morosidad_X.

Regla 17. Git (.100): cbareiro@yvaga.com.py / carlos57. Repo: git@git.yvaga.com.py:geo/gis-geoserver.git.

Regla 18. SSH Local: Usar Bitvise con usuario cbareiro.

Regla 19. Build: Terminar (Uso obligatorio) con ./mvnw clean package -DskipTests.

Regla 20. Prefijo FrontEnd: /gis-geoserver/.

Regla 21. ContextPath Backend: /gis-geoserver.

Regla 22: Integridad de Comandos Remotos: Se utilizarán comandos disponibles en Bitvise. Los accesos a otros servidores se realizarán mediante SSH y sftp.
Queda prohibido el uso de comandos printf, echo o concatenaciones multilínea complejas para crear archivos. Usar sftpc para subir archivos íntegros. Para los comandos SQL complejos debido a la interpretación del shell de Windowsy para asegurar la integridad total (Regla 22), se deben subir los archivos de estructura y población por SFTP ejecutándolos desde el respectivo servidor. El paso intermedio para no generar errores es preparar los archivos de comandos en el servidor local y luego copiar el archivo de comandos al interior del contenedor antes de su ejecución.

Regla 23. Columnas de Unión (Joins). Standard SNC. Para toda vista de unión con el FDW, se debe utilizar la columna snc_cuenta (limpia) contra REPLACE(liq.inm_ctacatastral, '-', ''). La definición del SQL de JOIN entre los datos SNC (datos georreferenciados) y la base de datos del municipio (datos alfanuméricos) genera la vista public.vw_lotes_morosidad_XXX a usar para desplegar mapa georreferenciado coloreado y es la siguiente:

CREATE OR REPLACE VIEW public.vw_lotes_morosidad_XXX AS 
SELECT 
    lot.*, 
    liq.inm_ficha, 
    liq.inm_ctacatastral, 
    liq.trb_tributo, 
    liq.trb_total_deuda, 
    liq.trb_total_pago, 
    liq.ultimo_pago 
FROM public.eXXX_lotes_activos lot
LEFT JOIN fdw_XXX.v_liq_entidad_totalxobjeto liq ON lot.snc_cuenta = REPLACE(liq.inm_ctacatastral, '-', '') ;

Regla 24. Resiliencia del LOGIN y Servicios. 
Toda orquestación de servicios secundarios (GeoServer REST API, FDW, MVT) invocada durante el proceso de LOGIN debe ser no-bloqueante. 
Uso obligatorio de bloques try-catch y configuración de timeout máximo de 2 segundos por conexión para garantizar la fluidez del sistema.

Regla 25. Protocolo de Logros y Protocolo de Resguardo y Recuperación (Backup)
El sistema debe garantizar la preservación de la integridad del proyecto mediante un tríptico de acciones atómicas ejecutadas obligatoriamente bajo pedido del usuario al alcanzar un hito.
1. Identificación del Hito:
Registro en VERSION.txt con formato "Version SIG - AAAA.MM.DD.HH.MM.SS ID DOCKER: [ID] [Observación Técnica]".
Sincronización de Código (Git): Ejecución de git add ., git commit y git push origin main hacia el servidor .100.
Snapshot de Infraestructura (.123):
Generación de volcado PostGIS: docker exec proyecto-postgres-1 pg_dump -U sigem_user sigem > sigem_postgres_dump.sql.
Compresión de datos de GeoServer: tar -czvf geoserver-data_dir.tar.gz geoserver-data.
Almacenamiento en carpeta cronológica dentro de /publico/.

Solo bajo autorización del usuario.

Regla 26. Normalización Universal de Cartografía SNC. 
El motor de importación debe aplicar una limpieza universal al campo snc_cuenta para asegurar el match tributario.
La identificación de la zona se realiza mediante la variable **tipo_cuenta**:
1. **Zona Urbana (tipo_cuenta = 0)**: snc_cuenta = Substring(ccatastral, 4) eliminando ceros a la izquierda y caracteres especiales.
2. **Zona Rural (tipo_cuenta = 1)**: snc_cuenta = padron::text (sin modificaciones).

Integridad: Se debe aplicar ST_MakeValid(geom) en la inserción para prevenir errores de renderizado en GeoServer.
Para la relación entre código SNC y código de municipio se debe utilizar la tabla ENTIDADES que se registra en public.snc_catalog_mapping

Regla 27. Optimización y Cache GeoWebCache (GWC):
Para asegurar la fluidez nacional (>2M de registros), cada capa de municipio debe contar con índices espaciales GIST sincronizados. 
El sistema debe intentar disparar el truncado de cache en GeoWebCache (GWC) cada vez que se detecte un cambio masivo en la tabla de morosidad remota del municipio.

Regla 28. Importación de datos del SNC. Se utilizará el API: https://www.catastro.gov.py/geoserver/ows. 
Para garantizar la compatibilidad universal en el visor web, TODOS los datos deben almacenarse en SRID 4326 (Coordenadas Geográficas) en las tablas eXXX_lotes_activos. 
Es MANDATORIO solicitar la transformación de coordenadas directamente al SNC incluyendo el parámetro srsName=EPSG:4326 en la URL de la petición WFS. 
La inserción en la base de datos se realizará mediante el uso directo de ST_GeomFromGeoJSON(?).
Implementar un TRUNCATE automático al inicio del proceso de importación. Si al importar los números son UTM, se deben transformar a 4326 antes de guardarlos.
Las columnas de las tablas eXXX_lotes_activos deberá tener todas las columnas del SNC.

GitLab Appliance - Powered by TurnKey Linux