TL; DR
简而言之,【MatrixChannel】是一个定时同步 Tapd(来自腾讯的敏捷研发协作平台)到 Notion 的开源工具。
本篇文章主要根据一个软件开发从业人员的个人经历,介绍了工作任务纪录的痛点,并提出、开发、开源了自己的解决方案,也就是本文章分享介绍的工具。
最后,通过这个解决方案,除了能够更统一更高效的管理个人日常事务,同时,还能以更个人、更自由的方式管理自己的 Tapd 需求、任务的数据展示与数据记录,并记录个人关于需求的临时数据与需求分析,提高生产力。
工具 Github 地址:https://github.com/copriwolf/MatrixChannel
效果演示如下:
MatrixChannel 自动同步数据·效果演示
1 前言
开篇先来一个烂梗。自从众多互联网公司落实了 985 规定后,生产力他妈妈更早下班了,今天刚回来,就听到有人敲门,打开门一看,嚯,原来是生产力到家了。
当然了,这是一个来自互联网码农的自嘲,不过确实越来越有趋势,需要在非办公时间段处理公司业务的需求。(就如同微信也拥有了 QQ 的状态栏功能一样)。而为了应对在家里更快的了解自己的任务进度、需求变更,我个人更迫切的需要一个工具去整合我的工作数据,而这个工具也就应运而生了。
2 为什么要开发这个插件?
2.1 直接用公司的项目管理工具不香嘛?
从本人的工作经历中,使用过的公司指定项目管理工具包括 Redmine/JIRA/Tapd 等,都存在一些让使用者非常不爽的地方。
- Redmine
- Web 1.0 界面非常简陋,且操作流程的按钮、提示,都是机翻中文非常变扭。
- 支持的插件扩展有限(如 Markdown、流程图),需要额外开发。
- 私有化部署,离开办公网络需要 VPN/IOA 才能浏览。
- 共性
- 筛选与排序功能欠佳,针对个人的自定义程度不高
- 无法,也不应该记录个人对于需求的上下文数据
而针对每一个需求任务的上下文相关数据,亟需一个统一的位置进行维护,且在需要时能够快速根据关键信息(标题、需求目的)检索处理,并有详实的时间线历程与状态扭转记录。
2.2 过往的需求任务相关数据在哪?
在过去的时间段,跨越了我的几段工作经历,为了记录我的工作任务的上下文。我尝试了【Wiz】【印象笔记】【Angenda.】等知识管理类软件服务、【Trello】等看板类工具以及【Typora+github/dropbox】的 Geek 模式等等等的模式。
Evernote 国内版·记录公司的需求任务·截图
Agenda. 记录公司的需求任务·截图
我始终觉得,有几个痛点横跨在我的知识管理软件之上,无法解决:
- 组织方式不明朗:到底以什么为关键词组织我的任务与需求(任务名称?需求迭代日期?需求类型?),在需要的时候,如果快速检索到我需要的上下文对应数据?
- 灵活度不足:需多维度纪录需求时,无法满足(标识目前进度状态扭转等)
- 数据储存可靠性:本地 Git/Dropbox 不可靠,在线工具的稳定性(印象笔记的氪金体系)。
- 模版易用性:通过模版新建一个任务不够便捷,往往需要复制粘贴一个项目条来完成。
- 手工维护成本:每次有新的需求,或者任务内容有所变更,需要手动录入到自己的管理工具上,并维护扭转的状态。
2.3 为什么要用 Notion?
在一路的尝试历程,发现 Notion 是比较符合选型要求的。其提出横空出世的 All-In-One Workspace 模式,开创了一个崭新的在线文档记录模式。
它在几个方面的特性,能够尝试解决以上提到的痛点:
- 高灵活度:其文档本质是一个数据库,可以内嵌多条数据。而每条数据,允许增加无限、不同维度的属性。故,可以对一条数据,增加【需求名称】【需求迭代】【当前状态】等等维度进行细分维护,同时,还能对文档进行有时间戳的评论,用于跟进数据。
- 组织方式自由:其文档可以按照列表、看板、时间线、日历等模式进行视图展示,同时允许附加筛选、排序条件,能够按照【当前指向我且状态未完成的状态】【目前迭代处于测试中状态】等等自己需要的条件进行任务筛选与展示。
- 模版定义:模版定义简单,新建文档,只需要选中对应模版,即可预生成对应模版已有的属性与展示。
- 数据储存:这个目前 Notion 都是处于 AWS,日常使用来说是稳定且图片上下传速度没有明显卡顿感。
- 上下文记录格式丰富:文档中允许多种记录格式,如表格、Markdown、语法高亮的代码块、音视频、图片直接拖动上传,在线播放等。
Notion Database 视图
Notion 具体 Page 视图
如上图所示,通过细分数据的维度,能够非常容易管理任务的进度,同时,附带一些个人用到的需求上下文数据。
2.4 如何让工作任务数据与 Notion 自动联动?
当然了,解决了需求的上下文关联,数据的状态扭转后。
就还有一个比较棘手的问题需要解决:「每次 Tapd 新来了需求都需要手工录入,能不能自动联动起来?」
仍然需要,手工更新、录入数据,这是一个繁琐而且容易疲倦的操作,也会因为落后于 Tapd 的更新速度,最后废弃了 Notion 上下文的维护。
而解决这个自动更新的契机,则是部门的其他同事、领导也同样拥有对新事物探索的热情与无尽的宽容,容许成为我开发自动更新插件的首批试用玩家。
也就有了,今天隆重介绍的「MatrixChannel」—— 一个自动定时同步 Tapd 到 Notion 的工具。
3 这么做有什么好处
解决了个人以及领导的需求:在 Notion 以更自由更个性化的方式,并准实时的情况,管理自己的 Tapd 需求与任务。
4 工作原理
MatrixChannel工作原理
MatrixChannel 作为一个 Notion 与 Tapd 的中介,
- 会定时从 Notion Api 拉取现有数据,并以 Tapd 任务/需求ID 进行分组后;
- 向 Tapd Api 拉取配置的员工的最新数据,同时以 Tapd 任务/需求ID 进行分组;
- 比对 Notion 的分组数据与 Tapd 的分组数据,筛选出需要进行修改/新增的数据;
- 通过 Notion Api 对现有数据进行修复/新增。
由于 MatrixChannel 并不会落地任何用户数据,故每次触发时,都会重新获取 Notion/Tapd 的数据。
5 快速上手
首先,我们需要创建一个 Notion 机器人用于后续把 Tapd 数据保存到 Notion 中。同时,我们通过拷贝一个 Tapd Notion 模版(预设了 Tapd 数据相关的字段),用来创建一个用来记载 Tapd 数据的页面。最后,把 Notion 机器人配置到这个插件上,跑起来,即可自动同步数据。
5.1 前期工作
- 贵公司正在使用 TAPD
- 你获取了 TAPD 的 Api 账号密码
- 向贵公司的管理员表示你需要提高生产力为由,索取 Api Token
- 官方论坛-申请指南
5.2 创建一个 Notion 机器人
- 在官方的开发者页面,点击右上角的 My integrations 按钮.
- 登陆后,点击 New integration 新建一个机器人。
- 填写机器人的名字, 即可进行提交。
- 机器人创建成功后,保存机器人的 **Secrets(密钥)**,这是操作这个机器人的唯一凭证或者说是钥匙。
- 机器人类型选择 Internal Integration(自用类型),然后保存即可。
后续需要制作给多个用户同步 tapd 时,可用到 Public Integration。
5.3 复制 Tapd 需求、任务的 Notion 模版
我为你准备了一份预设的 Tapd Notion 模版,其中包含了【Story 需求表】以及【Task 任务表】。
每个表都预设了 Tapd 数据需要落地的字段(如 Task 表中的关键数据:「标题」「迭代」「任务状态」「需求Url」「TaskUrl」等等)
操作方式如下:
- 点击右方链接,拷贝模版到你自己的 Notion 中。 [📍 Tapd 模版]
- 授权你的机器人访问与修改该页面数据。(选中刚刚你在上一步创建的机器人名称。)
- 获取页面的 PageID
由于 Notion Api 处于 Beta 版本,未开放处理 Database 级别权限,所以需要你手动复制 DataBase 的 ID。
1
2https://www.notion.so/copriwolf/84999c421caf4eeeab8bc66bc044408a?v=9...
<---------- DataBaseID --------->
5.4 配置一份同步配置
- 复制项目中的
config/demo.conf.yaml
为conf.yaml
,并在其中填充自定义的数据。你也可以复制下面的配置数据保存为conf.yaml
即可。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
27Service:
# 数据同步间隔
refreshInterval: 10m0s
# 请求失败的睡眠时间
httpRequestFailSleepTime: 5s
# 最大请求失败重试次数
httpRequestAttempts: 5
# Tapd Api 用户名
tapdApiUser: vvvvvv
# Tapd Api 密码
tapdApiPassword: B8888888-8888-9999-0000
# Tapd 公司 ID
tapdCompanyID: "0000700"
User:
# 用户 A 的昵称/电邮(任意..)
copriwolf:
enable:
- task
- story
# 该用户在 Tapd 中的用户名
tapdOwner: copriwolf
# Notion 访问密钥(私有机器人使用 Bot Secret)
notionBotSecret: secret_xxxxxxxxxxxxxxxxx
# Notion Database 任务页面的 ID
notionDbTaskID: 84999c421caf4eeeab8bc66bc
# Notion Database 需求页面的 ID
notionDbStoryID: 7777777777777777777777777
5.5 跑起来
具体的插件在 Github Release 页面可以下载,但是我更推荐你使用 Docker 运行。
原因是,你不需要沾污你的系统,把插件轻量化的跑在一个虚拟容器中,更方便省心。
安装 Docker,官方下载页面
执行命令,以 docker 形式运行
1
2
3$ docker run -it \
-v "$PWD/conf.yaml:/app/config/conf.yaml"
ghcr.io/copriwolf/matrixchannel:master工具运行展示
6 高阶用法
如果你觉得独乐乐不如众乐乐,希望帮助同事也同步他们最新的 Tapd 数据到他们各自的 Notion 中,不要着急,MatrixChannel 也同样支持,去看看源码吧~后期作者完善后会同样分享教程。
同时 MatrixChannel 还为你实现了,官方对于公共机器人的强制要求 OAuth 鉴权与回调功能模块,你只需要稍微配置数据,即可完成公共机器人配置,实现多用户 Tapd 同步能力。
7 后记
📍 简述了我对工作记录的思考,以及对其中的优化方案。这也正是我目前运用到实际工作的解决方案。
🕹 如果你对工具有任何不满意或者改进的地方,欢迎评论或者直接在 Github 中提交 Issues。
👏 如果本文章对你的工作上下文记载有新的思考与启发,那就太好了。如果你觉得有不同的思路,更好的解决方案或者是批评,请留言告诉我,谢谢你。