
=== 2026-04-19 13:06:59 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260419-130659-05519d --target-language zh --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260419-130659-05519d' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260419-130659-05519d.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   ] 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 | 2 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[13:07:01] 🏥 Health check...
[13:07:03] ✅ qishui: OK
[13:07:03] ✅ netease: OK
[13:07:03] ✅ qq: OK

[13:07:03] 🔍 [01_Agora Hills_20260419] Step 0: Fetching...
[13:07:03] 🔍 [02_Demons_20260419] Step 0: Fetching...
[13:07:06] ✅ [01_Agora Hills_20260419] Step 0: netease | 3185c
[13:07:06] ⬇️  [01_Agora Hills_20260419] Step 0.5: Download from netease...
[13:07:13] ✅ [02_Demons_20260419] Step 0: qq | 1807c
[13:07:13] ⬇️  [02_Demons_20260419] Step 0.5: Download from qq...
[13:07:13] ✅ [01_Agora Hills_20260419] Step 0.5: 5137739 bytes | 265.5s
[13:07:13] 🔬 [01_Agora Hills_20260419] Step 0.75: Audio features...
[13:07:37] ✅ [02_Demons_20260419] Step 0.5: 4757834 bytes | 195.6s
[13:07:37] 🔬 [02_Demons_20260419] Step 0.75: Audio features...
[13:07:57] ✅ [01_Agora Hills_20260419] Step 0.75: BPM=122.98 Key=E major (43.6s)
[13:07:57] 🧠 [01_Agora Hills_20260419] Step 1: Gemini (queuing)...
[13:07:57] 🌐 Step 1: target_language=zh (injecting override directive)
[13:08:04] ✅ [02_Demons_20260419] Step 0.75: BPM=140.01 Key=C minor (27.5s)
[13:08:04] 🧠 [02_Demons_20260419] Step 1: Gemini (queuing)...
[13:08:04] 🌐 Step 1: target_language=zh (injecting override directive)
  ⚠️ Gemini official 500 on key #1/5, will retry...
  🔄 Retry 1/4 in 10s...
  🔄 Retry 2/4 in 20s...
  🔄 Retry 3/4 in 40s...
  📊 Gemini official: 47s | prompt_tokens=12562 completion=2118
[13:08:44] ⚠️  [01_Agora Hills_20260419] Step 1.5: prompt 1102c > 1000c, compressing...
  📏 [01_Agora Hills_20260419] prompt 1102c → 782c (smart truncate)
[13:08:44] ✅ [01_Agora Hills_20260419] Step 1.5: prompt compressed 1102c → 782c
[13:08:44] ✅ [01_Agora Hills_20260419] Step 1: 46.8s | prompt=782c | prompt_ok=True lyrics_ok=True
  🔄 Retry 4/4 in 80s...
[13:10:41] ❌ [02_Demons_20260419] Step 1: error (0s)

