Metadata-Version: 2.4
Name: rytm-regulatory-monitor
Version: 0.2.1
Summary: Evidence-backed Polish/EU regulatory monitor
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: pypdf==6.21.2
Requires-Dist: tzdata==2026.5; sys_platform == "win32"
Provides-Extra: test
Requires-Dist: pytest==9.1.1; extra == "test"

# Rytm — monitoring nowych przepisów (Polska, Śląsk, UE)

Rytm co tydzień sprawdza oficjalne źródła prawa i wybiera **nowe** publikacje, które mogą dotyczyć producenta aerozoli i pianek PUR: chemikalia (REACH, CLP, izocyjaniany), opakowania (PPWR), odpady (BDO), emisje, Seveso, ATEX, BHP, transport (ADR), gazy F, wyroby budowlane i przepisy województwa śląskiego. Agent AI pisze krótki raport po polsku, a każde zdanie ma cytat i link do oficjalnego dokumentu. Raport może trafiać na Telegram lub Discord, a bot na Telegramie odpowiada na żądanie.

To narzędzie wspiera monitoring — **nie jest opinią prawną** ani gwarancją kompletnego pokrycia prawa.

## Wymagania

- **Windows 10/11** albo **Linux**,
- **Python 3.12 lub nowszy**,
- klucz API **OpenRouter** (raport AI jest płatny: zwykle 0,2–0,5 USD, twardy limit 3 USD na raport),
- opcjonalnie: bot Telegram (token z @BotFather) albo webhook Discord.

## Instalacja — Windows

1. Zainstaluj Pythona 3.12+ ze strony python.org. W instalatorze zaznacz **„Add python.exe to PATH”**.
2. Otwórz **PowerShell** i wpisz:

```powershell
py -m pip install rytm-regulatory-monitor
rytm --version
```

3. Skonfiguruj i sprawdź gotowość:

```powershell
rytm configure
rytm doctor
```

Jeśli Windows nie rozpoznaje polecenia `rytm` (folder `Scripts` poza PATH), używaj zamiennie: `py -m rytm_monitor.app_cli configure`, `py -m rytm_monitor.app_cli doctor` itd.

Konfiguracja i sekrety są zapisywane w `%APPDATA%\rytm-monitor`, katalog roboczy domyślnie w `%USERPROFILE%\rytm-work`. Plik sekretów chronią uprawnienia profilu użytkownika Windows — to lokalny plik, nie szyfrowany sejf: chroń konto i kopie zapasowe.

## Instalacja — Linux

```sh
python3 -m venv ~/.venv/rytm
~/.venv/rytm/bin/pip install rytm-regulatory-monitor
~/.venv/rytm/bin/rytm configure
~/.venv/rytm/bin/rytm doctor
```

Na Linuksie konfiguracja jest w `~/.config/rytm-monitor` (katalog 0700, sekrety 0600).

## Pierwsze uruchomienie

```text
rytm                  stan instalacji i następny krok
rytm configure        kreator (6 kroków)
rytm doctor           lista kontrolna gotowości — offline, bez kosztów
rytm config show      ustawienia; sekrety tylko jako „ustawiony / brak”
```

Kreator `rytm configure` prowadzi przez:

1. **Katalog roboczy** — tworzy go z katalogiem 100 źródeł (59 włączonych).
2. **Model AI** — domyślnie `deepseek/deepseek-v4.1-flash` przez OpenRouter.
3. **Klucz OpenRouter** — wpisywanie jest ukryte.
4. **Wysyłka** — Telegram (token bota; czat wykrywa się automatycznie po wysłaniu `/start` do bota) albo Discord (webhook).
5. **Raport co tydzień** — dzień, godzina i zgoda na koszt raportu AI.
6. **Bot na żądanie** — polecenia `/nowosci`, `/odswiez`, `/status`.

Przed zapisem kreator pokazuje podsumowanie. Ctrl+C albo „n” niczego nie zapisuje.

W skryptach zamiast kreatora używaj opcji, np. `rytm configure --openrouter-key-file PLIK`. Klucza nigdy nie wpisuj jako argumentu polecenia — tylko w kreatorze, z pliku (`--…-file`) albo ze zmiennej środowiskowej (`--…-env NAZWA`).

## Codzienne użycie

```text
rytm collect                         pobierz nowe publikacje z ostatnich 7 dni
rytm report                          raport AI o nowościach (płatny; pyta o zgodę)
rytm send <katalog-raportu>          wyślij raport na Telegram/Discord
rytm send <katalog-raportu> --dry-run    podgląd wiadomości bez wysyłania
rytm weekly                          cały cykl teraz: pobranie → raport → wysyłka
```

Okres podaje się parą dat: `--since 2026-10-19 --until 2026-10-27` (koniec wyłączny).

Raport dotyczy wyłącznie **nowości** z wybranego okresu. Obowiązujące przepisy służą tylko jako tło. Gdy w danym tygodniu nic istotnego się nie ukazało, raport mówi to wprost i podaje, ile nowych dokumentów sprawdzono. Niedostępne źródła wypisuje jako luki — brak danych nie oznacza braku zmian.

## Automatycznie co tydzień i bot

```text
rytm schedule enable --day pon --time 07:00 --accept-cost
rytm schedule status
rytm schedule disable

rytm bot pair         wykryj czat Telegram (wyślij wcześniej /start do bota)
rytm bot install      uruchamiaj bota w tle po zalogowaniu
rytm bot status
rytm bot remove
```

Na **Windows** harmonogram i bot korzystają z Harmonogramu zadań (`Rytm\Weekly`, `Rytm\Bot`). Na **Linuksie** korzystają z systemd w trybie użytkownika (`loginctl enable-linger`, jeśli ma działać bez zalogowania).

Wysyłka działa „najwyżej raz”: niepewna lub częściowa próba nigdy nie jest automatycznie ponawiana, więc wiadomości się nie dublują.

## Wynik dla skryptów

Na terminalu wyniki są czytelne dla człowieka. W potoku oraz z `--json` każde polecenie zwraca JSON. Kolory wyłącza `--no-color` albo `NO_COLOR=1`.

Kody wyjścia:

- `0` — sukces,
- `1` — błąd konfiguracji lub danych, brak zgody albo klucza, odrzucony raport,
- `2` — wynik niepełny (np. część źródeł), doctor bez gotowej konfiguracji, wysyłka niepewna lub zdublowana.

## Ograniczenia

- Raport AI to warunkowy screening z cytatami, nie opinia prawna. Ocena „czy nas dotyczy” jest warunkowa, dopóki nie znamy danych zakładu.
- Zmiany w dokumentach już znanych wykrywa dopiero kolejny cotygodniowy przebieg.
- Wsparcie Windows sprawdzono testami ścieżek Windows oraz prawdziwym interpreterem Windows CPython 3.12 (instalacja przez pip, `rytm.exe`, konfiguracja, pobieranie danych). Pierwsze uruchomienie na docelowym komputerze z Windows 10/11 zakończ poleceniem `rytm doctor`.

Licencja: wszelkie prawa zastrzeżone (brak licencji open source).
