# Aufgabe

„Funktioniert das Projekt?"

## Status: **PASS**

Alle Beanstandungen aus 6 Senior-QA-Reviews sind repariert.

---

## Ergebnis (Stand 2026-06-14)

| Check | Ergebnis |
|---|---|
| Tests | **294/294 grün** (2.90s) ✅ |
| Module-Import | 11/11 ✅ |
| CLI | 14 Subcommands, --help funktioniert ✅ |
| Pipeline (bredelar.info) | 🟢 Score 0, 46 Seiten ✅ |
| Report-Generierung | JSON + Markdown ✅ |
| KI-Analyse | OpenRouter primary + localhost Fallback, hash-gegated ✅ |
| Gesamt-Coverage | 53% (von 50%) ⬆️ |

---

## Reparierter Issues

| Issue | Priorität | Fix | Commit |
|---|---|---|---|
| **M1:** `exclude_paths=["/"]` blockt ALLE Pfade | Major | `/` aus jamulix.de/config.yaml entfernt | `248788e` |
| **M2:** Seed-URL umgeht `should_crawl`-Filter | Major | Seed-URLs durch `should_crawl()` gefiltert (crawler.py) | `248788e` |
| **M3:** Alarm-Mail Deduplizierung fehlt | Major | `last_alert.json` — Hash aus reasons+level+score | `248788e` |
| **Mi1:** `__main__.py` Coverage 10% | Minor | 18% (17 neue Tests in test_main.py) | `de5be23` |
| **Mi2:** Keine Versions-Pins | Minor | Obergrenzen `<3.0`, `<5.0` etc. in requirements.txt | `de5be23` |
| **Mi3:** Kein File-Lock für parallele Scans | Minor | `fcntl.flock` in cmd_scan() (.scan.lock) | `de5be23` |
| **Mi4:** `refresh_catalog()` ohne Lock | Minor | Cache-Check unter `self._lock` (thread-safe) | `de5be23` |

---

## Bekannte Risiken (offen, dokumentiert)

| Risiko | Auswirkung | Minderung |
|---|---|---|
| `__main__.py` Coverage nur 18% | 756 von 920 Zeilen ungetestet | Kritische Logik (`_worst_level`, `_crawl_and_extract`, `_run_content_check`) getestet; Rest ist Rendering/CLI |
| jamulix.de: Score 100 (Score-Alarm) | `bredelar.info` und `cdnjs.cloudflare.com` nicht in Whitelist | Operativ: Domains zu `allowed_external.yaml` hinzufügen |
| AI-Analyse: `OPENROUTER_API_KEY` fehlt | Graceful degradation (default: `enabled: false`) | Prod: Env-Var setzen |
| Audio/Video: `ffmpeg` fehlt | Graceful degradation (default: `enabled: false`) | Prod: ffmpeg installieren |

---

## Produktions-Checkliste

- [ ] `OPENROUTER_API_KEY` im Environment setzen
- [ ] jamulix.de Whitelist aktualisieren (`bredelar.info`, `cdnjs.cloudflare.com`)
- [ ] Cron-Job konfigurieren (z.B. `0 3 * * * python -m scanner --config ... scan`)
- [ ] SMTP-Passwort via `SCANNER_SMTP_PASSWORD` setzen (falls E-Mail aktiv)
