gn_module_monitoring
Monitoring module of the GeoNature suite representing the highest personal contribution volume: 329 commits and 19 PRs (9 merged) over 2022–2025. Refactoring covers dynamic forms, data model adaptation, route evolution, and CI quality governance setup.
🎯 Context and goals
- Evolve production-grade naturalist applications across critical flows: import, synthesis, monitoring, taxonomy, and user management.
- Stabilize backend/frontend interfaces through stronger API contracts, filtering/pagination, dynamic forms, and more consistent error handling.
- Reduce manual business-side corrections by improving data model consistency, admin feedback, and UI flows.
🧩 Design
- #project-gn-module-monitoring: Merged PRs: #238 rebased the business branch on the current base and realigned generic configuration, services, routes, and documentation; #310 fixed sorting, filtering, and pagination in the Angular datatable; #328 removed duplicated
formValuehandling across model, component, and service layers; #329 normalized frontend formatting through Prettier and technical documentation; #330 added a GitHub Actions frontend lint workflow; #407 added backend fixtures and tests for individuals, markings, and related schemas; #433 reduced an oversized site query by rewriting the route and covering it with tests; #531 fixed parent object retrieval; #540 removed a hardcoded parent path inseeDetails. Open PRs: #472 introduces dynamic synthesis filters driven by TOML configuration; #429 secures site deletion when children exist in both backend and form behavior; #252 adds a logging migration for complement tables.
💻 Development
#project-gn-module-monitoring: #433 reduced an oversized site query; #407 established backend test coverage for individuals and markings; #252 opens a path toward business logging through a dedicated migration. No extra backend snippet is kept here so the snippet budget stays focused on the most structuring merged PRs.
- #project-gn-module-monitoring: #328 recentred form initialization on a single dynamically enriched schema, with explicit field ordering and shared
metapreparation; #310 fixed datatable behavior; #540 and #531 improved parent/child navigation consistency. Source: PR #328.this._configService .init(this.obj.moduleCode) .pipe( mergeMap(() => iif( () => this.obj.objectType == 'site' && this.obj.id != undefined, this._siteService.getTypesSiteByIdSite(this.obj.id), of(null) ) ) ) .subscribe((typesSites) => { this.queryParams = this._route.snapshot.queryParams || {}; this.bChainInput = this._configService.frontendParams()['bChainInput']; this.schemaGeneric = this.obj.schema(); this.obj.objectType == 'site' ? delete this.schemaGeneric['types_site'] : null; this.obj.id != undefined && this.obj.objectType == 'site' ? this.initExtraSchema(typesSites) : null; });
- #project-gn-module-monitoring: #328 recentred form initialization on a single dynamically enriched schema, with explicit field ordering and shared
🏗️ Infrastructure and deployment
- #project-gn-module-monitoring: #329 standardizes frontend formatting; #330 adds a GitHub Actions workflow that checks Black on the backend and Prettier on the frontend. Source: PR #330.
name: Lint
on: [push, pull_request]
jobs:
backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Backend code formatting check (Black)
uses: psf/black@stable
with:
src: "setup.py ./backend/gn_module_monitoring"
frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: Frontend code formatting check (Prettier)
run: npm install prettier@~3.1.0 && npm run format:check
📈 Results
- PR count: 12
- Commit count: 329
- Issue count: 6
- Period: December 12, 2022 to December 23, 2025
Tech Stack
Frontend
Angular
RxJS
Qualite / Tests
ESLint
Prettier
Backend
Flask
Python
DevOps
GitLab CI/CD
Bases de donnees (SGBD & SQL)
PostgreSQL
Design Patterns & Architecture
SQLAlchemy