Start Projekty GlobalVista
Python Flask SQL Server MongoDB Azure Power BI

GlobalVista
System Zarządzania Sprzedażą

Kompleksowy system zarządzania i analizy sprzedaży dla 24 rynków zagranicznych. Projekt łączy hybrydową architekturę bazodanową w chmurze Azure, dedykowane API w Pythonie oraz zaawansowane dashboardy zarządcze w Power BI. Praca zrealizowana jako projekt inżynierski.

2024 - 2025 ~6 miesięcy Praca inżynierska
1M+ Rekordów testowych
4 Silniki bazodanowe
24 Rynki międzynarodowe
7+ Endpointów REST API

Hybrydowa warstwa bazodanowa

Równoczesna integracja relacyjnego Microsoft SQL Server oraz nierelacyjnego MongoDB z automatyczną replikacją danych transakcyjnych i logów do środowiska chmurowego Azure.

Architektura Bezpieczeństwa & RBAC

Dedykowany moduł Flask-Login z 3 rolami użytkowników, kryptograficznym hashowaniem haseł SHA-256 z unikalną solą oraz deklaratywnymi dekoratorami uprawnień dla endpointów API.

Wielowątkowy generator Faker

Generator wolumenów testowych produkujący ponad milion spójnych rekordów dla 24 rynków międzynarodowych z zachowaniem lokalnych walut, formatów adresowych i numeracji podatkowej.

Model Schematu Gwiazdy (Star Schema)

Zoptymalizowany model relacyjny w Power BI ze zintegrowaną tabelą kalendarzową DateDimension oraz zaawansowanymi kalkulacjami DAX Time Intelligence wspierającymi analitykę drill-down.

Integracja z chmurą Microsoft Azure

Dedykowany moduł CloudHandler synchronizujący dane z Azure SQL Database oraz rozproszonym Azure Cosmos DB, gwarantujący wysoką dostępność i skalowalność w chmurze.

Skalowalne REST API & Backend

Backend w Pythonie z zestawem endpointów REST API obsługujących operacje CRUD dla 7 kluczowych encji biznesowych, ze standaryzacją odpowiedzi JSON i obsługą błędów HTTP.

Kontekst inżynierski i wyzwania integracji

Projekt GlobalVista powstał w ramach pracy inżynierskiej jako kompletna, rozproszona platforma analityczno-zarządcza symulująca operacje międzynarodowego przedsiębiorstwa handlowego działającego na 24 rynkach zagranicznych.

Głównym wyzwaniem architektonicznym było zintegrowanie dwóch fundamentalnie różnych paradygmatów bazodanowych: relacyjnego (Microsoft SQL Server / Azure SQL), zapewniającego pełną integralność transakcyjną ACID dla zamówień i rozliczeń finansowych, oraz dokumentowego (MongoDB / Azure Cosmos DB), dedykowanego do logowania zdarzeń systemowych, audytu operacji API i przechowywania elastycznych metadanych produktowych.

Przepływ danych w architekturze hybrydowej

System został zaprojektowany w modelu 4-warstwowym, gwarantującym pełną separację odpowiedzialności (Separation of Concerns) od źródeł danych aż po interaktywne raporty zarządcze:

01 / On-Premise Data

Baza Relacyjna & Logi

Lokalna baza SQL Server (SalesDB) z relacyjnym modelem transakcyjnym oraz instancja MongoDB dla danych niestrukturalnych i logów audytowych.

SQL Server MongoDB
02 / Python Core

Flask Backend & API

Wydajny backend w Pythonie z modułami DatabaseHandler, thread-safe pulą połączeń, kontrolą RBAC oraz wielowątkowym generatorem Faker.

Python 3.11 Flask Faker
03 / Cloud Layer

Microsoft Azure Cloud

Moduł CloudHandler synchronizujący tabele transakcyjne z Azure SQL Database oraz kolekcje JSON z Azure Cosmos DB (NoSQL).

Azure SQL Cosmos DB
04 / Analytics & BI

Power BI & Star Schema

Model Schematu Gwiazdy zoptymalizowany pod silnik VertiPaq, dynamiczne kalkulacje DAX i 4 dedykowane pulpity analityczne.

Power BI DAX VertiPaq

Specyfikacja Modelu Relacyjnego (Star Schema)

Warstwa analityczna Power BI opiera się na znormalizowanym Schemacie Gwiazdy. Dzięki wydzieleniu tabeli faktów i dedykowanych tabel wymiarów, zapytania analityczne VertiPaq osiągają maksymalną kompresję i szybkość agregacji:

