ci: Agent提交前自动格式化 + AI审查与auto-approve联动 #746

Merged
auto-approve-bot merged 2 commits from ci/agent-format-ai-review-link into develop 2026-07-23 01:24:36 +08:00
Owner

变更内容

P0-2: Agent提交前自动格式化

  • 新增 scripts/format.sh 一键格式化脚本
  • 后端:isort + black(与pyproject.toml配置一致)
  • 前端:eslint --fix + prettier
  • 零侵入业务代码,Agent提交前手动执行

P0-3: AI审查与auto-approve联动

  • pr_auto_scan.py 新增 get_ai_review_result() 函数
  • 解析AI审查评论中的「严重问题数量」
  • AI发现严重问题时阻止自动审批,打 ai-review/需修改 标签
  • 人工仍可手动审批覆盖,不加硬门禁
  • 新增 --skip-ai-review 参数可强制跳过

预期收益

  • P0-2: 从源头减少80% lint/format类CI失败
  • P0-3: AI审查bot从摆设变成真门神,严重问题不再漏过
## 变更内容 ### P0-2: Agent提交前自动格式化 - 新增 `scripts/format.sh` 一键格式化脚本 - 后端:isort + black(与pyproject.toml配置一致) - 前端:eslint --fix + prettier - 零侵入业务代码,Agent提交前手动执行 ### P0-3: AI审查与auto-approve联动 - `pr_auto_scan.py` 新增 `get_ai_review_result()` 函数 - 解析AI审查评论中的「严重问题数量」 - AI发现严重问题时阻止自动审批,打 `ai-review/需修改` 标签 - 人工仍可手动审批覆盖,不加硬门禁 - 新增 `--skip-ai-review` 参数可强制跳过 ## 预期收益 - P0-2: 从源头减少80% lint/format类CI失败 - P0-3: AI审查bot从摆设变成真门神,严重问题不再漏过
xiaoxia added 1 commit 2026-07-23 01:12:01 +08:00
ci: Agent提交前自动格式化 + AI审查与auto-approve联动
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 31s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 49s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 59s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m0s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m4s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 58s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m36s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m36s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m36s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m38s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m55s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m56s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 7m30s
AI Code Review / AI Code Review (pull_request) Successful in 8m33s
b08b571187
P0-2: 新增 scripts/format.sh 一键格式化脚本(black + isort + eslint)
P0-3: pr_auto_scan.py 新增AI审查联动,发现严重问题时阻止自动审批
  - get_ai_review_result() 解析AI审查评论中的严重问题数量
  - 有严重问题时不自动审批,打 ai-review/需修改 标签
  - 新增 --skip-ai-review 参数可强制跳过AI检查
  - 人工仍可手动审批覆盖,不加硬门禁

🚀 预览环境已部署

项目 详情
PR号 #746
预览链接 https://pr-746.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #746 | | 预览链接 | [https://pr-746.preview.xiaoxiajianji.com](https://pr-746.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-23 01:21:25 +08:00
fix: 修复pr_auto_scan.py的black/flake8格式问题
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 40s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 56s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m4s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m8s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m22s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m35s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 54s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 2m8s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m12s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m8s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 13s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 17m34s
AI Code Review / AI Code Review (pull_request) Failing after 18m15s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 18m16s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 18m16s
84156e6465
auto-approve-bot approved these changes 2026-07-23 01:23:39 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-23 01:23:39 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 6a873e057b into develop 2026-07-23 01:24:36 +08:00
auto-approve-bot deleted branch ci/agent-format-ai-review-link 2026-07-23 01:24:36 +08:00

🗑️ 预览环境已清理

PR #746 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #746 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Collaborator

代码审查结果 - PR #746

