fix(web): 修复生成页 API 调用适配新模板编辑器架构 #671

Merged
auto-approve-bot merged 5 commits from fix/generate-page-api-migration into develop 2026-07-21 10:33:47 +08:00
Owner

问题

PR #666 将前端 API 路径迁移到 /templates/{templateId}/editor 架构,但只改了 import 路径,没有适配函数签名变化,导致:

  1. createEditPlan 调用 405:后端已无 /templates/drafts 接口,新架构下 GET /templates/{templateId}/editor 自动创建草稿
  2. 函数参数错误:updateEditPlan / generateEditPlan / getGenerationStatus 第一个参数已从 planId 改为 templateId,但调用方仍传 plan.id

根因链路

POST /edit-plans (旧) → PR #657 → POST /template-editors → PR #666 → POST /templates/drafts (405)

实际后端架构:GET /templates/{template_id}/editor 自动创建草稿 → PUT 更新 → POST /generate 触发

修复内容

  • GeneratePage.tsx:createEditPlan → getEditPlan 自动创建草稿 + updateEditPlan 一次性设置内容+状态
  • GeneratePage.tsx:所有 plan.id 调用改为 selectedTemplate(templateId)
  • E2E 测试:等待 POST /editor/generate 替代已废弃的创建接口
  • 单元测试:更新 mock 返回值适配新 API 签名

遗留问题(后续处理)

  • createEditPlan 函数仍是死代码(调用不存在的接口),建议删除
  • EditingPlanner 页面的 getEditPlan/getEditPlanClips 也可能有同样的 planId→templateId 问题
  • GeneratePage 中 editPlanId useEffect 的 getEditPlan(editPlanId) 也可能传参错误

P0 阻塞修复,先合入解决 develop CI E2E 失败问题。

## 问题 PR #666 将前端 API 路径迁移到 `/templates/{templateId}/editor` 架构,但只改了 import 路径,没有适配函数签名变化,导致: 1. **createEditPlan 调用 405**:后端已无 `/templates/drafts` 接口,新架构下 GET `/templates/{templateId}/editor` 自动创建草稿 2. **函数参数错误**:updateEditPlan / generateEditPlan / getGenerationStatus 第一个参数已从 planId 改为 templateId,但调用方仍传 plan.id ## 根因链路 ``` POST /edit-plans (旧) → PR #657 → POST /template-editors → PR #666 → POST /templates/drafts (405) ``` 实际后端架构:GET `/templates/{template_id}/editor` 自动创建草稿 → PUT 更新 → POST `/generate` 触发 ## 修复内容 - **GeneratePage.tsx**:createEditPlan → getEditPlan 自动创建草稿 + updateEditPlan 一次性设置内容+状态 - **GeneratePage.tsx**:所有 plan.id 调用改为 selectedTemplate(templateId) - **E2E 测试**:等待 POST `/editor/generate` 替代已废弃的创建接口 - **单元测试**:更新 mock 返回值适配新 API 签名 ## 遗留问题(后续处理) - `createEditPlan` 函数仍是死代码(调用不存在的接口),建议删除 - EditingPlanner 页面的 getEditPlan/getEditPlanClips 也可能有同样的 planId→templateId 问题 - GeneratePage 中 editPlanId useEffect 的 getEditPlan(editPlanId) 也可能传参错误 P0 阻塞修复,先合入解决 develop CI E2E 失败问题。
xiaoxia added 1 commit 2026-07-21 09:17:27 +08:00
fix(web): 修复生成页 API 调用适配新模板编辑器架构
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 25s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m32s
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m33s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m37s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m37s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 2m52s
AI Code Review / AI Code Review (pull_request) Successful in 5m10s
d7b36135d6
PR #666 将 API 路径迁移到 /templates/{templateId}/editor 架构,但只改了 import 路径,
没有适配函数签名变化(参数从 planId 改为 templateId),也没有替换已废弃的
createEditPlan(后端无 /templates/drafts 接口)。

修复内容:
- GeneratePage: createEditPlan → getEditPlan 自动创建草稿 + updateEditPlan 更新内容
- GeneratePage: 所有 plan.id 调用改为 selectedTemplate(templateId)
- E2E: 等待 POST /editor/generate 替代已废弃的创建接口
- 单元测试: 更新 mock 返回值适配新 API 签名

