OpenCollective项目通知系统的长期技术规划与设计思考
2025-07-04 15:50:42作者:庞眉杨Will
背景与现状分析
在开源协作平台OpenCollective中,通知系统作为用户交互的核心组件,当前每月处理约18万封邮件通知。现有系统基于活动类型分层架构,通过接收活动事件来决定邮件发送逻辑。然而该系统面临三个主要技术挑战:
- 通知决策逻辑复杂,难以清晰定义触发条件
- 邮件模板陈旧,缺乏个性化定制能力
- 缺乏对组织级通知场景的支持
核心设计挑战
通过两次工作坊的深入探讨,团队识别出以下关键设计维度:
用户角色与通知语义
- 个人用户需要完整的事件追踪(如报销单的所有评论)
- 组织管理员需要避免信息过载(如不接收管辖范围内所有评论)
- 团队协作场景需要区分个人待办与团队工作队列
通知类型架构
- 即时通知:强时效性的事件触发(如报销单状态变更)
- 摘要通知:适合非紧急事件的批量处理(如多条评论汇总)
- 动态通知:技术实现复杂度较高(如评论删除后同步移除通知)
技术选型评估
针对是否采用第三方服务(如Novu)的决策,团队得出以下结论:
自研方案优势
- 深度集成现有活动分类系统
- 灵活支持组织/个人的双重通知场景
- 渐进式演进现有邮件通知架构
第三方服务局限
- 免费版月配额(3万)无法满足当前业务量
- 难以定制团队协作场景的特殊逻辑
- 增加对服务商的长期依赖风险
系统架构设计方向
基于讨论共识,未来技术实施将聚焦以下组件:
核心模块
- 事件分发引擎:基于RBAC模型的路由决策
- 订阅管理系统:支持频道化订阅(评论线程/报销单等)
- 呈现层服务:
- 个人通知中心(标记已读/未读)
- 组织工作看板(团队待办事项)
扩展能力
- 混合推送策略:即时邮件+应用内通知
- 智能摘要:基于事件类型自动聚合
- 跨渠道状态同步(如网页与邮件已读状态)
实施路线建议
- 阶段一:重构后端订阅逻辑,建立事件-角色-用户的映射关系
- 阶段二:开发基础应用内通知组件,实现标记已读功能
- 阶段三:设计团队协作视图,解决组织级工作流需求
该规划既保留了现有系统的业务逻辑积累,又为未来扩展留出技术空间,体现了稳健的架构演进思想。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0224
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0143
uni-appA cross-platform framework using Vue.jsJavaScript010
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
SwanLab⚡️SwanLab - an open-source, modern-design AI training tracking and visualization tool. Supports Cloud / Self-hosted use. Integrated with PyTorch / Transformers / LLaMA Factory / veRL/ Swift / Ultralytics / MMEngine / Keras etc.Python00
tiny-universe《大模型白盒子构建指南》:一个全手搓的Tiny-UniverseJupyter Notebook04
项目优选
收起
暂无描述
Dockerfile
781
5.1 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
890
2.04 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
470
471
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
707
1.41 K
deepin linux kernel
C
32
16
Ascend Extension for PyTorch
Python
760
970
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
2.26 K
677
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.11 K
1.15 K
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.04 K
272
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
2.14 K
224