
=== 2026-05-27 15:05:38 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260527-150538-81d270 --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260527-150538-81d270' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260527-150538-81d270.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
[   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')
/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-20260527-150538-81d270
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[15:05:40] 🏥 Health check...
[15:05:41] ✅ qishui: OK
[15:05:41] ✅ netease: OK
[15:05:41] ✅ qq: OK

[15:05:41] 🔍 [01_萬象迎春_20260527] Step 0: Fetching...
[15:05:41] 🔍 [02_騰祥_20260527] Step 0: Fetching...
[15:05:41] 🔍 [03_春節同賀_20260527] Step 0: Fetching...
[15:05:41] 🔍 [04_Arrives Softly_20260527] Step 0: Fetching...
[15:05:41] 🔍 [05_Silent Warmth Before the First Day_20260527] Step 0: Fetching...
[15:05:44] ✅ [03_春節同賀_20260527] Step 0: netease | 53c lyrics
[15:05:44] ⬇️  [03_春節同賀_20260527] Step 0.5: Download from netease...
[15:05:44] ✅ [01_萬象迎春_20260527] Step 0: netease | 53c lyrics
[15:05:44] ⬇️  [01_萬象迎春_20260527] Step 0.5: Download from netease...
[15:05:44] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:05:44] 🔄 [02_騰祥_20260527] Step 0: retry 1/2 in 5s...
[15:05:46] ✅ [05_Silent Warmth Before the First Day_20260527] Step 0: netease | 53c lyrics
[15:05:46] ⬇️  [05_Silent Warmth Before the First Day_20260527] Step 0.5: Download from netease...
[15:05:46] ✅ [04_Arrives Softly_20260527] Step 0: netease | 53c lyrics
[15:05:46] ⬇️  [04_Arrives Softly_20260527] Step 0.5: Download from netease...
[15:05:50] ✅ [01_萬象迎春_20260527] Step 0.5: 2501771 bytes | 121.6s
[15:05:50] 🔬 [01_萬象迎春_20260527] Step 0.75: Audio features...
[15:05:52] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:05:52] 🔄 [02_騰祥_20260527] Step 0: retry 2/2 in 10s...
[15:05:57] ✅ [03_春節同賀_20260527] Step 0.5: 2647326 bytes | 132.0s
[15:05:57] 🔬 [03_春節同賀_20260527] Step 0.75: Audio features...
[15:05:57] ✅ [04_Arrives Softly_20260527] Step 0.5: 3527307 bytes | 187.8s
[15:05:57] 🔬 [04_Arrives Softly_20260527] Step 0.75: Audio features...
[15:06:03] ✅ [05_Silent Warmth Before the First Day_20260527] Step 0.5: 4873061 bytes | 250.5s
[15:06:03] 🔬 [05_Silent Warmth Before the First Day_20260527] Step 0.75: Audio features...
[15:06:05] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:06:05] ❌ [02_騰祥_20260527] Step 0: No audio URL
[15:06:17] ✅ [03_春節同賀_20260527] Step 0.75: BPM=100.02 Key=D major (19.3s)
[15:06:17] 🧠 [03_春節同賀_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:06:17.062Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/03_春節同賀_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.262
[15:06:17] ✅ [01_萬象迎春_20260527] Step 0.75: BPM=103.91 Key=D# major (26.9s)
[15:06:17] 🧠 [01_萬象迎春_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:06:17.508Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/01_萬象迎春_20260527/song_pgc.mp3", "has_features": true}}
[   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
[   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')
[15:06:50] ✅ [04_Arrives Softly_20260527] Step 0.75: BPM=142.06 Key=D# major (33.5s)
[15:06:50] 🧠 [04_Arrives Softly_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:06:50.641Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/04_Arrives Softly_20260527/song_pgc.mp3", "has_features": true}}
/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')
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
[15:06:56] ✅ [05_Silent Warmth Before the First Day_20260527] Step 0.75: BPM=89.99 Key=C# minor (38.8s)
[15:06:56] 🧠 [05_Silent Warmth Before the First Day_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:06:56.304Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/05_Silent Warmth Before the First Day_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.337
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:07:07.492Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.6, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:07:07.492Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 50.43}
[15:07:07] ❌ [03_春節同賀_20260527] Step 1: http_503 (0.6s)
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:07:12.697Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.9, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:07:12.697Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 55.189}
[15:07:12] ❌ [01_萬象迎春_20260527] Step 1: http_503 (0.9s)
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:07:24.159Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.7, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:07:24.159Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 33.517}
[15:07:24] ❌ [04_Arrives Softly_20260527] Step 1: http_503 (0.7s)
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:07:29.490Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.8, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:07:29.490Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 33.187}
[15:07:29] ❌ [05_Silent Warmth Before the First Day_20260527] Step 1: http_503 (0.8s)

======================================================================
SUMMARY | 108s (1.8min)
======================================================================
✅ Done: 0 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 5
[exit 0]

=== 2026-05-27 15:07:30 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 --profile __runtime_batch-20260527-150538-81d270 --resume-mode end --skip-feishu ===
{"timestamp": "2026-05-27T15:07:30.422030+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270", "profile": "__runtime_batch-20260527-150538-81d270", "concurrency": 3, "resume_mode": "end", "pending_song_count": 0, "groups": [], "status": "noop", "resume": null}
[exit 0]

=== 2026-05-27 15:07:30 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 ===
[Feishu] No successful songs to export.
[exit 0]

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

======================================================================
music-pipeline3000 v2 | 5 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:07:58] 🏥 Health check...
[15:08:00] ✅ qishui: OK
[15:08:00] ✅ netease: OK
[15:08:00] ✅ qq: OK

[15:08:00] 🧠 [01_萬象迎春_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:00.676Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/01_萬象迎春_20260527/song_pgc.mp3", "has_features": true}}
[15:08:00] 🔍 [02_騰祥_20260527] Step 0: Fetching...
[15:08:00] 🧠 [03_春節同賀_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:00.735Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/03_春節同賀_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.262
[15:08:00] 🧠 [04_Arrives Softly_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:00.783Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/04_Arrives Softly_20260527/song_pgc.mp3", "has_features": true}}
[15:08:00] 🧠 [05_Silent Warmth Before the First Day_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:00.816Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/05_Silent Warmth Before the First Day_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.337
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
[15:08:03] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:08:03] 🔄 [02_騰祥_20260527] Step 0: retry 1/2 in 5s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
[15:08:11] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:08:11] 🔄 [02_騰祥_20260527] Step 0: retry 2/2 in 10s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:08:16.223Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.7, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:08:16.223Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.488}
[15:08:16] ❌ [03_春節同賀_20260527] Step 1: http_503 (0.7s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:08:16.344Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.5, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:08:16.344Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.668}

=== 2026-05-27 15:08:25 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260527-150538-81d270 --resume /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 ===
[profile] ✅ Loaded profile '__runtime_batch-20260527-150538-81d270' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260527-150538-81d270.yaml

======================================================================
music-pipeline3000 v2 | 5 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:08:27] 🏥 Health check...
[15:08:29] ✅ qishui: OK
[15:08:29] ✅ netease: OK
[15:08:29] ✅ qq: OK

[15:08:29] 🧠 [01_萬象迎春_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:29.280Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/01_萬象迎春_20260527/song_pgc.mp3", "has_features": true}}
[15:08:29] 🔍 [02_騰祥_20260527] Step 0: Fetching...
[15:08:29] 🧠 [03_春節同賀_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:29.335Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/03_春節同賀_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.262
[15:08:29] 🧠 [04_Arrives Softly_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:29.381Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/04_Arrives Softly_20260527/song_pgc.mp3", "has_features": true}}
[15:08:29] 🧠 [05_Silent Warmth Before the First Day_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:29.419Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/05_Silent Warmth Before the First Day_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.337
[15:08:16] ❌ [01_萬象迎春_20260527] Step 1: http_503 (0.5s)
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
[15:08:24] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:08:24] ❌ [02_騰祥_20260527] Step 0: No audio URL
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:08:32.050Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.9, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:08:32.051Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 31.267}
[15:08:32] ❌ [04_Arrives Softly_20260527] Step 1: http_503 (0.9s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:08:32.808Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.8, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:08:32.809Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 31.992}
[15:08:32] ❌ [05_Silent Warmth Before the First Day_20260527] Step 1: http_503 (0.8s)

======================================================================
SUMMARY | 32s (0.5min)
======================================================================
✅ Done: 0 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 5
[exit 0]

=== 2026-05-27 15:08:33 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 ===
[Feishu] No successful songs to export.
[exit 0]

=== 2026-05-27 15:08:41 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260527-150538-81d270 --resume /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 ===
[profile] ✅ Loaded profile '__runtime_batch-20260527-150538-81d270' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260527-150538-81d270.yaml

=== 2026-05-27 15:08:43 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260527-150538-81d270 --resume /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 ===

======================================================================
music-pipeline3000 v2 | 5 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:08:43] 🏥 Health check...
[15:08:44] ✅ qishui: OK
[15:08:44] ✅ netease: OK
[15:08:44] ✅ qq: OK

[15:08:44] 🧠 [01_萬象迎春_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:44.683Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/01_萬象迎春_20260527/song_pgc.mp3", "has_features": true}}
[15:08:44] 🔍 [02_騰祥_20260527] Step 0: Fetching...
[15:08:44] 🧠 [03_春節同賀_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:44.758Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/03_春節同賀_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.262
[15:08:44] 🧠 [04_Arrives Softly_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:44.797Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/04_Arrives Softly_20260527/song_pgc.mp3", "has_features": true}}
[15:08:44] 🧠 [05_Silent Warmth Before the First Day_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:44.831Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/05_Silent Warmth Before the First Day_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.337
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
[15:08:31] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:08:31] 🔄 [02_騰祥_20260527] Step 0: retry 1/2 in 5s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
[15:08:39] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:08:39] 🔄 [02_騰祥_20260527] Step 0: retry 2/2 in 10s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:08:44.949Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.7, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:08:44.949Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.669}
[15:08:44] ❌ [01_萬象迎春_20260527] Step 1: http_503 (0.7s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:08:45.359Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.9, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:08:45.360Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 16.024}
[profile] ✅ Loaded profile '__runtime_batch-20260527-150538-81d270' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260527-150538-81d270.yaml

======================================================================
music-pipeline3000 v2 | 5 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:08:45] 🏥 Health check...
[15:08:47] ✅ qishui: OK
[15:08:47] ✅ netease: OK
[15:08:47] ✅ qq: OK

[15:08:47] 🧠 [01_萬象迎春_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:47.105Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/01_萬象迎春_20260527/song_pgc.mp3", "has_features": true}}
[15:08:47] 🔍 [02_騰祥_20260527] Step 0: Fetching...
[15:08:47] 🧠 [03_春節同賀_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:47.156Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/03_春節同賀_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.262
[15:08:47] 🧠 [04_Arrives Softly_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:47.200Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/04_Arrives Softly_20260527/song_pgc.mp3", "has_features": true}}
[15:08:47] 🧠 [05_Silent Warmth Before the First Day_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:08:47.237Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270/05_Silent Warmth Before the First Day_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.337
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
[15:08:47] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:08:47] 🔄 [02_騰祥_20260527] Step 0: retry 1/2 in 5s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
[15:08:54] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:08:54] 🔄 [02_騰祥_20260527] Step 0: retry 2/2 in 10s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:08:59.948Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.5, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:08:59.948Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.265}
[15:08:59] ❌ [01_萬象迎春_20260527] Step 1: http_503 (0.5s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:09:00.807Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.9, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:09:00.807Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 16.049}
[15:08:45] ❌ [03_春節同賀_20260527] Step 1: http_503 (0.9s)
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
[15:08:52] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:08:52] ❌ [02_騰祥_20260527] Step 0: No audio URL
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:09:01.167Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.8, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:09:01.167Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 31.786}
[15:09:01] ❌ [04_Arrives Softly_20260527] Step 1: http_503 (0.8s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:09:01.574Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.8, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:09:01.574Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 32.154}
[15:09:01] ❌ [05_Silent Warmth Before the First Day_20260527] Step 1: http_503 (0.8s)

======================================================================
SUMMARY | 32s (0.5min)
======================================================================
✅ Done: 0 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 5
[exit 0]

=== 2026-05-27 15:09:01 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260527-150538-81d270 ===
[Feishu] No successful songs to export.
[exit 0]
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
[15:08:49] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:08:49] 🔄 [02_騰祥_20260527] Step 0: retry 1/2 in 5s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
[15:08:57] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:08:57] 🔄 [02_騰祥_20260527] Step 0: retry 2/2 in 10s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:09:02.157Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.5, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:09:02.157Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "03_春節同賀_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.001}
[15:09:02] ❌ [03_春節同賀_20260527] Step 1: http_503 (0.5s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:09:02.717Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.6, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:09:02.718Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.613}
[15:09:00] ❌ [03_春節同賀_20260527] Step 1: http_503 (0.9s)
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
[15:09:08] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:09:08] ❌ [02_騰祥_20260527] Step 0: No audio URL
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:09:16.036Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.8, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:09:16.036Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 31.238}
[15:09:16] ❌ [04_Arrives Softly_20260527] Step 1: http_503 (0.8s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:09:17.132Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 1.0, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:09:17.132Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 32.302}
[15:09:17] ❌ [05_Silent Warmth Before the First Day_20260527] Step 1: http_503 (1.0s)

