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

[13:03:42] 🏥 Health check...
[13:03:44] ✅ qishui: OK
[13:03:44] ✅ netease: OK
[13:03:44] ✅ qq: OK

[13:03:44] 🔍 [01_Woman_20260419] Step 0: Fetching...
[13:03:44] 🔍 [02_Dry Spell_20260419] Step 0: Fetching...
[13:03:46] ✅ [01_Woman_20260419] Step 0: netease | 1472c
[13:03:46] ⬇️  [01_Woman_20260419] Step 0.5: Download from netease...
[13:03:47] ✅ [02_Dry Spell_20260419] Step 0: netease | 1442c
[13:03:47] ⬇️  [02_Dry Spell_20260419] Step 0.5: Download from netease...
[13:03:53] ✅ [02_Dry Spell_20260419] Step 0.5: 3910600 bytes | 197.7s
[13:03:53] 🔬 [02_Dry Spell_20260419] Step 0.75: Audio features...
[13:04:05] ✅ [01_Woman_20260419] Step 0.5: 3334788 bytes | 166.8s
[13:04:05] 🔬 [01_Woman_20260419] Step 0.75: Audio features...
[13:04:29] ✅ [01_Woman_20260419] Step 0.75: BPM=108.08 Key=B major (24.7s)
[13:04:29] 🧠 [01_Woman_20260419] Step 1: Gemini (queuing)...
[13:04:29] 🌐 Step 1: target_language=zh (injecting override directive)
[13:04:33] ✅ [02_Dry Spell_20260419] Step 0.75: BPM=144.0 Key=B major (40.0s)
[13:04:33] 🧠 [02_Dry Spell_20260419] Step 1: Gemini (queuing)...
[13:04:33] 🌐 Step 1: target_language=zh (injecting override directive)
  📊 Gemini official: 40s | prompt_tokens=9974 completion=1737
[13:05:14] ⚠️  [02_Dry Spell_20260419] Step 1.5: prompt 1282c > 1000c, compressing...
  📏 [02_Dry Spell_20260419] prompt 1282c → 960c (smart truncate)
[13:05:14] ✅ [02_Dry Spell_20260419] Step 1.5: prompt compressed 1282c → 960c
[13:05:14] ✅ [02_Dry Spell_20260419] Step 1: 40.3s | prompt=960c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 46s | prompt_tokens=8995 completion=1791
[13:05:15] ⚠️  [01_Woman_20260419] Step 1.5: prompt 1168c > 1000c, compressing...
  📏 [01_Woman_20260419] prompt 1168c → 836c (smart truncate)
[13:05:15] ✅ [01_Woman_20260419] Step 1.5: prompt compressed 1168c → 836c
[13:05:15] ✅ [01_Woman_20260419] Step 1: 45.8s | prompt=836c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 91s (1.5min)
======================================================================
✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260419-130340-8412dc → +0 新增, ~0 更新 | 总计 474 首
[exit 0]

