logo
0
0
WeChat Login
新建文件 README.md

SecFeedAI - 安全新闻智能聚合与分析系统

GitHub stars GitHub forks GitHub issues GitHub license

项目介绍

SecFeedAI 是一个开源的安全新闻智能聚合与分析系统,通过 RSS 源实时获取全球安全新闻,结合 AI 技术进行智能分析,为安全从业者提供高效、精准的安全资讯服务。

使用场景

  • 安全研究员 - 快速获取最新的安全漏洞、威胁情报和行业动态
  • 安全运维团队 - 及时了解安全事件,辅助决策和响应
  • 安全爱好者 - 学习和跟踪安全领域的最新发展
  • 企业安全部门 - 作为内部安全情报收集和分析工具

功能特点

🔍 核心功能

  • 访客模式 - 支持未登录用户以只读方式浏览仪表板、文章列表和内容分析
  • RSS 源管理 - 支持添加、编辑、删除和测试多种安全相关 RSS 源(需登录)
  • 新闻自动聚合 - 定时从配置的 RSS 源获取最新安全新闻
  • AI 智能分析 - 利用 AI 技术对新闻进行自动摘要、关键词提取和分析
  • 实时推送 - 支持将分析结果推送到指定的 Webhook 地址
  • 系统状态监控 - 实时监控系统运行状态和性能指标
  • JWT 认证 - 基于令牌的安全认证机制,支持 24 小时有效期

📊 技术亮点

  • 前后端分离架构 - 基于 Go + Vue3 的现代化架构
  • 高性能数据库 - 采用 PostgreSQL 存储数据,Redis 缓存加速
  • 定时任务调度 - 灵活的任务调度机制,支持自定义执行频率
  • RESTful API - 标准的 RESTful API 设计,易于扩展和集成
  • 现代化 UI - 基于 Vue3 + Tailwind CSS 的响应式设计

技术栈

后端

  • 语言: Go 1.20+
  • 框架: Gin Web Framework
  • 数据库: PostgreSQL 14+, Redis 6+
  • ORM: GORM
  • 定时任务: 自定义调度器
  • AI 分析: Eino AI API

前端

  • 框架: Vue 3 + TypeScript
  • 构建工具: Vite
  • 路由: Vue Router
  • 状态管理: Pinia
  • UI 框架: TDesign Vue Next + Tailwind CSS
  • HTTP 客户端: Axios
  • 图标库: Lucide Vue Next

快速开始

🐳 Docker 部署(推荐)

最简单的部署方式,使用 Docker Compose 一键部署:

# 克隆项目 git clone https://github.com/YouChenJun/SecFeedAI.git cd SecFeedAI # 运行一键部署脚本 ./start.sh

脚本会自动引导你完成配置,包括:

  • ✅ 自动生成安全密码和密钥
  • ✅ 交互式配置向导
  • ✅ 一键启动所有服务
  • ✅ 显示完整的访问凭证

详细文档: QUICKSTART.md | DOCKER.md


💻 本地开发部署

如果你想本地开发或调试,可以按照以下步骤手动部署:

环境要求

  • Go: 1.20+ (后端)
  • Node.js: 16+ (前端)
  • PostgreSQL: 14+ (数据库)
  • Redis: 6+ (缓存)

安装部署

1. 克隆项目

git clone https://github.com/YouChenJun/SecFeedAI.git cd SecFeedAI

2. 配置文件

后端配置
cd backend cp configs/config.example.yaml configs/config.yaml

编辑 configs/config.yaml 文件,配置数据库、Redis 和 API 密钥等信息:

server: port: "8080" mode: "debug" database: host: "localhost" port: "5432" user: "postgres" password: "postgres" dbname: "secnews" sslmode: "disable" redis: host: "localhost" port: "6379" password: "" db: 0 eino: api_key: "your_eino_api_key" base_url: "https://api.eino.ai/v1" pusher: webhook_urls: - "https://your-webhook-url.com" auth: username: "" # 首次运行时通过初始化页面设置 password: "" # 首次运行时通过初始化页面设置 jwt_secret: "" # 可选,留空将自动生成 guest_mode: true # 访客模式,允许未登录用户只读访问
前端配置
cd ../frontend cp .env.example .env

