DhruvDekhane62/Insight-Grid
GitHub: DhruvDekhane62/Insight-Grid
一个为印度打造的 AI 驱动实时媒体风险情报平台,聚合新闻并以 AI 事实核查提供可操作的风险洞察。
Stars: 0 | Forks: 0
# Insight-Grid — 实时媒体风险情报系统
Insight-Grid 是一个为印度打造的 AI 驱动实时媒体风险情报平台。它聚合全国范围的实时新闻,按类别和严重程度分类威胁,并允许用户使用 AI 事实核查(Perplexity + NewsAPI)即时验证任何新闻标题或声明。
## 🚀 功能特性
- 🗺️ **实时风险地图** — 显示印度城市级别新闻热点的交互式地图,按严重程度着色(红色 🔴 / 蓝色 🔵 标记)
- ✅ **新闻验证引擎** — 粘贴任意标题或声明,获取 AI 驱动的判定结果:`VERIFIED`、`MISLEADING`、`FALSE` 或 `UNCLEAR`
- 📡 **实时警报** — 按天气、恐怖主义、犯罪、移民/流离失所等类别划分的警报动态
- 📊 **分析仪表板** — 展示按来源、城市和警报类别统计的条形/折线趋势图
- 🔐 **用户认证** — 使用 SHA-256 加盐哈希进行安全的邮箱/密码登录(数据本地存储在 `users.json`)
- 🌐 **城市级新闻下钻** — 点击地图上的任意城市即可查看其最新本地新闻动态
- 🔄 **自动刷新** — 仪表板数据每 30 秒自动刷新一次
## 🛠️ 技术栈
| 层级 | 技术 |
|---|---|
| **前端** | React 18、Leaflet.js、Recharts、Chart.js、Mapbox GL |
| **后端** | FastAPI(Python)、Uvicorn、httpx |
| **新闻来源** | NewsAPI、Google News RSS |
| **AI 事实核查** | Perplexity API(llama-3.1-sonar-large-128k-online) |
| **认证** | SHA-256 加盐密码哈希(hashlib) |
| **数据存储** | 本地 JSON 文件(`users.json`) |
## 📁 项目结构
```
InsideGrid/
├── back.py # FastAPI backend — all API routes & logic
├── requirements.txt # Python dependencies
├── .env # API keys (NEWSAPI_KEY, PERPLEXITY_API_KEY)
├── users.json # User accounts (auto-created)
│
├── frontend/
│ ├── src/
│ │ ├── App.js # Root component
│ │ ├── MediaRiskSystem.js # Main dashboard component
│ │ ├── GlobalRiskMap.js # Interactive India map (Leaflet)
│ │ ├── VerificationResult.js # News verification result UI
│ │ ├── MediaRiskSystem.css # Main styles
│ │ └── AnalyticsStyles.css # Analytics chart styles
│ └── package.json
│
├── start_all.ps1 # One-click launch: backend + frontend
├── start_backend.ps1 # Launch backend only
├── start_frontend.ps1 # Launch frontend only
└── check_status.ps1 # Check if services are running
```
## ⚙️ 安装与设置
### 前置条件
- Python 3.9+
- Node.js 18+
- API 密钥(请参考 [环境变量](#-environment-variables))
### 1. 克隆仓库
```
git clone
cd InsideGrid
```
### 2. 后端设置
```
# 创建虚拟环境
python -m venv venv
# 激活(Windows)
.\venv\Scripts\activate
# 安装依赖项
pip install -r requirements.txt
```
### 3. 前端设置
```
cd frontend
npm install
```
### 4. 配置环境变量
在根目录 `InsideGrid/` 中创建 `.env` 文件:
```
NEWSAPI_KEY=your_newsapi_key_here
PERPLEXITY_API_KEY=your_perplexity_api_key_here
```
## 🏃 运行应用
### 选项 A — 一键启动(推荐)
```
.\start_all.ps1
```
此操作会打开三个独立的 PowerShell 窗口,分别用于后端、前端和落地页。
若跳过落地页:
```
.\start_all.ps1 -NoLanding
```
### 选项 B — 手动启动
**终端 1 — 后端:**
```
# 从根目录 InsideGrid/ 内部
.\venv\Scripts\activate
uvicorn back:app --reload --host 127.0.0.1 --port 8000
```
**终端 2 — 前端:**
```
cd frontend
npm start
```
应用将在 **[http://localhost:3000](http://localhost:3000)** 打开
后端 API 运行于 **[http://127.0.0.1:8000](http://127.0.0.1:8000)**
## 📡 API 端点
| 方法 | 端点 | 描述 |
|---|---|---|
| `GET` | `/hotspots` | 城市级别新闻热点(含严重性评分) |
| `GET` | `/risk-map` | 用于地图可视化的印度城市风险数据 |
| `GET` | `/alerts` | 按类别划分的全国警报统计 |
| `GET` | `/alerts/by-region?place=` | 按城市/区域过滤的警报 |
| `GET` | `/analytics` | 完整分析数据(类别、趋势、来源) |
| `GET` | `/live-streams` | 实时流媒体元数据 |
| `GET` | `/city/news?place=&limit=10` | 城市实时本地新闻(最多 10 条) |
| `POST` | `/api/verify-news` | 通过 AI 验证新闻声明 |
| `POST` | `/api/signup` | 注册新用户 |
| `POST` | `/api/login` | 验证现有用户 |
## 🔍 新闻验证工作机制
1. 用户在 **验证新闻** 面板中粘贴标题或声明
2. 后端提取关键词并查询 **NewsAPI** 获取相关文章
3. 可选地,**Perplexity AI**(启用网页搜索)交叉验证声明与实时来源
4. 敏感/争议性内容(政治、宗教)进入更严格的验证流程,最大置信度降低
5. 返回最终判定:`VERIFIED` / `MISLEADING` / `FALSE` / `UNCLEAR`,附带置信度评分与解释
## 🗺️ 风险地图工作机制
- 后端每 5 分钟(缓存)获取 **29 个主要印度城市** 的实时新闻
- 每个城市根据文章数量、时效性和严重性关键词进行评分
- 文章分类为 **Weather**、**Terrorism**、**Crime**、**Migration/Displacement** 或 **General Alert**
- **红色标记 🔴** — 城市存在天气、恐怖主义或犯罪警报
- **蓝色标记 🔵** — 城市仅有常规新闻(无高优先级警报)
- 点击城市可在仪表板中查看其本地新闻动态
## 🔐 认证机制
- 密码使用 **SHA-256 加随机 16 字节盐值** 哈希
- 用户数据存储于项目根目录的 `users.json`
- 最小密码长度:8 个字符
- 不使用 JWT 令牌 — 会话在 React 状态中管理(仅前端)
## 🧑💻 开发说明
- 后端 CORS 设置为 `allow_origins=["*"]` — 生产环境请限制来源
- 新闻数据缓存时间:城市热点 **5 分钟**、本地新闻 **3 分钟**
- 前端每 **30 秒** 拉取后端一次新数据
- Perplexity API 为 **可选组件** — 应用可在无 Perplexity 的情况下运行(仅使用 NewsAPI + RSS)
- Google News RSS 作为 NewsAPI 配额耗尽时的备用方案
## 📦 依赖项
**Python(`requirements.txt`)**
```
fastapi==0.121.1
uvicorn[standard]==0.38.0
python-multipart==0.0.9
httpx==0.27.0
```
**Node.js(`package.json`)**
```
react, react-dom, react-scripts
leaflet, react-leaflet
mapbox-gl, @react-google-maps/api
chart.js, react-chartjs-2
recharts
```
## 📸 截图
## 📄 许可证
本项目仅用于教育/演示用途。请在此处添加你偏好的许可证。
*使用 ❤️ 打造印度实时媒体透明度。
标签:AI事实核查, AV绕过, Chart.js, FastAPI, Google News RSS, Leaflet.js, Mapbox GL, NewsAPI, Perplexity API, Python后端, React, Recharts, SEO, SHA-256加盐哈希, Syscalls, Uvicorn, 交互地图, 前后端分离, 印度媒体风险, 城市级新闻, 威胁分类, 实时媒体风险情报, 数据分析仪表板, 数据可视化, 新闻聚合, 本地JSON存储, 用户认证, 自动刷新, 运行时操纵, 逆向工具, 风险地图