From 003deb94041df4db7de9b9253d711b1b3f5748db Mon Sep 17 00:00:00 2001 From: migatu Date: Fri, 7 Aug 2026 15:16:43 +0200 Subject: [PATCH] feat(dane): sterownik Postgresa pod lustro w SQL (DAN-28) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Warstwa danych ma SQLAlchemy, ale nie miała czym rozmawiać z Postgresem. Bez psycopg adres `postgresql+psycopg://…` wywala się dopiero przy PIERWSZYM połączeniu — już na klastrze, komunikatem o braku modułu. [binary] bierze gotowe koło, więc obraz nie kompiluje libpq. Sam SQL_URL niczego jeszcze nie przełącza: o dostawcy decyduje DATA_PROVIDER, które zostaje na `excel`, dopóki lustro nie jest zaimplementowane i sprawdzone. Dzięki temu Postgresa da się wdrożyć i obejrzeć bez ryzyka dla działającego wyszukiwania. Co-Authored-By: Claude Opus 5 --- services/data/app/config.py | 3 +++ services/data/requirements.txt | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/services/data/app/config.py b/services/data/app/config.py index 35d8600..5a0555f 100644 --- a/services/data/app/config.py +++ b/services/data/app/config.py @@ -37,6 +37,9 @@ class Settings: query_cache_ttl: int = field(default_factory=lambda: int(os.getenv("QUERY_CACHE_TTL", "300"))) # Warstwa SQL (po migracji) + # Domyślnie SQLite w cache — do testów i pracy lokalnej, bez stawiania bazy. + # Na klastrze SQL_URL wskazuje Postgresa i przychodzi z SEKRETU, bo niesie + # hasło (patrz deploy: astrololo/README-postgres.md). sql_url: str = field( default_factory=lambda: os.getenv("SQL_URL", "sqlite:///./.cache/astrololo.db") ) diff --git a/services/data/requirements.txt b/services/data/requirements.txt index 352a2b8..ee72b38 100644 --- a/services/data/requirements.txt +++ b/services/data/requirements.txt @@ -6,6 +6,11 @@ pandas>=2.2 openpyxl>=3.1 pyarrow>=18.0 SQLAlchemy>=2.0 +# Sterownik Postgresa (DAN-28). Sam SQLAlchemy nie rozmawia z bazą — bez tego +# `postgresql+psycopg://…` wywala się dopiero przy PIERWSZYM połączeniu, już na +# klastrze, komunikatem o braku modułu. [binary] = gotowe koło, bez kompilacji +# libpq w obrazie. +psycopg[binary]>=3.2 pydantic>=2.10 # Szyfrowanie łącza między warstwami (PRE-16): AES-256-GCM + HKDF cryptography>=44.0