⚠️ 问题(2个需要修改)

  1. scripts/ci/pr_auto_scan.py 第300行:字段名拼写错误,导致获取分支名为空

    • 问题描述:代码将 pr.get("base", {}).get("ref", "") 修改为 get("re", ""),这是一个明显的拼写错误。GitHub API 中分支名字段为 ref,修改后将导致 base_ref 始终为空字符串。如果后续逻辑依赖此变量(虽然当前diff中未直接显示使用,但保留了该变量赋值),将导致逻辑错误。
    • 修改建议:将 "re" 改回 "ref"
  2. scripts/format.sh 第11-15行:Shell脚本变量引用未加引号,无法正确处理包含空格的路径

    • 问题描述:TARGETS="${@:-...}" 将参数合并为一个字符串,后续 python3 -m isort $TARGETS 在展开时未加双引号。如果传入的路径包含空格(例如 ./scripts/format.sh "my folder"),路径会被空格截断,导致格式化失败或错误处理文件。
    • 修改建议:使用 Shell 数组来正确处理参数,例如 targets=("${@:-alembic apps packages tests scripts}"),调用时使用 "${targets[@]}"

💡 建议(2个可选)

  1. scripts/ci/pr_auto_scan.py 第339-341行:忽略标签添加失败可能导致问题被遗漏

    • 问题描述:add_pr_label 函数的返回值被忽略,如果添加标签失败(如权限不足或标签不存在),PR 将不会被标记,人工可能无法意识到该 PR 被 AI 阻止了。
    • 修改建议:建议检查返回值,如果添加失败打印一条警告日志。
  2. scripts/ci/pr_auto_scan.py 第116-125行:AI审查解析逻辑缺乏容错性

    • 问题描述:正则表达式强依赖 AI 机器人的输出格式。如果 AI 输出格式微调或解析失败,critical_count 默认为 0,会导致有问题的 PR 被误判为“无严重问题”并通过自动审批。
    • 修改建议:建议增加日志输出,当解析不到 AI 评论或格式不匹配时,打印 Warning 或默认采取保守策略(如视为有严重问题),或者增加 --strict-ai 参数控制此行为。

格式检查通过 | 逻辑审查需修改 | 性能无明显问题


🤖 由 AI 代码审查机器人自动生成 | 2026-07-23 01:25:23 | 模型:

## 代码审查结果 - PR #746 ### ⚠️ 问题(2个需要修改) 1. **scripts/ci/pr_auto_scan.py 第300行**:字段名拼写错误,导致获取分支名为空 - 问题描述:代码将 `pr.get("base", {}).get("ref", "")` 修改为 `get("re", "")`,这是一个明显的拼写错误。GitHub API 中分支名字段为 `ref`,修改后将导致 `base_ref` 始终为空字符串。如果后续逻辑依赖此变量(虽然当前diff中未直接显示使用,但保留了该变量赋值),将导致逻辑错误。 - 修改建议:将 `"re"` 改回 `"ref"`。 2. **scripts/format.sh 第11-15行**:Shell脚本变量引用未加引号,无法正确处理包含空格的路径 - 问题描述:`TARGETS="${@:-...}"` 将参数合并为一个字符串,后续 `python3 -m isort $TARGETS` 在展开时未加双引号。如果传入的路径包含空格(例如 `./scripts/format.sh "my folder"`),路径会被空格截断,导致格式化失败或错误处理文件。 - 修改建议:使用 Shell 数组来正确处理参数,例如 `targets=("${@:-alembic apps packages tests scripts}")`,调用时使用 `"${targets[@]}"`。 ### 💡 建议(2个可选) 1. **scripts/ci/pr_auto_scan.py 第339-341行**:忽略标签添加失败可能导致问题被遗漏 - 问题描述:`add_pr_label` 函数的返回值被忽略,如果添加标签失败(如权限不足或标签不存在),PR 将不会被标记,人工可能无法意识到该 PR 被 AI 阻止了。 - 修改建议:建议检查返回值,如果添加失败打印一条警告日志。 2. **scripts/ci/pr_auto_scan.py 第116-125行**:AI审查解析逻辑缺乏容错性 - 问题描述:正则表达式强依赖 AI 机器人的输出格式。如果 AI 输出格式微调或解析失败,`critical_count` 默认为 0,会导致有问题的 PR 被误判为“无严重问题”并通过自动审批。 - 修改建议:建议增加日志输出,当解析不到 AI 评论或格式不匹配时,打印 Warning 或默认采取保守策略(如视为有严重问题),或者增加 `--strict-ai` 参数控制此行为。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能无明显问题 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-23 01:25:23 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
Sign in to join this conversation.