Skip to content

通过边缘计算盒实现的安全生产人工智能监测系统

Notifications You must be signed in to change notification settings

cookchen233/aisecurity

Repository files navigation

AI Security

AI Security 一个使用 Go 语言开发的 Web 应用程序,旨在为企业提供安全管理平台,帮助企业进行安全生产,有效地识别、管理和解决安全隐患,提高安全管理效率,降低安全风险。

项目目标:

  • 实时安全监测: 通过边缘计算盒子实时监测安全隐患,例如识别检测到抽烟、打电话、未戴安全帽、过道停放电动车等安全问题,并自动处理图片和视频记录。
  • 智能报警系统: 将识别到的安全隐患信息分类处理,进入工作流,自动分发给相关人员处理相关报警问题。
  • 安全隐患管理: 对安全隐患进行记录、管理,并分配相关人员进行日常安全排查工作。
  • 角色权限管理: 对企业部门、人员进行角色管理,确保不同角色拥有不同的权限,例如查看、编辑、审批等。

项目目录结构

  • config: 系统运行时相关配置, 主要存放系统运行以及业务相关配置.
  • data: 文件存放目录, 可挂载到Linux系统其他目录.
  • ent: ent框架文件, 操作数据库的各种元文件, 字段配置文件等.
  • enums: 枚举类型数据配置.
  • expects: 异常类型文件.
  • handlers: 业务控制器, 主要的业务处理分发单元.
  • logs: 日志存放目录.
  • middlewares: 中间件, 处理整个控制器运行周期中的咽喉与尾部操作, 如权限验证, 日志记录等.
  • routes: 基于Gin框架的路由配置文件.
  • services: 数据操作层, 主要的业务数据处理单元.
  • structs: 结构体存放目录, 由于go的特性, 统一将各个类别的结构体存放在此目录.
  • tests: 单元测试目录.
  • utils: 工具箱, 与业务关联度不高的公共设施.

技术结构

项目代码被组织成多个包,每个包负责特定的功能,以确保代码的可维护性和可扩展性:

1. config 包:

  • 包含应用程序的配置信息,例如:
    • 数据库连接信息
    • API 密钥
    • 日志级别
    • 缓存配置
    • 文件存储配置
    • 边缘计算盒子配置
    • 工作流配置
    • 角色权限配置
  • 使用 .env 文件来管理环境变量,方便在不同环境下进行配置,例如开发环境、测试环境、生产环境。
  • 使用配置文件管理工具,例如 Viper,可以方便地读取和解析配置文件,并支持多种配置文件格式,例如 YAML、JSON、TOML 等。

2. middlewares 包:

  • 包含中间件函数,用于处理常见的请求处理流程,例如:
    • 请求日志记录: 记录请求的详细信息,例如请求时间、请求方法、请求路径、请求参数、响应状态码等,方便调试和分析。
    • 身份验证: 验证用户的身份,确保只有授权用户才能访问特定的资源。可以使用 JWT (JSON Web Token) 或其他身份验证机制。
    • 错误处理: 处理应用程序运行过程中发生的错误,例如数据库连接错误、API 调用错误等,并返回友好的错误信息给用户。
    • 请求限流: 限制用户请求的频率,防止恶意攻击或资源耗尽。
    • 安全检查: 检查请求参数和数据,防止 SQL 注入、跨站脚本攻击等安全漏洞。
  • 中间件可以拦截请求和响应,执行一些预处理或后处理操作,提高代码的复用性和可读性。

3. routes 包:

  • 定义应用程序的 HTTP 路由,将不同的 URL 路径映射到相应的处理函数。
  • 使用 Gin 框架的路由功能,可以轻松定义和管理应用程序的 API 接口。
  • 遵循 RESTful API 设计原则,设计清晰、易于理解的 API 接口,方便用户使用。
  • 提供以下 API 接口:
    • 边缘计算盒子数据接收接口: 用于接收边缘计算盒子实时监测到的安全隐患报警信息,包括图片、视频、报警信息等。
    • 安全隐患管理接口: 用于管理安全隐患信息,例如添加、删除、修改、查询等。
    • 工作流管理接口: 用于管理安全隐患处理流程,例如创建、编辑、审批等。
    • 角色权限管理接口: 用于管理企业部门、人员的角色权限。

4. utils 包:

  • 包含一些通用的工具函数,例如:
    • 数据库操作: 提供与数据库交互的函数,例如查询、插入、更新、删除等。
    • 日志记录: 提供日志记录功能,方便调试和分析应用程序运行过程中的信息。
    • 字符串处理: 提供字符串处理函数,例如格式化、验证、加密等。
    • 缓存操作: 提供缓存操作函数,例如获取缓存数据、设置缓存数据、删除缓存数据等。
    • 文件操作: 提供文件操作函数,例如读取文件、写入文件、删除文件等。
    • 图片处理: 提供图片处理函数,例如缩放、裁剪、压缩等。
    • 视频处理: 提供视频处理函数,例如提取帧、转码等。
    • 工作流引擎: 提供工作流引擎,用于管理安全隐患处理流程。
    • 微信API: 提供微信公众号相关操作,用于任务分配的提醒、安全报警信息接收等。
  • 这些工具函数可以方便地在其他包中调用,提高代码的复用性和可读性。