根因:POST /template-editors → 404 → POST /templates/drafts → 405

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #671 | | 预览链接 | [https://pr-671.preview.xiaoxiajianji.com](https://pr-671.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-21 10:04:19 +08:00
fix(web): 修复lint错误 - 移除未使用变量和多余依赖
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (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 26s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m12s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m57s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m1s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m5s
AI Code Review / AI Code Review (pull_request) Successful in 3m9s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 2m55s
211b1ee33f
xiaoxia added 1 commit 2026-07-21 10:08:33 +08:00
fix: prettier formatting
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker 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 / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (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 30s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Successful in 56s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 58s
654c04f5ca
xiaoxia added 1 commit 2026-07-21 10:09:10 +08:00
fix: restore file permissions
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker 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 / 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 / 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 33s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m11s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m18s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m22s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m28s
AI Code Review / AI Code Review (pull_request) Successful in 2m47s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 2m21s
4dbda36c52
xiaoxia added 1 commit 2026-07-21 10:30:55 +08:00
fix: prettier formatting take 2
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 / Build Production API 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 Worker 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 / 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 32s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m23s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m32s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m43s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m51s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 2m19s
AI Code Review / AI Code Review (pull_request) Successful in 3m12s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 25s
86493c1753
auto-approve-bot approved these changes 2026-07-21 10:32:38 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit beabc932e6 into develop 2026-07-21 10:33:47 +08:00
auto-approve-bot deleted branch fix/generate-page-api-migration 2026-07-21 10:33:47 +08:00
Collaborator

代码审查结果 - PR #671

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

  1. apps/web/src/pages/generate/GeneratePage.tsx 第1090行:轮询接口异常时存在无限重试风险。

    • 原因:在 poll 函数的 catch 块中,捕获到错误后直接通过 setTimeout 3秒后递归调用自身,没有重试次数限制或错误类型判断。
    • 后果:如果接口返回 404(资源不存在)或 403(无权限)等永久性错误,前端将无限重试,导致资源浪费和用户体验极差(无限加载)。
    • 建议:增加最大重试次数限制(如 5 次),或在捕获到特定 HTTP 状态码时停止重试并提示用户。
  2. apps/web/src/pages/generate/GeneratePage.tsx 第996行:忽略了 getEditPlan 的返回值,可能导致后续调用 ID 不一致。

    • 原因:代码调用 await getEditPlan(selectedTemplate) 但未使用返回值。随后的 updateEditPlangenerateEditPlan 均使用 selectedTemplate 作为 ID。
    • 后果:根据测试文件中的 Mock 数据(getEditPlan 返回 plan_id: "test-plan"),后端接口极有可能返回新生成的草稿 ID (plan_id)。如果后端架构下草稿 ID 与 selectedTemplate 不同,忽略返回值将导致后续更新和生成操作作用于错误的资源,引发数据错误。

💡 建议(1个可选)

  1. apps/web/e2e/core-generation.spec.ts 第237行:建议增加对响应体结构的更严格校验。
    • 具体内容:当前仅校验 plan_idgeneration_task_id 存在。建议增加对 plan_status 的校验,确保生成任务已正确启动(例如状态为 processingpending),以更准确地验证业务逻辑。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-21 10:34:07 | 模型:

## 代码审查结果 - PR #671 ### ⚠️ 问题(2个需要修改) 1. **apps/web/src/pages/generate/GeneratePage.tsx 第1090行**:轮询接口异常时存在无限重试风险。 - **原因**:在 `poll` 函数的 `catch` 块中,捕获到错误后直接通过 `setTimeout` 3秒后递归调用自身,没有重试次数限制或错误类型判断。 - **后果**:如果接口返回 404(资源不存在)或 403(无权限)等永久性错误,前端将无限重试,导致资源浪费和用户体验极差(无限加载)。 - **建议**:增加最大重试次数限制(如 5 次),或在捕获到特定 HTTP 状态码时停止重试并提示用户。 2. **apps/web/src/pages/generate/GeneratePage.tsx 第996行**:忽略了 `getEditPlan` 的返回值,可能导致后续调用 ID 不一致。 - **原因**:代码调用 `await getEditPlan(selectedTemplate)` 但未使用返回值。随后的 `updateEditPlan` 和 `generateEditPlan` 均使用 `selectedTemplate` 作为 ID。 - **后果**:根据测试文件中的 Mock 数据(`getEditPlan` 返回 `plan_id: "test-plan"`),后端接口极有可能返回新生成的草稿 ID (`plan_id`)。如果后端架构下草稿 ID 与 `selectedTemplate` 不同,忽略返回值将导致后续更新和生成操作作用于错误的资源,引发数据错误。 ### 💡 建议(1个可选) 1. **apps/web/e2e/core-generation.spec.ts 第237行**:建议增加对响应体结构的更严格校验。 - **具体内容**:当前仅校验 `plan_id` 和 `generation_task_id` 存在。建议增加对 `plan_status` 的校验,确保生成任务已正确启动(例如状态为 `processing` 或 `pending`),以更准确地验证业务逻辑。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-21 10:34:07 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #671 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.