# 🚨 PLAN NAPRAWY I WERYFIKACJI DANYCH

## SYTUACJA KRYTYCZNA
- WATERM: oznaczony jako "software house" → BŁĄD (to firma HVAC)
- Potencjalnie więcej błędnych danych w 73 firmach
- **RYZYKO:** Utrata zaufania użytkowników

---

## FAZA 1: NATYCHMIASTOWE DZIAŁANIA (TERAZ)

### 1.1 Ukrycie błędnych danych (5 min)
```bash
✓ Wyłączyć sekcję "Analiza Strony WWW" w company_detail.html
✓ Dodać info: "Analiza w trakcie weryfikacji"
✓ Pozostawić tylko zweryfikowane dane (NIP, REGON, KRS, adresy)
```

### 1.2 Analiza skali problemu (30 min)
```python
✓ Sprawdzić 10 losowych firm ręcznie
✓ Porównać AI content_summary z rzeczywistą stroną
✓ Zidentyfikować % błędów
✓ Stworzyć listę priorytetową firm do naprawy
```

---

## FAZA 2: POPRAWIONY PROCES ANALIZY (60-90 min)

### 2.1 Nowy prompt dla AI z weryfikacją
```python
KLUCZOWE ZMIANY:
1. WIELOETAPOWA ANALIZA:
   - Krok 1: Odczytaj tytuł strony i menu główne
   - Krok 2: Znajdź sekcję "O nas" / "Usługi"
   - Krok 3: Podsumuj główny profil działalności
   - Krok 4: Wypisz konkretne usługi/produkty

2. CROSS-VALIDATION:
   - Porównaj z kategorią firmy w bazie (Inne/IT/Budownictwo/etc)
   - Jeśli niezgodność → FLAG do ręcznej weryfikacji

3. CONFIDENCE SCORE:
   - AI podaje pewność 1-10
   - Jeśli <7 → wymaga ręcznej weryfikacji

4. STRUKTURYZOWANE DANE:
   {
     "company_type": "HVAC / Software / Construction / etc",
     "main_activity": "Krótki opis 1 zdanie",
     "services": ["lista", "konkretnych", "usług"],
     "confidence": 8,
     "verification_needed": false,
     "discrepancies": []
   }
```

### 2.2 Automatyczna weryfikacja jakości
```python
def verify_analysis_quality(company, ai_result):
    """
    Sprawdza spójność danych AI z bazą
    """
    issues = []

    # 1. Kategoria vs profil działalności
    if company.category == "IT" and "software" not in ai_result.lower():
        issues.append("Category mismatch: IT company but no software mentioned")

    # 2. Nazwa vs opis
    if "waterm" in company.name.lower() and "software" in ai_result.lower():
        issues.append("SUSPICIOUS: Waterm labeled as software company")

    # 3. Istniejące usługi vs AI services
    existing_services = [s.service.name for s in company.services]
    if existing_services and not any(s in ai_result for s in existing_services):
        issues.append("No overlap between existing and AI-detected services")

    return {
        'needs_review': len(issues) > 0,
        'issues': issues,
        'confidence': 10 - (len(issues) * 3)
    }
```

### 2.3 Wolniejsze tempo + retry
```python
PARAMETRY:
- 10 sekund między requestami (zamiast 4s)
- Retry jeśli JSON błędny
- Timeout 30s na request (zamiast 10s)
- Zapisz RAW response do audytu
```

---

## FAZA 3: WERYFIKACJA RĘCZNA (2-3 godziny)

### 3.1 Priorytet weryfikacji
```
1. TOP 10 najczęściej odwiedzane firmy
2. Wszystkie firmy z category_id != wykrytej przez AI
3. Wszystkie z confidence < 7
4. Losowa próbka 10% pozostałych
```

### 3.2 Narzędzie do weryfikacji
```python
# Skrypt do ręcznej weryfikacji
python verify_companies.py

Wyświetla:
[1/73] WATERM
  Website: https://waterm.pl
  AI says: "Software house..."
  Category: Usługi

  ⚠️ SUSPICIOUS: Category mismatch

  Open website? [Y/n]: y
  Correct? [Y/n]: n

  Enter correct description (PL):
  > WATERM to firma z Wejherowa specjalizująca się w systemach grzewczych...

  ✓ Saved! Next...
```

