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, 无后门, 模拟数据, 测试用例, 网络测绘, 访问控制, 逆向工具