mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-12 13:14:30 +08:00
chore(cqrs-rewrite): 修复PR349评审遗留问题
- 更新 stream benchmark 的 XML 返回值契约 - 修复通知发布器缓存回归测试的误导性安全网 - 同步 ai-plan 中的当前 PR 锚点与验证结果
This commit is contained in:
parent
d85b85c614
commit
e746fede7e
@ -146,6 +146,7 @@ public class StreamPipelineBenchmarks
|
||||
/// <summary>
|
||||
/// 直接调用 handler,并按当前观测模式消费响应序列,作为 stream pipeline 编排之外的基线。
|
||||
/// </summary>
|
||||
/// <returns>按当前观测模式完成 stream 消费后的等待句柄。</returns>
|
||||
[Benchmark(Baseline = true)]
|
||||
public ValueTask Stream_Baseline()
|
||||
{
|
||||
@ -155,6 +156,7 @@ public class StreamPipelineBenchmarks
|
||||
/// <summary>
|
||||
/// 通过 GFramework.CQRS runtime 创建 stream,并按当前矩阵配置执行 stream pipeline。
|
||||
/// </summary>
|
||||
/// <returns>按当前观测模式完成 stream 消费后的等待句柄。</returns>
|
||||
[Benchmark]
|
||||
public ValueTask Stream_GFrameworkCqrs()
|
||||
{
|
||||
@ -169,6 +171,7 @@ public class StreamPipelineBenchmarks
|
||||
/// <summary>
|
||||
/// 通过 MediatR 创建 stream,并按当前矩阵配置执行 stream pipeline,作为外部设计对照。
|
||||
/// </summary>
|
||||
/// <returns>按当前观测模式完成 stream 消费后的等待句柄。</returns>
|
||||
[Benchmark]
|
||||
public ValueTask Stream_MediatR()
|
||||
{
|
||||
|
||||
@ -167,6 +167,7 @@ public class StreamingBenchmarks
|
||||
/// <summary>
|
||||
/// 通过 `ai-libs/Mediator` 的 source-generated concrete mediator 创建 stream,并按当前观测模式消费。
|
||||
/// </summary>
|
||||
/// <returns>按当前观测模式完成 stream 消费后的等待句柄。</returns>
|
||||
[Benchmark]
|
||||
public ValueTask Stream_Mediator()
|
||||
{
|
||||
|
||||
@ -179,12 +179,12 @@ internal sealed class CqrsNotificationPublisherTests
|
||||
.Returns(() =>
|
||||
{
|
||||
notificationPublisherLookupCount++;
|
||||
return notificationPublisherLookupCount switch
|
||||
if (notificationPublisherLookupCount == 1)
|
||||
{
|
||||
1 => Array.Empty<object>(),
|
||||
2 => [new ReverseOrderNotificationPublisher()],
|
||||
_ => throw new AssertionException("Notification publisher should be resolved at most once.")
|
||||
};
|
||||
return Array.Empty<object>();
|
||||
}
|
||||
|
||||
throw new AssertionException("Notification publisher should not be resolved more than once.");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@ -12,14 +12,20 @@ CQRS 迁移与收敛。
|
||||
|
||||
## 当前恢复点
|
||||
|
||||
- 恢复点编号:`CQRS-REWRITE-RP-135`
|
||||
- 恢复点编号:`CQRS-REWRITE-RP-136`
|
||||
- 当前阶段:`Phase 8`
|
||||
- 当前 PR 锚点:`PR #348`
|
||||
- 当前 PR 锚点:`PR #349`
|
||||
- 当前结论:
|
||||
- 本轮按 `$gframework-batch-boot 50` 持续协调多波 non-conflicting subagent,基线固定为
|
||||
- 本轮先按 `$gframework-pr-review` 重新确认当前分支最新 GitHub 上下文,确认 `feat/cqrs-optimization` 在 `2026-05-12` 已切到 `PR #349`,不再沿用旧 tracking 中的 `PR #348` 锚点。
|
||||
- 随后按 `$gframework-batch-boot 50` 持续协调多波 non-conflicting subagent,基线固定为
|
||||
`origin/main @ ef4d3d5d (2026-05-11 17:33:43 +0800)`。
|
||||
- 当前 branch 相对基线的累计 diff 约为 `9 files / 1111 lines`;本轮停点由
|
||||
`context-budget / reviewability` 决定,而不是 `50 files` 阈值。
|
||||
- `PR #349` latest-head review 当前确认仍成立的项只有:
|
||||
- `StreamPipelineBenchmarks` 三个公开 benchmark 方法补齐 `<returns>` XML 契约
|
||||
- `StreamingBenchmarks.Stream_Mediator` 补齐 `<returns>` XML 契约
|
||||
- `CqrsNotificationPublisherTests` 中 fallback publisher 缓存回归测试去掉误导性的“第二次解析返回其它 publisher”分支
|
||||
- active tracking / trace 的当前 PR 锚点与下一步入口同步到 `PR #349`
|
||||
- tests 侧已补齐并提交:
|
||||
- `CqrsRegistrationServiceTests`:补空输入、空项过滤、稳定键排序与跨调用跳过边界
|
||||
- `CqrsHandlerRegistrarTests` 与 `CqrsHandlerRegistrarFallbackFailureTests`:
|
||||
@ -34,7 +40,7 @@ CQRS 迁移与收敛。
|
||||
## 当前活跃事实
|
||||
|
||||
- 当前分支:`feat/cqrs-optimization`
|
||||
- 当前 PR:`PR #348`
|
||||
- 当前 PR:`PR #349`
|
||||
- 当前写面:
|
||||
- `GFramework.Cqrs.Benchmarks/Messaging/StreamPipelineBenchmarks.cs`
|
||||
- `GFramework.Cqrs.Benchmarks/Messaging/StreamingBenchmarks.cs`
|
||||
@ -66,6 +72,8 @@ CQRS 迁移与收敛。
|
||||
|
||||
- `dotnet build GFramework.Cqrs.Benchmarks/GFramework.Cqrs.Benchmarks.csproj -c Release`
|
||||
- 结果:通过,`0 warning / 0 error`
|
||||
- `dotnet test GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release --filter "FullyQualifiedName~CqrsNotificationPublisherTests"`
|
||||
- 结果:通过,`Passed: 9, Failed: 0`
|
||||
- `dotnet test GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release --filter "FullyQualifiedName~CqrsRegistrationServiceTests|FullyQualifiedName~CqrsHandlerRegistrarTests|FullyQualifiedName~CqrsHandlerRegistrarFallbackFailureTests|FullyQualifiedName~CqrsNotificationPublisherTests"`
|
||||
- 结果:通过,`Passed: 36, Failed: 0`
|
||||
- `python3 scripts/license-header.py --check --paths GFramework.Cqrs.Benchmarks/Messaging/StreamPipelineBenchmarks.cs GFramework.Cqrs.Benchmarks/Messaging/StreamingBenchmarks.cs GFramework.Cqrs.Benchmarks/README.md GFramework.Cqrs.Tests/Cqrs/CqrsHandlerRegistrarFallbackFailureTests.cs GFramework.Cqrs.Tests/Cqrs/CqrsHandlerRegistrarTests.cs GFramework.Cqrs.Tests/Cqrs/CqrsNotificationPublisherTests.cs GFramework.Cqrs.Tests/Cqrs/CqrsRegistrationServiceTests.cs ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md ai-plan/public/cqrs-rewrite/traces/cqrs-rewrite-migration-trace.md`
|
||||
@ -75,7 +83,7 @@ CQRS 迁移与收敛。
|
||||
|
||||
## 下一推荐步骤
|
||||
|
||||
1. 再次运行 `$gframework-pr-review`,复核 `PR #348` latest-head open thread 是否已随着本轮 5 个新提交收敛。
|
||||
1. 再次运行 `$gframework-pr-review`,复核 `PR #349` latest-head open thread 是否已随着当前修复提交收敛。
|
||||
2. 若继续扩 benchmark,优先在 `StreamLifetimeBenchmarks` 或 `StreamStartupBenchmarks` 中补单文件 `Mediator` parity,而不是并行扩多个矩阵。
|
||||
3. 若切回文档收尾,把 `GFramework.Cqrs/README.md`、`docs/zh-CN/core/command.md`、`docs/zh-CN/core/query.md` 作为单独一波 docs-only 切片处理。
|
||||
|
||||
|
||||
@ -7,6 +7,31 @@ SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
## 2026-05-12
|
||||
|
||||
### 阶段:PR #349 latest-head review 收口(CQRS-REWRITE-RP-136)
|
||||
|
||||
- 重新执行 `$gframework-pr-review`,按 GitHub 当前分支状态确认 `feat/cqrs-optimization` 在 `2026-05-12` 对应的是 `PR #349`,不再沿用 active tracking 中的 `PR #348` 锚点。
|
||||
- 本轮 latest-head open AI thread 复核结论:
|
||||
- `StreamPipelineBenchmarks` 的 `Stream_Baseline`、`Stream_GFrameworkCqrs`、`Stream_MediatR` 缺少 `<returns>` XML 契约,接受修复
|
||||
- `StreamingBenchmarks.Stream_Mediator` 缺少 `<returns>` XML 契约,接受修复
|
||||
- `CqrsNotificationPublisherTests` 的 fallback publisher 缓存回归测试用“第二次解析返回另一个 publisher”充当安全网,和断言消息表达不一致,接受收口为“首次后任何再次解析都直接失败”
|
||||
- active tracking / trace 的当前 PR 锚点与下一步入口仍停留在 `PR #348`,接受同步到 `PR #349`
|
||||
- 本轮主线程实施:
|
||||
- `StreamPipelineBenchmarks`
|
||||
- 为 3 个公开 benchmark 方法补齐 `<returns>` XML 文档
|
||||
- `StreamingBenchmarks`
|
||||
- 为 `Stream_Mediator()` 补齐 `<returns>` XML 文档
|
||||
- `CqrsNotificationPublisherTests`
|
||||
- 把 fallback publisher 缓存回归测试改为“首次返回空数组,后续任何再次解析立即抛 `AssertionException`”,避免测试安全网与失败消息自相矛盾
|
||||
- `ai-plan/public/cqrs-rewrite/**`
|
||||
- 将 active tracking / trace 的当前 PR 锚点与下一步入口同步到 `PR #349`
|
||||
- 本轮权威验证:
|
||||
- `dotnet build GFramework.Cqrs.Benchmarks/GFramework.Cqrs.Benchmarks.csproj -c Release`
|
||||
- 结果:通过,`0 warning / 0 error`
|
||||
- `dotnet test GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release --filter "FullyQualifiedName~CqrsNotificationPublisherTests"`
|
||||
- 结果:通过,`Passed: 9, Failed: 0`
|
||||
- `python3 scripts/license-header.py --check --paths GFramework.Cqrs.Benchmarks/Messaging/StreamPipelineBenchmarks.cs GFramework.Cqrs.Benchmarks/Messaging/StreamingBenchmarks.cs GFramework.Cqrs.Tests/Cqrs/CqrsNotificationPublisherTests.cs ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md ai-plan/public/cqrs-rewrite/traces/cqrs-rewrite-migration-trace.md`
|
||||
- 结果:通过
|
||||
|
||||
### 阶段:多波 batch 继续收口(CQRS-REWRITE-RP-135)
|
||||
|
||||
- 按 `$gframework-batch-boot 50` 恢复当前 topic,并把基线固定为
|
||||
@ -40,7 +65,7 @@ SPDX-License-Identifier: Apache-2.0
|
||||
- 明显低于 `50 files` 阈值
|
||||
- 本轮停止信号来自 `context-budget / reviewability`,不是文件预算耗尽
|
||||
- 当前下一步:
|
||||
- 先按需要运行 `$gframework-pr-review`,确认 `PR #348` latest-head open thread 是否已随本轮新增提交收敛
|
||||
- 先按需要运行 `$gframework-pr-review`,确认 `PR #349` latest-head open thread 是否已随当前修复提交收敛
|
||||
- 若继续扩 benchmark,优先补 `StreamLifetimeBenchmarks` 或 `StreamStartupBenchmarks` 的单文件 `Mediator` parity
|
||||
- 若切回文档收尾,把 `GFramework.Cqrs/README.md`、`docs/zh-CN/core/command.md`、`docs/zh-CN/core/query.md` 单独作为 docs-only 下一波
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user