
=== 2026-04-27 00:33:54 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260427-003354-21fbb8 --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260427-003354-21fbb8' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260427-003354-21fbb8.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 | 3 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[00:33:56] 🏥 Health check...
[00:33:58] ✅ qishui: OK
[00:33:58] ✅ netease: OK
[00:33:58] ✅ qq: OK

[00:33:58] 🔍 [01_晚风与你_20260427] Step 0: Fetching...
[00:33:58] 🔍 [02_奢香夫人_20260427] Step 0: Fetching...
[00:33:58] 🔍 [03_我期待的不是雪_20260427] Step 0: Fetching...
[00:34:05] ⚠️  [qq] '晚风与你' too short (90s < 120s), likely a cover/clip, skipping
[00:34:05] 🔄 [01_晚风与你_20260427] Step 0: retry 1/2 in 5s...
[00:34:10] ⚠️  [qq] '晚风与你' too short (90s < 120s), likely a cover/clip, skipping
[00:34:10] 🔄 [01_晚风与你_20260427] Step 0: retry 2/2 in 10s...
[00:34:13] ✅ [02_奢香夫人_20260427] Step 0: qq | 822c
[00:34:13] ⬇️  [02_奢香夫人_20260427] Step 0.5: Download from qq...
[00:34:14] ✅ [03_我期待的不是雪_20260427] Step 0: qq | 537c
[00:34:14] ⬇️  [03_我期待的不是雪_20260427] Step 0.5: Download from qq...
[00:34:20] ⚠️  [qq] '晚风与你' too short (90s < 120s), likely a cover/clip, skipping
[00:34:20] ❌ [01_晚风与你_20260427] Step 0: No audio URL
[00:34:21] ✅ [02_奢香夫人_20260427] Step 0.5: 6192640 bytes | 259.9s
[00:34:21] 🔬 [02_奢香夫人_20260427] Step 0.75: Audio features...
[00:34:23] ✅ [03_我期待的不是雪_20260427] Step 0.5: 3996721 bytes | 166.1s
[00:34:23] 🔬 [03_我期待的不是雪_20260427] Step 0.75: Audio features...
[00:34:58] ✅ [03_我期待的不是雪_20260427] Step 0.75: BPM=112.4 Key=G# minor (35.0s)
[00:34:58] 🧠 [03_我期待的不是雪_20260427] Step 1: Gemini (queuing)...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
[00:35:05] ✅ [02_奢香夫人_20260427] Step 0.75: BPM=82.97 Key=C# minor (43.7s)
[00:35:05] 🧠 [02_奢香夫人_20260427] Step 1: Gemini (queuing)...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  📊 Gemini official: 39s | prompt_tokens=8818 completion=1113
[00:35:44] ✅ [03_我期待的不是雪_20260427] Step 1: 39.3s | prompt=915c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 38s | prompt_tokens=12044 completion=1289
[00:35:54] ✅ [02_奢香夫人_20260427] Step 1: 38.4s | prompt=948c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 115s (1.9min)
======================================================================
✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 1
[MasterDB] ✅ 批次 batch-20260427-003354-21fbb8 → +0 新增, ~0 更新 | 总计 601 首
[exit 0]

=== 2026-04-27 00:35:55 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8 --profile xiachen --resume-mode each --skip-feishu ===
[phase2] batch=batch-20260427-003354-21fbb8 pending=2 groups=1
[phase2] group 1/1 -> 02_奢香夫人_20260427, 03_我期待的不是雪_20260427
[profile] ✅ Loaded profile 'xiachen' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/xiachen.yaml
[phase2] 🌐 02_奢香夫人_20260427: target_language=auto
[profile] ✅ Loaded profile 'xiachen' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/xiachen.yaml
[phase2] 🌐 03_我期待的不是雪_20260427: target_language=auto
[phase2] retry 1/1 for 03_我期待的不是雪_20260427 in 10s
[profile] ✅ Loaded profile 'xiachen' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/xiachen.yaml
[phase2] 🌐 03_我期待的不是雪_20260427: target_language=auto
[phase2] resume -> /usr/bin/python3 /srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8 --profile xiachen --skip-feishu
[00:35:55] 🌐 [02_奢香夫人_20260427] Step 2: target_language=auto → lang_mode=AUTO
[00:35:55] 🤖 [02_奢香夫人_20260427] Step 2 API: 13195 chars ≈ 3298 tokens → claude-sonnet-4-6
[00:35:55] 🌐 [03_我期待的不是雪_20260427] Step 2: target_language=auto → lang_mode=AUTO
[00:35:55] 🤖 [03_我期待的不是雪_20260427] Step 2 API: 12744 chars ≈ 3186 tokens → claude-sonnet-4-6
[00:36:34] ⚠️  [03_我期待的不是雪_20260427] Step 2 API attempt 1: JSON parse error: Expecting ',' delimiter: line 5 column 1289 (char 2286)
[00:36:39] ⚠️  [02_奢香夫人_20260427] Step 2 API: originality 78% < 85% | 3 copied phrases
          ❗ "呀 呀咿呀 呀嘿" ~ "呀 呀咿呀 呀嘿" (100%)
          ❗ "有没有人能懂得我" ~ "有没有人能告诉我" (75%)
          ❗ "有没有人能懂得我" ~ "有没有人能告诉我" (75%)
