
=== 2026-04-25 06:41:49 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260425-064149-190476 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260425-064149-190476 --target-language zh --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260425-064149-190476' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260425-064149-190476.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')

======================================================================
music-pipeline3000 v2 | 2 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260425-064149-190476
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[06:41:51] 🏥 Health check...
[06:41:53] ✅ qishui: OK
[06:41:53] ✅ netease: OK
[06:41:53] ✅ qq: OK

[06:41:53] 🔍 [01_DAISIES_20260425] Step 0: Fetching...
[06:41:53] 🔍 [02_YUKON_20260425] Step 0: Fetching...
[06:41:56] ✅ [01_DAISIES_20260425] Step 0: netease | 1842c
[06:41:56] ⬇️  [01_DAISIES_20260425] Step 0.5: Download from netease...
[06:41:57] ✅ [02_YUKON_20260425] Step 0: netease | 1774c
[06:41:57] ⬇️  [02_YUKON_20260425] Step 0.5: Download from netease...
[06:42:02] ✅ [02_YUKON_20260425] Step 0.5: 3594751 bytes | 163.9s
[06:42:02] 🔬 [02_YUKON_20260425] Step 0.75: Audio features...
[06:42:02] ✅ [01_DAISIES_20260425] Step 0.5: 3598735 bytes | 176.5s
[06:42:02] 🔬 [01_DAISIES_20260425] Step 0.75: Audio features...
[06:42:33] ✅ [02_YUKON_20260425] Step 0.75: BPM=95.99 Key=G major (30.5s)
[06:42:33] 🧠 [02_YUKON_20260425] Step 1: Gemini (queuing)...
[06:42:33] 🌐 Step 1: target_language=zh (injecting override directive)
[06:42:33] ✅ [01_DAISIES_20260425] Step 0.75: BPM=110.18 Key=G# major (30.5s)
[06:42:33] 🧠 [01_DAISIES_20260425] Step 1: Gemini (queuing)...
[06:42:33] 🌐 Step 1: target_language=zh (injecting override directive)
  📊 Gemini official: 35s | prompt_tokens=8938 completion=1200
[06:43:08] ✅ [02_YUKON_20260425] Step 1: 35.3s | prompt=860c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 37s | prompt_tokens=9357 completion=1260
[06:43:10] ✅ [01_DAISIES_20260425] Step 1: 36.9s | prompt=884c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 77s (1.3min)
======================================================================
✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260425-064149-190476 → +0 新增, ~0 更新 | 总计 592 首
[exit 0]