======================================================================
SUMMARY | 32s (0.5min)
======================================================================
✅ Done: 0 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 5
[exit 0]

=== 2026-05-27 15:09: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-20260527-150538-81d270 ===
[Feishu] No successful songs to export.
[exit 0]
[15:09:02] ❌ [01_萬象迎春_20260527] Step 1: http_503 (0.6s)
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
[15:09:09] ⚠️  [netease] '騰祥' too short (113s < 120s), likely a cover/clip, skipping
[15:09:09] ❌ [02_騰祥_20260527] Step 0: No audio URL
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:09:18.024Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.7, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:09:18.024Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "04_Arrives Softly_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 30.824}
[15:09:18] ❌ [04_Arrives Softly_20260527] Step 1: http_503 (0.7s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:09:18.646Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 0.9, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-27T07:09:18.646Z", "trace_id": "batch-20260527-150538-81d270", "song_key": "05_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 31.408}
[15:09:18] ❌ [05_Silent Warmth Before the First Day_20260527] Step 1: http_503 (0.9s)

======================================================================
SUMMARY | 32s (0.5min)
======================================================================
✅ Done: 0 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 5
[exit 0]

=== 2026-05-27 15:09: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-20260527-150538-81d270 ===
[Feishu] No successful songs to export.
[exit 0]
