项目解析

rms(Repair Management System)

整体架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
rms
├──
│   └──materialManage
│   ├── views
│ ├── forms
│   ├── urls.py
│ ├── cron.py
│ ├── testSQL.py
│ ├── tests.py
│ ├── redis.py
│   └── mysql.py
└──
│   └── performance
│   ├── views
│ ├── forms
│  ├── urls.py
│ ├── cron.py
│ ├── testSQL.py
│ ├── tests.py
│ ├── redis.py
│ └── mysql.py
└──
│ └── rework
│   ├── views
│ ├── forms
│  ├── urls.py
│ ├── cron.py
│ ├── testSQL.py
│ ├── tests.py
│ ├── redis.py
│   └── mysql.py  
└──
│ └── smartDebug
│ ├── views
│ ├── forms
│ ├── urls.py
│ ├── cron.py
│ ├── testSQL.py
│ ├── tests.py
│ ├── redis.py
│   └── mysql.py
│── utils
│── urls.py
│── mysql.py
│── redis.py
│── celery.py
│── config.py

架构介绍

mysql模块

  • 1.使用pooledDB连接池
  • 2.在外部定义一个总的MySQL的大类
  • 3.在各个模块分别继承MySQL
  • 4.在views视图中按照模块单例导入
  • 5.testSQL用户测试某些表

redis模块

类似于mysql架构

  • 1.使用connectionPool定义一个类,并写一些常用方法
  • 2.在views视图中模块单例导入
  • 3.用于缓存(str)、排行榜(zset)、开关(str)、计数器(网站访问次数之类的)

urls模块

用的普通django路由系统加include外部囊括

views和forms模块

  • 1.使用的rest_framework.decorators.api_view FBV
  • 2.使用django.forms.Form进行校验

cron.py

执行一些定时任务

  • 使用linux的单机crontab执行某些定时任务

utils

存放一些小工具比如:

  • 发送邮件
  • 转义字符
  • 获取时间
  • 数据库插入

tests.py

用于自定义一些小的测试接口

celery.py

  • 1.使用redis作为消息列表和结果存储工具
  • 2.某些工具接口异步任务,定时任务加入task
  • 3.为分布式架构做准备

config

一些本项目的相关配置

权限模块

按照客户要求做数据本项目自己的权限模块

  • 用户表
  • 权限表
  • 关联表
  • 前后端限制

模块介绍

materialManagement

物料管理模块主要分为两个部分数据可视化和用户操作部分

数据可视化
  • 1.主要是根据客户需求进行数据的可视化显示一些按周,月显示的柱状图、折线图、列表
  • 2.按照权限划分不同的可视权限
  • 3.对接别的系统接口解析一些数据进行可视化
  • 4.解析某些log文件的相关可视化
  • 5.显示物料库存、不良物料等
  • 6.物料差异分析
用户操作
  • 1.用户物料申请、入库、退料、领料
  • 2.老板签核
  • 3.公告发布、文件上传

Performance

绩效模块主要部分绩效可视化和用户操作
首先对接产线斯科系统定时获取源数据,对接人资系统获取工时人员信息

可视化
  • 1.通过分析源数据按照客户的逻辑对工程师进行周、月、年的绩效数据获取并显示
  • 2.分析一些按部门的绩效,作为部门绩效评比
  • 3.按照权限可视化
用户操作
  • 1.工程师对比源数据,某些异常物料进行申请销料
  • 2.管理者按照职位层级层层签核通过
  • 3.管理者上传工程师月、年加分信息原因并按层级签核
  • 4.管理者上传某些公告显示

Rework

重工模块主要包括重工系统数据可视、重工系统用户操作

重工系统数据维护可视化

由于各个部门开发的重工系统不一致,导致需要申请多个api显示

  • 整合各个部门开发重工系统数据
  • 按照相应逻辑按年月日进行显示
  • wip分析显示
用户操作
  • 整合用户操作统一到当前系统
  • 兼容各个系统旧数据
  • 用户相关checkout、checkin操作

smartDebug

主要是一些提前报警功能,比如一块料只能用5次,根据
源数据计算得到使用了四次了就报警表示更换报废该料

sso(单点登录系统)

整个测试平台为一个大的项目其中分为多个项目,为整个测试平台实现单点登录

架构

1
2
3
4
5
6
7
sso
└── views.py
├── mysql.py
├── config.py
├── utils
├── tests.py
├── middlewares.py

架构概述

通过人资系统的第三方登录对接(和github第三方类似)

  • 1.申请secretKey、appid放在config中
  • 2.带必填参数访问xxxxxx/login?response_type=code&client_id=xxxx&redirect_uri=xxxxx&state=xxxxx&continue=oauth2
  • 3.登录成功后有回调函数,第三方会带着生成的code调用回调函数
  • 4.回调函数中拿着code和state、appid、secretKey、grant_type去访问xxxxxxx/oauth/access_token拿到access_token
  • 5.然后带着access_token访问xxxxx/user_info获取一部分返回的用户信息
  • 6.解析该用户是否在我们的用户组里
    • 1.存在可以获取到email、full_name检测更新数据库
    • 2.使用jwt生成token
    • 3.不存在,先按照人资的认证信息简单在数据增加此人,并生成jwt

jwt实现单点登录

  • jwt放置在sessionStorage
  • 通过简单中间件实现验证和续签,续签是每次访问完接口process_response时
    如果该token的创建时间没有超过7.5h就生成一个新的1小时为过期的token(这里其实可以用redis存储黑名单,但使token有了状态)

权限

  • 初始化为每个项目客户的管理者申请好权限
  • 权限申请按照层级签署、驳回生效
  • 主要用来前端根据权限限制用户访问某些网页

人员信息可视化

相关离职人员、出差人员、调动人员、角色人员按时间显示

一些小的项目、脚本和窗口

  • 帮各个部门的助理写的一些处理文件、excel之类的和简单的数据显示的网站
  • 帮同事写的一些pyside2、wxpython的简单gui处理接口
分享到