编辑 .env 文件,配置后端 API 地址:

VITE_API_BASE_URL=http://localhost:8080

3. 认证设置

SecFeedAI 现在包含完整的认证系统和访客模式支持。首次运行时,系统会自动检测配置状态:

首次运行初始化:

  1. 启动后端和前端服务后,访问前端页面(http://localhost:5173
  2. 系统会自动检测到认证未配置,跳转到初始化页面
  3. 填写管理员信息:
    • 用户名(至少3个字符)
    • 密码(至少6个字符)
    • JWT密钥(可选,留空将自动生成)
    • 是否启用访客模式(默认启用)
  4. 点击"完成设置",系统会自动将认证信息写入 backend/configs/config.yaml

访客模式说明:

当启用访客模式(guest_mode: true)时:

  • 未登录用户可以访问仪表板、文章列表和内容分析页面(只读)
  • RSS 源管理需要登录后才能访问
  • 登录页面会显示"以访客模式继续"按钮,允许用户在不登录的情况下浏览内容
  • 页面顶部会显示橙色的"访客模式"徽章
  • 访客模式仅允许 GET 请求,所有写操作(POST/PUT/DELETE)都需要登录

安全建议:

  • 修改默认密码:首次登录后请立即修改默认密码
  • 保护配置文件:确保 backend/configs/config.yaml 文件权限为 600
    chmod 600 backend/configs/config.yaml
  • 使用强密码:密码应包含字母、数字和特殊字符
  • 生产环境:生产环境建议使用 HTTPS
  • 访客模式:如果不需要访客访问,可以在配置文件中设置 guest_mode: false

已配置系统:

如果 config.yaml 中已包含认证配置,访问前端时会直接跳转到登录页面,使用配置的用户名和密码登录即可。

Token 有效期: 访问令牌有效期为 24 小时,过期后需要重新登录。

4. 启动后端服务

cd backend # 安装依赖 go mod download # 启动服务 go run cmd/server/main.go

后端服务将在 http://localhost:8080 启动。

5. 启动前端服务

cd ../frontend # 安装依赖 npm install # 启动开发服务器 npm run dev

前端服务将在 http://localhost:5173 启动。

构建生产版本

后端构建

cd backend go build -o server cmd/server/main.go ./server

前端构建

cd frontend npm run build # 构建产物将生成在 dist 目录

API 文档

后端提供了完整的 RESTful API,主要包括以下端点:

认证接口(公开访问)

  • POST /api/v1/auth/login - 用户登录,获取访问令牌
  • POST /api/v1/auth/setup - 首次运行时初始化认证配置
  • GET /api/v1/auth/setup/status - 检查认证配置状态和访客模式
  • GET /api/v1/auth/verify - 验证访问令牌有效性(需要认证)

RSS 源管理

  • GET /api/v1/rss/sources - 获取 RSS 源列表(访客可访问)
  • POST /api/v1/rss/sources - 创建 RSS 源(需要认证
  • PUT /api/v1/rss/sources/:id - 更新 RSS 源(需要认证
  • DELETE /api/v1/rss/sources/:id - 删除 RSS 源(需要认证
  • POST /api/v1/rss/sources/:id/test - 测试 RSS 源(需要认证

新闻管理

  • GET /api/v1/articles - 获取新闻列表(访客可访问)
  • GET /api/v1/articles/:id - 获取新闻详情(访客可访问)
  • GET /api/v1/articles/dashboard - 获取仪表板统计数据(访客可访问)

分析结果

  • GET /api/v1/analysis/results - 获取分析结果列表(访客可访问)
  • GET /api/v1/analysis/results/:id - 获取分析结果详情(访客可访问)
  • POST /api/v1/analysis/analyze - 手动触发 AI 分析(需要认证

系统状态

  • GET /api/v1/system/status - 获取系统状态(访客可访问)

认证说明:

  • 需要认证的接口必须在请求头中携带有效的 JWT 令牌:
    Authorization: Bearer <your_token>
  • 访客可访问的接口(仅 GET 请求)在启用 guest_mode 时无需认证即可访问
  • 所有 POST/PUT/DELETE 操作都需要登录后才能执行

项目结构

SecFeedAI/ ├── backend/ # 后端代码 │ ├── cmd/ # 命令行入口 │ │ └── server/ # 主服务器入口 │ ├── configs/ # 配置文件 │ │ ├── config.yaml # 主配置文件 │ │ └── config.example.yaml # 配置示例 │ ├── internal/ # 内部包 │ │ ├── analyzer/ # AI 分析器 │ │ ├── api/ # API 处理程序 │ │ │ ├── routes.go # 路由配置 │ │ │ ├── auth_handler.go # 认证处理 │ │ │ ├── rss_handler.go # RSS 源管理 │ │ │ ├── article_handler.go # 文章管理 │ │ │ └── analysis_handler.go # 分析结果 │ │ ├── middleware/ # 中间件 │ │ │ └── auth.go # JWT 认证和访客模式中间件 │ │ ├── model/ # 数据模型 │ │ ├── repository/ # 数据仓库 │ │ ├── scheduler/ # 任务调度器 │ │ └── service/ # 业务逻辑 │ └── pkg/ # 公共包 │ └── config/ # 配置管理 └── frontend/ # 前端代码 ├── public/ # 静态资源 ├── src/ # 源代码 │ ├── api/ # API 客户端 │ ├── components/ # Vue 组件 │ ├── router/ # 路由配置(含访客模式路由守卫) │ ├── stores/ # Pinia 状态管理 │ │ └── auth.ts # 认证状态和访客模式 │ ├── views/ # 页面视图 │ │ ├── Login.vue # 登录页(含访客模式入口) │ │ ├── Setup.vue # 初始化页面 │ │ ├── Dashboard.vue # 仪表板 │ │ ├── RSSManagement.vue # RSS 源管理 │ │ ├── ArticleList.vue # 文章列表 │ │ └── Analysis.vue # 内容分析 │ ├── App.vue # 主应用组件(含访客模式 UI) │ └── main.ts # 应用入口 └── dist/ # 构建产物

贡献指南

欢迎参与 SecFeedAI 项目的开发!无论是报告 Bug、提交功能建议,还是直接贡献代码,我们都非常欢迎。

贡献流程

  1. Fork 本项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

开发规范

  • 代码风格: 遵循 Go 官方代码风格和 Vue 3 最佳实践
  • 提交信息: 清晰、简洁的提交信息,使用英文
  • 测试: 为新增功能编写测试用例
  • 文档: 更新相关文档

许可证

本项目采用 MIT 许可证,详见 LICENSE 文件。

联系方式

致谢

感谢所有为 SecFeedAI 项目做出贡献的开发者和社区成员!

更新日志

最新功能 (v1.1)

🎉 访客模式

  • 支持未登录用户以只读方式访问系统
  • 可在初始化时配置是否启用访客模式
  • 访客可访问:仪表板、文章列表、内容分析
  • 访客不可访问:RSS 源管理(需要登录)
  • 页面顶部显示"访客模式"徽章
  • 登录页面提供"以访客模式继续"按钮

🔐 认证系统增强

  • 完整的 JWT 认证机制
  • 首次运行自动引导初始化
  • 支持访问令牌验证
  • Token 24 小时有效期
  • 三级权限控制:公开、访客可访问、完全保护

🎨 UI/UX 优化

  • 登录页面重新设计,优化间距和布局
  • Header 增加 RSS 品牌标识(蓝色背景)
  • 访客模式视觉提示(橙色徽章)
  • TDesign Vue Next 组件库集成
  • 响应式设计优化

🛠️ 技术栈更新

  • 前端:添加 Pinia 状态管理、TypeScript 支持
  • 前端:升级 UI 框架为 TDesign Vue Next
  • 后端:访客模式中间件实现
  • 路由:精细化权限控制(GET vs POST/PUT/DELETE)

SecFeedAI - 让安全新闻触手可及,让 AI 分析赋能安全!

About

SecFeedAI 是一个开源的安全新闻智能聚合与分析系统,通过 RSS 源实时获取全球安全新闻,结合 AI 技术进行智能分析,为安全从业者提供高效、精准的安全资讯服务。