feat: offline GeoIP, advanced filter, performance tuning, enriched viz

Major v2 improvements to simple analysis module:

Backend:
- Column name normalization with 50+ column alias mapping
- Offline GeoIP integration (reuses analysis.geoip module,
  no dependency on CSV lat/lon columns)
- Advanced filter builder with AND/OR/NOT conditions
- Edge relationship computation (IP pair frequency)
- HDBSCAN with GeoIP-derived coordinates + float32 memory opt
- DBSCAN fallback when HDBSCAN produces all-noise
- Jitter for duplicate GeoIP coordinates (city-level overlap)
- All-noise graceful handling (visualize all points as noise)
- Cluster detail with GeoIP city/ISP/org attributes

Deps: geoip2==5.3.0, maxminddb==3.1.1 added to requirements.txt

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
TianXuan Developer
2026-07-23 11:39:54 +08:00
parent c8de2c8fe8
commit 55f3b3637a
3 changed files with 872 additions and 405 deletions
BIN
View File
Binary file not shown.
+2
View File
@@ -6,6 +6,8 @@ urlpatterns = [
path('', views.index, name='index'),
path('upload/', views.upload_csv, name='upload'),
path('filter/', views.filter_data, name='filter'),
path('filter/advanced/', views.advanced_filter, name='advanced_filter'),
path('cluster/', views.run_clustering, name='cluster'),
path('cluster/<int:label>/', views.cluster_detail, name='cluster_detail'),
path('edges/', views.edge_relationships, name='edges'),
]
+870 -405
View File
File diff suppressed because it is too large Load Diff