gn_module_monitoring

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 formValue handling 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 in seeDetails. 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 meta preparation; #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;
        });
      

🏗️ Infrastructure and deployment

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
🌐 View the project

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