
=== 2026-05-12 23:05:55 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d -cg 2 -cs 2 --skip-feishu --profile base --step1-only ===
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.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-20260512-230555-ee473d
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[23:05:57] 🏥 Health check...
[23:05:59] ✅ qishui: OK
[23:05:59] ✅ netease: OK
[23:05:59] ✅ qq: OK

[23:05:59] 🔍 [01_恋人_20260512] Step 0: Fetching...
[23:05:59] 🔍 [02_给你一瓶魔法药水_20260512] Step 0: Fetching...
[23:06:02] ✅ [02_给你一瓶魔法药水_20260512] Step 0: qishui | 482c lyrics
[23:06:02] ⬇️  [02_给你一瓶魔法药水_20260512] Step 0.5: Download from qishui...
[23:06:04] ✅ [01_恋人_20260512] Step 0: qishui | 392c lyrics
[23:06:04] ⬇️  [01_恋人_20260512] Step 0.5: Download from qishui...
[23:06:08] ⚠️  [02_给你一瓶魔法药水_20260512] Step 0.5: Only 60.0s preview (expected 258s)
[23:06:08] 🔄 [02_给你一瓶魔法药水_20260512] Step 0.5: Trying fallback netease...
[23:06:08] ⚠️  [01_恋人_20260512] Step 0.5: Only 60.0s preview (expected 275s)
[23:06:08] 🔄 [01_恋人_20260512] Step 0.5: Trying fallback netease...
[23:06:18] ✅ [02_给你一瓶魔法药水_20260512] Step 0.5: Fallback netease → 258.8s full audio
[23:06:18] ✅ [02_给你一瓶魔法药水_20260512] Step 0.5: 5581041 bytes | 258.8s
[23:06:18] 🔬 [02_给你一瓶魔法药水_20260512] Step 0.75: Audio features...
[23:06:19] ✅ [01_恋人_20260512] Step 0.5: Fallback netease → 276.0s full audio
[23:06:19] ✅ [01_恋人_20260512] Step 0.5: 5867228 bytes | 276.0s
[23:06:19] 🔬 [01_恋人_20260512] Step 0.75: Audio features...
[23:07:03] ✅ [02_给你一瓶魔法药水_20260512] Step 0.75: BPM=99.03 Key=E major (45.2s)
[23:07:03] 🧠 [02_给你一瓶魔法药水_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T15:07:03.709Z", "trace_id": "batch-20260512-230555-ee473d", "song_key": "02_给你一瓶魔法药水_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/02_给你一瓶魔法药水_20260512/song_pgc.mp3", "has_features": true}}
/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')
[23:07:06] ✅ [01_恋人_20260512] Step 0.75: BPM=139.81 Key=D# major (46.8s)
[23:07:06] 🧠 [01_恋人_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T15:07:06.162Z", "trace_id": "batch-20260512-230555-ee473d", "song_key": "01_恋人_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/01_恋人_20260512/song_pgc.mp3", "has_features": true}}
  📊 Gemini official: 46s | prompt_tokens=12181 completion=1524
{"__trace__": true, "ts": "2026-05-12T15:07:49.793Z", "trace_id": "batch-20260512-230555-ee473d", "song_key": "02_给你一瓶魔法药水_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 46.1, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T15:07:49.793Z", "trace_id": "batch-20260512-230555-ee473d", "song_key": "02_给你一瓶魔法药水_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 46.085}
[23:07:49] ✅ [02_给你一瓶魔法药水_20260512] Step 1: 46.1s | prompt=813c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 59s | prompt_tokens=12535 completion=1570
{"__trace__": true, "ts": "2026-05-12T15:08:05.497Z", "trace_id": "batch-20260512-230555-ee473d", "song_key": "01_恋人_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 59.3, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T15:08:05.497Z", "trace_id": "batch-20260512-230555-ee473d", "song_key": "01_恋人_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 59.335}
[23:08:05] ✅ [01_恋人_20260512] Step 1: 59.3s | prompt=916c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 126s (2.1min)
======================================================================
✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260512-230555-ee473d → +0 新增, ~0 更新 | 总计 717 首
[exit 0]

=== 2026-05-12 23:08:06 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d --profile base --resume-mode each --skip-feishu ===
[phase2] batch=batch-20260512-230555-ee473d pending=2 groups=1
[phase2] group 1/1 -> 01_恋人_20260512, 02_给你一瓶魔法药水_20260512
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml
[phase2] 🌐 01_恋人_20260512: target_language=auto
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml
[phase2] 🌐 02_给你一瓶魔法药水_20260512: 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-20260512-230555-ee473d/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d --profile base --skip-feishu
[23:08:06] 🎨 [01_恋人_20260512] Step 2 Turn 1: generating creative brief...
[23:08:06] 🎨 [02_给你一瓶魔法药水_20260512] Step 2 Turn 1: generating creative brief...
[23:08:17] 🎨 [02_给你一瓶魔法药水_20260512] Step 2 brief: 10.6s | in=4529 out=447
[23:08:17] ✅ [02_给你一瓶魔法药水_20260512] Step 2 brief: engine=F theme=两个人头靠头看同一块手机屏幕，光打在脸上，谁也没有先离开
[23:08:17] 🌐 [02_给你一瓶魔法药水_20260512] Step 2: target_language=auto → lang_mode=AUTO | multi-turn
[23:08:17] 🤖 [02_给你一瓶魔法药水_20260512] Step 2 Turn 2: 15653 chars ≈ 3913 tokens → claude-sonnet-4-6
[23:08:20] 🎨 [01_恋人_20260512] Step 2 brief: 13.4s | in=4539 out=500
[23:08:20] ✅ [01_恋人_20260512] Step 2 brief: engine=G theme=在整理阁楼时按下一盘无标签磁带，听见了自己十几岁时录的声音
[23:08:20] 🌐 [01_恋人_20260512] Step 2: target_language=auto → lang_mode=AUTO | multi-turn
[23:08:20] 🤖 [01_恋人_20260512] Step 2 Turn 2: 15897 chars ≈ 3974 tokens → claude-sonnet-4-6
[23:09:05] ⚠️  [02_给你一瓶魔法药水_20260512] Step 2 API: originality 78% < 85% | 2 copied phrases
          ❗ "chord, creating a feeling of suspension before resolving back to the V-I motion leading into the final chorus. Melody holds on the 2nd over the final B  chord.)" ~ "chord, creating a feeling of suspension before resolving back to the V-I motion leading into the final chorus. Melody holds on the 2nd over the final B  chord.)" (100%)
          ❗ "chord, creating a strong pull back to the E  chord.)" ~ "chord on "不在意", creating a strong pull back to the E  chord.)" (92%)
[23:09:05] 🔄 [02_给你一瓶魔法药水_20260512] Step 2 API: originality retry 1/3...
[23:09:10] ⚠️  [01_恋人_20260512] Step 2 API: originality 83% < 85% | 0 copied phrases
[23:09:10] 🔄 [01_恋人_20260512] Step 2 API: originality retry 1/3...
[23:09:53] ⚠️  [02_给你一瓶魔法药水_20260512] Step 2 API originality retry 1 failed: Expecting value: line 1 column 1 (char 0)
[23:09:53] ⚠️  [02_给你一瓶魔法药水_20260512] Step 2 API: best originality 78% after 3 retries
[23:09:53] ✅ [02_给你一瓶魔法药水_20260512] Step 2 API: 《数到一半》 | 48.3s | in=11065 out=2963 | ~$0.078
[23:09:55] ⚠️  [01_恋人_20260512] Step 2 API retry 1: originality 83%
[23:09:55] 🔄 [01_恋人_20260512] Step 2 API: originality retry 2/3...
[23:10:46] ⚠️  [01_恋人_20260512] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)
[23:10:46] ⚠️  [01_恋人_20260512] Step 2 API: best originality 83% after 3 retries
[23:10:46] ✅ [01_恋人_20260512] Step 2 API: 《倒带到底》 | 95.6s | in=26053 out=6608 | ~$0.177
{"timestamp": "2026-05-12T23:08:06.550334+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d", "profile": "base", "concurrency": 3, "resume_mode": "each", "pending_song_count": 2, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/01_恋人_20260512", "/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/02_给你一瓶魔法药水_20260512"], "success_count": 2, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/01_恋人_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/01_恋人_20260512/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-20260512-230555-ee473d/01_恋人_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/01_恋人_20260512/step2_json_b.json", "agent_summary": "API direct: 倒带到底", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/02_给你一瓶魔法药水_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/02_给你一瓶魔法药水_20260512/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-20260512-230555-ee473d/02_给你一瓶魔法药水_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d/02_给你一瓶魔法药水_20260512/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-20260512-230555-ee473d\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[23:10:48] 🏥 Health check...\n[23:10:52] ✅ qishui: OK\n[23:10:52] ✅ netease: OK\n[23:10:52] ✅ qq: OK\n\n  📝 [01_恋人_20260512] lyrics stripped: 6232c → 5000c\n[23:10:52] 🎵 [01_恋人_20260512] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[23:10:52] 🎨 [01_恋人_20260512] Step 4: SeeDream cover (parallel)...\n  📝 [02_给你一瓶魔法药水_20260512] lyrics stripped: 5144c → 5000c\n[23:10:52] 🎵 [02_给你一瓶魔法药水_20260512] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[23:10:52] 🎨 [02_给你一瓶魔法药水_20260512] Step 4: SeeDream cover (parallel)...\n  ✅ submitted: ['8c668e61', 'dcbf4f10']\n  ✅ submitted: ['c16a1579', '8f3db378']\n  🎵 8c668e61... → submitted\n  🎵 dcbf4f10... → submitted\n  🎵 c16a1579... → submitted\n  🎵 8f3db378... → submitted\n  🎵 c16a1579... → queued\n  🎵 8f3db378... → queued\n  🎵 8c668e61... → queued\n  🎵 dcbf4f10... → queued\n  🎵 c16a1579... → streaming\n  🎵 8f3db378... → streaming\n  🎵 8c668e61... → streaming\n  🎵 dcbf4f10... → streaming\n  🎵 c16a1579... → complete\n  🎵 8f3db378... → complete\n[23:14:20]    🎧 [02_给你一瓶魔法药水_20260512] Song 1: https://cdn1.suno.ai/c16a1579-43dc-4b1b-b376-6ebfd06cec5d.mp3\n[23:14:20]    🎧 [02_给你一瓶魔法药水_20260512] Song 2: https://cdn1.suno.ai/8f3db378-ba2b-4fe2-83a6-bc30a0bb458c.mp3\n[23:14:20] 🎛️ [02_给你一瓶魔法药水_20260512] Step 3.5: 混音...\n[23:14:42]    🎚️ [02_给你一瓶魔法药水_20260512] Song 1: rock | 低67/中28/高5%\n  🎵 8c668e61... → complete\n[23:14:59]    🎚️ [02_给你一瓶魔法药水_20260512] Song 2: pop | 低61/中33/高6%\n[23:14:59] ✅ [02_给你一瓶魔法药水_20260512] Step 3.5: 38.6s | 2 songs mixed\n[23:14:59] ⚠️  [02_给你一瓶魔法药水_20260512] Step 4: http_403 (non-fatal)\n  🎵 dcbf4f10... → complete\n[23:15:31]    🎧 [01_恋人_20260512] Song 1: https://cdn1.suno.ai/8c668e61-31c1-468d-867e-ba0e239befb2.mp3\n[23:15:31]    🎧 [01_恋人_20260512] Song 2: https://cdn1.suno.ai/dcbf4f10-6866-4389-80a6-60b14a2bf0c1.mp3\n[23:15:31] 🎛️ [01_恋人_20260512] Step 3.5: 混音...\n[23:15:49]    🎚️ [01_恋人_20260512] Song 1: pop | 低56/中41/高2%\n[23:16:06]    🎚️ [01_恋人_20260512] Song 2: pop | 低60/中36/高4%\n[23:16:06] ✅ [01_恋人_20260512] Step 3.5: 34.3s | 2 songs mixed\n[23:16:06] ⚠️  [01_恋人_20260512] Step 4: http_403 (non-fatal)\n\n======================================================================\nSUMMARY | 313s (5.2min)\n======================================================================\n✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260512-230555-ee473d → +2 新增, ~0 更新 | 总计 720 首\n", "stderr_tail": "[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml\n", "summary": {"timestamp": "2026-05-12T23:16:06.152891+08:00", "wall_clock": 313.4, "total": 2, "success": 2, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-05-12 23:16:07 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d ===
[Feishu] ✅ Exported 2 songs to: https://ccnu62373cgc.feishu.cn/sheets/C3g0s9Dt6hJ3IRtofK0cZVFXn3b
[Feishu] 📐 Expanded master sheet from 657 to 759 rows
[Feishu] ✅ Appended 2 new songs to master sheet (rows 658-659)
[MasterDB] ✅ 批次 batch-20260512-230555-ee473d → +2 新增, ~0 更新 | 总计 659 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/C3g0s9Dt6hJ3
[23:16:15] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [倒带到底] topic head sent (message_id=om_x100b6f000d3528a4b16735c91ab70f1)
[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_x100b6f000a1878a4b162d839bed53fa)
[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-20260512-230555-ee473d
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260512-230555-ee473d
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260512-230555-ee473d

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