
=== 2026-05-07 14:40:59 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-144059-fe50f0 --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-144059-fe50f0' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-144059-fe50f0.yaml
[   INFO   ] MusicExtractorSVM: no classifier models were configured by default
[   INFO   ] On connection Flux::flux → IIR::signal:
[   INFO   ] BUFFER SIZE MISMATCH: max=0 - asked for read size 4096
[   INFO   ] resizing buffer to 36040/4505
[   INFO   ] FrameCutter: dropping incomplete frame
/usr/local/lib/python3.13/dist-packages/scipy/cluster/hierarchy.py:810: ClusterWarning: The symmetric non-negative hollow observation matrix looks suspiciously like an uncondensed distance matrix
  return linkage(y, method='ward', metric='euclidean')

======================================================================
music-pipeline3000 v2 | 5 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[14:41:01] 🏥 Health check...
[14:41:02] ✅ qishui: OK
[14:41:02] ✅ netease: OK
[14:41:02] ✅ qq: OK

[14:41:02] 🔍 [01_站在草原望北京_20260507] Step 0: Fetching...
[14:41:02] 🔍 [02_乌兰巴托的夜_20260507] Step 0: Fetching...
[14:41:02] 🔍 [03_我的楼兰_20260507] Step 0: Fetching...
[14:41:02] 🔍 [04_孤独的牧羊人_20260507] Step 0: Fetching...
[14:41:02] 🔍 [05_鸿雁_20260507] Step 0: Fetching...
[14:41:05] ✅ [02_乌兰巴托的夜_20260507] Step 0: netease | 257c lyrics
[14:41:05] ⬇️  [02_乌兰巴托的夜_20260507] Step 0.5: Download from netease...
[14:41:06] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[14:41:06] 🔄 [01_站在草原望北京_20260507] Step 0: retry 1/2 in 5s...
[14:41:06] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[14:41:06] 🔄 [03_我的楼兰_20260507] Step 0: retry 1/2 in 5s...
[14:41:08] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[14:41:08] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 1/2 in 5s...
[14:41:08] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[14:41:08] 🔄 [05_鸿雁_20260507] Step 0: retry 1/2 in 5s...
[14:41:10] ✅ [02_乌兰巴托的夜_20260507] Step 0.5: 3862611 bytes | 181.6s
[14:41:10] 🔬 [02_乌兰巴托的夜_20260507] Step 0.75: Audio features...
[14:41:14] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[14:41:14] 🔄 [03_我的楼兰_20260507] Step 0: retry 2/2 in 10s...
[14:41:14] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[14:41:14] 🔄 [01_站在草原望北京_20260507] Step 0: retry 2/2 in 10s...
[14:41:19] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[14:41:19] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 2/2 in 10s...
[14:41:19] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[14:41:19] 🔄 [05_鸿雁_20260507] Step 0: retry 2/2 in 10s...
[14:41:27] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[14:41:27] ❌ [03_我的楼兰_20260507] Step 0: No audio URL
[14:41:27] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[14:41:27] ❌ [01_站在草原望北京_20260507] Step 0: No audio URL
[14:41:32] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[14:41:32] ❌ [04_孤独的牧羊人_20260507] Step 0: No audio URL
[14:41:32] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[14:41:32] ❌ [05_鸿雁_20260507] Step 0: No audio URL
[14:41:38] ✅ [02_乌兰巴托的夜_20260507] Step 0.75: BPM=114.75 Key=C minor (27.7s)
[14:41:38] 🧠 [02_乌兰巴托的夜_20260507] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-07T06:41:38.536Z", "trace_id": "batch-20260507-144059-fe50f0", "song_key": "02_乌兰巴托的夜_20260507", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/02_乌兰巴托的夜_20260507/song_pgc.mp3", "has_features": true}}
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  📊 Gemini official: 44s | prompt_tokens=9120 completion=1093
{"__trace__": true, "ts": "2026-05-07T06:42:28.294Z", "trace_id": "batch-20260507-144059-fe50f0", "song_key": "02_乌兰巴托的夜_20260507", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 43.8, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-07T06:42:28.296Z", "trace_id": "batch-20260507-144059-fe50f0", "song_key": "02_乌兰巴托的夜_20260507", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 49.76}
[14:42:28] ✅ [02_乌兰巴托的夜_20260507] Step 1: 43.8s | prompt=967c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 86s (1.4min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 4
[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +0 新增, ~0 更新 | 总计 626 首
[exit 0]

=== 2026-05-07 14:42:29 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 --profile __runtime_batch-20260507-144059-fe50f0 --resume-mode each --skip-feishu ===
[phase2] batch=batch-20260507-144059-fe50f0 pending=1 groups=1
[phase2] group 1/1 -> 02_乌兰巴托的夜_20260507
[profile] ✅ Loaded profile '__runtime_batch-20260507-144059-fe50f0' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-144059-fe50f0.yaml
[phase2] 🌐 02_乌兰巴托的夜_20260507: target_language=auto
[phase2] resume -> /usr/bin/python3 /srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 --profile __runtime_batch-20260507-144059-fe50f0 --skip-feishu
[14:42:29] 🌐 [02_乌兰巴托的夜_20260507] Step 2: target_language=auto → lang_mode=AUTO
[14:42:29] 🤖 [02_乌兰巴托的夜_20260507] Step 2 API: 13481 chars ≈ 3370 tokens → claude-sonnet-4-6
[14:42:53] ⚠️  [02_乌兰巴托的夜_20260507] Step 2 API attempt 1: JSON parse error: Invalid \escape: line 5 column 2811 (char 3854)
[14:43:16] ⚠️  [02_乌兰巴托的夜_20260507] Step 2 API: originality 79% < 85% | 1 copied phrases
          ❗ "; clean sub-bass follows the root notes; sparse, clean electric guitar arpeggios add harmonic texture)" ~ "; clean sub-bass follows the root notes; sparse, clean electric guitar arpeggios add harmonic texture)" (100%)
[14:43:16] 🔄 [02_乌兰巴托的夜_20260507] Step 2 API: originality retry 1/3...
[14:43:43] ⚠️  [02_乌兰巴托的夜_20260507] Step 2 API originality retry 1 failed: Expecting value: line 1 column 1 (char 0)
[14:43:43] ⚠️  [02_乌兰巴托的夜_20260507] Step 2 API: best originality 79% after 3 retries
[14:43:43] ✅ [02_乌兰巴托的夜_20260507] Step 2 API: 《草原没有留下我》 | 23.1s | in=9727 out=1920 | ~$0.058
{"timestamp": "2026-05-07T14:42:29.452079+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0", "profile": "__runtime_batch-20260507-144059-fe50f0", "concurrency": 3, "resume_mode": "each", "pending_song_count": 1, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/02_乌兰巴托的夜_20260507"], "success_count": 1, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/02_乌兰巴托的夜_20260507", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/02_乌兰巴托的夜_20260507/step2_json_b.json", "agent_summary": "API direct: 草原没有留下我", "returncode": 0, "stderr": "", "attempt": 1, "attempts": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/02_乌兰巴托的夜_20260507", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/02_乌兰巴托的夜_20260507/step2_json_b.json", "agent_summary": "API direct: 草原没有留下我", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "resume": {"status": "success", "returncode": 0, "stdout_tail": "\n======================================================================\nmusic-pipeline3000 v2 | 5 songs\n======================================================================\nGemini concurrency: 2 | Suno concurrency: 3\nOutput: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[14:43:45] 🏥 Health check...\n[14:43:46] ✅ qishui: OK\n[14:43:46] ✅ netease: OK\n[14:43:46] ✅ qq: OK\n\n[14:43:46] 🔍 [01_站在草原望北京_20260507] Step 0: Fetching...\n[14:43:46] 🔍 [03_我的楼兰_20260507] Step 0: Fetching...\n[14:43:46] 🔍 [04_孤独的牧羊人_20260507] Step 0: Fetching...\n[14:43:46] 🔍 [05_鸿雁_20260507] Step 0: Fetching...\n  📝 [02_乌兰巴托的夜_20260507] lyrics stripped: 3068c → 3063c\n[14:43:46] 🎵 [02_乌兰巴托的夜_20260507] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[14:43:46] 🎨 [02_乌兰巴托的夜_20260507] Step 4: SeeDream cover (parallel)...\n  ✅ submitted: ['fb10453a', '882cc37b']\n  🎵 fb10453a... → submitted\n  🎵 882cc37b... → submitted\n[14:43:49] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license\n[14:43:49] 🔄 [01_站在草原望北京_20260507] Step 0: retry 1/2 in 5s...\n[14:43:50] ⚠️  [netease] No audio URL for '我的楼兰', likely no license\n[14:43:50] 🔄 [03_我的楼兰_20260507] Step 0: retry 1/2 in 5s...\n[14:43:50] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license\n[14:43:50] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 1/2 in 5s...\n[14:43:52] ⚠️  [netease] No audio URL for '鸿雁', likely no license\n[14:43:52] 🔄 [05_鸿雁_20260507] Step 0: retry 1/2 in 5s...\n[14:43:58] ⚠️  [netease] No audio URL for '我的楼兰', likely no license\n[14:43:58] 🔄 [03_我的楼兰_20260507] Step 0: retry 2/2 in 10s...\n[14:43:58] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license\n[14:43:58] 🔄 [01_站在草原望北京_20260507] Step 0: retry 2/2 in 10s...\n[14:43:58] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license\n[14:43:58] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 2/2 in 10s...\n  🎵 fb10453a... → queued\n  🎵 882cc37b... → queued\n[14:44:00] ⚠️  [netease] No audio URL for '鸿雁', likely no license\n[14:44:00] 🔄 [05_鸿雁_20260507] Step 0: retry 2/2 in 10s...\n  🎵 fb10453a... → streaming\n  🎵 882cc37b... → streaming\n[14:44:10] ⚠️  [netease] No audio URL for '我的楼兰', likely no license\n[14:44:10] ❌ [03_我的楼兰_20260507] Step 0: No audio URL\n[14:44:11] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license\n[14:44:11] ❌ [04_孤独的牧羊人_20260507] Step 0: No audio URL\n[14:44:11] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license\n[14:44:11] ❌ [01_站在草原望北京_20260507] Step 0: No audio URL\n[14:44:13] ⚠️  [netease] No audio URL for '鸿雁', likely no license\n[14:44:13] ❌ [05_鸿雁_20260507] Step 0: No audio URL\n  🎵 fb10453a... → complete\n  🎵 882cc37b... → complete\n[14:46:43]    🎧 [02_乌兰巴托的夜_20260507] Song 1: https://cdn1.suno.ai/fb10453a-dbd5-4ace-af3e-3bfad573cdf3.mp3\n[14:46:43]    🎧 [02_乌兰巴托的夜_20260507] Song 2: https://cdn1.suno.ai/882cc37b-5a53-4754-a5ad-7c53ecb93ff4.mp3\n[14:46:43] 🎛️ [02_乌兰巴托的夜_20260507] Step 3.5: 混音...\n[14:47:04]    🎚️ [02_乌兰巴托的夜_20260507] Song 1: pop | 低38/中60/高1%\n[14:47:20]    🎚️ [02_乌兰巴托的夜_20260507] Song 2: pop | 低39/中57/高3%\n[14:47:20] ✅ [02_乌兰巴托的夜_20260507] Step 3.5: 37.2s | 2 songs mixed\n[14:47:20] ⚠️  [02_乌兰巴托的夜_20260507] Step 4: http_403 (non-fatal)\n\n======================================================================\nSUMMARY | 214s (3.6min)\n======================================================================\n✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 4\n[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +1 新增, ~0 更新 | 总计 631 首\n", "stderr_tail": "[profile] ✅ Loaded profile '__runtime_batch-20260507-144059-fe50f0' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-144059-fe50f0.yaml\n", "summary": {"timestamp": "2026-05-07T14:47:20.535958+08:00", "wall_clock": 213.6, "total": 5, "success": 1, "awaiting_step2": 0, "failed": 4}}, "status": "success"}
[exit 0]

=== 2026-05-07 14:47:21 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/LI72sFv2rhHjOKttv5wcDLV8nJg
[Feishu] 📐 Expanded master sheet from 571 to 672 rows
[Feishu] ✅ Appended 1 new songs to master sheet (rows 572-572)
[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +1 新增, ~0 更新 | 总计 572 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/LI72sFv2rhHj
[14:47:30] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [草原没有留下我] topic head sent (message_id=om_x100b50f716fc2490b32e15007c33cd9)
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V1_raw.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V1_mixed.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V2_raw.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V2_mixed.mp3 replied
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260507-144059-fe50f0
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0

📊 https://ccnu62373cgc.feishu.cn/sheets/LI72sFv2rhHjOKttv5wcDLV8nJg
[exit 0]

=== 2026-05-07 14:56:38 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-144059-fe50f0 --resume /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-144059-fe50f0' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-144059-fe50f0.yaml

======================================================================
music-pipeline3000 v2 | 5 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[14:56:40] 🏥 Health check...
[14:56:41] ✅ qishui: OK
[14:56:41] ✅ netease: OK
[14:56:41] ✅ qq: OK

[14:56:41] 🔍 [01_站在草原望北京_20260507] Step 0: Fetching...
[14:56:41] ⏭️  [02_乌兰巴托的夜_20260507] Already complete, skipping
[14:56:41] 🔍 [03_我的楼兰_20260507] Step 0: Fetching...
[14:56:41] 🔍 [04_孤独的牧羊人_20260507] Step 0: Fetching...
[14:56:41] 🔍 [05_鸿雁_20260507] Step 0: Fetching...
[14:56:44] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[14:56:44] 🔄 [01_站在草原望北京_20260507] Step 0: retry 1/2 in 5s...
[14:56:44] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[14:56:44] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 1/2 in 5s...
[14:56:44] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[14:56:44] 🔄 [03_我的楼兰_20260507] Step 0: retry 1/2 in 5s...
[14:56:47] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[14:56:47] 🔄 [05_鸿雁_20260507] Step 0: retry 1/2 in 5s...
[14:56:52] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[14:56:52] 🔄 [01_站在草原望北京_20260507] Step 0: retry 2/2 in 10s...
[14:56:52] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[14:56:52] 🔄 [03_我的楼兰_20260507] Step 0: retry 2/2 in 10s...
[14:56:52] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[14:56:52] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 2/2 in 10s...
[14:56:55] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[14:56:55] 🔄 [05_鸿雁_20260507] Step 0: retry 2/2 in 10s...
[14:57:04] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[14:57:04] ❌ [01_站在草原望北京_20260507] Step 0: No audio URL
[14:57:05] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[14:57:05] ❌ [03_我的楼兰_20260507] Step 0: No audio URL
[14:57:05] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[14:57:05] ❌ [04_孤独的牧羊人_20260507] Step 0: No audio URL
[14:57:08] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[14:57:08] ❌ [05_鸿雁_20260507] Step 0: No audio URL

======================================================================
SUMMARY | 27s (0.4min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 4
[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +0 新增, ~1 更新 | 总计 633 首
[exit 0]

=== 2026-05-07 14:57:08 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/HjKUsXU1XhJlMotVLcqccnFGnuh
[Feishu] ⏭️  Skip duplicate (complete): 乌兰巴托的夜 (https://fileserver.yuchenhu.com/pipeline/batch-20260507-144059-fe50f0/02_%E4%B9%8C%E5%85%B0%E5%B7%B4%E6%89%98%E7%9A%84%E5%A4%9C_20260507/song_pgc.mp3)
[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +0 新增, ~0 更新 | 总计 574 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/HjKUsXU1XhJl
[14:57:16] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [草原没有留下我] topic head sent (message_id=om_x100b50f732014d3cb309c1723946863)
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V1_raw.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V1_mixed.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V2_raw.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V2_mixed.mp3 replied
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260507-144059-fe50f0
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0

📊 https://ccnu62373cgc.feishu.cn/sheets/HjKUsXU1XhJlMotVLcqccnFGnuh
[exit 0]

=== 2026-05-07 14:58:46 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-144059-fe50f0 --resume /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-144059-fe50f0' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-144059-fe50f0.yaml

======================================================================
music-pipeline3000 v2 | 5 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[14:58:48] 🏥 Health check...
[14:58:50] ✅ qishui: OK
[14:58:50] ✅ netease: OK
[14:58:50] ✅ qq: OK

[14:58:50] 🔍 [01_站在草原望北京_20260507] Step 0: Fetching...
[14:58:50] ⏭️  [02_乌兰巴托的夜_20260507] Already complete, skipping
[14:58:50] 🔍 [03_我的楼兰_20260507] Step 0: Fetching...
[14:58:50] 🔍 [04_孤独的牧羊人_20260507] Step 0: Fetching...
[14:58:50] 🔍 [05_鸿雁_20260507] Step 0: Fetching...
[14:58:53] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[14:58:53] 🔄 [01_站在草原望北京_20260507] Step 0: retry 1/2 in 5s...
[14:58:53] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[14:58:53] 🔄 [03_我的楼兰_20260507] Step 0: retry 1/2 in 5s...
[14:58:53] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[14:58:53] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 1/2 in 5s...
[14:58:55] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[14:58:55] 🔄 [05_鸿雁_20260507] Step 0: retry 1/2 in 5s...
[14:59:01] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[14:59:01] 🔄 [03_我的楼兰_20260507] Step 0: retry 2/2 in 10s...
[14:59:01] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[14:59:01] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 2/2 in 10s...
[14:59:01] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[14:59:01] 🔄 [01_站在草原望北京_20260507] Step 0: retry 2/2 in 10s...
[14:59:04] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[14:59:04] 🔄 [05_鸿雁_20260507] Step 0: retry 2/2 in 10s...
[14:59:14] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[14:59:14] ❌ [03_我的楼兰_20260507] Step 0: No audio URL
[14:59:14] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[14:59:14] ❌ [01_站在草原望北京_20260507] Step 0: No audio URL
[14:59:14] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[14:59:14] ❌ [04_孤独的牧羊人_20260507] Step 0: No audio URL
[14:59:16] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[14:59:16] ❌ [05_鸿雁_20260507] Step 0: No audio URL

======================================================================
SUMMARY | 26s (0.4min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 4
[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +0 新增, ~1 更新 | 总计 634 首
[exit 0]

=== 2026-05-07 14:59:17 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 ===

=== 2026-05-07 14:59:48 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-144059-fe50f0 --resume /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-144059-fe50f0' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-144059-fe50f0.yaml

======================================================================
music-pipeline3000 v2 | 5 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[14:59:49] 🏥 Health check...
[14:59:51] ✅ qishui: OK
[14:59:51] ✅ netease: OK
[14:59:51] ✅ qq: OK

[14:59:51] 🔍 [01_站在草原望北京_20260507] Step 0: Fetching...
[14:59:51] ⏭️  [02_乌兰巴托的夜_20260507] Already complete, skipping
[14:59:51] 🔍 [03_我的楼兰_20260507] Step 0: Fetching...
[14:59:51] 🔍 [04_孤独的牧羊人_20260507] Step 0: Fetching...
[14:59:51] 🔍 [05_鸿雁_20260507] Step 0: Fetching...
[14:59:55] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[14:59:55] 🔄 [03_我的楼兰_20260507] Step 0: retry 1/2 in 5s...
[14:59:55] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[14:59:55] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 1/2 in 5s...
[14:59:55] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[14:59:55] 🔄 [01_站在草原望北京_20260507] Step 0: retry 1/2 in 5s...
[14:59:57] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[14:59:57] 🔄 [05_鸿雁_20260507] Step 0: retry 1/2 in 5s...
[15:00:02] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[15:00:02] 🔄 [03_我的楼兰_20260507] Step 0: retry 2/2 in 10s...
[15:00:03] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[15:00:03] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 2/2 in 10s...
[15:00:03] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[15:00:03] 🔄 [01_站在草原望北京_20260507] Step 0: retry 2/2 in 10s...
[15:00:05] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[15:00:05] 🔄 [05_鸿雁_20260507] Step 0: retry 2/2 in 10s...
[15:00:15] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[15:00:15] ❌ [04_孤独的牧羊人_20260507] Step 0: No audio URL
[15:00:15] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[15:00:15] ❌ [03_我的楼兰_20260507] Step 0: No audio URL
[15:00:16] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[15:00:16] ❌ [01_站在草原望北京_20260507] Step 0: No audio URL
[15:00:18] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[15:00:18] ❌ [05_鸿雁_20260507] Step 0: No audio URL

======================================================================
SUMMARY | 27s (0.4min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 4
[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +0 新增, ~1 更新 | 总计 634 首
[exit 0]

=== 2026-05-07 15:00:18 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/XujAsLSoHh5pgLtZDDocA4abnsk
[Feishu] ⏭️  Skip duplicate (complete): 乌兰巴托的夜 (https://fileserver.yuchenhu.com/pipeline/batch-20260507-144059-fe50f0/02_%E4%B9%8C%E5%85%B0%E5%B7%B4%E6%89%98%E7%9A%84%E5%A4%9C_20260507/song_pgc.mp3)
[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +0 新增, ~0 更新 | 总计 575 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/XujAsLSoHh5p
[14:59:24] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [草原没有留下我] topic head sent (message_id=om_x100b50f7ca04ccb8b481c9ace3cfc49)
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V1_raw.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V1_mixed.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V2_raw.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V2_mixed.mp3 replied
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0
[Feishu] ⚠️  GDrive archive failed: [Errno 2] No such file or directory: PosixPath('/mnt/gdrive/music-pipeline/batch-20260507-144059-fe50f0')
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0

📊 https://ccnu62373cgc.feishu.cn/sheets/XujAsLSoHh5pgLtZDDocA4abnsk
[exit 0]

=== 2026-05-07 15:01:59 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-144059-fe50f0 --resume /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-144059-fe50f0' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-144059-fe50f0.yaml

======================================================================
music-pipeline3000 v2 | 5 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:02:01] 🏥 Health check...
[15:02:02] ✅ qishui: OK
[15:02:02] ✅ netease: OK
[15:02:02] ✅ qq: OK

[15:02:02] 🔍 [01_站在草原望北京_20260507] Step 0: Fetching...
[15:02:02] ⏭️  [02_乌兰巴托的夜_20260507] Already complete, skipping
[15:02:02] 🔍 [03_我的楼兰_20260507] Step 0: Fetching...
[15:02:02] 🔍 [04_孤独的牧羊人_20260507] Step 0: Fetching...
[15:02:02] 🔍 [05_鸿雁_20260507] Step 0: Fetching...
[15:02:05] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[15:02:05] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 1/2 in 5s...
[15:02:05] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[15:02:05] 🔄 [01_站在草原望北京_20260507] Step 0: retry 1/2 in 5s...
[15:02:06] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[15:02:06] 🔄 [03_我的楼兰_20260507] Step 0: retry 1/2 in 5s...
[15:02:08] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[15:02:08] 🔄 [05_鸿雁_20260507] Step 0: retry 1/2 in 5s...
[15:02:13] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[15:02:13] 🔄 [04_孤独的牧羊人_20260507] Step 0: retry 2/2 in 10s...
[15:02:13] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[15:02:13] 🔄 [01_站在草原望北京_20260507] Step 0: retry 2/2 in 10s...
[15:02:13] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[15:02:13] 🔄 [03_我的楼兰_20260507] Step 0: retry 2/2 in 10s...
[15:02:16] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[15:02:16] 🔄 [05_鸿雁_20260507] Step 0: retry 2/2 in 10s...
[15:02:26] ⚠️  [netease] No audio URL for '站在草原望北京', likely no license
[15:02:26] ❌ [01_站在草原望北京_20260507] Step 0: No audio URL
[15:02:26] ⚠️  [netease] No audio URL for '我的楼兰', likely no license
[15:02:26] ❌ [03_我的楼兰_20260507] Step 0: No audio URL
[15:02:26] ⚠️  [netease] No audio URL for '孤独的牧羊人', likely no license
[15:02:26] ❌ [04_孤独的牧羊人_20260507] Step 0: No audio URL
[15:02:28] ⚠️  [netease] No audio URL for '鸿雁', likely no license
[15:02:28] ❌ [05_鸿雁_20260507] Step 0: No audio URL

======================================================================
SUMMARY | 26s (0.4min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 4
[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +0 新增, ~1 更新 | 总计 634 首
[exit 0]

=== 2026-05-07 15:02:29 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0 ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/KEUns3JNAh60fPtUuKuc7jIynEf
[Feishu] ⏭️  Skip duplicate (complete): 乌兰巴托的夜 (https://fileserver.yuchenhu.com/pipeline/batch-20260507-144059-fe50f0/02_%E4%B9%8C%E5%85%B0%E5%B7%B4%E6%89%98%E7%9A%84%E5%A4%9C_20260507/song_pgc.mp3)
[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +0 新增, ~0 更新 | 总计 575 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/KEUns3JNAh60
[15:00:26] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [草原没有留下我] topic head sent (message_id=om_x100b50f7c679a094b28a713aed44f33)
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V1_raw.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V1_mixed.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V2_raw.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V2_mixed.mp3 replied
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260507-144059-fe50f0
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0

📊 https://ccnu62373cgc.feishu.cn/sheets/KEUns3JNAh60fPtUuKuc7jIynEf
[exit 0]
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/ZQa0sMJREhLroXtqobucTaICnBh
[Feishu] ⏭️  Skip duplicate (complete): 乌兰巴托的夜 (https://fileserver.yuchenhu.com/pipeline/batch-20260507-144059-fe50f0/02_%E4%B9%8C%E5%85%B0%E5%B7%B4%E6%89%98%E7%9A%84%E5%A4%9C_20260507/song_pgc.mp3)
[MasterDB] ✅ 批次 batch-20260507-144059-fe50f0 → +0 新增, ~0 更新 | 总计 575 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/ZQa0sMJREhLr
[15:02:37] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [草原没有留下我] topic head sent (message_id=om_x100b50f7de28ac9cb3cbe88e6996f78)
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V1_raw.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V1_mixed.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V2_raw.mp3 replied
[Feishu IM] ✅ [草原没有留下我] 草原没有留下我_V2_mixed.mp3 replied
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260507-144059-fe50f0
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260507-144059-fe50f0

📊 https://ccnu62373cgc.feishu.cn/sheets/ZQa0sMJREhLroXtqobucTaICnBh
[exit 0]
