fix: #1800 批量生成进度卡片布局 + #1893 文案库 AI 入口 UX 细节 #1937

Merged
xiaoxia merged 6 commits from fix/1800-1893-ux into develop 2026-09-15 23:31:33 +08:00
Owner

概述

一个小 PR 同时修两处 UI/UX 问题:

1. #1800 批量生成进度卡片列宽过窄、标题与进度条重叠

根因:

  • generate.css 里 .xx-batch-gen-grid 默认 minmax(160px, 180px),但组件 JSX 用 inline style 硬编码 minmax(280px, 320px),两套规则冲突;inline 赢,但 .xx-batch-gen-card 没有 width:100%。
  • 卡片标题是单个 <span> 同时承载图标和文本,缺少 flex:1 / min-width:0 触发 ellipsis,长标题横向溢出到相邻卡片的进度条区域,造成"重叠"视觉。

修复:

  • 移除 inline gridTemplateColumns 和卡片 maxWidth: 320,把 grid 规则统一放到 CSS:
    • 列宽改为 repeat(auto-fill, minmax(300px, 360px)),大屏多列时更宽松;
    • justify-items: stretch + 卡片 width:100%; box-sizing:border-box,卡片自动撑满列宽;
  • 标题拆成两个 span:图标(xx-batch-gen-card-icon flex-shrink:0)+ 文本(xx-batch-gen-card-title-text flex:1;min-width:0;ellipsis;nowrap),父级 flex 容器也加 min-width:0 保证 ellipsis 生效;
  • 窄屏单列上限从 320px 同步放宽到 360px。

2. #1893 文案库 AI 入口 UX 细节

  • 「AI 生成标题」按钮 disabled 时 hover 没提示: antd Button 在 disabled 状态下吞掉原生 title,改为 <Tooltip><span><Button/></span></Tooltip> 包裹;
  • 「AI 改写」按钮 content 为空时仍可点: 改为 disabled={contentEmpty} + Tooltip,和标题按钮一致;loading 时也禁用;
  • 改写结果二次打开残留旧内容: 打开弹窗时 setRewriteResult(null) 清空;
  • 改写 loading 时还能关弹窗: 改为 maskClosable={!rewriteLoading} closable={!rewriteLoading} + onCancel 判断,和抖音提取弹窗一致;footer「关闭」按钮 loading 时 disabled;
  • 风格 Select 在改写中可切换: 加 disabled={rewriteLoading}。

不改

  • AI 三接口仍然走真实 API,CRUD 仍走 SCRIPTS_API_MOCK=true,未动 CRUD 逻辑;
  • 未改 AI Rewrite 风格枚举、默认值、接口超时;
  • 未改批量生成轮询/数据结构,仅调整卡片外层布局和标题 DOM。

验收

  • 批量生成 3+ 视频,长标题不再与进度条/相邻卡片重叠,显示省略号;
  • 窗口 1280/1440/1920 下卡片列数自动适配;<960px 单列居中;
  • content 为空时「AI 改写」「AI 生成标题」按钮均 disabled,悬停有提示;
  • 改写 loading 时弹窗无法通过 mask/X/Esc 关闭;
  • 抖音提取弹窗行为保持不变。
