# CI informative.
#
# Le déploiement reste piloté par le webhook Coolify (push → redeploy), CE
# WORKFLOW NE BLOQUE RIEN : il marque simplement le commit vert ou rouge dans
# Forgejo. La vraie porte de qualité est le hook `.githooks/pre-push` côté
# poste de dev (voir README-CI.md).
#
# ⚠ Prérequis : un runner Forgejo Actions (act_runner) enregistré sur le VPS.
#   Sans runner, ce fichier est inerte — aucun job ne démarre et aucun statut
#   n'apparaît. C'est le cas aujourd'hui : ce workflow est là pour le jour où
#   un runner sera ajouté.
name: CI

on:
  push:
    branches: [dev, main]
  pull_request:
    branches: [dev, main]
  workflow_dispatch:

jobs:
  javascript:
    runs-on: docker
    container:
      image: node:22-alpine
    steps:
      - uses: actions/checkout@v4

      - name: Installer les dépendances
        run: npm ci

      - name: ESLint
        run: npm run lint

      - name: Vérification de types (tsc --checkJs)
        run: npm run typecheck

      - name: Tests unitaires + a11y
        run: npm run test

      - name: Audit des dépendances
        run: npm run audit:js
        continue-on-error: true # informatif : ne doit pas masquer un échec de test

  python:
    runs-on: docker
    container:
      image: python:3.12-slim
    steps:
      - uses: actions/checkout@v4

      - name: Installer l'outillage
        run: pip install --no-cache-dir ruff pytest pip-audit

      - name: Ruff (lint + règles de sécurité bandit)
        run: ruff check .

      - name: Tests du parseur de géocodage
        run: cd apps/geocoder && python -m pytest tests -q

      - name: Audit des dépendances
        run: pip-audit -r apps/crawler/requirements.txt -r apps/geocoder/requirements.txt
        continue-on-error: true

  # Les tests de mutation prennent ~1 min : trop lents pour chaque push, mais
  # utiles en revue. Déclenchement manuel uniquement.
  mutation:
    runs-on: docker
    container:
      image: node:22-alpine
    if: github.event_name == 'workflow_dispatch'
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npm run test:mutation
