SuperAPI AI 工具集

event-sourcing-coder

通用与其它

查看项目

更新于 10-16 00:03

技能介绍

用途:在 Rails 单体应用中记录有意义的领域事件,并分发到专门的处理器,以务实方式获得事件溯源的好处,而无需引入完整 CQRS/ES 基础设施。

主要能力:将“记录发生了什么”与“如何处理”解耦;事件可作为可查询的审计轨迹与活动流;支持通过 inbox 模式为不同事件类型分发侧效应,如邮件通知、Slack 通知、外部 CRM/分析/Webhook 同步及自动化规则;支持节流以避免短时间重复事件;支持与 AASM 状态机结合自动记录状态变更;提供记录事件与测试 inbox 的 RSpec 示例。

使用方式:创建事件表迁移,定义事件模型(包含 issue、actor、action、metadata 等字段,使用 after_commit 触发广播任务),在模型中提供 record_event! 方法用于记录;定义广播 Job 遍历 INBOXES 常量数组,逐个调用 inbox 的 process;每个 inbox 继承 Base 并实现 should_process? 与 handle。事件可在 controller 或 interaction 中调用,如 issue.record_event!(action: "status_changed", actor: current_user, metadata: { from: "open", to: "in_progress" }),也可传入 throttle 如 5.minutes 防止重复记录。

适用场景:构建活动流或审计追踪、同步数据到外部服务、由领域事件触发的自动化流程、追踪用户行为用于分析或调试。

限制:不适合单模型上的简单回调(应使用 ActiveRecord 回调)、仅需同步副作用(应使用 service object 或 ActiveInteraction)、需要完整事件重放/重建(应使用 Rails Event Store 等专门的事件溯源 gem)、每事件仅一个处理器(可直接方法调用)。资料未提供具体版本兼容范围、性能数据或收费信息。