Prestakuntzen kontrol-gunea (VI):Esportazio, sinkronizazio eta segurtasun-kopia zerbitzuak

Planifikatzaile proiektuak heldutasun tekniko garrantzitsua lortzen du fase honetan, datuen interoperabilitatea, segurtasuna eta trazabilitatea bermatzen dituzten zerbitzuak garatuz. Esportazioa, sinkronizazioa eta segurtasun-kopiak jorratzen ditugu.

Esportazio, sinkronizazio eta segurtasun-kopia zerbitzuak

Gure prestakuntzen planifikatzaileak hazkunde tekniko garrantzitsua izan du seigarren entregan:
sistemaren funtzionaltasuna zabaltzen duten zerbitzu transbertsalak garatu ditugu, datuen osotasuna, beste sistemekin interoperabilitatea eta informazioaren segurtasuna bermatuz.

Zerbitzu hauek ez dira datu-geruzaren edo logika nagusiaren parte zuzena, baina funtsezkoak dira eguneroko erabileran oinarritutako ingurune erreal batean.


1️⃣ Esportazio zerbitzua

Lehenik, esportazio-modulua garatu dugu, erabiltzaileari sistematik informazioa formatu estandar ezberdinetan ateratzeko aukera ematen diona.

exportacion_servicio.py moduluak hiru funtzionalitate nagusi eskaintzen ditu:

  • CSV esportazioa → kalkulu-orrietarako eta datuen analisi azkarrerako.
  • iCal (.ics) esportazioa → kanpoko egutegietarako.
  • PDF esportazioa → txosten azkarrak sortzeko.

Bere egitura proiektuaren gainerakoarekin koherentea da: klase estatikoak, errore-kudeaketa eta logging zentralizatua.

from planificador.data.db_manager import get_connection
import csv, logging
from pathlib import Path

class ServicioExportacion:

    @staticmethod
    def exportar_csv(nombre_tabla: str, ruta_destino: Path) -> Path:
        with get_connection() as conn:
            cursor = conn.execute(f"SELECT * FROM {nombre_tabla}")
            columnas = [d[0] for d in cursor.description]
            registros = cursor.fetchall()
        with open(ruta_destino, "w", newline="", encoding="utf-8") as f:
            writer = csv.writer(f)
            writer.writerow(columnas)
            writer.writerows([tuple(r) for r in registros])
        return ruta_destino

🔍 Emaitza

Metodo honek CSV fitxategiak sortzen ditu automatikoki, zutabe-izenekin eta UTF-8 kodifikazioarekin, exportacion.log fitxategian jarduera guztiak erregistratuz.

2️⃣ Sinkronizazio zerbitzua (Google Calendar simulazioa)

Bigarren moduluak, sincronizacion_servicio.py izenekoak, Google Calendar zerbitzuarekin lotura ezartzeko oinarriak prestatzen ditu. Oraindik simulazio moduan funtzionatu arren, arkitektura prest dago etorkizunean OAuth tokenak eta API errealeko deiak erabiltzeko.

Hiru metodo nagusi ditu:

  • exportar_a_google_calendar(sesiones): Planifikatzailetik ekitaldiak esportatzen ditu (simulazioan).
  • importar_desde_google_calendar(): Proba gisa sortutako ekitaldi-zerrenda itzultzen du.
  • verificar_credenciales(): Kredentzialen egiaztapen simulatu bat egiten du.

Logging sistemari esker, sinkronizazioaren jarduera guztiak erregistratuta geratzen dira — bai informazio orokorra, bai erroreak.

3️⃣ Segurtasun-kopia zerbitzua

Azkenik, backup_servicio.py moduluak funtzionaltasun ezinbesteko bat gehitzen du: datu-base nagusiaren segurtasun-kopiak automatikoki sortzea (planificador.db fitxategia).

Zerbitzu honek ahalbidetzen du:

  • Data eta orduarekin izendatutako backup bat sortzea.
  • Azken n kopiak soilik mantentzea (biraketa automatikoa).
  • Aurreko kopia batetik datu-basea leheneratzea, beharrezkoa izanez gero.
import shutil
from pathlib import Path
from datetime import datetime

class ServicioBackup:

    @staticmethod
    def realizar_backup(db_path: Path, carpeta_destino: Path, max_copias: int = 5) -> Path:
        carpeta_destino.mkdir(parents=True, exist_ok=True)
        fecha = datetime.now().strftime("%Y%m%d_%H%M%S")
        backup_path = carpeta_destino / f"planificador_backup_{fecha}.db"
        shutil.copy2(db_path, backup_path)
        return backup_path

Ekintza guztiak backup.log fitxategian erregistratzen dira: sortutako kopiak, ezabatutako zaharrak eta egindako leheneratzeak.

4️⃣ Unitate- eta integrazio-probak

Fase guztietan bezala, kodearen egiaztapena lehenetsia izan da. Zerbitzu bakoitzerako proba bereziak sortu dira tests/servicios/ karpetan:

  • test_exportacion_csv.py
  • test_sincronizacion_servicio.py
  • test_backup_servicio.py

Proba hauek baieztatzen dute:

  • CSV fitxategiak behar bezala sortzen direla.
  • Sinkronizazioaren simulazioak espero diren ekitaldiak sortzen dituela.
  • Segurtasun-kopiak behar bezala sortu, biratu eta leheneratzen direla.

Proba guztiak %100 arrakastatsuak izan dira, moduluen egonkortasuna baieztatuz.

5️⃣ Fasearen ondorioak

Entrega honekin, Planifikatzaile proiektuak honako hau gehitzen du:

  • ✅ Datuen esportazioa hiru formatuetan (CSV, iCal, PDF).
  • ✅ Google Calendar sinkronizazioaren simulazioa.
  • ✅ Segurtasun-kopien sistema osoa, biraketa automatikoarekin.
  • ✅ Jarduera guztien erregistro zehatza log fitxategi espezifikoetan.
  • ✅ Zerbitzu guztien proba automatizatuak.

Sistema orain gai da bere informazioa babestu, partekatu eta mantentzeko, tresna sendo eta fidagarri bihurtuz, hurrengo urrats handiari begira: interfaze grafikoa.

📅 Hurrengo entregan erabiltzaile-interfazearen (UI) geruzan sartuko gara, egutegia, bezeroen fitxak eta eguneroko lanaren fluxua ikusizko moduan antolatuz.

🧩 Urratsez urrats aurrera goaz: planifikatzaile bisual, sendo eta guztiz pertsonalizagarria sortzera.