TianXuan Developer
829729943c
feat: 社区交互增强 + 卫星地图 + 节点/边数据丰富 + 项目清理
...
核心改进:
- 节点数据丰富: TLS版本/加密套件/SNI/端口/流量统计/连接成功率
- 边数据丰富: 包数/持续时间/TLS/端口/SNI/分类标签
- 新增 edge_time_series 端点: 边流量时序图(北京时间)
- 新增 cluster_nodes_edges 端点: 社区聚焦(zoom+高亮+专属边)
- 社区点击: 自动缩放/高亮节点/显示社区边(可点击)
- 边交互修复: 事件从layerGroup移至hitPoly,三处边渲染全修复
- 地图升级: ESRI卫星影像 + 255国矢量边界叠加
- 离线回退: 卫星→CartoDB→暗色矢量地图,完整可用
- 节点面板: 删除无意义社区标签,移至Host+组织同行
- sanitizeName: 清理5个非ASCII国家名避免乱码
- .gitignore: 补充geoip_chunks/和嵌套CSV规则
项目清理:
- 删除 logs/ (20个调试文件,~2.5MB)
- 删除 test_*.py (4个临时测试脚本)
- 删除 _check_bool/_pipeline_test/_restart_server/start_server (硬编码路径)
- 删除 node_modules/package.json/package-lock.json (18MB,不用Node)
- 删除 tests/ 旧日志和调试脚本
- 删除 .pytest_cache/ .server_pid.txt RUNTIME_CHANGED.txt
- AGENTS.md → CLAUDE.md
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-24 13:06:14 +08:00
TianXuan Developer
f065efab26
perf: static world map overlay + grid clustering + GeoIP status
...
Major performance improvements for map visualization:
- Replace tile-based map with inline SVG world map (zero network requests)
- Grid-based marker clustering: merge nearby markers into count bubbles
- Adaptive cell size by zoom level, max 300 edge lines
- Remove all tile caching code (Cache API, CachedTileLayer, etc.)
- Add /simple/geoip-status/ API endpoint
- Debug panel shows GeoIP source and MMDB hint
- min_freq slider on edge control auto-refreshes
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-23 20:32:21 +08:00
TianXuan Developer
32c15f5365
feat: v3 refactor with MMDB GeoIP, network clustering, node/edge viz, offline tile cache, dual export
...
- GeoIP: MMDB (GeoLite2-City + ASN) support with text fallback
- Upload: two-phase flow with advanced preset filter builder
- Clustering: IP communication network community discovery (/24 + HDBSCAN)
- Map: per-IP node rendering, node click detail, edge click detail
- Offline: Cache API tile caching with fallback
- Export: node table + edge table CSV download
- Fix: null-guard DOM operations throughout
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-23 19:35:45 +08:00
TianXuan Developer
b844c4f92f
feat: filter value suggestions from actual upload data
...
- Add GET /simple/column-values/ API returning distinct values for any column
(top 50 values with counts, from the uploaded DataFrame via polars)
- Update frontend onFilterColChange to fetch real data instead of hardcoded hints
- Wire datalist ID per filter row for <input list=''> binding
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-23 12:31:50 +08:00
TianXuan Developer
55f3b3637a
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 >
2026-07-23 11:39:54 +08:00
TianXuan Developer
46013afa74
feat: add simple analysis module with global map visualization
...
- Add independent 'simple_analysis' Django app with full workflow:
1. Upload/merge CSV files with auto column detection
2. Filter by cnam + cnrs + isrs (optional)
3. Clustering via HDBSCAN+haversine (geo) or /24 subnet (IP)
4. Interactive Leaflet global map with cluster-colored data points
- Integrate into nav bar, settings, and URL routing without
modifying existing analysis logic
- Cluster detail panel with IPs, top dst IPs, TLS/cipher profiles
- Chart.js bar/pie charts for cluster size distribution
- E2E Playwright tests for all workflow steps
- Support multiple CSV upload with diagonal_relaxed merge
Co-Authored-By: Claude <noreply@anthropic.com >
2026-07-22 22:39:16 +08:00