## 概述 一个小 PR 同时修两处 UI/UX 问题: ### 1. #1800 批量生成进度卡片列宽过窄、标题与进度条重叠 **根因:** - `generate.css` 里 `.xx-batch-gen-grid` 默认 `minmax(160px, 180px)`,但组件 JSX 用 inline style 硬编码 `minmax(280px, 320px)`,两套规则冲突;inline 赢,但 `.xx-batch-gen-card` 没有 `width:100%`。 - 卡片标题是单个 `<span>` 同时承载图标和文本,缺少 `flex:1 / min-width:0` 触发 ellipsis,长标题横向溢出到相邻卡片的进度条区域,造成"重叠"视觉。 **修复:** - 移除 inline `gridTemplateColumns` 和卡片 `maxWidth: 320`,把 grid 规则统一放到 CSS: - 列宽改为 `repeat(auto-fill, minmax(300px, 360px))`,大屏多列时更宽松; - `justify-items: stretch` + 卡片 `width:100%; box-sizing:border-box`,卡片自动撑满列宽; - 标题拆成两个 span:图标(`xx-batch-gen-card-icon flex-shrink:0`)+ 文本(`xx-batch-gen-card-title-text flex:1;min-width:0;ellipsis;nowrap`),父级 flex 容器也加 `min-width:0` 保证 ellipsis 生效; - 窄屏单列上限从 320px 同步放宽到 360px。 ### 2. #1893 文案库 AI 入口 UX 细节 - **「AI 生成标题」按钮 disabled 时 hover 没提示:** antd Button 在 `disabled` 状态下吞掉原生 `title`,改为 `<Tooltip><span><Button/></span></Tooltip>` 包裹; - **「AI 改写」按钮 content 为空时仍可点:** 改为 `disabled={contentEmpty}` + Tooltip,和标题按钮一致;loading 时也禁用; - **改写结果二次打开残留旧内容:** 打开弹窗时 `setRewriteResult(null)` 清空; - **改写 loading 时还能关弹窗:** 改为 `maskClosable={!rewriteLoading} closable={!rewriteLoading}` + onCancel 判断,和抖音提取弹窗一致;footer「关闭」按钮 loading 时 disabled; - **风格 Select 在改写中可切换:** 加 `disabled={rewriteLoading}`。 ### 不改 - AI 三接口仍然走真实 API,CRUD 仍走 `SCRIPTS_API_MOCK=true`,未动 CRUD 逻辑; - 未改 AI Rewrite 风格枚举、默认值、接口超时; - 未改批量生成轮询/数据结构,仅调整卡片外层布局和标题 DOM。 ## 验收 - [x] 批量生成 3+ 视频,长标题不再与进度条/相邻卡片重叠,显示省略号; - [x] 窗口 1280/1440/1920 下卡片列数自动适配;<960px 单列居中; - [x] content 为空时「AI 改写」「AI 生成标题」按钮均 disabled,悬停有提示; - [x] 改写 loading 时弹窗无法通过 mask/X/Esc 关闭; - [x] 抖音提取弹窗行为保持不变。
xiaoxia added 3 commits 2026-09-15 18:51:24 +08:00
fix(scripts): #1893 AI 入口 UX 细节修复 - disabled 按钮用 Tooltip+span 包裹保证提示可见、content 为空时禁用改写按钮并重置旧结果、改写 loading 时禁关弹窗、风格选择 loading 禁用
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m22s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m31s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m45s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m46s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m21s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 3m24s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 3m23s
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m21s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 20h32m9s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 20h32m15s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 20h32m16s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Failing after 20h31m31s
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Failing after 20h31m32s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Failing after 20h31m32s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 20h31m35s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 20h31m35s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 20h31m39s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 20h31m23s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 20h31m23s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 20h31m34s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 20h31m35s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 20h31m23s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 20h31m35s
90a0d55c34
xiaoxia added 1 commit 2026-09-15 18:51:24 +08:00
fix(scripts): #1893 AI 入口 UX 细节修复 - disabled 按钮用 Tooltip+span 包裹保证提示可见、content 为空时禁用改写按钮并重置旧结果、改写 loading 时禁关弹窗、风格选择 loading 禁用
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m22s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m31s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m45s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m46s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m21s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 3m24s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 3m23s
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m21s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 20h32m9s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 20h32m15s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 20h32m16s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Failing after 20h31m31s
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Failing after 20h31m32s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Failing after 20h31m32s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 20h31m35s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 20h31m35s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 20h31m39s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 20h31m23s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 20h31m23s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 20h31m34s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 20h31m35s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 20h31m23s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 20h31m35s
90a0d55c34

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1937 | | 预览链接 | [https://pr-1937.preview.xiaoxiajianji.com](https://pr-1937.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-09-15 18:56:13 +08:00
fix(generate): #1800 批量进度卡片 - prettier
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 4s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 5s
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 1h59m53s
PR Automation / Auto Approve on CI Green (pull_request) Failing after 2h0m0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 20h27m23s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 20h26m40s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 20h26m42s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 20h26m46s
41831f2648
xiaoxia added 1 commit 2026-09-15 18:56:21 +08:00
fix(generate): #1800 CSS - prettier
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 5s
CI/CD Pipeline / Check push changed paths (pull_request) Waiting to run
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging E2E Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging API Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production API Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Web Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Worker Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Deploy Production (pull_request) Blocked by required conditions
CI/CD Pipeline / Production Browser E2E (pull_request) Blocked by required conditions
CI/CD Pipeline / ACR Image Cleanup (pull_request) Blocked by required conditions
CI/CD Pipeline / Canary Release to Production (pull_request) Blocked by required conditions
CI/CD Pipeline / CI Gate (pull_request) Blocked by required conditions
AI Code Review / AI Code Review (pull_request) Failing after 1h59m44s
8ea71581fe
xiaoxia added 1 commit 2026-09-15 18:56:31 +08:00
fix(scripts): #1893 UX - prettier
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 6s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 57s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m33s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m46s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 11m25s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 12m22s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 31m29s
CI/CD Pipeline / CI Gate (pull_request) Successful in 5s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m34s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 18h11m46s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Failing after 18h12m5s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 18h12m8s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 18h12m8s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 18h11m26s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 18h11m26s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 18h11m6s
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Failing after 18h11m23s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Failing after 18h11m24s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 18h11m26s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 18h11m26s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 18h11m26s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 17h1m53s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 17h15m26s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 17h15m27s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 17h15m27s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 17h1m52s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 18h11m4s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 18h11m3s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 20h26m22s
a73c1a4c83
xiaoxia merged commit ab90a5ec9f into develop 2026-09-15 23:31:33 +08:00

🗑️ 预览环境已清理

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

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

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