跳过主要内容
故事

一个全新的组织系统

关于 capgo 团队如何添加组织系统的故事

文章来源

马丁·多纳迪厄

作者

瓦莱里亚

审阅者

乔丹

编辑

一个全新的组织系统

介绍

嘿,我是 瓦莱尼奥 - Capgo的首席软件工程师。

在过去的8个月里,我一直在开发 组织系统, 由于 2024 年 4 月 14 日,我很高兴宣布该系统已完成 🎉 🎊

Finally, after 8 months, every single part of Capgo is accessible to org members. This includes:

  • 应用
  • 统计
  • 计费
  • full CLI support
  • 还有很多!

到达这里并非易事;系统经过了 3 次重大修订。

组织 v1

开始时很混乱… 我加入项目后 2 周开始工作。 当时,我对代码库几乎一无所知,也没有更大的想法来实现这个功能。

这导致了只支持访问应用、频道和版本的最hacky 解决方案。 甚至不允许被邀请的用户查看统计数据。

然后我等待马丁审查这个。 我等待并等待,但没有什么真正发生。 3个月后,我决定回到这个地方并修复所有的合并冲突。 我也决定测试,这个决定是非常好的。 不出所料,hacky解决方案完全失败了。 在那个时候,我决定修复所有的bug并写一个详尽的E2E测试。 我不得不与非常破碎的code和过去的我做出的很多坏决定一起工作,但经过2个艰难的周,我终于使它正常工作了。

然而,这并不意味着它是完美的。 组织的拥有者仍然拥有比最高邀请用户更多的访问权限。 用户体验也相当糟糕。 邀请用户甚至无法看到应用统计数据、管理账单和CLI仅限于上传。

尽管存在所有这些挑战,马丁已经审查了PR,并在一周后将其推入生产环境。

组织v2

尽管存在所有这些挑战,组织系统仍然运作良好。 用户正在使用它,并且它真正推动了整个项目的进展。 然而,我仍然必须:

  • 修复在 行级安全性
  • 支持整个CLI
  • 确保管理员用户具有与拥有者相同的访问权限

之后 经过大量的讨论 与马丁一起,我们决定最好的方式是重写整个安全规则,并将所有资源的所有权转移到组织中,而不是用户。 这将使与新组织系统的集成变得更加容易,并且还将去掉大量的遗留code。

编写新的RLScode非常枯燥,但经过一周半的时间,整个迁移就完成了。

这次,我们决定不编写E2E测试,这意味着我们必须手动测试。经过3次非常详细的电话会议,马丁和我最终决定推送到生产环境并希望它会顺利。

然而,它并没有… Turns out,我破坏了用户注册功能,新用户无法创建账户 😅

在紧急电话会议后,我快速推送了一些更改到生产环境,然后就睡了。遗憾的是,我推送的更改只会带来更多问题 😰

我醒来后发现用户有很多空的组织。这不是应该发生的,因为每个用户只应该有一个组织。经过一段时间的思考,我最终成功地移除了所有的重复、空的组织,除了这个问题之外,其他更改都比较顺利。

组织v3

即使如此,这仍然不足够。还缺少一个巨大的组件——计费。

之前只有管理员才能管理账单。这导致了一个问题:用户购买了一个计划,认为这是为组织购买的。 我们快速修复了这个问题,决定这个问题是不可接受的

迁移过程相对顺利。花了一个星期的时间,但与V1和V2相比,确实不是很难 🚀

组织v4 - 未来

经过这么多努力,我想现在是时候专注于其他事情了 😎

虽然很难,但我学到了很多,capgo获得了一个非常棒且重要的功能 我仍然需要废弃旧功能、改善Web应用用户体验、监控BUG,但这个系统应该不会有太大的变化


感谢您的阅读 🚀

继续阅读:A brand new organization system

如果您正在使用 一个全新的组织系统 来规划仪表板和API操作,连接它与 API 总览 API Overview 简介 简介的实现细节 API API的实现细节 设备 设备的实现细节 包 包的实现细节

实时更新的Capacitor应用

当Web层面上的bug实时更新时,通过Capgo将修复直接推送给用户,而不是等待APP商店的批准。用户在后台接收更新,而原生代码的更改仍然在正常的审查路径中。

最新博客

Capgo为您提供了创建真正专业的移动应用所需的最佳见解。