======================================================================
SUMMARY | 219s (3.6min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 1
[MasterDB] ✅ 批次 batch-20260419-130659-05519d → +0 新增, ~0 更新 | 总计 474 首
[exit 0]

=== 2026-04-19 13: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-20260419-130659-05519d --profile grammy --resume-mode each --skip-feishu --target-language zh ===
[phase2] batch=batch-20260419-130659-05519d pending=1 groups=1
[phase2] group 1/1 -> 01_Agora Hills_20260419
[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml
[phase2] 🌐 01_Agora Hills_20260419: target_language=zh
[phase2] resume -> /usr/bin/python3 /srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d --profile grammy --skip-feishu
[13:10:44] 🌐 [01_Agora Hills_20260419] Step 2: target_language=zh → lang_mode=ZH
[13:10:44] 🤖 [01_Agora Hills_20260419] Step 2 API: 30340 chars ≈ 7585 tokens → claude-sonnet-4-6
[13:11:31] ⚠️  [01_Agora Hills_20260419] Step 2 API attempt 1: JSON parse error: Expecting ',' delimiter: line 6 column 203 (char 5060)
[13:12:15] ✅ [01_Agora Hills_20260419] Step 2 API: 《掌心温度》 | 44.6s | in=15643 out=2746 | ~$0.088
{"timestamp": "2026-04-19T13:10:43.877517+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d", "profile": "grammy", "concurrency": 3, "resume_mode": "each", "pending_song_count": 1, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d/01_Agora Hills_20260419"], "success_count": 1, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d/01_Agora Hills_20260419", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d/01_Agora Hills_20260419/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-20260419-130659-05519d/01_Agora Hills_20260419", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d/01_Agora Hills_20260419/step2_json_b.json", "agent_summary": "API direct: 掌心温度", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "resume": {"status": "success", "returncode": 0, "stdout_tail": "\n======================================================================\nmusic-pipeline3000 v2 | 2 songs\n======================================================================\nGemini concurrency: 2 | Suno concurrency: 3\nOutput: /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[13:12:17] 🏥 Health check...\n[13:12:19] ✅ qishui: OK\n[13:12:19] ✅ netease: OK\n[13:12:19] ✅ qq: OK\n\n[13:12:19] 🧠 [02_Demons_20260419] Step 1: Gemini (queuing)...\n  📝 [01_Agora Hills_20260419] lyrics stripped: 3917c → 3912c\n[13:12:19] 🎵 [01_Agora Hills_20260419] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[13:12:19] 🎨 [01_Agora Hills_20260419] Step 4: SeeDream cover (parallel)...\n  🔄 Retry 1/4 in 10s...\n  ✅ submitted: ['2b8d9ca6', '23543279']\n  🎵 2b8d9ca6... → submitted\n  🎵 23543279... → submitted\n  🎵 2b8d9ca6... → queued\n  🎵 23543279... → queued\n  🔄 Retry 2/4 in 20s...\n  🎵 2b8d9ca6... → streaming\n  🎵 23543279... → streaming\n  🔄 Retry 3/4 in 40s...\n  🔄 Retry 4/4 in 80s...\n  🎵 23543279... → complete\n  🎵 2b8d9ca6... → complete\n[13:14:33]    🎧 [01_Agora Hills_20260419] Song 1: https://cdn1.suno.ai/2b8d9ca6-d220-4219-8f1c-ca3002045ffb.mp3\n[13:14:33]    🎧 [01_Agora Hills_20260419] Song 2: https://cdn1.suno.ai/23543279-532a-4c6c-9dea-22b23414c6b3.mp3\n[13:14:33] 🎛️ [01_Agora Hills_20260419] Step 3.5: 混音...\n[13:14:58]    🎚️ [01_Agora Hills_20260419] Song 1: edm | 低70/中25/高5%\n[13:14:59] ❌ [02_Demons_20260419] Step 1: error (0s)\n[13:15:18]    🎚️ [01_Agora Hills_20260419] Song 2: edm | 低65/中30/高5%\n[13:15:18] ✅ [01_Agora Hills_20260419] Step 3.5: 44.4s | 2 songs mixed\n[13:15:19] ✅ [01_Agora Hills_20260419] Step 4: 15.7s | /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d/01_Agora Hills_20260419/cover_seedream.jpg\n\n======================================================================\nSUMMARY | 180s (3.0min)\n======================================================================\n✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 1\n[MasterDB] ✅ 批次 batch-20260419-130659-05519d → +1 新增, ~0 更新 | 总计 480 首\n", "stderr_tail": "[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml\n", "summary": {"timestamp": "2026-04-19T13:15:19.355485+08:00", "wall_clock": 179.7, "total": 2, "success": 1, "awaiting_step2": 0, "failed": 1}}, "status": "success"}
[exit 0]

=== 2026-04-19 13:15:20 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/TZB4sDzUjhZvNZtS5TzcWJ4HnzE
[Feishu] 📐 Expanded master sheet from 486 to 587 rows
[Feishu] ✅ Appended 1 new songs to master sheet (rows 487-487)
[MasterDB] ✅ 批次 batch-20260419-130659-05519d → +1 新增, ~0 更新 | 总计 487 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/TZB4sDzUjhZv
[13:15:26] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [掌心温度] cover sent
[Feishu IM] ✅ [掌心温度] 掌心温度_V1_raw.mp3 sent
[Feishu IM] ✅ [掌心温度] 掌心温度_V1_mixed.mp3 sent
[Feishu IM] ✅ [掌心温度] 掌心温度_V2_raw.mp3 sent
[Feishu IM] ✅ [掌心温度] 掌心温度_V2_mixed.mp3 sent
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260419-130659-05519d
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d

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

=== 2026-04-19 15:13:40 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260419-130659-05519d --resume /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d --target-language zh ===
[profile] ✅ Loaded profile '__runtime_batch-20260419-130659-05519d' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260419-130659-05519d.yaml

======================================================================
music-pipeline3000 v2 | 2 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:13:42] 🏥 Health check...
[15:13:43] ✅ qishui: OK
[15:13:43] ✅ netease: OK
[15:13:43] ✅ qq: OK

[15:13:43] ⏭️  [01_Agora Hills_20260419] Already complete, skipping
[15:13:43] 🧠 [02_Demons_20260419] Step 1: Gemini (queuing)...
[15:13:43] 🌐 Step 1: target_language=zh (injecting override directive)
  🔄 Retry 1/4 in 10s...
  🔄 Retry 2/4 in 20s...
  🔄 Retry 3/4 in 40s...
  🔄 Retry 4/4 in 80s...
[15:16:18] ❌ [02_Demons_20260419] Step 1: error (0s)

======================================================================
SUMMARY | 155s (2.6min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 1
[MasterDB] ✅ 批次 batch-20260419-130659-05519d → +0 新增, ~1 更新 | 总计 548 首
[exit 0]

=== 2026-04-19 15:16:19 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/ArvysR8feh7ZGWtCxx9cZNifn9g
[Feishu] ⏭️  Skip duplicate (complete): Agora Hills (https://fileserver.yuchenhu.com/pipeline/batch-20260419-130659-05519d/01_Agora%20Hills_20260419/song_pgc.mp3)
[MasterDB] ✅ 批次 batch-20260419-130659-05519d → +0 新增, ~0 更新 | 总计 495 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/ArvysR8feh7Z
[15:16:25] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [掌心温度] cover sent
[Feishu IM] ✅ [掌心温度] 掌心温度_V1_raw.mp3 sent
[Feishu IM] ✅ [掌心温度] 掌心温度_V1_mixed.mp3 sent
[Feishu IM] ✅ [掌心温度] 掌心温度_V2_raw.mp3 sent
[Feishu IM] ✅ [掌心温度] 掌心温度_V2_mixed.mp3 sent
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260419-130659-05519d
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260419-130659-05519d

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