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存储, 用户认证, 自动刷新, 运行时操纵, 逆向工具, 风险地图