sagnikkkkkkkk/Threat-Intelligence-Dashboard

GitHub: sagnikkkkkkkk/Threat-Intelligence-Dashboard

一个基于 Streamlit 和 FastAPI 的威胁情报可视化仪表板原型,通过合成数据展示区域威胁活动的地图分布、趋势分析和模拟告警。

Stars: 0 | Forks: 0

# 威胁情报仪表板 — 原型 一个演示仪表板(Streamlit + Plotly + Folium),用于可视化**合成的** 区域活动数据,包含交互式地图、KPI 卡片、活动趋势、 威胁级别分布、模拟警报流,以及基于模板生成的 “AI 情报报告”。 ## 运行方式 ### 选项 A — 仅前端(无需后端/数据库) ``` pip install -r requirements.txt streamlit run app.py ``` 应用会自动检测 API 是否正在运行。如果没有运行,它将回退 到进程内的合成生成器 —— 因此它仍然可以独立运行。 ### 选项 B — 全栈(FastAPI + PostgreSQL + Streamlit) 1. **启动 PostgreSQL** 并创建一个数据库(默认值如下,可通过环境变量覆盖): createdb threat_dashboard # 或者使用:psql -c "CREATE DATABASE threat_dashboard;" 2. **安装后端依赖并填充数据库**: pip install -r requirements.txt cd backend export POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres \ POSTGRES_HOST=localhost POSTGRES_PORT=5432 POSTGRES_DB=threat_dashboard python seed.py 3. **运行 API**: uvicorn main:app --reload --port 8000 交互式文档:http://localhost:8000/docs 4. **运行仪表板**(在项目根目录下的另一个终端中): export API_BASE_URL=http://localhost:8000 # 可选,这是默认值 streamlit run app.py 连接成功后,侧边栏将显示 "🟢 FastAPI + PostgreSQL"。 ## 文件内容说明(阶段 1 + 2) **前端** - `app.py` — Streamlit 仪表板:地图、KPI、趋势图、分布 图、警报流、AI 报告面板、侧边栏筛选器。在可用的 情况下使用 API,否则回退到本地合成生成。 - `data_simulator.py` — 生成合成数据(用于本地回退 和填充数据库):区域快照、30 天活动趋势、 警报、模型性能指标,以及基于模板的文本报告。 - `api_client.py` — 仪表板用于调用 FastAPI 后端的轻量级基于 `requests` 的客户端。 **后端** - `backend/main.py` — FastAPI 应用,暴露 `/regions`、`/trends`、 `/alerts`、`/models`、`/report` 接口。 - `backend/models.py` — SQLAlchemy ORM 模型(`Region`、`RegionSnapshot`、 `ActivityTrendPoint`、`Alert`、`ModelScore`)。 - `backend/schemas.py` — Pydantic 响应 schema。 - `backend/database.py` — 引擎/会话设置,从 `POSTGRES_*` 环境变量中读取连接信息。 - `backend/seed.py` — 创建表并使用合成数据 填充它们(可随时重新运行以重置/刷新数据集)。 ## 建议的后续阶段 1. **真实(非机密)数据源**,如果在项目范围内: - 开放卫星图像:通过 Copernicus Open Access Hub 获取的 Sentinel-2, 或 NASA Worldview — 两者均是免费且非机密的。 - 公共冲突/事件数据集(例如 ACLED),用于获取真实的活动 趋势形态,在学生项目背景下仅用于模式/格式参考。 2. **ML 模型**(替换当前的存根) - **Isolation Forest**:用于活动分数时间序列 → 为警报流提供异常标记。 - **LSTM**:用于活动趋势预测(替换 `generate_activity_trend` 中的线性趋势模拟)。 - **XGBoost / Random Forest**:根据工程化特征(活动分数、变化率、历史波动率)进行威胁级别分类。 - **YOLOv8**:用于对样本/公开卫星裁剪图像进行目标检测(车辆、建筑物)— 可作为公开授权图像上的 CV 演示。 - **BERT**:用于对为“AI 报告”面板提供数据的开源文本报告(新闻专线风格的合成文本)进行分类/摘要。 3. **优化** - 如果将来需要处理任何敏感内容,则加入身份验证(即使是基础的也可以)。 - 地图上的历史回放滑块。 - 将报告导出为 PDF(参见 PDF 生成工具)。 ## 项目结构 ``` military_dashboard/ ├── app.py # Streamlit UI ├── api_client.py # HTTP client -> FastAPI backend (with local fallback) ├── data_simulator.py # synthetic data + mock "AI report" generator ├── requirements.txt ├── README.md └── backend/ ├── main.py # FastAPI app / REST endpoints ├── models.py # SQLAlchemy ORM models ├── schemas.py # Pydantic response schemas ├── database.py # DB engine/session (reads POSTGRES_* env vars) └── seed.py # populates PostgreSQL with synthetic data ```
标签:AV绕过, FastAPI, Kubernetes, PostgreSQL, Python, Streamlit, 无后门, 模拟数据, 测试用例, 网络测绘, 访问控制, 逆向工具