会说话的任务(以下简称TT)
-
解决问题
- 日常工作中,worker未完成当前task时, 又被安排其他多个task时, worker阶段性的容易忘记某个task(用程序员设计思维讲: 如果没有高并发异步模型, 要么卡死调度线程, 要么消息在网卡等IO上丢失, 需要设计mq做消息队列缓存)
- 作为master, 进行需要花费不少时间催促和提醒worker完成master所关心的task
- 当worker和master存在n:m这种复制情况下, task没有可视化的展现worker是否饱和,让master很难进行进度预测
- 当一个复杂度较高(需要多个worker串联执行才能完成)的task, master需要经常询问不同的worker才能知道现在卡在哪个worker上了, 周期性的需要触发该事件, 浪费master的时间和精力
- 日常的task处理实际是用户绩效的最直接表象, 那么这些数据其实具备一定的KPI考核的原始数据, TT可以可视化的导出用户累计完成task数量, 完成task的平均时间等
-
运行环境
- 局域网
- 树莓派(或服务器)
- 树莓派这种一体机 维护简单, 甲方自己的操作系统环境多样
- 树莓派省电, 省成本(甲乙方)
- master ------------和用户角色无关, 对于一个任务的某个节点的相对称呼, 节点的上游
- worker------------和用户角色无关, 对于一个任务的某个节点的相对称呼, 节点的下游
- task-------任务(工作), 可以捆绑worker
- task tree-----任务(工作)树, 多个task串联
- 用户登录
- task创建
- task捆绑worker
- task捆绑的worker, 划分下级task
- 平级task的优先排序, 最终能在task tree的根节点能看到优先卡住的第一worker
- worker/master IM, 可以智能引用task, 类似阿里旺旺聊天时, 自动引用商品的url一样
- 基于webrtc的1对1音视频聊天
- 基于webrtc的远程协助
- IM聊天+富文本+文件传输(P2P)
- 百人级公司
- 局域网互通公司(不用考虑服务器外网, 穿墙等问题)
- 只供给PC用户(mac, windows, linux)
后台go, 前端js+html
- 前端
- electron
- vue
- npm(即node插件)
- 后端
- 未定
grpc(http2+protobuf)
该数据库只会给go开发的单个服务使用, 而且要考虑在树莓派这种小机型中运行, 需要符合以下特征
- 性能单链路性能足够
- 小巧(磁盘空间有限, cpu和内存有限)
暂定: mysql
特征:
- 用户聊天记录不保存, 由客户端自己存储(即: 换个电脑, 丢失)
- 主要存储用户信息和task信息
- 为了存储和搜索的高效性, task表按年划分(只保留2年的数据, 今年+去年)
- 用户登录登出, task变更等操作, 需要记录操作者和操作时间
- 数据均采用0时区
-
1.登录+注册
-
描述
学习无人超市的概念, 用户自动完成, 货款单出现问题, 事后通过录像查询并准确追踪
反应到我们这边就是无秘密登录
graph TD 无密码登录-->|login|a{是否第一次登陆} a-->|是|b(填写工号+姓名) a-->|否|b1(本地缓存中读取) b-->登录 b1-->登录 登录-->|login|服务 服务-->|check|c{账号检索} c-->|不存在|新建账号+登录成功+欢迎 c-->|存在|d{校验登录ip} d-->|相同|登录成功 d-->|不同|告警 告警-->|提醒:登录ip不同</br>如果误登录,5秒倒计时内退出|e{误登} e-->|点击是|客户端退出,不产生记录 e-->|点击否|客户端正常使用,显示上次登录的操作信息,并记录登录信息
-