
=== 2026-04-29 21:30:15 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260429-213015-bd48c5 --target-language zh --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260429-213015-bd48c5' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260429-213015-bd48c5.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
/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-20260429-213015-bd48c5
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[21:30:16] 🏥 Health check...
[21:30:18] ✅ qishui: OK
[21:30:18] ✅ netease: OK
[21:30:18] ✅ qq: OK

[21:30:18] 🔍 [01_Fix You_20260429] Step 0: Fetching...
[21:30:21] ✅ [01_Fix You_20260429] Step 0: netease | 1875c
[21:30:21] ⬇️  [01_Fix You_20260429] Step 0.5: Download from netease...
[21:30:27] ✅ [01_Fix You_20260429] Step 0.5: 5641529 bytes | 296.2s
[21:30:27] 🔬 [01_Fix You_20260429] Step 0.75: Audio features...
[21:31:02] ✅ [01_Fix You_20260429] Step 0.75: BPM=139.1 Key=D# major (34.3s)
[21:31:02] 🧠 [01_Fix You_20260429] Step 1: Gemini (queuing)...
[21:31:02] 🌐 Step 1: target_language=zh (injecting override directive)
  📊 Gemini official: 56s | prompt_tokens=13230 completion=1470
[21:31:58] ⚠️  [01_Fix You_20260429] Step 1.5: prompt 1264c > 1000c, compressing...
  📏 [01_Fix You_20260429] prompt 1264c → 877c (smart truncate)
[21:31:58] ✅ [01_Fix You_20260429] Step 1.5: prompt compressed 1264c → 877c
[21:31:59] 🎯 [01_Fix You_20260429] Mood rewritten with inspiration
[21:31:59] ✅ [01_Fix You_20260429] Step 1: 56.1s | prompt=861c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 100s (1.7min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260429-213015-bd48c5 → +0 新增, ~0 更新 | 总计 611 首
[exit 0]

=== 2026-04-29 21:32:00 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5 --profile grammy --resume-mode each --skip-feishu --target-language zh ===
[phase2] batch=batch-20260429-213015-bd48c5 pending=1 groups=1
[phase2] group 1/1 -> 01_Fix You_20260429
[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml
[phase2] 🌐 01_Fix You_20260429: target_language=zh
[phase2] retry 1/1 for 01_Fix You_20260429 in 10s
[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml
[phase2] 🌐 01_Fix You_20260429: target_language=zh
[21:32:00] 🌐 [01_Fix You_20260429] Step 2: target_language=zh → lang_mode=ZH
[21:32:00] 🤖 [01_Fix You_20260429] Step 2 API: 34230 chars ≈ 8557 tokens → claude-sonnet-4-6
[21:32:38] ⚠️  [01_Fix You_20260429] Step 2 API attempt 1: JSON parse error: Expecting ',' delimiter: line 5 column 1122 (char 2056)
[21:33:14] ⚠️  [01_Fix You_20260429] Step 2 API attempt 2: JSON parse error: Expecting ',' delimiter: line 5 column 1101 (char 2034)
[21:33:24] 🌐 [01_Fix You_20260429] Step 2: target_language=zh → lang_mode=ZH
[21:33:24] 🤖 [01_Fix You_20260429] Step 2 API: 34230 chars ≈ 8557 tokens → claude-sonnet-4-6
[21:34:02] ⚠️  [01_Fix You_20260429] Step 2 API attempt 1: JSON parse error: Expecting ',' delimiter: line 5 column 1130 (char 2064)
[21:34:39] ⚠️  [01_Fix You_20260429] Step 2 API attempt 2: JSON parse error: Expecting ',' delimiter: line 5 column 1098 (char 2031)
{"timestamp": "2026-04-29T21:32:00.157242+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5", "profile": "grammy", "concurrency": 3, "resume_mode": "each", "pending_song_count": 1, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5/01_Fix You_20260429"], "success_count": 0, "failed_count": 1, "results": [{"status": "error", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5/01_Fix You_20260429", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5/01_Fix You_20260429/step2_json_b.json", "error_type": "api_error", "error": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1098 (char 2031)", "agent_summary": null, "returncode": 1, "stderr": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1098 (char 2031)", "attempt": 2, "attempts": [{"status": "error", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5/01_Fix You_20260429", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5/01_Fix You_20260429/step2_json_b.json", "error_type": "api_error", "error": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1101 (char 2034)", "agent_summary": null, "returncode": 1, "stderr": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1101 (char 2034)", "attempt": 1}, {"status": "error", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5/01_Fix You_20260429", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5/01_Fix You_20260429/step2_json_b.json", "error_type": "api_error", "error": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1098 (char 2031)", "agent_summary": null, "returncode": 1, "stderr": "All 2 attempts failed: JSON parse error: Expecting ',' delimiter: line 5 column 1098 (char 2031)", "attempt": 2}]}]}], "resume": null, "status": "partial_failure"}
[exit 1]

