Metadata-Version: 2.4
Name: helia-etat-reseaux
Version: 0.6.1
Summary: Scraper des maintenances programmées Helia NC (helia.nc/etat-du-reseau)
License: LGPL-3.0-or-later
License-File: LICENSE
Requires-Python: >=3.13
Requires-Dist: apscheduler>=3.11.2
Requires-Dist: beautifulsoup4>=4.14.3
Requires-Dist: fastapi>=0.136.3
Requires-Dist: mcp>=1.27.2
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.42.1
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.42.1
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.63b1
Requires-Dist: opentelemetry-sdk>=1.42.1
Requires-Dist: prometheus-fastapi-instrumentator>=8.0.0
Requires-Dist: pydantic>=2.13.4
Requires-Dist: requests>=2.34.2
Requires-Dist: streamlit>=1.58.0
Requires-Dist: uvicorn[standard]>=0.48.0
Provides-Extra: api
Requires-Dist: fastapi>=0.115.0; extra == 'api'
Requires-Dist: uvicorn[standard]>=0.30.0; extra == 'api'
Description-Content-Type: text/markdown

# helia-etat-reseaux

SDK Python pour scraper les maintenances programmées du réseau télécoms Helia / OPT-NC depuis [helia.nc/etat-du-reseau](https://helia.nc/etat-du-reseau).

[![CI](https://github.com/adriens/helia-etat-reseau/actions/workflows/ci.yml/badge.svg)](https://github.com/adriens/helia-etat-reseau/actions/workflows/ci.yml)
[![Scraper](https://github.com/adriens/helia-etat-reseau/actions/workflows/nightly.yml/badge.svg)](https://github.com/adriens/helia-etat-reseau/actions/workflows/nightly.yml)
[![License: LGPL v3](https://img.shields.io/badge/License-LGPL_v3-blue.svg)](LICENSE)

## Installation

```bash
pip install helia-etat-reseaux
```

## Usage — SDK

```python
from helia_etat_reseaux import scrape_maintenances

maintenances = scrape_maintenances()

for m in maintenances:
    print(m.timestamp_debut, m.communes_concernees, m.impact)
```

Chaque objet `Maintenance` expose :

| Champ | Type | Description |
|---|---|---|
| `id` | `str` | Identifiant SHA256 stable (8 hex) |
| `timestamp_debut` / `timestamp_fin` | `str` ISO 8601 | Fenêtre de maintenance (UTC+11) |
| `communes_concernees` | `list[str]` | Communes officielles NC affectées |
| `provinces_concernees` | `list[Province]` | Provinces dérivées automatiquement |
| `services` | `list[Service]` | Services télécoms impactés |
| `impact` | `Impact` | Sévérité estimée de la coupure |
| `est_toute_nc` | `bool` | `True` si toute la NC est concernée |

## Usage — CLI

```bash
helia-etat-reseaux   # écrit les maintenances dans messages/*.json
```

## Structure

```
helia_etat_reseaux/
├── models.py      # Pydantic : Maintenance, Service, Impact, Province
├── scraper.py     # Scraping + parsing HTML helia.nc
├── geo.py         # Recherche géographique par rayon (communes NC)
├── db.py          # Persistance SQLite (optionnelle)
├── mcp.py         # Serveur MCP (intégration LLM)
└── scheduler.py   # Scheduler APScheduler (scrape périodique)
api/               # API FastAPI (mode conteneur)
webapp/            # Frontend Astro (calendrier + RSS)
```

## CI

- **Sur chaque PR** : lint Ruff + tests unitaires (couverture ≥ 70%)
- **Toutes les 6h** : tests d'intégration contre helia.nc — issue GitHub auto-créée en cas d'échec
- **Sur chaque tag `v*`** : release GitHub générée automatiquement depuis les PRs mergées

## Licence

[LGPL-3.0-or-later](LICENSE)