[00:36:39] 🔄 [02_奢香夫人_20260427] Step 2 API: originality retry 1/3...
[00:37:15] ⚠️  [03_我期待的不是雪_20260427] Step 2 API attempt 2: JSON parse error: Expecting ',' delimiter: line 5 column 1291 (char 2282)
[00:37:25] 🌐 [03_我期待的不是雪_20260427] Step 2: target_language=auto → lang_mode=AUTO
[00:37:25] 🤖 [03_我期待的不是雪_20260427] Step 2 API: 12744 chars ≈ 3186 tokens → claude-sonnet-4-6
[00:37:27] ⚠️  [02_奢香夫人_20260427] Step 2 API retry 1: originality 82%
[00:37:27] 🔄 [02_奢香夫人_20260427] Step 2 API: originality retry 2/3...
[00:38:05] ⚠️  [03_我期待的不是雪_20260427] Step 2 API attempt 1: JSON parse error: Expecting ',' delimiter: line 5 column 1273 (char 2267)
[00:38:11] ⚠️  [02_奢香夫人_20260427] Step 2 API retry 2: originality 82%
[00:38:11] 🔄 [02_奢香夫人_20260427] Step 2 API: originality retry 3/3...
[00:38:46] ⚠️  [03_我期待的不是雪_20260427] Step 2 API attempt 2: JSON parse error: Expecting ',' delimiter: line 5 column 1316 (char 2309)
[00:39:02] ⚠️  [02_奢香夫人_20260427] Step 2 API originality retry 3 failed: Expecting value: line 1 column 1 (char 0)
[00:39:02] ⚠️  [02_奢香夫人_20260427] Step 2 API: best originality 82% after 3 retries
[00:39:02] ✅ [02_奢香夫人_20260427] Step 2 API: 《回不去的地方才叫故乡》 | 135.6s | in=37754 out=6476 | ~$0.210
{"timestamp": "2026-04-27T00:35:55.258718+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8", "profile": "xiachen", "concurrency": 3, "resume_mode": "each", "pending_song_count": 2, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/02_奢香夫人_20260427", "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/03_我期待的不是雪_20260427"], "success_count": 1, "failed_count": 1, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/02_奢香夫人_20260427", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/02_奢香夫人_20260427/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-20260427-003354-21fbb8/02_奢香夫人_20260427", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/02_奢香夫人_20260427/step2_json_b.json", "agent_summary": "API direct: 回不去的地方才叫故乡", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "error", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/03_我期待的不是雪_20260427", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/03_我期待的不是雪_20260427/step2_json_b.json", "error_type": "api_error", "error": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1316 (char 2309)", "agent_summary": null, "returncode": 1, "stderr": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1316 (char 2309)", "attempt": 2, "attempts": [{"status": "error", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/03_我期待的不是雪_20260427", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/03_我期待的不是雪_20260427/step2_json_b.json", "error_type": "api_error", "error": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1291 (char 2282)", "agent_summary": null, "returncode": 1, "stderr": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1291 (char 2282)", "attempt": 1}, {"status": "error", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/03_我期待的不是雪_20260427", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/03_我期待的不是雪_20260427/step2_json_b.json", "error_type": "api_error", "error": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1316 (char 2309)", "agent_summary": null, "returncode": 1, "stderr": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1316 (char 2309)", "attempt": 2}]}]}], "resume": {"status": "success", "returncode": 0, "stdout_tail": "\n======================================================================\nmusic-pipeline3000 v2 | 3 songs\n======================================================================\nGemini concurrency: 2 | Suno concurrency: 3\nOutput: /srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[00:39:04] 🏥 Health check...\n[00:39:06] ✅ qishui: OK\n[00:39:06] ✅ netease: OK\n[00:39:06] ✅ qq: OK\n\n[00:39:06] 🔍 [01_晚风与你_20260427] Step 0: Fetching...\n[00:39:06] 🌐 [03_我期待的不是雪_20260427] Step 2: target_language=auto → lang_mode=AUTO\n[00:39:06] 🤖 [03_我期待的不是雪_20260427] Step 2 API: 12744 chars ≈ 3186 tokens → claude-sonnet-4-6\n  📝 [02_奢香夫人_20260427] lyrics stripped: 2814c → 2806c\n[00:39:06] 🎵 [02_奢香夫人_20260427] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[00:39:06] 🎨 [02_奢香夫人_20260427] Step 4: SeeDream cover (parallel)...\n[00:39:10] ⚠️  [qq] '晚风与你' too short (90s < 120s), likely a cover/clip, skipping\n[00:39:10] 🔄 [01_晚风与你_20260427] Step 0: retry 1/2 in 5s...\n[00:39:15] ⚠️  [qq] '晚风与你' too short (90s < 120s), likely a cover/clip, skipping\n[00:39:15] 🔄 [01_晚风与你_20260427] Step 0: retry 2/2 in 10s...\n[00:39:25] ⚠️  [qq] '晚风与你' too short (90s < 120s), likely a cover/clip, skipping\n[00:39:25] ❌ [01_晚风与你_20260427] Step 0: No audio URL\n[00:39:45] ⚠️  [03_我期待的不是雪_20260427] Step 2 API attempt 1: JSON parse error: Expecting ',' delimiter: line 5 column 1330 (char 2322)\n  ✅ submitted: ['3a74e376', '3e967f4a']\n  🎵 3a74e376... → submitted\n  🎵 3e967f4a... → submitted\n  🎵 3a74e376... → queued\n  🎵 3e967f4a... → queued\n  🎵 3a74e376... → streaming\n  🎵 3e967f4a... → streaming\n[00:40:26] ⚠️  [03_我期待的不是雪_20260427] Step 2 API attempt 2: JSON parse error: Expecting ',' delimiter: line 5 column 1291 (char 2282)\n  🎵 3a74e376... → complete\n  🎵 3e967f4a... → complete\n[00:42:56]    🎧 [02_奢香夫人_20260427] Song 1: https://cdn1.suno.ai/3a74e376-abfa-4bd0-a2a8-ffd5e17deac7.mp3\n[00:42:56]    🎧 [02_奢香夫人_20260427] Song 2: https://cdn1.suno.ai/3e967f4a-8b27-4d41-b62e-156680c3814b.mp3\n[00:42:56] 🎛️ [02_奢香夫人_20260427] Step 3.5: 混音...\n[00:43:23]    🎚️ [02_奢香夫人_20260427] Song 1: pop | 低47/中47/高7%\n[00:43:46]    🎚️ [02_奢香夫人_20260427] Song 2: pop | 低44/中49/高7%\n[00:43:46] ✅ [02_奢香夫人_20260427] Step 3.5: 50.0s | 2 songs mixed\n[00:43:48] ✅ [02_奢香夫人_20260427] Step 4: 14.3s | /srv/music-files-platform-next/pipeline/batch-20260427-003354-21fbb8/02_奢香夫人_20260427/cover_seedream.jpg\n\n======================================================================\nSUMMARY | 282s (4.7min)\n======================================================================\n✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 2\n[MasterDB] ✅ 批次 batch-20260427-003354-21fbb8 → +1 新增, ~0 更新 | 总计 602 首\n", "stderr_tail": "[profile] ✅ Loaded profile 'xiachen' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/xiachen.yaml\n", "summary": {"timestamp": "2026-04-27T00:43:48.480135+08:00", "wall_clock": 281.9, "total": 3, "success": 1, "awaiting_step2": 0, "failed": 2}}, "status": "partial_failure"}
[exit 1]