5. structs 包:

  • 定义应用程序中使用的各种数据结构,例如:
    • 用户模型: 定义用户的属性,例如用户名、密码、邮箱地址、角色等。
    • 边缘计算盒子模型: 定义边缘计算盒子的属性,例如设备 ID、设备类型、连接状态等。
    • 安全隐患模型: 定义安全隐患的属性,例如类型、时间、地点、描述、图片、视频、处理状态等。
    • 工作流模型: 定义安全隐患处理流程的步骤、负责人、审批条件等。
    • 角色模型: 定义角色的属性,例如角色名称、权限等。
  • 定义清晰的数据结构可以提高代码的可读性和可维护性,并方便数据传递和处理。

6. tests 包:

  • 包含对应用程序各个组件的单元测试,确保代码的正确性和可靠性。
  • 编写单元测试可以提高代码的质量,并减少代码错误,提高代码的稳定性和可靠性。

技术栈:

  • Gin 框架: Gin 框架是一个 Go 语言的 HTTP 框架,它提供了一个高效且易于使用的 API 用于处理 HTTP 请求,并提供路由、中间件、错误处理等功能,简化了 Web 应用程序的开发。
  • Ent 框架: Ent 是一款 Go 语言的数据库 ORM 框架,它提供了一种类型安全且简洁的方式与数据库交互,简化了数据库操作,并提高了代码的可读性和可维护性。选择 Ent 的原因:

1. 关系映射:

  • Ent 支持关系映射,可以轻松地定义数据库表之间的关系,例如一对一、一对多、多对多等关系。
  • Ent 提供了方便的 API 用于处理关系数据,例如查询关联数据、创建关联数据、删除关联数据等。

2. 数据验证:

  • Ent 支持数据验证,可以定义数据字段的验证规则,例如非空验证、长度验证、格式验证等。
  • Ent 会自动执行数据验证,确保数据的正确性和完整性。

3. 可扩展性:

  • Ent 提供了丰富的扩展机制,可以自定义数据模型、操作方法、验证规则等。
  • Ent 支持插件机制,可以方便地扩展 Ent 的功能。

4. 生成的代码:

  • Ent 会根据数据模型自动生成 Go 代码,包括数据模型结构、数据库操作方法、数据验证方法等。
  • 生成的代码类型安全、易于阅读和维护。

5. 强大的工具:

  • Ent 提供了强大的工具,例如 Ent CLI,可以帮助你创建数据模型、生成代码、运行迁移等。

  • PostgreSQL: 项目使用 PostgreSQL 作为数据库,PostgreSQL 是一种功能强大的开源关系型数据库管理系统,提供事务处理、数据完整性约束、并发控制等特性,提供更丰富的数据类型,包括数组、JSON、XML、几何类型等,更适合复杂数据结构。

设计模式:

  • MVC (模型-视图-控制器): 项目结构遵循 MVC 模式的一种变体,routes 充当控制器,structs 代表模型,handlers 负责视图。MVC 模式可以将应用程序逻辑、数据和界面分离,提高代码的可维护性和可扩展性。
  • 依赖注入: 项目使用依赖注入,将依赖关系从代码中分离出来,提高代码的可测试性和可维护性。依赖注入可以将对象的创建和管理委托给外部容器,简化了代码的编写和维护。
  • 配置管理: 项目使用 .env 文件来管理环境变量,这是一种常见的配置管理方式,方便在不同环境下进行配置,例如开发环境、测试环境、生产环境。
  • 中间件: 项目使用了 Gin 框架的中间件机制,用于处理常见的请求处理流程,例如请求日志记录、身份验证、错误处理等。中间件可以拦截请求和响应,执行一些预处理或后处理操作,提高代码的复用性和可读性。

其他:

  • 单元测试: 项目包含 tests 目录,表明项目使用了单元测试来保证代码质量。单元测试可以确保代码的正确性和可靠性,提高代码的质量和稳定性。
  • 持续集成/持续交付 (CI/CD): 项目使用了 CI/CD 工具,用于自动化构建、测试和部署流程,提高开发效率和代码质量。CI/CD 可以确保代码的变更能够快速、安全地部署到生产环境中。

贡献:

欢迎贡献!请确保更新相应的测试,并遵循代码风格指南,以确保代码质量和一致性。

许可证:

MIT

安装与运行

  1. 确保PostgreSQL数据库已配置好.
  2. 正确配置 .env 文件.
  3. 编译运行.
  4. 运行前端react项目, 测试访问后端接口.

About

通过边缘计算盒实现的安全生产人工智能监测系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages