Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

bgembalczyk/F1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

4,224 Commits

Repository files navigation

F1 Data Pipeline — README

Ten plik jest punktem wejścia do dokumentacji projektu. Szczegółowe opisy utrzymujemy centralnie w indeksie dokumentacji: docs/README.md.

Quick start (PyCharm only)

Jedyny wspierany sposób uruchomienia projektu to konfiguracja Run w PyCharm. Uruchamianie z terminala (python -m ...) jest niewspierane. Pełne zasady: docs/MODULE_BOUNDARIES.md.

Szybka diagnoza problemów pipeline

Jeśli debugujesz Layer 0/1 lub merge rekordów, zacznij od cookbooka:

1) Architektura warstw

Architektura opiera się o separację odpowiedzialności między warstwami technicznymi i domenowymi:

  • Fetcher — pobieranie źródeł danych,
  • Parser — ekstrakcja struktur z payloadów,
  • Normalizer — ujednolicanie formatów,
  • Factory — tworzenie modelu domenowego / rekordu eksportowego,
  • Exporter — zapis danych wyjściowych.

Pełny opis granic warstw i relacji między komponentami:

2) Kluczowe protokoły / interfejsy

Najważniejsze kontrakty i interfejsy projektu:

  • kontrakty warstw (Scraper, Extractor, Parser, Factory),
  • kontrakt konfiguracji scraperów,
  • kontrakt parserów sekcji,
  • strategia Dependency Injection (bez zbędnych interfejsów o pojedynczej implementacji),
  • konwencje nazewnictwa hooków.

Źródła prawdy (single source of truth):

3) Zasady OOP / DRY dla contributorów

  • SRP: każda klasa/moduł ma jedną odpowiedzialność.
  • Dependency Inversion: zależności kierujemy do interfejsów/kontraktów.
  • Open/Closed: rozszerzamy przez nowe implementacje, nie przez łamanie kontraktów.
  • DRY: nową logikę najpierw próbujemy osadzić w komponentach bazowych (scrapers/base/*), zamiast kopiować implementacje domenowe.
  • Brak duplikacji opisów: nie powielamy szczegółów architektury w wielu plikach — linkujemy do indeksu i dokumentu źródłowego.
  • Brak kompatybilności wstecznej: nie utrzymujemy aliasów legacy, fallbacków danych, wrapperów migracyjnych ani oznaczeń deprecated. Zmieniamy API i ścieżki od razu na finalne.

Checklisty review i merge-gate:

4) Linki do ADR i docs

5) Checklista: dodawanie nowej domeny / komponentu

Przed merge PR sprawdź:

  • Czy nowy moduł ma jasno określoną odpowiedzialność (SRP)?
  • Czy nie duplikuje istniejącej logiki i używa wspólnych abstrakcji?
  • Czy zachowuje granice warstw/importów opisane w MODULE_BOUNDARIES.md?
  • Czy kontrakty typów/interfejsów są zgodne z aktualnymi ADR?
  • Czy dodano/uzupełniono testy (jednostkowe i/lub statyczne) adekwatne do zmiany?
  • Czy zaktualizowano dokumentację domeny (scrapers/<domain>/README.md) i wpisano link do indeksu docs?
  • Czy jeśli zmiana ma charakter architektoniczny, dodano/zmieniono ADR i referencję w PR?
  • Czy sekcje PR (SRP impact, DRY impact, Contracts changed, Breaking changes, DoD) są uzupełnione?
  • Czy checklista techniczna (testy kontraktowe, brak nowych Any, brak nowych magic strings, zaktualizowany ADR/docs) jest odhaczona?
  • Czy w PR dodano dowód review (output testów/checków) wymagany do akceptacji?
  • Czy nowy entrypoint i sposób uruchomienia są zgodne ze standardem PyCharm Run (zgodnie z docs/MODULE_BOUNDARIES.md)?

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /