
=== 2026-04-20 23:30:41 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260420-233041-01e175 --target-language zh --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260420-233041-01e175' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260420-233041-01e175.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
/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 | 1 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[23:30:43] 🏥 Health check...
[23:30:45] ✅ qishui: OK
[23:30:45] ✅ netease: OK
[23:30:45] ✅ qq: OK

[23:30:45] 🔍 [01_Blau (蓝)_20260420] Step 0: Fetching...
[23:30:53] ✅ [01_Blau (蓝)_20260420] Step 0: qq | 939c
[23:30:53] ⬇️  [01_Blau (蓝)_20260420] Step 0.5: Download from qq...
[23:31:06] ✅ [01_Blau (蓝)_20260420] Step 0.5: 5407450 bytes | 239.3s
[23:31:06] 🔬 [01_Blau (蓝)_20260420] Step 0.75: Audio features...
[23:31:53] ✅ [01_Blau (蓝)_20260420] Step 0.75: BPM=172.27 Key=D minor (47.4s)
[23:31:53] 🧠 [01_Blau (蓝)_20260420] Step 1: Gemini (queuing)...
[23:31:53] 🌐 Step 1: target_language=zh (injecting override directive)
  ⚠️ 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: 47s | prompt_tokens=11257 completion=1249
[23:34:03] ✅ [01_Blau (蓝)_20260420] Step 1: 47.0s | prompt=837c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 199s (3.3min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260420-233041-01e175 → +0 新增, ~0 更新 | 总计 562 首
[exit 0]

=== 2026-04-20 23:34:04 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175 --profile base --resume-mode each --skip-feishu --target-language zh ===
[phase2] batch=batch-20260420-233041-01e175 pending=1 groups=1
[phase2] group 1/1 -> 01_Blau (蓝)_20260420
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml
[phase2] 🌐 01_Blau (蓝)_20260420: 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-20260420-233041-01e175/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175 --profile base --skip-feishu
[23:34:05] 🌐 [01_Blau (蓝)_20260420] Step 2: target_language=zh → lang_mode=ZH
[23:34:05] 🤖 [01_Blau (蓝)_20260420] Step 2 API: 27467 chars ≈ 6866 tokens → claude-sonnet-4-6
[23:34:38] ⚠️  [01_Blau (蓝)_20260420] Step 2 API: originality 82% < 85% | 0 copied phrases
[23:34:38] 🔄 [01_Blau (蓝)_20260420] Step 2 API: originality retry 1/3...
[23:35:16] ⚠️  [01_Blau (蓝)_20260420] Step 2 API retry 1: originality 80%
[23:35:16] 🔄 [01_Blau (蓝)_20260420] Step 2 API: originality retry 2/3...
[23:36:03] ⚠️  [01_Blau (蓝)_20260420] Step 2 API retry 2: originality 83%
[23:36:03] 🔄 [01_Blau (蓝)_20260420] Step 2 API: originality retry 3/3...
[23:36:41] ⚠️  [01_Blau (蓝)_20260420] Step 2 API retry 3: originality 81%
[23:36:41] ⚠️  [01_Blau (蓝)_20260420] Step 2 API: best originality 83% after 3 retries
[23:36:41] ✅ [01_Blau (蓝)_20260420] Step 2 API: 《浮水印》 | 156.2s | in=75414 out=9345 | ~$0.366
{"timestamp": "2026-04-20T23:34:05.024316+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175", "profile": "base", "concurrency": 3, "resume_mode": "each", "pending_song_count": 1, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175/01_Blau (蓝)_20260420"], "success_count": 1, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175/01_Blau (蓝)_20260420", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175/01_Blau (蓝)_20260420/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-20260420-233041-01e175/01_Blau (蓝)_20260420", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175/01_Blau (蓝)_20260420/step2_json_b.json", "agent_summary": "API direct: 浮水印", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "resume": {"status": "success", "returncode": 0, "stdout_tail": "\n======================================================================\nmusic-pipeline3000 v2 | 1 songs\n======================================================================\nGemini concurrency: 2 | Suno concurrency: 3\nOutput: /srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[23:36:43] 🏥 Health check...\n[23:36:45] ✅ qishui: OK\n[23:36:45] ✅ netease: OK\n[23:36:45] ✅ qq: OK\n\n  📝 [01_Blau (蓝)_20260420] lyrics stripped: 2959c → 2952c\n[23:36:45] 🎵 [01_Blau (蓝)_20260420] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[23:36:45] 🎨 [01_Blau (蓝)_20260420] Step 4: SeeDream cover (parallel)...\n  ✅ submitted: ['80b72c26', '4046f83f']\n  🎵 80b72c26... → submitted\n  🎵 4046f83f... → submitted\n  🎵 80b72c26... → queued\n  🎵 4046f83f... → queued\n  🎵 80b72c26... → streaming\n  🎵 4046f83f... → streaming\n  🎵 4046f83f... → complete\n  🎵 80b72c26... → complete\n[23:39:14]    🎧 [01_Blau (蓝)_20260420] Song 1: https://cdn1.suno.ai/80b72c26-8ad9-4b96-89ae-898edb0444b1.mp3\n[23:39:14]    🎧 [01_Blau (蓝)_20260420] Song 2: https://cdn1.suno.ai/4046f83f-b5fa-4f2c-9f24-fcbf51639631.mp3\n[23:39:14] 🎛️ [01_Blau (蓝)_20260420] Step 3.5: 混音...\n[23:39:38]    🎚️ [01_Blau (蓝)_20260420] Song 1: jazz | 低67/中30/高3%\n[23:39:58]    🎚️ [01_Blau (蓝)_20260420] Song 2: jazz | 低62/中36/高2%\n[23:39:58] ✅ [01_Blau (蓝)_20260420] Step 3.5: 43.3s | 2 songs mixed\n[23:40:01] ✅ [01_Blau (蓝)_20260420] Step 4: 17.1s | /srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175/01_Blau (蓝)_20260420/cover_seedream.jpg\n\n======================================================================\nSUMMARY | 197s (3.3min)\n======================================================================\n✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260420-233041-01e175 → +1 新增, ~0 更新 | 总计 563 首\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-20T23:40:01.980279+08:00", "wall_clock": 196.8, "total": 1, "success": 1, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-04-20 23:40:03 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175 ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/NXHGs4mJvhu8NwtcxYvcCekpnoe
[Feishu] 📐 Expanded master sheet from 503 to 604 rows
[Feishu] ✅ Appended 1 new songs to master sheet (rows 504-504)
[MasterDB] ✅ 批次 batch-20260420-233041-01e175 → +1 新增, ~0 更新 | 总计 504 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/NXHGs4mJvhu8
[23:40:09] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [浮水印] topic head sent (message_id=om_x100b5150c3689cb4b2cf321d167424d)
[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-20260420-233041-01e175
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260420-233041-01e175
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260420-233041-01e175

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