mirror of
https://github.com/migatu/astrololo.git
synced 2026-07-14 21:38:37 +00:00
Szkielet aplikacji trójwarstwowej (prezentacja / logika / dane)
Trzy niezależne usługi FastAPI komunikujące się przez HTTP/JSON, każda zna tylko adres warstwy bezpośrednio pod nią: - presentation (:8000) — strona WWW + formularz - logic (:8001) — reguły biznesowe, pośrednik - data (:8002) — wyszukiwanie danych za interfejsem DataProvider Warstwa danych: czytanie setek plików .xlsx z wykrywaniem nagłówka i mapowaniem układu kolumn na schemat kanoniczny, z 4-poziomowym cache (schemat L1, Parquet L2, wyniki zapytań L3, odwrócony indeks L4) i unieważnianiem po odcisku pliku. Gotowa ścieżka migracji do SQL (ingest/to_sql.py + SqlDataProvider, przełączane przez DATA_PROVIDER). Zawiera docker-compose, Makefile, generator danych przykładowych. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
"""Generuje kilka przykładowych plików .xlsx do dema.
|
||||
|
||||
Celowo różnicuje: pozycję nagłówka (puste wiersze/tytuł nad nagłówkiem) oraz
|
||||
kolejność i nazwy kolumn ("Imię"/"Name", "Symbol"/"Znak") — żeby pokazać działanie
|
||||
wykrywania nagłówka i mapowania układu kolumn.
|
||||
|
||||
python scripts/make_sample_data.py
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import pandas as pd
|
||||
|
||||
OUT = Path(__file__).resolve().parent.parent / "data_files"
|
||||
OUT.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
SIGNS = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo"]
|
||||
|
||||
|
||||
def file_a() -> None:
|
||||
# nagłówek w 1. wierszu, nazwy PL
|
||||
df = pd.DataFrame(
|
||||
{"id": [1, 2, 3], "Imię": SIGNS[:3], "Symbol": ["♈", "♉", "♊"], "Wartość": [10, 20, 30]}
|
||||
)
|
||||
df.to_excel(OUT / "zodiac_pl.xlsx", index=False)
|
||||
|
||||
|
||||
def file_b() -> None:
|
||||
# tytuł + pusty wiersz nad nagłówkiem, nazwy EN, inna kolejność kolumn
|
||||
with pd.ExcelWriter(OUT / "zodiac_en.xlsx") as xl:
|
||||
meta = pd.DataFrame([["Tabela astrologiczna — wersja 2"], [None]])
|
||||
meta.to_excel(xl, index=False, header=False, startrow=0)
|
||||
df = pd.DataFrame(
|
||||
{"Sign": ["♋", "♌", "♍"], "Name": SIGNS[3:], "No": [4, 5, 6], "Value": [40, 50, 60]}
|
||||
)
|
||||
df.to_excel(xl, index=False, startrow=2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
file_a()
|
||||
file_b()
|
||||
print(f"Zapisano przykładowe pliki w {OUT}")
|
||||
Reference in New Issue
Block a user