From 2a8cfdcaed633cc92aa235f8bc6d6bb8ab9b418f Mon Sep 17 00:00:00 2001 From: Alexis Fourmaux Date: Wed, 13 May 2026 21:30:33 +0200 Subject: [PATCH] feat: add cli args to insert data script for easier usage --- server/backend/insert_dummy_data.py | 61 ++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 10 deletions(-) diff --git a/server/backend/insert_dummy_data.py b/server/backend/insert_dummy_data.py index 8bdd516..60970c2 100644 --- a/server/backend/insert_dummy_data.py +++ b/server/backend/insert_dummy_data.py @@ -1,8 +1,8 @@ """ Pour ajouter les données et exécuter le script, créer le conteneur : -docker run --rm --network server_database simugaz/backend:latest insert_data.py +docker run --rm --network server_database simugaz/backend:latest insert_dummy_data.py """ - +import argparse from datetime import datetime, timedelta from random import random from typing import NamedTuple @@ -10,11 +10,17 @@ from zoneinfo import ZoneInfo import psycopg2 +TZ = ZoneInfo("Europe/Paris") INITIAL_CONSUMPTION = 1854.32 AVERAGE_DAILY_CONSUMPTION = 2.66 PULSE_RESOLUTION = 0.010 DB_URI = "postgresql://simugaz:simugaz@db/simugaz" +GRANULARITIES = { + "hour": 3600, + "day": 86400 +} + GRDF_MONTHLY_COEFF = [ 2.21, # Janvier 2.05, # Février @@ -81,17 +87,52 @@ def write_to_db(points: list[PulseReading]) -> None: print(f"[DB] {len(points)} lignes insérées") +def parse_args(): + parser = argparse.ArgumentParser(description="Générateur de données SimuGaz") + + parser.add_argument( + "--start", + type=lambda s: datetime.fromisoformat(s).replace(tzinfo=TZ), + default=datetime(2025, 1, 1, 0, 0, 0, tzinfo=TZ), + help="Date de début (défaut : 2025-01-01)", + ) + parser.add_argument( + "--end", + type=lambda s: datetime.fromisoformat(s).replace(tzinfo=TZ), + default=datetime.now(tz=TZ), + help="Date de fin (défaut : maintenant)", + ) + parser.add_argument( + "--device-id", + type=str, + default=None, + metavar="UUID", + help="UUID du device", + ) + parser.add_argument( + "--conso", + type=float, + default=INITIAL_CONSUMPTION, + help=f"Compteur de consommation initial (défaut : {INITIAL_CONSUMPTION})", + ) + parser.add_argument( + "--granularity", + choices=GRANULARITIES.keys(), + default="hour", + help="Granularité des points ('hour' par défaut)", + ) + return parser.parse_args() + + if __name__ == "__main__": - TZ = ZoneInfo("Europe/Paris") - start = datetime(2025, 1, 1, 0, 0, 0, tzinfo=TZ) - end = datetime.now(tz=TZ) + args = parse_args() points = simulate_gas_pulses( - device_id="60124673-1999-414d-a3c5-723bd6d82a13", - initial_consumption=INITIAL_CONSUMPTION, - start_date=start, - end_date=end, - granularity_seconds=3600, + device_id=args.device_id, + initial_consumption=args.conso, + start_date=args.start, + end_date=args.end, + granularity_seconds=GRANULARITIES[args.granularity], ) write_to_db(points)