
=== 2026-05-27 15:10:01 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260527-151001-6db646 --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260527-151001-6db646' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260527-151001-6db646.yaml
[step075] cache hit: song_pgc.mp3 → 2e6eee942e82

======================================================================
music-pipeline3000 v2 | 4 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

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

[15:10:04] 🔍 [01_萬象迎春_20260527] Step 0: Fetching...
[15:10:04] 🔍 [02_春節同賀_20260527] Step 0: Fetching...
[15:10:04] 🔍 [03_Arrives Softly_20260527] Step 0: Fetching...
[15:10:04] 🔍 [04_Silent Warmth Before the First Day_20260527] Step 0: Fetching...
[15:10:07] ✅ [02_春節同賀_20260527] Step 0: netease | 53c lyrics
[15:10:07] ⬇️  [02_春節同賀_20260527] Step 0.5: Download from netease...
[15:10:08] ✅ [01_萬象迎春_20260527] Step 0: netease | 53c lyrics
[15:10:08] ⬇️  [01_萬象迎春_20260527] Step 0.5: Download from netease...
[15:10:08] ✅ [03_Arrives Softly_20260527] Step 0: netease | 53c lyrics
[15:10:08] ⬇️  [03_Arrives Softly_20260527] Step 0.5: Download from netease...
[15:10:10] ✅ [04_Silent Warmth Before the First Day_20260527] Step 0: netease | 53c lyrics
[15:10:10] ⬇️  [04_Silent Warmth Before the First Day_20260527] Step 0.5: Download from netease...
[15:10:11] ✅ [01_萬象迎春_20260527] Step 0.5: 2501771 bytes | 121.6s
[15:10:11] 🔬 [01_萬象迎春_20260527] Step 0.75: Audio features...
[15:10:11] ✅ [01_萬象迎春_20260527] Step 0.75: BPM=103.91 Key=D# major (26.9s)
[15:10:11] 🧠 [01_萬象迎春_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:10:11.137Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/01_萬象迎春_20260527/song_pgc.mp3", "has_features": true}}
[step075] cache hit: song_pgc.mp3 → ffb280991eb0
[15:10:11] ✅ [02_春節同賀_20260527] Step 0.5: 2647326 bytes | 132.0s
[15:10:11] 🔬 [02_春節同賀_20260527] Step 0.75: Audio features...
[15:10:11] ✅ [02_春節同賀_20260527] Step 0.75: BPM=100.02 Key=D major (19.3s)
[15:10:11] 🧠 [02_春節同賀_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:10:11.339Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/02_春節同賀_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.262
[step075] cache hit: song_pgc.mp3 → dc16537b9d19
  ⚠️ 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:10:12] ✅ [03_Arrives Softly_20260527] Step 0.5: 3527307 bytes | 187.8s
[15:10:12] 🔬 [03_Arrives Softly_20260527] Step 0.75: Audio features...
[15:10:12] ✅ [03_Arrives Softly_20260527] Step 0.75: BPM=142.06 Key=D# major (33.5s)
[15:10:12] 🧠 [03_Arrives Softly_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:10:12.829Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/03_Arrives Softly_20260527/song_pgc.mp3", "has_features": true}}
[step075] cache hit: song_pgc.mp3 → 2620a8eaf594
  ⚠️ 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:10:17] ✅ [04_Silent Warmth Before the First Day_20260527] Step 0.5: 4873061 bytes | 250.5s
[15:10:17] 🔬 [04_Silent Warmth Before the First Day_20260527] Step 0.75: Audio features...
[15:10:17] ✅ [04_Silent Warmth Before the First Day_20260527] Step 0.75: BPM=89.99 Key=C# minor (38.8s)
[15:10:17] 🧠 [04_Silent Warmth Before the First Day_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:10:17.063Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/04_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 #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:10:26.930Z", "trace_id": "batch-20260527-151001-6db646", "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:10:26.930Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.793}
[15:10:26] ❌ [01_萬象迎春_20260527] Step 1: http_503 (0.6s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:10:27.100Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_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:10:27.100Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.761}
[15:10:27] ❌ [02_春節同賀_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...
  ⚠️ 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:10:42.737Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_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:10:42.738Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 29.908}
[15:10:42] ❌ [03_Arrives Softly_20260527] Step 1: http_503 (0.7s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:10:43.097Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_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:10:43.097Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 26.034}
[15:10:43] ❌ [04_Silent Warmth Before the First Day_20260527] Step 1: http_503 (0.9s)

======================================================================
SUMMARY | 38s (0.6min)
======================================================================
✅ Done: 0 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 4
[exit 0]

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

=== 2026-05-27 15:10:43 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-151001-6db646 ===
[Feishu] No successful songs to export.
[exit 0]

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

======================================================================
music-pipeline3000 v2 | 4 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:57:05] 🏥 Health check...
[15:57:06] ✅ qishui: OK
[15:57:06] ✅ netease: OK
[15:57:06] ✅ qq: OK

[15:57:06] 🧠 [01_萬象迎春_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:06.868Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/01_萬象迎春_20260527/song_pgc.mp3", "has_features": true}}
[15:57:06] 🧠 [02_春節同賀_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:06.919Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/02_春節同賀_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.262
[15:57:06] 🧠 [03_Arrives Softly_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:06.964Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/03_Arrives Softly_20260527/song_pgc.mp3", "has_features": true}}
[15:57:06] 🧠 [04_Silent Warmth Before the First Day_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:07.000Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/04_Silent Warmth Before the First Day_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.337

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

======================================================================
music-pipeline3000 v2 | 4 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:57:09] 🏥 Health check...
[15:57:10] ✅ qishui: OK
[15:57:10] ✅ netease: OK
[15:57:10] ✅ qq: OK

[15:57:10] 🧠 [01_萬象迎春_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:10.963Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/01_萬象迎春_20260527/song_pgc.mp3", "has_features": true}}
[15:57:11] 🧠 [02_春節同賀_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:11.033Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/02_春節同賀_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.262

=== 2026-05-27 15:57:11 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260527-151001-6db646 --resume /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646 ===
[15:57:11] 🧠 [03_Arrives Softly_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:11.090Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/03_Arrives Softly_20260527/song_pgc.mp3", "has_features": true}}
[15:57:11] 🧠 [04_Silent Warmth Before the First Day_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:11.132Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/04_Silent Warmth Before the First Day_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.337
[profile] ✅ Loaded profile '__runtime_batch-20260527-151001-6db646' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260527-151001-6db646.yaml

======================================================================
music-pipeline3000 v2 | 4 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:57:12] 🏥 Health check...
[15:57:14] ✅ qishui: OK
[15:57:14] ✅ netease: OK
[15:57:14] ✅ qq: OK

[15:57:14] 🧠 [01_萬象迎春_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:14.290Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/01_萬象迎春_20260527/song_pgc.mp3", "has_features": true}}
[15:57:14] 🧠 [02_春節同賀_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:14.341Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/02_春節同賀_20260527/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — acoustic vocal_score=0.262
[15:57:14] 🧠 [03_Arrives Softly_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:14.378Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/03_Arrives Softly_20260527/song_pgc.mp3", "has_features": true}}
[15:57:14] 🧠 [04_Silent Warmth Before the First Day_20260527] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-27T07:57:14.411Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/04_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...
  ⚠️ 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...
  ⚠️ 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:57:22.159Z", "trace_id": "batch-20260527-151001-6db646", "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:57:22.159Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.291}
[15:57:22] ❌ [01_萬象迎春_20260527] Step 1: http_503 (0.6s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:57:22.615Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_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:57:22.615Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.696}
  ⚠️ 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...
  ⚠️ 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:57:26.516Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_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:57:26.516Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.482}
[15:57:26] ❌ [02_春節同賀_20260527] Step 1: http_503 (0.6s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:57:26.627Z", "trace_id": "batch-20260527-151001-6db646", "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:57:26.627Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 15.664}
[15:57:22] ❌ [02_春節同賀_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...
  ⚠️ 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:57:38.089Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_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:57:38.089Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 31.126}
[15:57:38] ❌ [03_Arrives Softly_20260527] Step 1: http_503 (0.6s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:57:38.717Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_Silent Warmth Before the First Day_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:57:38.717Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 31.717}
[15:57:38] ❌ [04_Silent Warmth Before the First Day_20260527] Step 1: http_503 (0.7s)

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

=== 2026-05-27 15:57:39 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-151001-6db646 ===
[Feishu] No successful songs to export.
[exit 0]
[15:57:26] ❌ [01_萬象迎春_20260527] Step 1: http_503 (0.7s)
  ⚠️ 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 #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 #5/5, will retry...
{"__trace__": true, "ts": "2026-05-27T07:57:42.624Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_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:57:42.625Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 31.492}
  ⚠️ 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...
  ⚠️ 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: 35s | prompt_tokens=5844 completion=910
{"__trace__": true, "ts": "2026-05-27T07:58:00.601Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 34.9, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-27T07:58:00.601Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "02_春節同賀_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 46.261}
[15:58:00] ✅ [02_春節同賀_20260527] Step 1: 34.9s | prompt=914c | prompt_ok=True lyrics_ok=True
[15:58:00] ♪ [02_春節同賀_20260527] Step 2: 纯音乐 fallback stub（phase2 meta 未完成）
[15:58:00] ♪ [02_春節同賀_20260527] Step 3: 纯音乐 pure-prompt 模式
[15:58:00] 🎵 [02_春節同賀_20260527] Step 3: Suno generation (weirdness=50, style_influence=50 · 纯音乐)...
[15:58:00] 🎨 [02_春節同賀_20260527] Step 4: SeeDream cover (parallel)...
  📊 Gemini official: 37s | prompt_tokens=7032 completion=1144
{"__trace__": true, "ts": "2026-05-27T07:58:02.564Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 37.2, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-27T07:58:02.565Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "01_萬象迎春_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 48.274}
[15:57:42] ❌ [04_Silent Warmth Before the First Day_20260527] Step 1: http_503 (0.8s)
  📊 Gemini official: 45s | prompt_tokens=9150 completion=1619
{"__trace__": true, "ts": "2026-05-27T07:58:11.287Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 44.8, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-27T07:58:11.289Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 60.198}
[15:58:02] ⚠️  [01_萬象迎春_20260527] Step 1.5: prompt 1105c > 1000c, compressing...
  📏 [01_萬象迎春_20260527] prompt 1105c → 928c (aggressive)
[15:58:02] ✅ [01_萬象迎春_20260527] Step 1.5: prompt compressed 1105c → 928c
[15:58:02] ✅ [01_萬象迎春_20260527] Step 1: 37.2s | prompt=928c | prompt_ok=True lyrics_ok=True
[15:58:02] ♪ [01_萬象迎春_20260527] Step 2: 纯音乐 fallback stub（phase2 meta 未完成）
[15:58:02] ♪ [01_萬象迎春_20260527] Step 3: 纯音乐 pure-prompt 模式
[15:58:02] 🎵 [01_萬象迎春_20260527] Step 3: Suno generation (weirdness=50, style_influence=50 · 纯音乐)...
[15:58:02] 🎨 [01_萬象迎春_20260527] Step 4: SeeDream cover (parallel)...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  📊 Gemini official: 31s | prompt_tokens=9150 completion=1187
{"__trace__": true, "ts": "2026-05-27T07:58:31.299Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 30.7, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-27T07:58:31.300Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "03_Arrives Softly_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 76.922}
[15:58:31] ⚠️  [03_Arrives Softly_20260527] Step 1.5: prompt 1114c > 1000c, compressing...
  📏 [03_Arrives Softly_20260527] prompt 1114c → 804c (smart truncate)
[15:58:31] ✅ [03_Arrives Softly_20260527] Step 1.5: prompt compressed 1114c → 804c
[15:58:31] ✅ [03_Arrives Softly_20260527] Step 1: 30.7s | prompt=804c | prompt_ok=True lyrics_ok=True
[15:58:31] ✅ [03_Arrives Softly_20260527] Step 2.5: originality 100% ✓
[15:58:31] ✅ [03_Arrives Softly_20260527] Step 2: 《03_Arrives Softly_20260527》
[15:58:31] 📁 [03_Arrives Softly_20260527] Renamed → 03_Arrives Softly_03_Arrives_Softly_20260527_20260527
[15:58:31] ♪ [03_Arrives Softly_03_Arrives_Softly_20260527_20260527] Step 3: 纯音乐 pure-prompt 模式
[15:58:31] 🎵 [03_Arrives Softly_03_Arrives_Softly_20260527_20260527] Step 3: Suno generation (weirdness=50, style_influence=50 · 纯音乐)...
[15:58:31] 🎨 [03_Arrives Softly_03_Arrives_Softly_20260527_20260527] Step 4: SeeDream cover (parallel)...
  📊 Gemini official: 38s | prompt_tokens=9633 completion=1006
{"__trace__": true, "ts": "2026-05-27T07:58:44.108Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 37.7, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-27T07:58:44.108Z", "trace_id": "batch-20260527-151001-6db646", "song_key": "04_Silent Warmth Before the First Day_20260527", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 89.698}
[15:58:11] ⚠️  [03_Arrives Softly_20260527] Step 1.5: prompt 1062c > 1000c, compressing...
  📏 [03_Arrives Softly_20260527] prompt 1062c → 946c (smart truncate)
[15:58:11] ✅ [03_Arrives Softly_20260527] Step 1.5: prompt compressed 1062c → 946c
[15:58:11] ✅ [03_Arrives Softly_20260527] Step 1: 44.8s | prompt=946c | prompt_ok=True lyrics_ok=True
[15:58:11] ♪ [03_Arrives Softly_20260527] Step 2: 纯音乐 fallback stub（phase2 meta 未完成）
[15:58:11] ♪ [03_Arrives Softly_20260527] Step 3: 纯音乐 pure-prompt 模式
[15:58:11] 🎵 [03_Arrives Softly_20260527] Step 3: Suno generation (weirdness=50, style_influence=50 · 纯音乐)...
[15:58:11] 🎨 [03_Arrives Softly_20260527] Step 4: SeeDream cover (parallel)...
  ✅ submitted: ['3ab9d0a8', '06ff370f']
  🎵 3ab9d0a8... → submitted
  🎵 06ff370f... → submitted
  🎵 3ab9d0a8... → queued
  🎵 06ff370f... → queued
  🎵 3ab9d0a8... → streaming
  🎵 06ff370f... → streaming
  🎵 3ab9d0a8... → complete
  🎵 06ff370f... → complete
Traceback (most recent call last):
  File "/srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py", line 1131, in <module>
    main()
    ~~~~^^
  File "/srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py", line 1118, in main
    asyncio.run(run_pipeline(
    ~~~~~~~~~~~^^^^^^^^^^^^^^
        songs, output_dir,
        ^^^^^^^^^^^^^^^^^^
    ...<6 lines>...
        target_language=args.target_language,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ))
    ^^
  File "/usr/lib/python3.13/asyncio/runners.py", line 195, in run
    return runner.run(main)
           ~~~~~~~~~~^^^^^^
  File "/usr/lib/python3.13/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "/srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py", line 1000, in run_pipeline
    results = await asyncio.gather(*tasks)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py", line 861, in run_song
    (song_dir / "step3_suno.json").write_text(json.dumps(s3_result, ensure_ascii=False, indent=2))
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/pathlib/_local.py", line 557, in write_text
    return PathBase.write_text(self, data, encoding, errors, newline)
           ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/pathlib/_abc.py", line 651, in write_text
    with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f:
         ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/pathlib/_local.py", line 539, in open
    return io.open(self, mode, buffering, encoding, errors, newline)
           ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646/03_Arrives Softly_20260527/step3_suno.json'
[exit 1]
[15:58:44] ⚠️  [04_Silent Warmth Before the First Day_20260527] Step 1.5: prompt 1516c > 1000c, compressing...
  📏 [04_Silent Warmth Before the First Day_20260527] prompt 1516c → 910c (smart truncate)
[15:58:44] ✅ [04_Silent Warmth Before the First Day_20260527] Step 1.5: prompt compressed 1516c → 910c
[15:58:44] ✅ [04_Silent Warmth Before the First Day_20260527] Step 1: 37.7s | prompt=910c | prompt_ok=True lyrics_ok=True
[15:58:44] ♪ [04_Silent Warmth Before the First Day_20260527] Step 2: 纯音乐 fallback stub（phase2 meta 未完成）
[15:58:44] ♪ [04_Silent Warmth Before the First Day_20260527] Step 3: 纯音乐 pure-prompt 模式
[15:58:44] 🎵 [04_Silent Warmth Before the First Day_20260527] Step 3: Suno generation (weirdness=50, style_influence=50 · 纯音乐)...
[15:58:44] 🎨 [04_Silent Warmth Before the First Day_20260527] Step 4: SeeDream cover (parallel)...
  ✅ submitted: ['6bab8244', 'dfe93f94']
  🎵 6bab8244... → submitted
  🎵 dfe93f94... → submitted
  🎵 6bab8244... → queued
  🎵 dfe93f94... → queued
  🎵 6bab8244... → streaming
  🎵 dfe93f94... → streaming
  ✅ submitted: ['54c0ba87', '07025da3']
  🎵 54c0ba87... → submitted
  🎵 07025da3... → submitted
  🎵 54c0ba87... → queued
  🎵 07025da3... → queued
  🎵 54c0ba87... → streaming
  🎵 07025da3... → streaming
  🎵 6bab8244... → complete
  🎵 dfe93f94... → complete
[16:00:41]    🎧 [02_春節同賀_20260527] Song 1: https://cdn1.suno.ai/6bab8244-486e-42bc-95e6-c9bfd5a6bd4d.mp3
[16:00:41]    🎧 [02_春節同賀_20260527] Song 2: https://cdn1.suno.ai/dfe93f94-14ad-49aa-bed1-9e5770af00c7.mp3
[16:00:41] 🎛️ [02_春節同賀_20260527] Step 3.5: 混音...
[16:00:55]    🎚️ [02_春節同賀_20260527] Song 1: rnb | 低43/中56/高1%
  ✅ submitted: ['e9f7004c', 'c85e811a']
  🎵 e9f7004c... → streaming
  🎵 c85e811a... → streaming
[16:01:08]    🎚️ [02_春節同賀_20260527] Song 2: rnb | 低44/中55/高2%
[16:01:08] ✅ [02_春節同賀_20260527] Step 3.5: 27.0s | 2 songs mixed
[16:01:08] ⚠️  [02_春節同賀_20260527] Step 4: http_403 (non-fatal)
  🎵 54c0ba87... → complete
  🎵 07025da3... → complete
[16:01:25]    🎧 [01_萬象迎春_20260527] Song 1: https://cdn1.suno.ai/54c0ba87-bfba-46f2-b1c3-19f206b50a06.mp3
[16:01:25]    🎧 [01_萬象迎春_20260527] Song 2: https://cdn1.suno.ai/07025da3-b534-45e4-94f0-1a3dfabf65dc.mp3
[16:01:25] 🎛️ [01_萬象迎春_20260527] Step 3.5: 混音...
  ✅ submitted: ['7d983453', '4c119e97']
  🎵 7d983453... → submitted
  🎵 4c119e97... → submitted
[16:01:39]    🎚️ [01_萬象迎春_20260527] Song 1: classical | 低69/中31/高0%
  🎵 7d983453... → streaming
  🎵 4c119e97... → streaming
[16:01:52]    🎚️ [01_萬象迎春_20260527] Song 2: classical | 低56/中44/高1%
[16:01:52] ✅ [01_萬象迎春_20260527] Step 3.5: 27.4s | 2 songs mixed
[16:01:52] ⚠️  [01_萬象迎春_20260527] Step 4: http_403 (non-fatal)
  🎵 e9f7004c... → complete
  🎵 c85e811a... → complete
[16:02:24]    🎧 [03_Arrives Softly_03_Arrives_Softly_20260527_20260527] Song 1: https://cdn1.suno.ai/e9f7004c-acea-464f-bb83-a3df08103ab2.mp3
[16:02:24]    🎧 [03_Arrives Softly_03_Arrives_Softly_20260527_20260527] Song 2: https://cdn1.suno.ai/c85e811a-c0b4-4850-8ef7-604c2faa46d6.mp3
[16:02:24] 🎛️ [03_Arrives Softly_03_Arrives_Softly_20260527_20260527] Step 3.5: 混音...
[16:02:36]    🎚️ [03_Arrives Softly_03_Arrives_Softly_20260527_20260527] Song 1: edm | 低80/中20/高0%
  🎵 4c119e97... → complete
[16:02:49]    🎚️ [03_Arrives Softly_03_Arrives_Softly_20260527_20260527] Song 2: edm | 低80/中20/高0%
[16:02:49] ✅ [03_Arrives Softly_03_Arrives_Softly_20260527_20260527] Step 3.5: 25.4s | 2 songs mixed
[16:02:49] ⚠️  [03_Arrives Softly_03_Arrives_Softly_20260527_20260527] Step 4: http_403 (non-fatal)
  🎵 7d983453... → complete
[16:03:00]    🎧 [04_Silent Warmth Before the First Day_20260527] Song 1: https://cdn1.suno.ai/7d983453-0737-48e5-b2af-b80a2668f86c.mp3
[16:03:00]    🎧 [04_Silent Warmth Before the First Day_20260527] Song 2: https://cdn1.suno.ai/4c119e97-fd44-46bd-8ad1-d1810a273d32.mp3
[16:03:00] 🎛️ [04_Silent Warmth Before the First Day_20260527] Step 3.5: 混音...
[16:03:13]    🎚️ [04_Silent Warmth Before the First Day_20260527] Song 1: rnb | 低79/中21/高0%
[16:03:23]    🎚️ [04_Silent Warmth Before the First Day_20260527] Song 2: rnb | 低79/中21/高0%
[16:03:23] ✅ [04_Silent Warmth Before the First Day_20260527] Step 3.5: 22.6s | 2 songs mixed
[16:03:23] ⚠️  [04_Silent Warmth Before the First Day_20260527] Step 4: http_403 (non-fatal)

======================================================================
SUMMARY | 369s (6.2min)
======================================================================
✅ Done: 4 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260527-151001-6db646 → +4 新增, ~0 更新 | 总计 775 首
[exit 0]

=== 2026-05-27 16:03:24 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-151001-6db646 ===
[Feishu] ✅ Exported 4 songs to: https://ccnu62373cgc.feishu.cn/sheets/YvuRsnFkkhcg2ItKNRuclTA7nYc
[Feishu] 📐 Expanded master sheet from 708 to 812 rows
[Feishu] ✅ Appended 4 new songs to master sheet (rows 709-712)
[MasterDB] ✅ 批次 batch-20260527-151001-6db646 → +4 新增, ~0 更新 | 总计 712 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/YvuRsnFkkhcg
[16:03:34] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [01_萬象迎春_20260527] topic head sent (message_id=om_x100b6e5e1ba000a4b4c9fefc20b513c)
[Feishu IM] ✅ [01_萬象迎春_20260527] 01_萬象迎春_20260527_V1_raw.mp3 replied
[Feishu IM] ✅ [01_萬象迎春_20260527] 01_萬象迎春_20260527_V1_mixed.mp3 replied
[Feishu IM] ✅ [01_萬象迎春_20260527] 01_萬象迎春_20260527_V2_raw.mp3 replied
[Feishu IM] ✅ [01_萬象迎春_20260527] 01_萬象迎春_20260527_V2_mixed.mp3 replied
[Feishu IM] ✅ [02_春節同賀_20260527] topic head sent (message_id=om_x100b6e5e18436c9cb1674128887d378)
[Feishu IM] ✅ [02_春節同賀_20260527] 02_春節同賀_20260527_V1_raw.mp3 replied
[Feishu IM] ✅ [02_春節同賀_20260527] 02_春節同賀_20260527_V1_mixed.mp3 replied
[Feishu IM] ✅ [02_春節同賀_20260527] 02_春節同賀_20260527_V2_raw.mp3 replied
[Feishu IM] ✅ [02_春節同賀_20260527] 02_春節同賀_20260527_V2_mixed.mp3 replied
[Feishu IM] ✅ [03_Arrives Softly_20260527] topic head sent (message_id=om_x100b6e5e192d8ca0b268cc6759085b4)
[Feishu IM] ✅ [03_Arrives Softly_20260527] 03_Arrives Softly_20260527_V1_raw.mp3 replied
[Feishu IM] ✅ [03_Arrives Softly_20260527] 03_Arrives Softly_20260527_V1_mixed.mp3 replied
[Feishu IM] ✅ [03_Arrives Softly_20260527] 03_Arrives Softly_20260527_V2_raw.mp3 replied
[Feishu IM] ✅ [03_Arrives Softly_20260527] 03_Arrives Softly_20260527_V2_mixed.mp3 replied
[Feishu IM] ✅ [04_Silent Warmth Before the First Day_20260527] topic head sent (message_id=om_x100b6e5e1636bcb8b4a36a9da7625ab)
[Feishu IM] ✅ [04_Silent Warmth Before the First Day_20260527] 04_Silent Warmth Before the First Day_20260527_V1_raw.mp3 replied
[Feishu IM] ✅ [04_Silent Warmth Before the First Day_20260527] 04_Silent Warmth Before the First Day_20260527_V1_mixed.mp3 replied
[Feishu IM] ✅ [04_Silent Warmth Before the First Day_20260527] 04_Silent Warmth Before the First Day_20260527_V2_raw.mp3 replied
[Feishu IM] ✅ [04_Silent Warmth Before the First Day_20260527] 04_Silent Warmth Before the First Day_20260527_V2_mixed.mp3 replied
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260527-151001-6db646
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260527-151001-6db646

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