实战:开发Python项目管理平台Sailboat 2

Sailboat的权限设计思路

Sailboat的定位是企业爬虫团队内部或个人使用的爬虫项目管理平台,非常明确的一点是,Sailboat并不会开放给外部的人员使用或访问。团队内部通常有如下几个角色:

  • 超级管理员——SuperUser,能够管理所有人员、项目及相关内容。
  • 开发者——Developer,只能够接触到属于自己的项目及相关内容。
  • 其他人员——Other,只能查看部分数据,无法接触开发者、管理员项目及相关内容。

当然,不排除外部人员访问Sailboat,他们被划分为Anonymous。Anonymous只能访问注册接口,但显然管理员是不会让他成功登录的。

相对于对外开放的平台来说,技术团队的内部管理和权限划分会简单很多,我们甚至用不到后端开发中常用的RBAC权限模型。Sailboat用户身份的设计如下:

  • Sailboat的第一个注册用户的身份默认设为SuperUser,且用户状态为已激活。
  • 除第一个用户外,其他用户的身份默认设为Developer,但用户状态为未激活。
  • 其他用户注册后需要主动告知SuperUser,由SuperUser在后台更新用户状态。

Sailboat用户权限设计如下:

  • 只有用户状态为已激活的用户才能登录。
  • 如果你不是SuperUser,那么你只能接触到属于自己的项目及相关内容,无法越权。
  • 角色Other是为领导或其他工作人员准备的基础数据查看角色,他只能查看部分数据。
  • 关键内容的删除只能由管理员进行,哪怕是Developer也无权删除。

各种角色之间的关系:
Sailboat中各种角色之间的关系

Sailboat的数据结构设计

这里选用MongoDB数据库,它随插随入和非结构化存储的特点使得我们能够省略掉数据模型的代码编写,只需要预先规划好数据结构即可。数据结构的设计可以从用户操作流程着手,用户的操作流程大体如下:

  1. 注册,填入自己的身份信息。
  2. 注册完成后登录Sailboat平台。
  3. 上传打包好的Python项目。
  4. 为已上传的Python项目设置定时调度规则。
  5. 查看Python项目执行后产生的执行记录和日志。

从流程可知,我们需要存储用户信息、项目信息、定时调度信息、执行记录信息和日志信息等数据。用户信息结构大体如下:

  • 用户ID。
  • 用户名。
  • 密码。
  • 昵称。
  • 邮箱。
  • 角色。
  • 状态。
  • 注册时间。

MongoDB数据库中将要存储的用户信息。
用户信息
设计好用户信息结构之后,我们来看看项目信息结构。项目信息结构大体如下:

  • 项目ID。
  • 项目名称。
  • 项目版本号。
  • 备注信息。
  • 上传者用户名。
  • 上传者ID。
  • 上传时间。

MongoDB存储的项目信息:
项目信息
用户将项目上传到Sailboat之后就可以通过API调用指定的项目,项目会根据用户填写的配置进行调度。由此得出调度信息的结构大体如下:

  • 调度ID。
  • 项目名称。
  • 版本号。
  • 定时类型。
  • 定时规则。
  • 任务编号。
  • 创建者ID。
  • 创建者用户名。
  • 创建时间。

MongoDB存储调度信息:
调度信息
当项目运行完毕后,Sailboat还会记录项目属性、耗时等执行信息。执行信息结构大体如下:

  • ·记录ID。
  • ·项目名称。
  • ·版本号。
  • ·定时类型。
  • ·定时规则。
  • ·任务编号。
  • ·执行编号。
  • ·起始时间。
  • ·结束时间。
  • ·运行时长。
  • ·创建者ID。
  • ·创建者用户名。
  • ·创建时间。

MongoDB存储执行信息:
执行信息
考虑到执行日志存储在日志文件中比较利于读写,所以不存储在数据库中,也不用为它设计结构。至此,Sailboat项目的存储结构设计工作结束。

总结:以上就是平台的权限和数据结构设计,下一节将会开始基础结构的搭建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值