=== 2026-04-19 13:05:16 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc --profile grammy --resume-mode each --skip-feishu --target-language zh ===
[phase2] batch=batch-20260419-130340-8412dc pending=2 groups=1
[phase2] group 1/1 -> 01_Woman_20260419, 02_Dry Spell_20260419
[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml
[phase2] 🌐 01_Woman_20260419: target_language=zh
[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml
[phase2] 🌐 02_Dry Spell_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-130340-8412dc/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc --profile grammy --skip-feishu
[13:05:16] 🌐 [01_Woman_20260419] Step 2: target_language=zh → lang_mode=ZH
[13:05:16] 🤖 [01_Woman_20260419] Step 2 API: 29211 chars ≈ 7302 tokens → claude-sonnet-4-6
[13:05:16] 🌐 [02_Dry Spell_20260419] Step 2: target_language=zh → lang_mode=ZH
[13:05:16] 🤖 [02_Dry Spell_20260419] Step 2 API: 29170 chars ≈ 7292 tokens → claude-sonnet-4-6
[13:05:55] ✅ [02_Dry Spell_20260419] Step 2 API: 《半截蜡烛》 | 38.7s | in=15151 out=2457 | ~$0.082
[13:06:07] ✅ [01_Woman_20260419] Step 2 API: 《旱季的根》 | 50.8s | in=15249 out=2518 | ~$0.084
{"timestamp": "2026-04-19T13:05:16.626750+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc", "profile": "grammy", "concurrency": 3, "resume_mode": "each", "pending_song_count": 2, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc/01_Woman_20260419", "/srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc/02_Dry Spell_20260419"], "success_count": 2, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc/01_Woman_20260419", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc/01_Woman_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-130340-8412dc/01_Woman_20260419", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc/01_Woman_20260419/step2_json_b.json", "agent_summary": "API direct: 旱季的根", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc/02_Dry Spell_20260419", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc/02_Dry Spell_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-130340-8412dc/02_Dry Spell_20260419", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc/02_Dry Spell_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-130340-8412dc\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[13:06:09] 🏥 Health check...\n[13:06:10] ✅ qishui: OK\n[13:06:10] ✅ netease: OK\n[13:06:10] ✅ qq: OK\n\n  📝 [01_Woman_20260419] lyrics stripped: 4076c → 4069c\n[13:06:11] 🎵 [01_Woman_20260419] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[13:06:11] 🎨 [01_Woman_20260419] Step 4: SeeDream cover (parallel)...\n  📝 [02_Dry Spell_20260419] lyrics stripped: 3949c → 3942c\n[13:06:11] 🎵 [02_Dry Spell_20260419] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[13:06:11] 🎨 [02_Dry Spell_20260419] Step 4: SeeDream cover (parallel)...\n  ✅ submitted: ['c0416abb', '951e6734']\n  🎵 c0416abb... → submitted\n  🎵 951e6734... → submitted\n  🎵 c0416abb... → queued\n  🎵 951e6734... → queued\n  ✅ submitted: ['80d38448', '199d59a7']\n  🎵 80d38448... → submitted\n  🎵 199d59a7... → submitted\n  🎵 c0416abb... → streaming\n  🎵 951e6734... → streaming\n  🎵 80d38448... → queued\n  🎵 199d59a7... → queued\n  🎵 199d59a7... → streaming\n  🎵 80d38448... → streaming\n  🎵 199d59a7... → complete\n  🎵 c0416abb... → complete\n  🎵 951e6734... → complete\n[13:09:31]    🎧 [01_Woman_20260419] Song 1: https://cdn1.suno.ai/c0416abb-e978-491d-926e-8ce1998c04ac.mp3\n[13:09:31]    🎧 [01_Woman_20260419] Song 2: https://cdn1.suno.ai/951e6734-dade-4c09-992e-c80292177043.mp3\n[13:09:31] 🎛️ [01_Woman_20260419] Step 3.5: 混音...\n[13:09:56]    🎚️ [01_Woman_20260419] Song 1: pop | 低55/中40/高5%\n  🎵 80d38448... → complete\n[13:09:56]    🎧 [02_Dry Spell_20260419] Song 1: https://cdn1.suno.ai/80d38448-8883-4e5e-a78e-bfd9aa74e40d.mp3\n[13:09:56]    🎧 [02_Dry Spell_20260419] Song 2: https://cdn1.suno.ai/199d59a7-4558-45c3-86b2-88efdfdfb969.mp3\n[13:09:56] 🎛️ [02_Dry Spell_20260419] Step 3.5: 混音...\n[13:10:14]    🎚️ [02_Dry Spell_20260419] Song 1: edm | 低40/中52/高7%\n[13:10:34]    🎚️ [01_Woman_20260419] Song 2: pop | 低56/中40/高4%\n[13:10:34] ✅ [01_Woman_20260419] Step 3.5: 62.2s | 2 songs mixed\n[13:10:53]    🎚️ [02_Dry Spell_20260419] Song 2: edm | 低44/中48/高8%\n[13:10:53] ✅ [02_Dry Spell_20260419] Step 3.5: 56.4s | 2 songs mixed\n[13:10:54] ✅ [01_Woman_20260419] Step 4: 13.9s | /srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc/01_Woman_20260419/cover_seedream.jpg\n[13:10:54] ✅ [02_Dry Spell_20260419] Step 4: 14.6s | /srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc/02_Dry Spell_20260419/cover_seedream.jpg\n\n======================================================================\nSUMMARY | 284s (4.7min)\n======================================================================\n✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260419-130340-8412dc → +2 新增, ~0 更新 | 总计 476 首\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:10:54.589719+08:00", "wall_clock": 283.6, "total": 2, "success": 2, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-04-19 13:10:55 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-130340-8412dc ===
[Feishu] ✅ Exported 2 songs to: https://ccnu62373cgc.feishu.cn/sheets/EzgVs6Tq9hZjc6tvz7NcUPOMnlf
[Feishu] 📐 Expanded master sheet from 481 to 583 rows
[Feishu] ✅ Appended 2 new songs to master sheet (rows 482-483)
[MasterDB] ✅ 批次 batch-20260419-130340-8412dc → +2 新增, ~0 更新 | 总计 483 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/EzgVs6Tq9hZj
[13:11:03] 📨 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 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-130340-8412dc
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260419-130340-8412dc
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260419-130340-8412dc

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