From acd638e807ba19251382bbbee286f777e4604e5a Mon Sep 17 00:00:00 2001 From: GeWuYou <95328647+GeWuYou@users.noreply.github.com> Date: Sun, 19 Apr 2026 11:39:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(cqrs):=20=E4=BF=AE=E6=AD=A3=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E4=B8=BB=E7=BA=BF=E4=B8=8E=E8=AF=84=E5=AE=A1=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 cqrs-rewrite 跟踪文档的下次恢复建议,使当前主线阶段与 Phase 8 保持一致 - 补充 cqrs-rewrite trace,记录本次 PR review 复核结论与恢复点更新 - 优化 gframework-pr-review 输出,明确 open thread 中的 Addressed in commit 文案仍需本地验证 --- .../scripts/fetch_current_pr_review.py | 11 +++++++ .../todos/cqrs-rewrite-migration-tracking.md | 2 +- .../traces/cqrs-rewrite-migration-trace.md | 30 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/.codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py b/.codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py index d5152f1d..51f42a17 100644 --- a/.codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py +++ b/.codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py @@ -25,6 +25,7 @@ GIT_ENVIRONMENT_KEY = "GFRAMEWORK_WINDOWS_GIT" USER_AGENT = "codex-gframework-pr-review" CODERABBIT_LOGIN = "coderabbitai[bot]" REVIEW_COMMENT_ADDRESSED_MARKER = "" +VISIBLE_ADDRESSED_IN_COMMIT_PATTERN = re.compile(r"✅\s*Addressed in commit\s+[0-9a-f]{7,40}", re.I) DEFAULT_REQUEST_TIMEOUT_SECONDS = 60 REQUEST_TIMEOUT_ENVIRONMENT_KEY = "GFRAMEWORK_PR_REVIEW_TIMEOUT_SECONDS" @@ -359,6 +360,10 @@ def classify_review_thread_status(latest_comment: dict[str, Any]) -> str: return "open" +def contains_visible_addressed_commit_text(body: str) -> bool: + return bool(VISIBLE_ADDRESSED_IN_COMMIT_PATTERN.search(body)) + + def build_latest_commit_review_threads(comments: list[dict[str, Any]]) -> list[dict[str, Any]]: comment_threads: dict[int, dict[str, Any]] = {} @@ -557,6 +562,12 @@ def format_text(result: dict[str, Any]) -> str: lines.append(f" Root by {root_comment['user']}: {collapse_whitespace(root_comment['body'])}") if latest_comment["id"] != root_comment["id"]: lines.append(f" Latest by {latest_comment['user']}: {collapse_whitespace(latest_comment['body'])}") + if contains_visible_addressed_commit_text(root_comment["body"]) or contains_visible_addressed_commit_text( + latest_comment["body"] + ): + lines.append( + " Note: thread is still open; treat the visible 'Addressed in commit ...' text as unverified until local code matches." + ) lines.append("") lines.append(f"Test reports: {len(result['test_reports'])}") 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 c89803d3..db67b893 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 @@ -470,7 +470,7 @@ 1. 查看 `ai-plan/public/cqrs-rewrite/traces/cqrs-rewrite-migration-trace.md` 2. 确认当前恢复点 `CQRS-REWRITE-RP-042` 已对应到最新提交 -3. 优先继续执行 `ai-plan/migration/CQRS_MODULE_SPLIT_PLAN.md` 中的 Phase 7: +3. 优先继续执行 `ai-plan/migration/CQRS_MODULE_SPLIT_PLAN.md` 中的 Phase 8(当前主线): - 先决定是否正式支持旧 `GFramework.Core.Abstractions.Cqrs*` / `GFramework.Core.Cqrs.Extensions` public namespace 兼容,还是明确要求消费端迁到当前 `GFramework.Cqrs*` 路径 - 再评估 `CqrsCoroutineExtensions` 是否保留在 `GFramework.Core`,或连同所需协程辅助一起形成更小的可迁移边界 4. 在 runtime 项目真正承接实现后,再处理 source-generator、meta package 与消费端 transitive 依赖的迁移 diff --git a/ai-plan/public/cqrs-rewrite/traces/cqrs-rewrite-migration-trace.md b/ai-plan/public/cqrs-rewrite/traces/cqrs-rewrite-migration-trace.md index 237379b7..bde7925b 100644 --- a/ai-plan/public/cqrs-rewrite/traces/cqrs-rewrite-migration-trace.md +++ b/ai-plan/public/cqrs-rewrite/traces/cqrs-rewrite-migration-trace.md @@ -1412,3 +1412,33 @@ 1. 若继续沿用当前 PR 驱动修复流程,可直接用 `$gframework-pr-review` 复查后续 PR 的 CodeRabbit 评论与测试状态 2. 若要验证本轮本地修正已经消除远端 latest head review threads,需要在提交并推送当前分支后重新执行 `$gframework-pr-review` + +## 2026-04-19 + +### 阶段:PR review 复核与 FPR 输出澄清(RP-043) + +- 建立 `CQRS-REWRITE-RP-043` 恢复点 +- 复核 PR `#253` 时确认: + - `ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md` 的“下次恢复建议”仍把主线写成 `Phase 7` + - 这与 tracking 顶部当前阶段 `Phase 8` 不一致,恢复时会造成执行顺序歧义 +- 进一步检查 `$gframework-pr-review` 脚本后确认: + - 该评论并非“未覆盖”,而是已出现在 latest head commit 的 open review threads 中 + - 我先前误把评论正文里可见的 `Addressed in commit ...` 文案当成了“已经本地验证修复” + - 实际脚本只会在 CodeRabbit thread 带有隐藏 marker `` 时才将状态归类为 `addressed` +- 已据此完成两项修正: + - 将 tracking 中的恢复主线更新为 `Phase 8(当前主线)` + - 调整 `fetch_current_pr_review.py` 输出:当 open thread 里出现 `Addressed in commit ...` 文案但线程并未真正 closed/addressed 时,显式提示“仍需本地验证,不要视为已解决” + +### 验证 + +- `sed -n '469,475p' ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md` + - 结果:通过 + - 备注:恢复建议已切到 `Phase 8(当前主线)` +- `python3 -m py_compile .codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py` + - 结果:通过 + - 备注:脚本语法正确 + +### 下一步 + +1. 推送当前分支后重新执行 `$gframework-pr-review`,确认 PR `#253` 的 latest head review threads 是否已收敛 +2. 若后续仍保留 CodeRabbit 的 `Addressed in commit ...` 文案但 thread 继续 open,优先以 latest thread 状态和本地文件事实为准,不再按文案字面判定