fix(ux): #1894 抖音提取前端不再拦截非http开头文本,透传后端400错误 #1972

Merged
auto-approve-bot merged 1 commits from fix/1894-douyin-extract-frontend-validation into develop 2026-09-17 10:01:32 +08:00
Owner

背景

后端在 _extract_url_from_text 已支持从任意分享文本(含抖音 App「复制链接」带的分享文案)自动提取 URL,但前端仍保留 ^https?:// 前缀校验,用户粘贴「8.88 复制打开抖音,看看【xxx的作品】... https://v.douyin.com/xxxxx/」这种典型 App 复制内容时,被 toast 拦截「请输入以 http(s):// 开头的完整链接」。

修复

  • 删除 handleDouyinExtract 里 if (!/^https?:\/\//i.test(url)) 这段前端前置校验
  • 提交时把用户粘贴的原文(trim 后)整体作为 {url} body 提交给 POST /api/v1/scripts/extract-from-douyin,由后端 _extract_url_from_text 识别
  • 后端 400(未找到有效链接/仅支持抖音域名/链接过期等)通过现有 extractErrMsg 解析 response.data.detail 直接 toast 透传,保留「抖音文案提取失败」作为网络错误兜底
  • 按钮/蒙层/关闭/TextArea disabled 已由 #1965 实现(confirmLoading={douyinLoading} + closable={!douyinLoading} + maskClosable={!douyinLoading}),loading 中无法重复点击;loading 文案开头补「提取中,」更明确
  • 弹窗说明文字 + placeholder 更新:告诉用户直接粘贴 App 分享文案即可,不用手清文案
  • 空输入提示由「请粘贴抖音视频链接」改为「请粘贴抖音视频链接或分享文案」

验证

  • 本地:空内容/纯文案/含链接分享文本三种输入路径逻辑验证
  • CI Lint / Unit / Build / Integration 全绿
  • staging:粘贴抖音 App「复制链接」整段文案(含文字+链接),点「开始提取」→ 成功提取文案
  • staging:粘贴不包含抖音链接的文本(如「今天天气真好」)→ 后端 400「未找到有效抖音链接」toast 正确展示

Refs: #1894

## 背景 后端在 `_extract_url_from_text` 已支持从任意分享文本(含抖音 App「复制链接」带的分享文案)自动提取 URL,但前端仍保留 `^https?://` 前缀校验,用户粘贴「8.88 复制打开抖音,看看【xxx的作品】... https://v.douyin.com/xxxxx/」这种典型 App 复制内容时,被 toast 拦截「请输入以 http(s):// 开头的完整链接」。 ## 修复 - [x] 删除 `handleDouyinExtract` 里 `if (!/^https?:\/\//i.test(url))` 这段前端前置校验 - [x] 提交时把用户粘贴的原文(trim 后)整体作为 `{url}` body 提交给 `POST /api/v1/scripts/extract-from-douyin`,由后端 `_extract_url_from_text` 识别 - [x] 后端 400(未找到有效链接/仅支持抖音域名/链接过期等)通过现有 `extractErrMsg` 解析 `response.data.detail` 直接 toast 透传,保留「抖音文案提取失败」作为网络错误兜底 - [x] 按钮/蒙层/关闭/TextArea disabled 已由 #1965 实现(`confirmLoading={douyinLoading}` + `closable={!douyinLoading}` + `maskClosable={!douyinLoading}`),loading 中无法重复点击;loading 文案开头补「提取中,」更明确 - [x] 弹窗说明文字 + placeholder 更新:告诉用户直接粘贴 App 分享文案即可,不用手清文案 - [x] 空输入提示由「请粘贴抖音视频链接」改为「请粘贴抖音视频链接或分享文案」 ## 验证 - [x] 本地:空内容/纯文案/含链接分享文本三种输入路径逻辑验证 - [ ] CI Lint / Unit / Build / Integration 全绿 - [ ] staging:粘贴抖音 App「复制链接」整段文案(含文字+链接),点「开始提取」→ 成功提取文案 - [ ] staging:粘贴不包含抖音链接的文本(如「今天天气真好」)→ 后端 400「未找到有效抖音链接」toast 正确展示 Refs: #1894
xiaoxia added 1 commit 2026-09-17 09:52:49 +08:00
fix(ux): #1894 抖音提取前端不再拦截非http开头文本,透传后端400错误
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 0s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
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 / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker 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 / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m20s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m25s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m37s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m36s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m52s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 3m18s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 3m41s
AI Code Review / AI Code Review (pull_request) Successful in 6m31s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 8m2s
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 / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 7m17s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 3m22s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 3m21s
1fc463ee17
后端已通过 _extract_url_from_text 支持从任意分享文本(含App「复制链接」
带的文案)自动提取URL,前端不应再做 ^https?:// 前缀校验。

修复:
- ScriptLibrary.handleDouyinExtract: 删除 http(s):// 前缀正则校验,把
  用户粘贴的原文(trim 后)整体作为 {url} 提交给 POST /scripts/extract-from-douyin,
  由后端 _extract_url_from_text 负责 URL 识别/校验。
- 后端返回 400(未找到有效链接/仅支持抖音域名等)时,extractErrMsg 已能
  解析 response.data.detail,直接 toast.error 透传后端文案;保持通用
  fallback「抖音文案提取失败」兜底。
- 空输入提示由「请粘贴抖音视频链接」改为「请粘贴抖音视频链接或分享文案」。
- 弹窗说明文字 + TextArea placeholder 更新,提示用户直接粘贴 App「复制链接」
  全部内容即可(包含分享文案+短链)。
- loading 态提示文案开头加「提取中,」,confirmLoading/closable/maskClosable/
  TextArea disabled 已由 #1965 完成,无需额外修改即可防重复点击。

Refs: #1894
auto-approve-bot approved these changes 2026-09-17 09:54:15 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-09-17 09:54:15 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1972 | | 预览链接 | [https://pr-1972.preview.xiaoxiajianji.com](https://pr-1972.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot merged commit b2ba78c16c into develop 2026-09-17 10:01:32 +08:00
auto-approve-bot deleted branch fix/1894-douyin-extract-frontend-validation 2026-09-17 10:01:35 +08:00

🗑️ 预览环境已清理

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

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

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