
=== 2026-06-27 23:00:40 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260627-230040-6d84a2 --target-language zh --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260627-230040-6d84a2' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-230040-6d84a2.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 | 4 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[23:00:42] 🏥 Health check...
[23:00:45] ✅ qishui: OK
[23:00:45] ✅ netease: OK
[23:00:45] ✅ qq: OK

[23:00:45] 🔍 [01_琵琶曲（东船与西舫）_20260627] Step 0: Fetching...
[23:00:45] 🔍 [02_踏山河 (DJ Yaha)_20260627] Step 0: Fetching...
[23:00:45] 🔍 [03_身骑白马_20260627] Step 0: Fetching...
[23:00:45] 🔍 [04_半壶纱(DJ名龙版)_20260627] Step 0: Fetching...
[23:00:47] ✅ [02_踏山河 (DJ Yaha)_20260627] Step 0: netease | 559c lyrics
[23:00:47] ⬇️  [02_踏山河 (DJ Yaha)_20260627] Step 0.5: Download from netease...
[23:00:47] ✅ [03_身骑白马_20260627] Step 0: netease | 448c lyrics
[23:00:47] ⬇️  [03_身骑白马_20260627] Step 0.5: Download from netease...
[23:00:47] ✅ [01_琵琶曲（东船与西舫）_20260627] Step 0: netease | 600c lyrics
[23:00:47] ⬇️  [01_琵琶曲（东船与西舫）_20260627] Step 0.5: Download from netease...
[23:00:50] ✅ [04_半壶纱(DJ名龙版)_20260627] Step 0: netease | 523c lyrics
[23:00:50] ⬇️  [04_半壶纱(DJ名龙版)_20260627] Step 0.5: Download from netease...
[23:00:53] ✅ [01_琵琶曲（东船与西舫）_20260627] Step 0.5: 2519768 bytes | 130.1s
[23:00:53] 🔬 [01_琵琶曲（东船与西舫）_20260627] Step 0.75: Audio features...
[23:00:54] ✅ [02_踏山河 (DJ Yaha)_20260627] Step 0.5: 2999079 bytes | 153.0s
[23:00:54] 🔬 [02_踏山河 (DJ Yaha)_20260627] Step 0.75: Audio features...
[23:01:08] ✅ [03_身骑白马_20260627] Step 0.5: 5405666 bytes | 266.6s
[23:01:08] 🔬 [03_身骑白马_20260627] Step 0.75: Audio features...
[23:01:09] ✅ [04_半壶纱(DJ名龙版)_20260627] Step 0.5: 7390552 bytes | 330.0s
[23:01:09] 🔬 [04_半壶纱(DJ名龙版)_20260627] Step 0.75: Audio features...
[23:01:28] ✅ [01_琵琶曲（东船与西舫）_20260627] Step 0.75: BPM=108.67 Key=A major (35.5s)
[23:01:28] 🧠 [01_琵琶曲（东船与西舫）_20260627] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-06-27T15:01:28.991Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "01_琵琶曲（东船与西舫）_20260627", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/01_琵琶曲（东船与西舫）_20260627/song_pgc.mp3", "has_features": true}}
[   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')
[23:01:29] 🌐 Step 1: target_language=zh (injecting override directive)
[23:01:42] ✅ [02_踏山河 (DJ Yaha)_20260627] Step 0.75: BPM=109.94 Key=F# minor (47.9s)
[23:01:42] 🧠 [02_踏山河 (DJ Yaha)_20260627] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-06-27T15:01:42.006Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "02_踏山河 (DJ Yaha)_20260627", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/02_踏山河 (DJ Yaha)_20260627/song_pgc.mp3", "has_features": true}}
[   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')
[23:01:42] 🌐 Step 1: target_language=zh (injecting override directive)
[23:02:16] ✅ [03_身骑白马_20260627] Step 0.75: BPM=128.42 Key=G# minor (48.0s)
[23:02:16] 🧠 [03_身骑白马_20260627] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-06-27T15:02:16.981Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "03_身骑白马_20260627", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/03_身骑白马_20260627/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:02:17] 🌐 Step 1: target_language=zh (injecting override directive)
[23:02:25] ✅ [04_半壶纱(DJ名龙版)_20260627] Step 0.75: BPM=128.04 Key=F# minor (43.8s)
[23:02:25] 🧠 [04_半壶纱(DJ名龙版)_20260627] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-06-27T15:02:25.810Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "04_半壶纱(DJ名龙版)_20260627", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/04_半壶纱(DJ名龙版)_20260627/song_pgc.mp3", "has_features": true}}
[23:02:25] 🌐 Step 1: target_language=zh (injecting override directive)
  📊 Gemini official: 37s | prompt_tokens=7841 completion=1232
{"__trace__": true, "ts": "2026-06-27T15:02:53.724Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "01_琵琶曲（东船与西舫）_20260627", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 36.7, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-06-27T15:02:53.725Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "01_琵琶曲（东船与西舫）_20260627", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 84.733}
[23:02:53] ⚠️  [01_琵琶曲（东船与西舫）_20260627] Step 1.5: prompt 1357c > 1000c, compressing...
  📏 [01_琵琶曲（东船与西舫）_20260627] prompt 1357c → 862c (smart truncate)
[23:02:53] ✅ [01_琵琶曲（东船与西舫）_20260627] Step 1.5: prompt compressed 1357c → 862c
[23:02:53] ✅ [01_琵琶曲（东船与西舫）_20260627] Step 1: 36.7s | prompt=862c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 40s | prompt_tokens=8536 completion=1441
{"__trace__": true, "ts": "2026-06-27T15:03:06.370Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "02_踏山河 (DJ Yaha)_20260627", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 40.5, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-06-27T15:03:06.370Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "02_踏山河 (DJ Yaha)_20260627", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 84.364}
[23:03:06] ⚠️  [02_踏山河 (DJ Yaha)_20260627] Step 1.5: prompt 1309c > 1000c, compressing...
  📏 [02_踏山河 (DJ Yaha)_20260627] prompt 1309c → 918c (smart truncate)
[23:03:06] ✅ [02_踏山河 (DJ Yaha)_20260627] Step 1.5: prompt compressed 1309c → 918c
[23:03:06] ✅ [02_踏山河 (DJ Yaha)_20260627] Step 1: 40.5s | prompt=918c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 41s | prompt_tokens=12096 completion=1290
{"__trace__": true, "ts": "2026-06-27T15:03:35.201Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "03_身骑白马_20260627", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 41.5, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-06-27T15:03:35.201Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "03_身骑白马_20260627", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 78.22}
[23:03:35] ⚠️  [03_身骑白马_20260627] Step 1.5: prompt 1124c > 1000c, compressing...
  📏 [03_身骑白马_20260627] prompt 1124c → 843c (smart truncate)
[23:03:35] ✅ [03_身骑白马_20260627] Step 1.5: prompt compressed 1124c → 843c
[23:03:35] ✅ [03_身骑白马_20260627] Step 1: 41.5s | prompt=843c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 38s | prompt_tokens=14179 completion=1226
{"__trace__": true, "ts": "2026-06-27T15:03:43.927Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "04_半壶纱(DJ名龙版)_20260627", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 37.6, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-06-27T15:03:43.927Z", "trace_id": "batch-20260627-230040-6d84a2", "song_key": "04_半壶纱(DJ名龙版)_20260627", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 78.116}
[23:03:43] ⚠️  [04_半壶纱(DJ名龙版)_20260627] Step 1.5: prompt 1122c > 1000c, compressing...
  📏 [04_半壶纱(DJ名龙版)_20260627] prompt 1122c → 994c (smart truncate)
[23:03:43] ✅ [04_半壶纱(DJ名龙版)_20260627] Step 1.5: prompt compressed 1122c → 994c
[23:03:43] ✅ [04_半壶纱(DJ名龙版)_20260627] Step 1: 37.6s | prompt=994c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 179s (3.0min)
======================================================================
✅ Done: 4 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260627-230040-6d84a2 → +0 新增, ~0 更新 | 总计 793 首
[exit 0]

=== 2026-06-27 23:03:45 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2 --profile __runtime_batch-20260627-230040-6d84a2 --resume-mode end --skip-feishu --target-language zh ===
[phase2] batch=batch-20260627-230040-6d84a2 pending=4 groups=2
[phase2] group 1/2 -> 01_琵琶曲（东船与西舫）_20260627, 02_踏山河 (DJ Yaha)_20260627, 03_身骑白马_20260627
[profile] ✅ Loaded profile '__runtime_batch-20260627-230040-6d84a2' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-230040-6d84a2.yaml
[phase2] 🌐 01_琵琶曲（东船与西舫）_20260627: target_language=zh
[profile] ✅ Loaded profile '__runtime_batch-20260627-230040-6d84a2' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-230040-6d84a2.yaml
[phase2] 🌐 02_踏山河 (DJ Yaha)_20260627: target_language=zh
[profile] ✅ Loaded profile '__runtime_batch-20260627-230040-6d84a2' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-230040-6d84a2.yaml
[phase2] 🌐 03_身骑白马_20260627: target_language=zh
[phase2] group 2/2 -> 04_半壶纱(DJ名龙版)_20260627
[profile] ✅ Loaded profile '__runtime_batch-20260627-230040-6d84a2' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-230040-6d84a2.yaml
[phase2] 🌐 04_半壶纱(DJ名龙版)_20260627: 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-20260627-230040-6d84a2/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2 --profile __runtime_batch-20260627-230040-6d84a2 --skip-feishu
[23:03:45] 🌐 [01_琵琶曲（东船与西舫）_20260627] Step 2: target_language=zh → lang_mode=ZH | single-turn
[23:03:45] 🤖 [01_琵琶曲（东船与西舫）_20260627] Step 2 Turn 2: 13814 chars ≈ 3453 tokens → claude-sonnet-4-6
[23:03:45] 🌐 [02_踏山河 (DJ Yaha)_20260627] Step 2: target_language=zh → lang_mode=ZH | single-turn
[23:03:45] 🤖 [02_踏山河 (DJ Yaha)_20260627] Step 2 Turn 2: 14683 chars ≈ 3670 tokens → claude-sonnet-4-6
[23:03:45] 🌐 [03_身骑白马_20260627] Step 2: target_language=zh → lang_mode=ZH | single-turn
[23:03:45] 🤖 [03_身骑白马_20260627] Step 2 Turn 2: 14438 chars ≈ 3609 tokens → claude-sonnet-4-6
[23:04:22] ⚠️  [02_踏山河 (DJ Yaha)_20260627] Step 2 API: originality 80% < 85% | 0 copied phrases
[23:04:22] 🔄 [02_踏山河 (DJ Yaha)_20260627] Step 2 API: originality retry 1/3...
[23:04:24] ⚠️  [01_琵琶曲（东船与西舫）_20260627] Step 2 API: originality 77% < 85% | 1 copied phrases
          ❗ ", high-pitched, stylized vowels, clear articulation)" ~ ", high-pitched, stylized vowels, clear articulation)" (100%)
[23:04:24] 🔄 [01_琵琶曲（东船与西舫）_20260627] Step 2 API: originality retry 1/3...
[23:04:28] ⚠️  [03_身骑白马_20260627] Step 2 API: originality 80% < 85% | 0 copied phrases
[23:04:28] 🔄 [03_身骑白马_20260627] Step 2 API: originality retry 1/3...
[23:05:02] ✅ [02_踏山河 (DJ Yaha)_20260627] Step 2 API retry 1: originality 85% ✓
[23:05:08] ⚠️  [01_琵琶曲（东船与西舫）_20260627] Step 2 API retry 1: originality 76%
[23:05:08] 🔄 [01_琵琶曲（东船与西舫）_20260627] Step 2 API: originality retry 2/3...
[23:05:12] ⚠️  [03_身骑白马_20260627] Step 2 API retry 1: originality 75%
[23:05:12] 🔄 [03_身骑白马_20260627] Step 2 API: originality retry 2/3...
[23:05:28] 🎨 [02_踏山河 (DJ Yaha)_20260627] Step 2 craft: 72/100
[23:05:28] ✅ [02_踏山河 (DJ Yaha)_20260627] Step 2 API: 《烈骨未凉》 engine=? | 76.8s | in=26154 out=5695 | ~$0.164
[23:05:54] ⚠️  [01_琵琶曲（东船与西舫）_20260627] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)
[23:05:54] ⚠️  [01_琵琶曲（东船与西舫）_20260627] Step 2 API: best originality 77% after 3 retries
[23:05:59] ⚠️  [03_身骑白马_20260627] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)
[23:05:59] ⚠️  [03_身骑白马_20260627] Step 2 API: best originality 80% after 3 retries
[23:06:18] 🎨 [01_琵琶曲（东船与西舫）_20260627] Step 2 craft: 74/100
[23:06:18] ✅ [01_琵琶曲（东船与西舫）_20260627] Step 2 API: 《这一场江湖 偏偏为你停》 engine=? | 82.6s | in=24957 out=4968 | ~$0.149
[23:06:25] 🎨 [03_身骑白马_20260627] Step 2 craft: 76/100
[23:06:25] ✅ [03_身骑白马_20260627] Step 2 API: 《烈火渡我去找你》 engine=? | 87.2s | in=25359 out=5209 | ~$0.154
[23:06:25] 🌐 [04_半壶纱(DJ名龙版)_20260627] Step 2: target_language=zh → lang_mode=ZH | single-turn
[23:06:25] 🤖 [04_半壶纱(DJ名龙版)_20260627] Step 2 Turn 2: 14446 chars ≈ 3611 tokens → claude-sonnet-4-6
[23:07:24] ⚠️  [04_半壶纱(DJ名龙版)_20260627] Step 2 craft critic failed: Expecting ',' delimiter: line 42 column 2 (char 1439)
[23:07:24] ✅ [04_半壶纱(DJ名龙版)_20260627] Step 2 API: 《你是我渡不过的那条河》 engine=? | 31.2s | in=10575 out=1965 | ~$0.061
{"timestamp": "2026-06-27T23:03:45.433754+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2", "profile": "__runtime_batch-20260627-230040-6d84a2", "concurrency": 3, "resume_mode": "end", "pending_song_count": 4, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/01_琵琶曲（东船与西舫）_20260627", "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/02_踏山河 (DJ Yaha)_20260627", "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/03_身骑白马_20260627"], "success_count": 3, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/01_琵琶曲（东船与西舫）_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/01_琵琶曲（东船与西舫）_20260627/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-20260627-230040-6d84a2/01_琵琶曲（东船与西舫）_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/01_琵琶曲（东船与西舫）_20260627/step2_json_b.json", "agent_summary": "API direct: 这一场江湖 偏偏为你停", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/02_踏山河 (DJ Yaha)_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/02_踏山河 (DJ Yaha)_20260627/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-20260627-230040-6d84a2/02_踏山河 (DJ Yaha)_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/02_踏山河 (DJ Yaha)_20260627/step2_json_b.json", "agent_summary": "API direct: 烈骨未凉", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/03_身骑白马_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/03_身骑白马_20260627/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-20260627-230040-6d84a2/03_身骑白马_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/03_身骑白马_20260627/step2_json_b.json", "agent_summary": "API direct: 烈火渡我去找你", "returncode": 0, "stderr": "", "attempt": 1}]}]}, {"group_index": 2, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/04_半壶纱(DJ名龙版)_20260627"], "success_count": 1, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/04_半壶纱(DJ名龙版)_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/04_半壶纱(DJ名龙版)_20260627/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-20260627-230040-6d84a2/04_半壶纱(DJ名龙版)_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2/04_半壶纱(DJ名龙版)_20260627/step2_json_b.json", "agent_summary": "API direct: 你是我渡不过的那条河", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "resume": {"status": "success", "returncode": 0, "stdout_tail": "kip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[23:07:26] 🏥 Health check...\n[23:07:28] ✅ qishui: OK\n[23:07:28] ✅ netease: OK\n[23:07:28] ✅ qq: OK\n\n  📝 [01_琵琶曲（东船与西舫）_20260627] lyrics stripped: 2445c → 2438c\n[23:07:28] 🎵 [01_琵琶曲（东船与西舫）_20260627] Step 3: Suno generation (weirdness=50, style_influence=50)...\n  📝 [02_踏山河 (DJ Yaha)_20260627] lyrics stripped: 3254c → 3247c\n[23:07:28] 🎵 [02_踏山河 (DJ Yaha)_20260627] Step 3: Suno generation (weirdness=50, style_influence=50)...\n  📝 [03_身骑白马_20260627] lyrics stripped: 3083c → 3076c\n[23:07:28] 🎵 [03_身骑白马_20260627] Step 3: Suno generation (weirdness=50, style_influence=50)...\n  📝 [04_半壶纱(DJ名龙版)_20260627] lyrics stripped: 2847c → 2841c\n[23:07:28] 🎵 [04_半壶纱(DJ名龙版)_20260627] Step 3: Suno generation (weirdness=50, style_influence=50)...\n  ✅ submitted: ['961632d8', 'a4ff46cd']\n  ✅ submitted: ['4b604746', 'ec3e36c5']\n  🎵 961632d8... → submitted\n  🎵 a4ff46cd... → submitted\n  ✅ submitted: ['6bd4a127', 'cad86530']\n  🎵 4b604746... → submitted\n  🎵 ec3e36c5... → submitted\n  🎵 6bd4a127... → submitted\n  🎵 cad86530... → submitted\n  🎵 961632d8... → queued\n  🎵 a4ff46cd... → queued\n  🎵 4b604746... → queued\n  🎵 ec3e36c5... → queued\n  🎵 6bd4a127... → queued\n  🎵 cad86530... → queued\n  🎵 6bd4a127... → streaming\n  🎵 a4ff46cd... → streaming\n  🎵 4b604746... → streaming\n  🎵 ec3e36c5... → streaming\n  🎵 cad86530... → streaming\n  🎵 961632d8... → streaming\n  🎵 961632d8... → complete\n  🎵 a4ff46cd... → complete\n[23:09:52]    🎧 [01_琵琶曲（东船与西舫）_20260627] Song 1: https://cdn1.suno.ai/961632d8-13f3-4f98-b245-c0b49645903a.mp3\n[23:09:52]    🎧 [01_琵琶曲（东船与西舫）_20260627] Song 2: https://cdn1.suno.ai/a4ff46cd-9be5-41a9-bbc9-65a28dfab6bd.mp3\n[23:09:52] 🎛️ [01_琵琶曲（东船与西舫）_20260627] Step 3.5: 混音...\n  ✅ submitted: ['fbc9d0ec', '2dbf5c5d']\n[23:10:16]    🎚️ [01_琵琶曲（东船与西舫）_20260627] Song 1: pop | 低44/中55/高2%\n  ⏱  poll timeout, retry...\n  🎵 6bd4a127... → complete\n  🎵 cad86530... → complete\n[23:10:16]    🎧 [03_身骑白马_20260627] Song 1: https://cdn1.suno.ai/6bd4a127-bd70-46b7-870a-75256c6fb66c.mp3\n[23:10:16]    🎧 [03_身骑白马_20260627] Song 2: https://cdn1.suno.ai/cad86530-e576-4334-adbb-9f30eab78957.mp3\n[23:10:16] 🎛️ [03_身骑白马_20260627] Step 3.5: 混音...\n[23:10:33]    🎚️ [01_琵琶曲（东船与西舫）_20260627] Song 2: pop | 低43/中55/高2%\n[23:10:33] ✅ [01_琵琶曲（东船与西舫）_20260627] Step 3.5: 40.7s | 2 songs mixed\n  🎵 fbc9d0ec... → streaming\n  🎵 2dbf5c5d... → streaming\n[23:10:54]    🎚️ [03_身骑白马_20260627] Song 1: edm | 低68/中29/高4%\n[23:11:15]    🎚️ [03_身骑白马_20260627] Song 2: edm | 低65/中32/高3%\n[23:11:15] ✅ [03_身骑白马_20260627] Step 3.5: 59.4s | 2 songs mixed\n  🎵 4b604746... → complete\n  🎵 ec3e36c5... → complete\n[23:11:21]    🎧 [02_踏山河 (DJ Yaha)_20260627] Song 1: https://cdn1.suno.ai/4b604746-4828-494f-9fa8-743ec034b5ad.mp3\n[23:11:21]    🎧 [02_踏山河 (DJ Yaha)_20260627] Song 2: https://cdn1.suno.ai/ec3e36c5-e6c1-4e6b-9e55-095fc97fe73e.mp3\n[23:11:21] 🎛️ [02_踏山河 (DJ Yaha)_20260627] Step 3.5: 混音...\n[23:11:47]    🎚️ [02_踏山河 (DJ Yaha)_20260627] Song 1: pop | 低52/中44/高4%\n[23:12:14]    🎚️ [02_踏山河 (DJ Yaha)_20260627] Song 2: pop | 低58/中39/高3%\n[23:12:14] ✅ [02_踏山河 (DJ Yaha)_20260627] Step 3.5: 53.2s | 2 songs mixed\n  🎵 fbc9d0ec... → complete\n  🎵 2dbf5c5d... → complete\n[23:12:14]    🎧 [04_半壶纱(DJ名龙版)_20260627] Song 1: https://cdn1.suno.ai/fbc9d0ec-db61-47f2-8c7f-7be4cdbcf151.mp3\n[23:12:14]    🎧 [04_半壶纱(DJ名龙版)_20260627] Song 2: https://cdn1.suno.ai/2dbf5c5d-7970-4fdc-95bb-7f624b5687ad.mp3\n[23:12:14] 🎛️ [04_半壶纱(DJ名龙版)_20260627] Step 3.5: 混音...\n[23:12:37]    🎚️ [04_半壶纱(DJ名龙版)_20260627] Song 1: edm | 低64/中31/高5%\n[23:13:00]    🎚️ [04_半壶纱(DJ名龙版)_20260627] Song 2: edm | 低74/中21/高6%\n[23:13:00] ✅ [04_半壶纱(DJ名龙版)_20260627] Step 3.5: 46.0s | 2 songs mixed\n\n======================================================================\nSUMMARY | 332s (5.5min)\n======================================================================\n✅ Done: 4 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260627-230040-6d84a2 → +4 新增, ~0 更新 | 总计 797 首\n", "stderr_tail": "[profile] ✅ Loaded profile '__runtime_batch-20260627-230040-6d84a2' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-230040-6d84a2.yaml\nUnclosed connection\nclient_connection: Connection<ConnectionKey(host='localhost', port=12138, is_ssl=False, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=None)>\nUnclosed connection\nclient_connection: Connection<ConnectionKey(host='localhost', port=12138, is_ssl=False, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=None)>\nUnclosed connection\nclient_connection: Connection<ConnectionKey(host='localhost', port=12138, is_ssl=False, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=None)>\nUnclosed connection\nclient_connection: Connection<ConnectionKey(host='localhost', port=12138, is_ssl=False, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=None)>\nUnclosed connection\nclient_connection: Connection<ConnectionKey(host='localhost', port=12138, is_ssl=False, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=None)>\nUnclosed connection\nclient_connection: Connection<ConnectionKey(host='localhost', port=12138, is_ssl=False, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=None)>\nUnclosed connection\nclient_connection: Connection<ConnectionKey(host='localhost', port=12138, is_ssl=False, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=None)>\nUnclosed connection\nclient_connection: Connection<ConnectionKey(host='localhost', port=12138, is_ssl=False, ssl=True, proxy=None, proxy_auth=None, proxy_headers_hash=None)>\n", "summary": {"timestamp": "2026-06-27T23:13:00.648617+08:00", "wall_clock": 332.3, "total": 4, "success": 4, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-06-27 23:13:02 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2 ===
[Feishu] ✅ Exported 4 songs to: https://ccnu62373cgc.feishu.cn/sheets/OQu5ssNmphcQNAtAw9Mc5R9fn1g
[Feishu] 📐 Expanded master sheet from 730 to 834 rows
[Feishu] ✅ Appended 4 new songs to master sheet (rows 731-734)
[MasterDB] ✅ 批次 batch-20260627-230040-6d84a2 → +4 新增, ~0 更新 | 总计 734 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/OQu5ssNmphcQ
[23:14:00] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [这一场江湖 偏偏为你停] topic head sent (message_id=om_x100b6ccac559d0a0b499dd12cc5a904)
[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_x100b6ccac22c50a8b4bb8b3b25abf48)
[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_x100b6ccac06fc4a4b27b21fdfca312f)
[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_x100b6ccac15b70b0b2ae0b273862e37)
[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-20260627-230040-6d84a2
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260627-230040-6d84a2
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260627-230040-6d84a2

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