diff --git a/GFramework.Cqrs.Tests/Cqrs/CqrsDispatcherContextValidationTests.cs b/GFramework.Cqrs.Tests/Cqrs/CqrsDispatcherContextValidationTests.cs index bf1998a9..bc12c773 100644 --- a/GFramework.Cqrs.Tests/Cqrs/CqrsDispatcherContextValidationTests.cs +++ b/GFramework.Cqrs.Tests/Cqrs/CqrsDispatcherContextValidationTests.cs @@ -122,6 +122,9 @@ internal sealed class CqrsDispatcherContextValidationTests /// /// 返回固定结果;当前测试只关心调用前的上下文校验。 /// + /// 当前请求。 + /// 取消令牌。 + /// 固定整型结果。 public ValueTask Handle(ContextAwareRequest request, CancellationToken cancellationToken) { return ValueTask.FromResult(1); @@ -138,6 +141,9 @@ internal sealed class CqrsDispatcherContextValidationTests /// /// 返回已完成任务;当前测试只关心调用前的上下文校验。 /// + /// 当前通知。 + /// 取消令牌。 + /// 已完成任务。 public ValueTask Handle(ContextAwareNotification notification, CancellationToken cancellationToken) { return ValueTask.CompletedTask; @@ -154,6 +160,9 @@ internal sealed class CqrsDispatcherContextValidationTests /// /// 返回一个最小流;当前测试只关心建流前的上下文校验。 /// + /// 当前流请求。 + /// 取消枚举时使用的取消令牌。 + /// 包含单个固定元素的异步流。 public async IAsyncEnumerable Handle( ContextAwareStreamRequest request, [EnumeratorCancellation] CancellationToken cancellationToken) diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherNotificationContextRefreshNotification.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherNotificationContextRefreshNotification.cs index f1f54dd2..faa3f5af 100644 --- a/GFramework.Cqrs.Tests/Cqrs/DispatcherNotificationContextRefreshNotification.cs +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherNotificationContextRefreshNotification.cs @@ -5,4 +5,5 @@ namespace GFramework.Cqrs.Tests.Cqrs; /// /// 为 notification dispatch binding 上下文刷新回归提供带分发标识的最小通知。 /// +/// 当前分发的稳定标识,便于断言缓存 binding 复用时观察到的是同一次通知。 internal sealed record DispatcherNotificationContextRefreshNotification(string DispatchId) : INotification; diff --git a/GFramework.Cqrs.Tests/Cqrs/DispatcherStreamContextRefreshRequest.cs b/GFramework.Cqrs.Tests/Cqrs/DispatcherStreamContextRefreshRequest.cs index c8d69cfe..f453886e 100644 --- a/GFramework.Cqrs.Tests/Cqrs/DispatcherStreamContextRefreshRequest.cs +++ b/GFramework.Cqrs.Tests/Cqrs/DispatcherStreamContextRefreshRequest.cs @@ -5,4 +5,5 @@ namespace GFramework.Cqrs.Tests.Cqrs; /// /// 为 stream dispatch binding 上下文刷新回归提供带分发标识的最小流请求。 /// +/// 当前分发的稳定标识,便于断言缓存 binding 复用时观察到的是同一次建流。 internal sealed record DispatcherStreamContextRefreshRequest(string DispatchId) : IStreamRequest; diff --git a/ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md b/ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md index 65874cd5..1d539457 100644 --- a/ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md +++ b/ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md @@ -30,6 +30,7 @@ CQRS 迁移与收敛。 - 已完成一轮 `static lambda + state` 微收敛:`CqrsDispatcher` 与 `CqrsHandlerRegistrar` 现会在弱缓存 / 并发缓存入口优先使用无捕获工厂,继续压低热路径上的额外闭包分配 - 已补充 `CqrsReflectionFallbackAttribute` 叶子级合同测试,锁定空 marker、字符串 fallback 名称归一化、直接 `Type` fallback 归一化与空参数防御语义 - 已完成 `PR #304` review follow-up 收敛:`CqrsDispatcher` 现补齐 pipeline executor / continuation 缓存的线程模型文档,并把 request pipeline invoker 从按 `behaviorCount` 重复创建收敛为 binding 内复用 + - 已补齐 `CqrsDispatcherContextValidationTests` 三个上下文校验 handler 的 XML `param` / `returns` 注释,以及 `DispatcherNotificationContextRefreshNotification`、`DispatcherStreamContextRefreshRequest` 的 `DispatchId` XML 参数注释,收敛上一轮 PR review 遗留的文档类 minor feedback - 已收紧 CQRS / generator 回归测试的脆弱断言:日志断言改为语义匹配,precise runtime type lookup 回归改为锁定数组秩、外部类型查找与“未发射 fallback metadata”这些稳定语义 - 已为 dispatcher cache / context refresh / pipeline order 三组测试状态容器补齐并发保护,并将 `CqrsDispatcherCacheTests` 标记为 `NonParallelizable`,避免静态缓存与共享快照在并行测试中相互污染 - 中期上继续 `Phase 8` 主线:参考 `ai-libs/Mediator`,继续扩大 generator 覆盖,并选择下一个收益明确的 dispatch / invoker 反射收敛点