mirror of
https://github.com/migatu/astrololo.git
synced 2026-07-14 13:34:38 +00:00
16d35c16dc
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>
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""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}")
|