# 500ki — Śledzenie błędów

> Przechwytuj błędy, zanim użytkownicy je zgłoszą

500ki automatycznie grupuje wyjątki z Twoich aplikacji za pomocą inteligentnego fingerprintingu. Lekkie SDK dla Django przechwytuje błędy w tle — bez wpływu na wydajność aplikacji.

## Funkcje

- **Inteligentne grupowanie**: Algorytm SHA256 łączy typ wyjątku z nazwami plików i funkcji z Twojej aplikacji. Zmiany numerów linii nie tworzą nowych grup — fingerprint jest stabilny.
- **Pełny kontekst błędu**: Stacktrace, dane requestu (URL, metoda, nagłówki), zmienne środowiskowe — wszystko zapisane w PostgreSQL JSONB.
- **Licznik wystąpień**: Zdenormalizowany event_count na każdym issue. Widzisz od razu, które błędy występują najczęściej — bez kosztownych zapytań COUNT.
- **Konwersja do ticketu Scrum**: Jednym kliknięciem utwórz ticket w backlogu z automatycznie wypełnionym opisem: stacktrace, URL requestu i środowisko.
- **SDK, które nie crashuje aplikacji**: Każda publiczna funkcja SDK jest opakowana w try/except. Wysyłka w tle przez ThreadPoolExecutor — zero wpływu na czas odpowiedzi.
- **Status resolved/unresolved**: Oznaczaj błędy jako rozwiązane. Filtruj listę, aby skupić się na aktywnych problemach.

## Jak to działa

1. **Zainstaluj SDK**: pip install monolynx-sdk i dodaj middleware do Django settings.py. Konfiguracja to 3 linijki.
2. **Aplikacja wysyła błędy automatycznie**: Middleware przechwytuje każdy nieobsłużony wyjątek i wysyła go w tle do API Monolynx.
3. **Fingerprint i grupowanie**: System oblicza fingerprint (SHA256) i przypisuje event do istniejącego issue lub tworzy nowy.
4. **Analizuj w dashboardzie**: Lista issues posortowana po czasie ostatniego wystąpienia. Klikasz → widzisz pełny stacktrace i kontekst.
5. **Napraw i zamknij**: Oznacz issue jako resolved lub utwórz ticket Scrum do naprawy w sprincie.

## AI i MCP

Twój agent AI może przeglądać błędy, analizować stacktrace, ręcznie zgłaszać bugi i tworzyć z nich tickety — 5 narzędzi MCP.

- `list_issues`: Lista błędów z filtrowaniem po statusie i wyszukiwaniem tekstowym
- `get_issue`: Pełne szczegóły: stacktrace, dane requestu, historia eventów
- `update_issue_status`: Oznacz błąd jako rozwiązany lub otwórz ponownie
- `create_ticket_from_issue`: Utwórz ticket Scrum z automatycznie wypełnionym opisem błędu
- `create_issue`: Ręczne zgłoszenie błędu bez wygenerowania prawdziwego wyjątku

## Szczegóły techniczne

- **Fingerprinting**: SHA256(exception_type + app_frame_filenames:functions). Ignoruje numery linii i ramki z bibliotek (site-packages, stdlib).
- **Storage**: PostgreSQL JSONB dla danych wyjątku, requestu i środowiska. UUID primary keys.
- **SDK**: Django middleware, zero zależności zewnętrznych. ThreadPoolExecutor(max_workers=2) do wysyłki w tle.
- **API**: POST /api/v1/events z nagłówkiem X-Monolynx-Key. Odpowiedź zawiera issue_id do śledzenia.