=== 2026-04-25 06:43:11 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260425-064149-190476 --profile base --resume-mode each --skip-feishu --target-language zh ===
[phase2] batch=batch-20260425-064149-190476 pending=2 groups=1
[phase2] group 1/1 -> 01_DAISIES_20260425, 02_YUKON_20260425
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml
[phase2] 🌐 01_DAISIES_20260425: target_language=zh
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml
[phase2] 🌐 02_YUKON_20260425: 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-20260425-064149-190476/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260425-064149-190476 --profile base --skip-feishu
[06:43:11] 🌐 [01_DAISIES_20260425] Step 2: target_language=zh → lang_mode=ZH
[06:43:11] 🤖 [01_DAISIES_20260425] Step 2 API: 30665 chars ≈ 7666 tokens → claude-sonnet-4-6
[06:43:11] 🌐 [02_YUKON_20260425] Step 2: target_language=zh → lang_mode=ZH
[06:43:11] 🤖 [02_YUKON_20260425] Step 2 API: 30174 chars ≈ 7543 tokens → claude-sonnet-4-6
[06:43:39] ✅ [02_YUKON_20260425] Step 2 API: 《慢半拍》 | 28.1s | in=16169 out=1980 | ~$0.078
[06:43:58] ✅ [01_DAISIES_20260425] Step 2 API: 《慢慢凉》 | 46.9s | in=16235 out=2153 | ~$0.081
{"timestamp": "2026-04-25T06:43:11.413486+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260425-064149-190476", "profile": "base", "concurrency": 3, "resume_mode": "each", "pending_song_count": 2, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/01_DAISIES_20260425", "/srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/02_YUKON_20260425"], "success_count": 2, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/01_DAISIES_20260425", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/01_DAISIES_20260425/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-20260425-064149-190476/01_DAISIES_20260425", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/01_DAISIES_20260425/step2_json_b.json", "agent_summary": "API direct: 慢慢凉", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/02_YUKON_20260425", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/02_YUKON_20260425/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-20260425-064149-190476/02_YUKON_20260425", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/02_YUKON_20260425/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-20260425-064149-190476\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[06:44:00] 🏥 Health check...\n[06:44:03] ✅ qishui: OK\n[06:44:03] ✅ netease: OK\n[06:44:03] ✅ qq: OK\n\n  📝 [01_DAISIES_20260425] lyrics stripped: 2648c → 2642c\n[06:44:03] 🎵 [01_DAISIES_20260425] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[06:44:03] 🎨 [01_DAISIES_20260425] Step 4: SeeDream cover (parallel)...\n  📝 [02_YUKON_20260425] lyrics stripped: 2205c → 2198c\n[06:44:03] 🎵 [02_YUKON_20260425] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[06:44:03] 🎨 [02_YUKON_20260425] Step 4: SeeDream cover (parallel)...\n  ✅ submitted: ['e136836e', 'f71713d7']\n  🎵 e136836e... → submitted\n  🎵 f71713d7... → submitted\n  ✅ submitted: ['659e0860', '77ebaec7']\n  🎵 659e0860... → submitted\n  🎵 77ebaec7... → submitted\n  🎵 e136836e... → queued\n  🎵 f71713d7... → queued\n  🎵 659e0860... → queued\n  🎵 77ebaec7... → queued\n  🎵 e136836e... → streaming\n  🎵 f71713d7... → streaming\n  🎵 659e0860... → streaming\n  🎵 77ebaec7... → streaming\n  🎵 e136836e... → complete\n  🎵 f71713d7... → complete\n[06:45:56]    🎧 [01_DAISIES_20260425] Song 1: https://cdn1.suno.ai/e136836e-2fb4-4af2-816c-8552d46b491e.mp3\n[06:45:56]    🎧 [01_DAISIES_20260425] Song 2: https://cdn1.suno.ai/f71713d7-7eeb-49b4-bba7-e0a45279111a.mp3\n[06:45:56] 🎛️ [01_DAISIES_20260425] Step 3.5: 混音...\n[06:46:15]    🎚️ [01_DAISIES_20260425] Song 1: pop | 低59/中38/高2%\n  🎵 659e0860... → complete\n  🎵 77ebaec7... → complete\n[06:46:16]    🎧 [02_YUKON_20260425] Song 1: https://cdn1.suno.ai/659e0860-7902-49a2-b50f-f560662a5d0a.mp3\n[06:46:16]    🎧 [02_YUKON_20260425] Song 2: https://cdn1.suno.ai/77ebaec7-eea2-4e5a-828e-d0af1e3243a3.mp3\n[06:46:16] 🎛️ [02_YUKON_20260425] Step 3.5: 混音...\n[06:46:31]    🎚️ [01_DAISIES_20260425] Song 2: pop | 低67/中31/高2%\n[06:46:31] ✅ [01_DAISIES_20260425] Step 3.5: 35.0s | 2 songs mixed\n[06:46:44]    🎚️ [02_YUKON_20260425] Song 1: pop | 低56/中39/高4%\n[06:46:58]    🎚️ [02_YUKON_20260425] Song 2: pop | 低67/中30/高3%\n[06:46:58] ✅ [02_YUKON_20260425] Step 3.5: 42.3s | 2 songs mixed\n[06:46:58] ✅ [01_DAISIES_20260425] Step 4: 14.6s | /srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/01_DAISIES_20260425/cover_seedream.jpg\n[06:46:59] ✅ [02_YUKON_20260425] Step 4: 19.5s | /srv/music-files-platform-next/pipeline/batch-20260425-064149-190476/02_YUKON_20260425/cover_seedream.jpg\n\n======================================================================\nSUMMARY | 176s (2.9min)\n======================================================================\n✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260425-064149-190476 → +2 新增, ~0 更新 | 总计 594 首\n", "stderr_tail": "[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml\n", "summary": {"timestamp": "2026-04-25T06:46:59.785974+08:00", "wall_clock": 176.4, "total": 2, "success": 2, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-04-25 06:47:00 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260425-064149-190476 ===
[Feishu] ✅ Exported 2 songs to: https://ccnu62373cgc.feishu.cn/sheets/IlrGsIze3h00gHtXhMgc5jEdnAh
[Feishu] 📐 Expanded master sheet from 535 to 637 rows
[Feishu] ✅ Appended 2 new songs to master sheet (rows 536-537)
[MasterDB] ✅ 批次 batch-20260425-064149-190476 → +2 新增, ~0 更新 | 总计 537 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/IlrGsIze3h00
[06:47:08] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [慢慢凉] topic head sent (message_id=om_x100b518b600a38a4b35e5e0b7d06904)
[Feishu IM] ✅ [慢慢凉] cover replied
[Feishu IM] ✅ [慢慢凉] 慢慢凉_V1_raw.mp3 replied
[Feishu IM] ✅ [慢慢凉] 慢慢凉_V1_mixed.mp3 replied
[Feishu IM] ✅ [慢慢凉] 慢慢凉_V2_raw.mp3 replied
[Feishu IM] ✅ [慢慢凉] 慢慢凉_V2_mixed.mp3 replied
[Feishu IM] ✅ [慢半拍] topic head sent (message_id=om_x100b518b612eb0a0b2512d85178af03)
[Feishu IM] ✅ [慢半拍] cover replied
[Feishu IM] ✅ [慢半拍] 慢半拍_V1_raw.mp3 replied
[Feishu IM] ✅ [慢半拍] 慢半拍_V1_mixed.mp3 replied
[Feishu IM] ✅ [慢半拍] 慢半拍_V2_raw.mp3 replied
[Feishu IM] ✅ [慢半拍] 慢半拍_V2_mixed.mp3 replied
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260425-064149-190476
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260425-064149-190476
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260425-064149-190476

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