fix: bulles plus petites + viewport auto-fit avec padding 18%

- Backend: radius = log1p(ip_count)*2.2 au lieu de sqrt*2 (max 30px vs 80px)
  ex: 60K IPs → 24px, 1K IPs → 15px, 100 IPs → 10px
- Frontend: zoom initial -0.5 (vue dézoomée par défaut)
- Fit viewport basé sur dimensions réelles canvas - panneaux latéraux
- Padding 18% autour de l'étendue des données pour éviter le débord

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
SOC Analyst
2026-03-19 09:50:41 +01:00
parent b2c3379aa0
commit 08054cb571
2 changed files with 12 additions and 4 deletions

View File

@ -199,7 +199,7 @@ def _run_clustering_job(k: int, hours: int) -> None:
for i, name in enumerate(FEATURE_NAMES)
]
radius = max(12, min(80, int(math.sqrt(ip_count) * 2)))
radius = max(8, min(30, int(math.log1p(ip_count) * 2.2)))
sample_rows = sorted(cluster_rows[j], key=lambda r: float(r.get("hits") or 0), reverse=True)[:8]
sample_ips = [r["ip"] for r in sample_rows]