---

## FAZA 4: MECHANIZMY DŁUGOTERMINOWE

### 4.1 Dashboard weryfikacji dla admina
```
/admin/data-quality

Pokazuje:
- Firmy wymagające weryfikacji (czerwone)
- Historia zmian danych
- User feedback (jeśli firma zgłosi błąd)
- Confidence scores
```

### 4.2 Feedback od użytkowników
```html
Na profilu firmy:
[⚠️ Zgłoś błąd w danych]

Modal:
"Co jest nieprawidłowe?"
- Opis działalności
- Usługi
- Dane kontaktowe
- Inne

Powiadomienie → admin → weryfikacja → naprawa
```

### 4.3 Self-service dla firm
```
Każda firma może:
1. Zalogować się (email verification)
2. Zobaczyć swój profil
3. Zaproponować poprawki
4. Admin akceptuje/odrzuca
```

### 4.4 Okresowy audit (co kwartał)
```python
# Cron job: co 3 miesiące
1. Ponownie fetchuj strony wszystkich firm
2. Porównaj z aktualnym zapisem
3. Jeśli duża różnica → flag do weryfikacji
4. Raport dla admina
```

---

## FAZA 5: METRYKI JAKOŚCI

### 5.1 KPI
```
✓ Accuracy rate: >95% (obecnie: ???)
✓ User reported errors: <2% firm
✓ Avg confidence score: >8/10
✓ Time to fix reported error: <24h
```

### 5.2 Dashboard quality metrics
```sql
SELECT
    COUNT(*) as total,
    COUNT(*) FILTER (WHERE needs_verification) as needs_review,
    AVG(confidence_score) as avg_confidence,
    COUNT(*) FILTER (WHERE user_verified) as user_verified
FROM company_website_analysis;
```

---

## TIMELINE

| Faza | Czas | Priorytet | Status |
|------|------|-----------|--------|
| 1.1 Ukrycie błędnych danych | 5 min | P0 | TODO |
| 1.2 Analiza skali | 30 min | P0 | TODO |
| 2.1 Nowy prompt | 30 min | P1 | TODO |
| 2.2 Auto-weryfikacja | 30 min | P1 | TODO |
| 2.3 Ponowna analiza 73 firm | 15 min | P1 | TODO |
| 3.1 Weryfikacja TOP 10 | 1h | P1 | TODO |
| 3.2 Weryfikacja flagged | 2h | P2 | TODO |
| 4.1 Admin dashboard | 3h | P2 | TODO |
| 4.2 User feedback | 2h | P2 | TODO |
| 4.3 Self-service | 5h | P3 | TODO |

**Łączny czas krytyczny (P0+P1): 2-3 godziny**

---

## REKOMENDACJA

### TERAZ (następne 3 godziny):
1. ✓ Ukryj sekcję "Analiza WWW" (5 min)
2. ✓ Stwórz nowy skrypt z lepszą weryfikacją (30 min)
3. ✓ Ponownie przeanalizuj wszystkie 73 firmy (15 min)
4. ✓ Ręcznie zweryfikuj TOP 20 (2h)
5. ✓ Włącz sekcję z poprawnymi danymi

### JUTRO:
6. Dodaj user feedback mechanism
7. Stwórz admin dashboard do weryfikacji

### W TYM TYGODNIU:
8. Zaimplementuj self-service dla firm
9. Ustaw quarterly audit

---

## CHECKPOINTS

Przed włączeniem danych publicznie:
- [ ] 100% TOP 10 firm ręcznie zweryfikowane
- [ ] <5% firm z flagami do weryfikacji
- [ ] Avg confidence >8/10
- [ ] Feedback mechanism działa
- [ ] Admin może łatwo poprawiać błędy

**Nie publikujemy dopóki wszystko nie jest zweryfikowane!**