Tabela / Encja Rola w modelu Zakres atrybutów i odpowiedzialność
Orders / OrderDetails Tabela Faktów (Centralna) Klucze obce do wymiarów, wolumeny, ceny transakcyjne, zastosowane upusty, waluta transakcyjna, timestampy realizacji.
Customers Wymiar Klienta Dane teleadresowe dla 24 rynków, unikalne identyfikatory podatkowe, segmentacja obrotu, geolokalizacja.
Sellers Wymiar Handlowca Przedstawiciele handlowi przypisani do poszczególnych rynków, kwartalne targety sprzedażowe, struktura prowizyjna.
Products / Categories Wymiar Produktowy Katalog 8 głównych kategorii asortymentowych, jednostkowe koszty wytworzenia, ceny sugerowane, marża bazowa.
Countries / Regions Wymiar Geograficzny 24 kraje w 4 regionach globalnych, oficjalne waluty lokalne, stawki podatkowe, strefy logistyczne.
DateDimension Wymiar Czasu Kalendarz transakcyjny wspierający miary DAX: Year-to-Date (YTD), Quarter-to-Date (QTD), Month-over-Month (MoM).

Architektura Bezpieczeństwa i Matryca Uprawnień (RBAC)

Dostęp do platformy jest w pełni kontrolowany przez trójstopniowy mechanizm Role-Based Access Control (RBAC) zaimplementowany w module auth_handler.py przy użyciu Flask-Login i hashowania SHA-256 z soleniem:

01

Rola Administratora (Full Control)

Zarządzanie schematem baz danych, wyzwalanie replikacji lokalno-chmurowej z Azure, uruchamianie generatora rekordów testowych oraz pełna administracja kontami i uprawnieniami użytkowników.

02

Rola Analityka / Użytkownika (Read-Write Operations)

Tworzenie i edycja zamówień, przegląd stanów magazynowych, eksport zestawień tabelarycznych oraz pełny dostęp do interaktywnych dashboardów zarządczych Power BI.

03

Rola Audytora / Gościa (Read-Only Compliance)

Bezpieczny wgląd w zagregowane wskaźniki makro i raporty bez możliwości modyfikacji danych ani wglądu w wrażliwe dane kontaktowe klientów (separacja PII).

Wyróżniki inżynierskie projektu

  • Integracja 4 heterogenicznych silników bazodanowych: SQL Server, MongoDB, Azure SQL oraz Cosmos DB
  • Wielowątkowy generator danych Faker: ponad 1 000 000 spójnych rekordów dla 24 rynków międzynarodowych
  • Bezpieczeństwo wielowątkowości: thread-safe DatabaseHandler zabezpieczony blokadami współbieżności threading.Lock
  • Asynchroniczna synchronizacja chmurowa z Microsoft Azure z mechanizmem retry policy i connection pooling
  • Kompletne REST API z 7+ endpointami CRUD, walidacją nagłówków i obsługą kodów błędów HTTP
  • 4 dedykowane raporty Power BI z zaawansowanymi kalkulacjami DAX (Time Intelligence, odchylenia budżetowe, FX)
  • Czysta architektura backendowa z separacją warstwy domenowej, repozytorium danych i warstwy prezentacji
cloud_handler.py & database_handler.py (Python Backend)
# cloud_handler.py - Zarządzanie synchronizacją chmurową Azure
import pyodbc
from azure.cosmos import CosmosClient, PartitionKey
import threading

class CloudHandler:
    def __init__(self, config):
        self.lock = threading.Lock()
        self.azure_sql_conn = self._init_azure_sql(config["AZURE_SQL_STR"])
        self.cosmos_client = CosmosClient(config["COSMOS_URI"], credential=config["COSMOS_KEY"])
        self.cosmos_container = self._get_or_create_cosmos(config["COSMOS_DB"])

    def sync_sales_transactions(self, local_records):
        """Bezpieczna replikacja transakcji do Azure SQL oraz archiwizacja JSON w Cosmos DB"""
        with self.lock:
            cursor = self.azure_sql_conn.cursor()
            try:
                cursor.executemany(
                    "EXEC sp_UpsertOrder ?, ?, ?, ?, ?, ?",
                    [rec.to_tuple() for rec in local_records]
                )
                self.azure_sql_conn.commit()

                # Asynchroniczny zrzut metadanych transakcyjnych do bazy Cosmos DB
                for rec in local_records:
                    self.cosmos_container.upsert_item(rec.to_cosmos_payload())
                return {"status": "success", "synced_count": len(local_records)}
            except Exception as err:
                self.azure_sql_conn.rollback()
                return {"status": "error", "message": str(err)}