在原哈士齐营销平台的基础上,进行以下改进。
- 增加单元测试,在 CI/CD 流程中, 通过单元测试后再进行代码的编译及镜像的构建等操作
- 增加 CodeQL 代码检查功能进行源码安全审查
- 将分散在 TSF 、 Serverless Frame 架构中的模块重新整合; 将分散为三个的接入点 ( Services、Manage、Events ) 重新进行整合; 减少需要维护的项目数量, 增强项目的可维护性;
目前的架构过于松散、混乱。尤其是部分接口和应用试用的 Serverless 架构经过验证后证明并不适合大面积应用于生产环境 ( 架构本身迭代速度过快,需要消耗大量经历适配他的最新迭代;稳定性不达标:故障率过高、故障后恢复时间过久。无SLA保障,出现故障后无赔偿 )
- 精简应用启动所需配置的环境变量数量,原项目中引入的环境变量 ( 用于配置 ) 过多,相互依赖复杂,配置项不清晰
- 将配置项目迁移到数据库进行保存,实现每次配置更新可以在数据库中留有记录的效果
- 应用繁忙时,有可能会拉起多个 Pod 。此时更新配置,会出现只有一个 Pod 更新到最新配置,其余 Pod 无法获取最新配置的问题
- 微信开放平台相关的 JSON 数据保存到 MongoDB 中
- 重新设计权限分级管理功能, 目前应用的权限分级管理功能不够成熟
- 角色、权限集成逻辑基本不变
- 上级角色可以查看下级角色全部的资源 ( where gid in [ 0, 1, 2] )
- 取消前端右上角的角色切换操作,简化操作流程
- 摘出高资源消耗及高时间消耗的业务, 迁移到独立 pod 或 serverless 架构
目前部分高资源消耗及高时间消耗的业务设计不合理,与 web 接口业务混合在一起。可能导致非关键业务的负载过高时,影响关键业务,主要是 restful 业务。计划在接下来的优化中,摘出高负载业务,使用独立 pod 或 serverless 架构进行部署,并配合任务队列,来实现流量削峰。
- 增加群发模板消息功能
- 申请话术
在考试公告发布后,使用模板消息向主动订阅的学员发送考试公告提醒。
- 模板消息编辑后,需要有权限的用户审核后,才可以开始群发操作。审核权限在地市以上级别的管理员手中。
- 申请话术
- 优化个人后缀业务
- 向 OCC 平台申请获取个人推广编码详情接口 ( 获取推广地区(所属分部)、序列、姓名 )
- 向 OCC 平台申请获取映射信息接口 ( 获取推广地区(所属分部)对应的 CRM 组织 ID、推广人 CRM 账号 ID )
- 结合以上两个接口, 替代现有的需要自行维护的 CRM 组织信息业务、后缀花名册业务
目前自行维护的方式, 容易出现后缀信息与 OCC 系统不匹配的情况;同时新增或修改推广人信息需要在多个平台重复操作,流程复杂,既不易于操作,也增加了工作量
- 获取微信小程序 AccessToken 服务
- 获取有效的个人后缀 ( 主要用于生成物料等操作 )
- 获取即将过期的后缀 用于后缀花名册
- 获取所有后缀 用于推送数据
- 推送带有个人后缀的信息到 CRM
- 短链接生成器 ( 长链接转短链接 )
临时使用
- OCC 平台
- 获取接口调用 Sign
- 微信开放平台接口组
- 授权事件接口
- 授权方的消息与事件接口
- 小程序内部接口
- 照片处理
- 获取配置列表
- 获取配置详情
- 照片处理
-
认证
- 获取 RSA 公钥接口
RSA 公钥改为从接口获取, 便于更新密钥对并增强安全性
- 登陆接口
登陆后返回会话 Token, 前端页面将 Token 保存在 localStorage 中, 在登陆时可以选择是否保持会话永不过期(通过在保存时增加过期时间字段实现), 减少登陆操作的次数,优化使用体验。
- 登陆时增加校验 MisToken 的步骤,优化操作体验
- 退出登录 ( 销毁会话 ) 接口
使用 DeletedAt 字段进行软删除标注
- 更新 MisToken 接口
前端的更新操作改为带遮罩且不可关闭的弹窗,不重置用户当前的操作,改进用户体验
- 修改用户密码
- 获取用户基本信息
- 获取 RSA 公钥接口
-
系统管理
- 配置管理
- 分页获取配置列表
- 修改配置
- 用户与角色管理
- 添加角色
- 获取当前用户所属角色及下属角色树
- 修改角色
- 修改角色的上级角色 ( 为前端的拖动修改角色归属功能提供服务 )
- 添加用户
- 分页获取用户列表
- 修改用户
- 禁用用户
- 启用用户
- 搜索用户
- 配置管理
-
工具
- 短链接生成器 ( 长链接转短链接 )
- 新建短链接
- 修改短链接
- 获取短链接列表 全部短链接 标注当前角色可操作短链接 可搜索
- 短链接生成器 ( 长链接转短链接 )
-
小程序
- 中公证件照 ( 照片处理 )
- 新建
- 修改
- 分页获取列表 带搜索
- 中公证件照 ( 照片处理 )
-
业务接口校验到无对应的权限时,返回固定地无权限提示
前端接收到无权限提示后,更新权限信息然后重定向路由到首页。达成权限变更后立刻体现的效果。
-
重新梳理权限分级的逻辑
-
摘出高资源消耗及高时间消耗的业务, 迁移到独立 pod 或 serverless 架构
- CRM 数据自动录入功能,摘出作为独立项目,由现在的长期运行,靠 sleep 实现定时轮询任务。修改为任务计划定期拉起 pod,这样可以在闲时节约资源。还可以测试迁移到 Serverless 的可能性。
- 同步粉丝列表功能, 从现在的收到请求就启动协程开始多线程处理 (无法预知同时进行的任务数量,可能导致某一个时刻多个任务在多线程处理,导致数据库压力极大),修改为定时查询任务列表,逐个进行多线程处理
- 个人后缀在新增时,检查目前生效的所有后缀中,是否存在重复的。 后缀字段设为主键。 测试插入重复后缀时是否有效。
- 单点登陆模块进行迭代,去除活动名称字段,增加活动链接(多个链接用,分割)、活动表单ID
- 模块增加质检扣分
-
个人后缀相关服务
- CRM 推送 ( 白皮书 ) ( 工作节点进行重构, 使用 CronJob 实现 )
- 白皮书个人码批量生成 ( 获取中公营销平台访问令牌部分进行重构, 对获取到的访问令牌进行缓存, 取消现有的每次操作都获取一次的逻辑。 因为中公营销平台限制了只有最后一个令牌有效,现有的获取方式可能会出现多人同时操作时, 后者的操作会导致前者的令牌失效。 )
- 宣传物料管理 ( 生成服务摘出, 使用 Serverless Frame 架构实现。 因为生成服务需要大量小号 CPU 资源及网络带宽资源, 现有架构会出现生成服务与关键业务争抢资源的情况。 )
- 海报生成业务迁移到 Serverless 架构
需要为其提供瞬时的高算力与高带宽
- 记录服务日志
- 未找到短链接时返回可以在后台进行配置的内容
- 短链接已经禁用时时返回可以在后台进行配置的内容
- 按照有效的配置进行跳转
参考 https://www.jianshu.com/p/e3b2b1194830
-
安装 GoConvey
- 在命令行执行
go get github.com/smartystreets/goconvey
- 运行时间较长,运行完后
- 在 $GOPATH/src 目录下新增了 github.com 子目录,该子目录里包含了 GoConvey 框架的库代码
- 在 $GOPATH/bin 目录下新增了 GoConvey 框架的可执行程序 GoConvey
- 在命令行执行
-
运行 Web 界面 并 在 Web 界面进行自动化编译测试
- 在项目根目录执行
$GOPATH/bin/goconvey
- 在项目根目录执行
-
可以参考的内容
- GoConvey 常用断言及用法 ( GoConvey断言err和bool的方法 ) https://blog.csdn.net/luomoshusheng/article/details/50226257?locationNum=13&fps=1