fix: 修复 AI Code Review 提出的3个阻塞问题
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 42s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 45s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m30s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m39s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m12s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m38s
AI Code Review / AI Code Review (pull_request) Failing after 4m37s
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit 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
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
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Failing after 956h28m40s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 956h28m46s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 956h28m50s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 956h29m9s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 956h29m11s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 956h30m10s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 956h30m12s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 956h32m17s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 956h32m21s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 957h2m9s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 957h5m40s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 42s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 45s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m30s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m39s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m12s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m38s
AI Code Review / AI Code Review (pull_request) Failing after 4m37s
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit 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
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
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Failing after 956h28m40s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 956h28m46s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 956h28m50s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 956h29m9s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 956h29m11s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 956h30m10s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 956h30m12s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 956h32m17s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 956h32m21s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 957h2m9s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 957h5m40s
1. 模式切换失效:使用复合 triggerKey (libraryId_mode) 替代单一 libraryId 模式切换时 key 变化会重新触发自动匹配 2. 闭包陷阱:将 handleSmartMatch 从 smartMatch 解构并加入依赖项 handleSmartMatch 由 useCallback 包装,引用稳定 3. 依赖粒度:materials.items 替代 materials.items.length 素材内容变化也能正确触发重新匹配
This commit is contained in:
@@ -36,19 +36,20 @@ export function useStep2Materials({
|
||||
|
||||
/* ── 自动触发智能匹配:选择视频库后自动调用 ── */
|
||||
const autoTriggeredRef = useRef<string>("")
|
||||
const { handleSmartMatch } = smartMatch
|
||||
useEffect(() => {
|
||||
// 仅在 auto 模式 + 素材加载完成后自动触发
|
||||
if (materialMode !== "auto") return
|
||||
if (!selectedLibraryId) return
|
||||
if (materialsLoading) return
|
||||
if (materials.items.length === 0) return
|
||||
// 防止同一视频库重复触发
|
||||
if (autoTriggeredRef.current === selectedLibraryId) return
|
||||
// 防止同一视频库+同一模式重复触发(模式切换时 key 变化会重新触发)
|
||||
const triggerKey = `${selectedLibraryId}_${materialMode}`
|
||||
if (autoTriggeredRef.current === triggerKey) return
|
||||
|
||||
autoTriggeredRef.current = selectedLibraryId
|
||||
smartMatch.handleSmartMatch()
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [selectedLibraryId, materialMode, materialsLoading, materials.items.length])
|
||||
autoTriggeredRef.current = triggerKey
|
||||
handleSmartMatch()
|
||||
}, [selectedLibraryId, materialMode, materialsLoading, materials.items, handleSmartMatch])
|
||||
|
||||
/* ── 手动选择素材 ── */
|
||||
const handleToggleMaterial = useCallback(
|
||||
|
||||
Reference in New Issue
Block a user