=== 2026-04-29 21:40:58 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260429-213015-bd48c5 --resume /srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5 --target-language zh ===
[profile] ✅ Loaded profile '__runtime_batch-20260429-213015-bd48c5' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260429-213015-bd48c5.yaml

======================================================================
music-pipeline3000 v2 | 1 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[21:40:59] 🏥 Health check...
[21:41:02] ✅ qishui: OK
[21:41:02] ✅ netease: OK
[21:41:02] ✅ qq: OK

[21:41:02] 🌐 [01_Fix You_20260429] Step 2: target_language=zh → lang_mode=ZH
[21:41:02] 🤖 [01_Fix You_20260429] Step 2 API: 34305 chars ≈ 8576 tokens → claude-sonnet-4-6
[21:41:41] ⚠️  [01_Fix You_20260429] Step 2 API: originality 81% < 85% | 0 copied phrases
[21:41:41] 🔄 [01_Fix You_20260429] Step 2 API: originality retry 1/3...
[21:42:18] ⚠️  [01_Fix You_20260429] Step 2 API retry 1: originality 79%
[21:42:18] 🔄 [01_Fix You_20260429] Step 2 API: originality retry 2/3...
[21:42:54] ⚠️  [01_Fix You_20260429] Step 2 API retry 2: originality 75%
[21:42:54] 🔄 [01_Fix You_20260429] Step 2 API: originality retry 3/3...
[21:43:35] ⚠️  [01_Fix You_20260429] Step 2 API originality retry 3 failed: Expecting value: line 1 column 1 (char 0)
[21:43:35] ⚠️  [01_Fix You_20260429] Step 2 API: best originality 81% after 3 retries
[21:43:35] ✅ [01_Fix You_20260429] Step 2 API: 《尘埃坐标》 | 111.6s | in=64629 out=7480 | ~$0.306
[21:43:35] ✅ [01_Fix You_20260429] Step 2.5: originality 81% ✓
[21:43:35] ✅ [01_Fix You_20260429] Step 2: 《尘埃坐标》
[21:43:35] 📁 [01_Fix You_20260429] Renamed → 01_Fix You_尘埃坐标_20260429
  📝 [01_Fix You_尘埃坐标_20260429] lyrics stripped: 3548c → 3540c
[21:43:35] 🎵 [01_Fix You_尘埃坐标_20260429] Step 3: Suno generation (weirdness=50, style_influence=50)...
[21:43:35] 🎨 [01_Fix You_尘埃坐标_20260429] Step 4: SeeDream cover (parallel)...
  ✅ submitted: ['9249edb4', 'dfa632c4']
  🎵 9249edb4... → submitted
  🎵 dfa632c4... → submitted
  🎵 9249edb4... → queued
  🎵 dfa632c4... → queued
  🎵 9249edb4... → streaming
  🎵 dfa632c4... → streaming
  🎵 9249edb4... → complete
  🎵 dfa632c4... → complete
[21:47:27]    🎧 [01_Fix You_尘埃坐标_20260429] Song 1: https://cdn1.suno.ai/9249edb4-f5a1-4994-863d-79ef41a0edf6.mp3
[21:47:27]    🎧 [01_Fix You_尘埃坐标_20260429] Song 2: https://cdn1.suno.ai/dfa632c4-e1d9-4001-9de2-7745d7f5e18f.mp3
[21:47:27] 🎛️ [01_Fix You_尘埃坐标_20260429] Step 3.5: 混音...
[21:47:55]    🎚️ [01_Fix You_尘埃坐标_20260429] Song 1: pop | 低44/中52/高4%
[21:48:16]    🎚️ [01_Fix You_尘埃坐标_20260429] Song 2: pop | 低45/中49/高6%
[21:48:16] ✅ [01_Fix You_尘埃坐标_20260429] Step 3.5: 48.5s | 2 songs mixed
[21:48:16] ⚠️  [01_Fix You_尘埃坐标_20260429] Step 4: http_403 (non-fatal)

======================================================================
SUMMARY | 434s (7.2min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260429-213015-bd48c5 → +1 新增, ~0 更新 | 总计 612 首
[exit 0]

=== 2026-04-29 21:48:17 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5 ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/PxNpsV5dzhfgy6tclCxcQjejnXf
[Feishu] 📐 Expanded master sheet from 552 to 653 rows
[Feishu] ✅ Appended 1 new songs to master sheet (rows 553-553)
[MasterDB] ✅ 批次 batch-20260429-213015-bd48c5 → +1 新增, ~0 更新 | 总计 553 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/PxNpsV5dzhfg
[21:48:24] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [尘埃坐标] topic head sent (message_id=om_x100b50148c5e5cb4b26472157aadd73)
[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-20260429-213015-bd48c5
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260429-213015-bd48c5
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260429-213015-bd48c5

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