
=== 2026-06-27 23:27:22 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260627-232722-c0c4bf --target-language zh --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260627-232722-c0c4bf' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-232722-c0c4bf.yaml
[step075] cache hit: song_pgc.mp3 → cb923609f7d7

======================================================================
music-pipeline3000 v2 | 3 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[23:27:24] 🏥 Health check...
[23:27:27] ✅ qishui: OK
[23:27:27] ✅ netease: OK
[23:27:27] ✅ qq: OK

[23:27:27] 🔍 [01_踏山河 (DJ Yaha)_20260627] Step 0: Fetching...
[23:27:27] 🔍 [02_身骑白马_20260627] Step 0: Fetching...
[23:27:27] 🔍 [03_不是因为寂寞才想你(DJ版)_20260627] Step 0: Fetching...
[23:27:30] ✅ [01_踏山河 (DJ Yaha)_20260627] Step 0: netease | 559c lyrics
[23:27:30] ⬇️  [01_踏山河 (DJ Yaha)_20260627] Step 0.5: Download from netease...
[23:27:30] ✅ [02_身骑白马_20260627] Step 0: netease | 448c lyrics
[23:27:30] ⬇️  [02_身骑白马_20260627] Step 0.5: Download from netease...
[23:27:30] ✅ [03_不是因为寂寞才想你(DJ版)_20260627] Step 0: netease | 420c lyrics
[23:27:30] ⬇️  [03_不是因为寂寞才想你(DJ版)_20260627] Step 0.5: Download from netease...
[23:27:35] ✅ [01_踏山河 (DJ Yaha)_20260627] Step 0.5: 2999079 bytes | 153.0s
[23:27:35] 🔬 [01_踏山河 (DJ Yaha)_20260627] Step 0.75: Audio features...
[23:27:35] ✅ [01_踏山河 (DJ Yaha)_20260627] Step 0.75: BPM=109.94 Key=F# minor (47.9s)
[23:27:35] 🧠 [01_踏山河 (DJ Yaha)_20260627] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-06-27T15:27:35.963Z", "trace_id": "batch-20260627-232722-c0c4bf", "song_key": "01_踏山河 (DJ Yaha)_20260627", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/01_踏山河 (DJ Yaha)_20260627/song_pgc.mp3", "has_features": true}}
[   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
[step075] cache hit: song_pgc.mp3 → 3b87f187733e
[23:27:35] 🌐 Step 1: target_language=zh (injecting override directive)
[23:27:37] ✅ [03_不是因为寂寞才想你(DJ版)_20260627] Step 0.5: 3683653 bytes | 196.0s
[23:27:37] 🔬 [03_不是因为寂寞才想你(DJ版)_20260627] Step 0.75: Audio features...
[23:27:41] ✅ [02_身骑白马_20260627] Step 0.5: 5405666 bytes | 266.6s
[23:27:41] 🔬 [02_身骑白马_20260627] Step 0.75: Audio features...
[23:27:48] ✅ [02_身骑白马_20260627] Step 0.75: BPM=128.42 Key=G# minor (48.0s)
[23:27:48] 🧠 [02_身骑白马_20260627] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-06-27T15:27:48.682Z", "trace_id": "batch-20260627-232722-c0c4bf", "song_key": "02_身骑白马_20260627", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/02_身骑白马_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:27:48] 🌐 Step 1: target_language=zh (injecting override directive)
[23:28:10] ✅ [03_不是因为寂寞才想你(DJ版)_20260627] Step 0.75: BPM=75.02 Key=F minor (33.8s)
[23:28:10] 🧠 [03_不是因为寂寞才想你(DJ版)_20260627] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-06-27T15:28:10.956Z", "trace_id": "batch-20260627-232722-c0c4bf", "song_key": "03_不是因为寂寞才想你(DJ版)_20260627", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/03_不是因为寂寞才想你(DJ版)_20260627/song_pgc.mp3", "has_features": true}}
[23:28:10] 🌐 Step 1: target_language=zh (injecting override directive)
  📊 Gemini official: 65s | prompt_tokens=8759 completion=1737
{"__trace__": true, "ts": "2026-06-27T15:28:41.096Z", "trace_id": "batch-20260627-232722-c0c4bf", "song_key": "01_踏山河 (DJ Yaha)_20260627", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 65.1, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-06-27T15:28:41.097Z", "trace_id": "batch-20260627-232722-c0c4bf", "song_key": "01_踏山河 (DJ Yaha)_20260627", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 65.134}
[23:28:41] ✅ [01_踏山河 (DJ Yaha)_20260627] Step 1: 65.1s | prompt=896c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 35s | prompt_tokens=12319 completion=1375
{"__trace__": true, "ts": "2026-06-27T15:28:45.885Z", "trace_id": "batch-20260627-232722-c0c4bf", "song_key": "02_身骑白马_20260627", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 34.9, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-06-27T15:28:45.885Z", "trace_id": "batch-20260627-232722-c0c4bf", "song_key": "02_身骑白马_20260627", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 57.203}
[23:28:45] ✅ [02_身骑白马_20260627] Step 1: 34.9s | prompt=894c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 48s | prompt_tokens=10028 completion=1446
{"__trace__": true, "ts": "2026-06-27T15:29:29.009Z", "trace_id": "batch-20260627-232722-c0c4bf", "song_key": "03_不是因为寂寞才想你(DJ版)_20260627", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 47.9, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-06-27T15:29:29.009Z", "trace_id": "batch-20260627-232722-c0c4bf", "song_key": "03_不是因为寂寞才想你(DJ版)_20260627", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 78.052}
[23:29:29] ✅ [03_不是因为寂寞才想你(DJ版)_20260627] Step 1: 47.9s | prompt=799c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 122s (2.0min)
======================================================================
✅ Done: 3 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260627-232722-c0c4bf → +0 新增, ~0 更新 | 总计 797 首
[exit 0]

=== 2026-06-27 23:29:30 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf --profile __runtime_batch-20260627-232722-c0c4bf --resume-mode end --skip-feishu --target-language zh ===
[phase2] batch=batch-20260627-232722-c0c4bf pending=3 groups=1
[phase2] group 1/1 -> 01_踏山河 (DJ Yaha)_20260627, 02_身骑白马_20260627, 03_不是因为寂寞才想你(DJ版)_20260627
[profile] ✅ Loaded profile '__runtime_batch-20260627-232722-c0c4bf' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-232722-c0c4bf.yaml
[phase2] 🌐 01_踏山河 (DJ Yaha)_20260627: target_language=zh
[profile] ✅ Loaded profile '__runtime_batch-20260627-232722-c0c4bf' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-232722-c0c4bf.yaml
[phase2] 🌐 02_身骑白马_20260627: target_language=zh
[profile] ✅ Loaded profile '__runtime_batch-20260627-232722-c0c4bf' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-232722-c0c4bf.yaml
[phase2] 🌐 03_不是因为寂寞才想你(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-232722-c0c4bf/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf --profile __runtime_batch-20260627-232722-c0c4bf --skip-feishu
[23:29:30] 🌐 [01_踏山河 (DJ Yaha)_20260627] Step 2: target_language=zh → lang_mode=ZH | single-turn
[23:29:30] 🤖 [01_踏山河 (DJ Yaha)_20260627] Step 2 Turn 2: 16157 chars ≈ 4039 tokens → claude-sonnet-4-6
[23:29:30] 🌐 [02_身骑白马_20260627] Step 2: target_language=zh → lang_mode=ZH | single-turn
[23:29:30] 🤖 [02_身骑白马_20260627] Step 2 Turn 2: 14988 chars ≈ 3747 tokens → claude-sonnet-4-6
[23:29:30] 🌐 [03_不是因为寂寞才想你(DJ版)_20260627] Step 2: target_language=zh → lang_mode=ZH | single-turn
[23:29:30] 🤖 [03_不是因为寂寞才想你(DJ版)_20260627] Step 2 Turn 2: 15361 chars ≈ 3840 tokens → claude-sonnet-4-6
[23:30:13] ⚠️  [03_不是因为寂寞才想你(DJ版)_20260627] Step 2 API: originality 73% < 85% | 4 copied phrases
          ❗ "enters with the vocal on the downbeat.)" ~ "enters with the vocal on the downbeat.)" (100%)
          ❗ ", creating a strong declaration. Tension resolves downwards through the iv-V-i cadence at the end of the phrase.)" ~ ", creating a strong declaration. Tension resolves downwards through the iv-V-i cadence at the end of the phrase.)" (100%)
          ❗ ". Controlled vibrato at the end of phrases. A slight, emotive strain on the highest notes.)" ~ ". Controlled vibrato at the end of phrases. A slight, emotive strain on the highest notes.)" (100%)
          ❗ ", creating a strong declaration. Tension resolves downwards through the iv-V-i cadence at the end of the phrase.)" ~ ", creating a strong declaration. Tension resolves downwards through the iv-V-i cadence at the end of the phrase.)" (100%)
[23:30:13] 🔄 [03_不是因为寂寞才想你(DJ版)_20260627] Step 2 API: originality retry 1/3...
[23:30:23] ⚠️  [02_身骑白马_20260627] Step 2 API: originality 79% < 85% | 0 copied phrases
[23:30:23] 🔄 [02_身骑白马_20260627] Step 2 API: originality retry 1/3...
[23:30:28] ⚠️  [01_踏山河 (DJ Yaha)_20260627] Step 2 API: originality 78% < 85% | 0 copied phrases
[23:30:28] 🔄 [01_踏山河 (DJ Yaha)_20260627] Step 2 API: originality retry 1/3...
[23:31:02] ⚠️  [03_不是因为寂寞才想你(DJ版)_20260627] Step 2 API originality retry 1 failed: Expecting value: line 1 column 1 (char 0)
[23:31:02] ⚠️  [03_不是因为寂寞才想你(DJ版)_20260627] Step 2 API: best originality 73% after 3 retries
[23:31:15] ⚠️  [02_身骑白马_20260627] Step 2 API retry 1: originality 81%
[23:31:15] 🔄 [02_身骑白马_20260627] Step 2 API: originality retry 2/3...
[23:31:21] 🎨 [03_不是因为寂寞才想你(DJ版)_20260627] Step 2 craft: 79/100
[23:31:21] ✅ [03_不是因为寂寞才想你(DJ版)_20260627] Step 2 API: 《留格》 engine=? | 42.5s | in=12616 out=3195 | ~$0.086
[23:31:28] ⚠️  [01_踏山河 (DJ Yaha)_20260627] Step 2 API retry 1: originality 80%
[23:31:28] 🔄 [01_踏山河 (DJ Yaha)_20260627] Step 2 API: originality retry 2/3...
[23:32:10] ⚠️  [02_身骑白马_20260627] Step 2 API retry 2: originality 82%
[23:32:10] 🔄 [02_身骑白马_20260627] Step 2 API: originality retry 3/3...
[23:32:29] ⚠️  [01_踏山河 (DJ Yaha)_20260627] Step 2 API retry 2: originality 83%
[23:32:29] 🔄 [01_踏山河 (DJ Yaha)_20260627] Step 2 API: originality retry 3/3...
[23:33:04] ⚠️  [02_身骑白马_20260627] Step 2 API retry 3: originality 84%
[23:33:04] ⚠️  [02_身骑白马_20260627] Step 2 API: best originality 84% after 3 retries
[23:33:24] 🎨 [02_身骑白马_20260627] Step 2 craft: 79/100
[23:33:24] ✅ [02_身骑白马_20260627] Step 2 API: 《钝感练习》 engine=? | 213.9s | in=61603 out=10298 | ~$0.339
[23:33:29] ⚠️  [01_踏山河 (DJ Yaha)_20260627] Step 2 API retry 3: originality 83%
[23:33:29] ⚠️  [01_踏山河 (DJ Yaha)_20260627] Step 2 API: best originality 83% after 3 retries
[23:33:57] ⚠️  [01_踏山河 (DJ Yaha)_20260627] Step 2 craft critic failed: Expecting ',' delimiter: line 6 column 34 (char 93)
[23:33:57] ✅ [01_踏山河 (DJ Yaha)_20260627] Step 2 API: 《逆潮立》 engine=? | 238.8s | in=64224 out=11317 | ~$0.362
{"timestamp": "2026-06-27T23:29:30.451196+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf", "profile": "__runtime_batch-20260627-232722-c0c4bf", "concurrency": 3, "resume_mode": "end", "pending_song_count": 3, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/01_踏山河 (DJ Yaha)_20260627", "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/02_身骑白马_20260627", "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/03_不是因为寂寞才想你(DJ版)_20260627"], "success_count": 3, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/01_踏山河 (DJ Yaha)_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/01_踏山河 (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-232722-c0c4bf/01_踏山河 (DJ Yaha)_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/01_踏山河 (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-232722-c0c4bf/02_身骑白马_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/02_身骑白马_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-232722-c0c4bf/02_身骑白马_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/02_身骑白马_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-232722-c0c4bf/03_不是因为寂寞才想你(DJ版)_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/03_不是因为寂寞才想你(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-232722-c0c4bf/03_不是因为寂寞才想你(DJ版)_20260627", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf/03_不是因为寂寞才想你(DJ版)_20260627/step2_json_b.json", "agent_summary": "API direct: 留格", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "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-20260627-232722-c0c4bf\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[23:33:59] 🏥 Health check...\n[23:34:02] ✅ qishui: OK\n[23:34:02] ✅ netease: OK\n[23:34:02] ✅ qq: OK\n\n  📝 [01_踏山河 (DJ Yaha)_20260627] lyrics stripped: 4692c → 4685c\n[23:34:02] 🎵 [01_踏山河 (DJ Yaha)_20260627] Step 3: Suno generation (weirdness=50, style_influence=50)...\n  📝 [02_身骑白马_20260627] lyrics stripped: 3551c → 3546c\n[23:34:02] 🎵 [02_身骑白马_20260627] Step 3: Suno generation (weirdness=50, style_influence=50)...\n  📝 [03_不是因为寂寞才想你(DJ版)_20260627] lyrics stripped: 3997c → 3990c\n[23:34:02] 🎵 [03_不是因为寂寞才想你(DJ版)_20260627] Step 3: Suno generation (weirdness=50, style_influence=50)...\n  ⚠️  captcha token rejected (422), waiting 260s for cache expiry...\n  ✅ submitted: ['a75a128d', '168e589c']\n  🎵 a75a128d... → submitted\n  🎵 168e589c... → submitted\n  ✅ submitted: ['e81fd064', 'e18da5b2']\n  🎵 e81fd064... → submitted\n  🎵 e18da5b2... → submitted\n  🎵 a75a128d... → queued\n  🎵 168e589c... → queued\n  🎵 e81fd064... → queued\n  🎵 e18da5b2... → queued\n  🎵 a75a128d... → streaming\n  🎵 168e589c... → streaming\n  🎵 e81fd064... → streaming\n  🎵 e18da5b2... → streaming\n  🎵 168e589c... → complete\n  🎵 e81fd064... → complete\n  🎵 a75a128d... → complete\n[23:36:25]    🎧 [03_不是因为寂寞才想你(DJ版)_20260627] Song 1: https://cdn1.suno.ai/a75a128d-30b2-406b-88fe-95b01fbe7f1f.mp3\n[23:36:25]    🎧 [03_不是因为寂寞才想你(DJ版)_20260627] Song 2: https://cdn1.suno.ai/168e589c-1ae3-498c-9bb9-4c816ecc1f5e.mp3\n[23:36:25] 🎛️ [03_不是因为寂寞才想你(DJ版)_20260627] Step 3.5: 混音...\n[23:36:51]    🎚️ [03_不是因为寂寞才想你(DJ版)_20260627] Song 1: edm | 低52/中45/高4%\n  🎵 e18da5b2... → complete\n[23:36:51]    🎧 [02_身骑白马_20260627] Song 1: https://cdn1.suno.ai/e81fd064-8075-4674-ae48-93d110b629f1.mp3\n[23:36:51]    🎧 [02_身骑白马_20260627] Song 2: https://cdn1.suno.ai/e18da5b2-b854-4e61-9254-cd774e6772be.mp3\n[23:36:51] 🎛️ [02_身骑白马_20260627] Step 3.5: 混音...\n[23:37:09]    🎚️ [03_不是因为寂寞才想你(DJ版)_20260627] Song 2: edm | 低56/中42/高3%\n[23:37:09] ✅ [03_不是因为寂寞才想你(DJ版)_20260627] Step 3.5: 43.1s | 2 songs mixed\n[23:37:26]    🎚️ [02_身骑白马_20260627] Song 1: edm | 低74/中20/高6%\n[23:37:45]    🎚️ [02_身骑白马_20260627] Song 2: edm | 低71/中23/高6%\n[23:37:45] ✅ [02_身骑白马_20260627] Step 3.5: 54.3s | 2 songs mixed\n  🔄 retry #1...\n  ✅ submitted: ['72f6f539', 'cda65961']\n  🎵 72f6f539... → submitted\n  🎵 cda65961... → submitted\n  🎵 72f6f539... → queued\n  🎵 cda65961... → queued\n  🎵 72f6f539... → streaming\n  🎵 cda65961... → streaming\n  🎵 cda65961... → complete\n  🎵 72f6f539... → complete\n[23:43:15]    🎧 [01_踏山河 (DJ Yaha)_20260627] Song 1: https://cdn1.suno.ai/72f6f539-48bb-44ac-b9a8-a17d7de8fa37.mp3\n[23:43:15]    🎧 [01_踏山河 (DJ Yaha)_20260627] Song 2: https://cdn1.suno.ai/cda65961-8f70-4641-a218-e16798bd3c1d.mp3\n[23:43:15] 🎛️ [01_踏山河 (DJ Yaha)_20260627] Step 3.5: 混音...\n[23:43:41]    🎚️ [01_踏山河 (DJ Yaha)_20260627] Song 1: pop | 低55/中40/高5%\n[23:44:02]    🎚️ [01_踏山河 (DJ Yaha)_20260627] Song 2: pop | 低69/中26/高5%\n[23:44:02] ✅ [01_踏山河 (DJ Yaha)_20260627] Step 3.5: 46.5s | 2 songs mixed\n\n======================================================================\nSUMMARY | 600s (10.0min)\n======================================================================\n✅ Done: 3 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260627-232722-c0c4bf → +3 新增, ~0 更新 | 总计 800 首\n", "stderr_tail": "[profile] ✅ Loaded profile '__runtime_batch-20260627-232722-c0c4bf' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260627-232722-c0c4bf.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)>\n", "summary": {"timestamp": "2026-06-27T23:44:02.148437+08:00", "wall_clock": 599.8, "total": 3, "success": 3, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-06-27 23:44: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-20260627-232722-c0c4bf ===
[Feishu] ✅ Exported 3 songs to: https://ccnu62373cgc.feishu.cn/sheets/MpNys5BcEhs0jxtKktAcyFydnPd
[Feishu] 📐 Expanded master sheet from 734 to 837 rows
[Feishu] ✅ Appended 3 new songs to master sheet (rows 735-737)
[MasterDB] ✅ 批次 batch-20260627-232722-c0c4bf → +3 新增, ~0 更新 | 总计 737 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/MpNys5BcEhs0
[23:44:12] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [逆潮立] topic head sent (message_id=om_x100b6ccab21c8ca0b13c9515583d85c)
[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_x100b6ccab08794a0b140ccf37756472)
[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_x100b6ccab1daaca0b1fc5af626e58df)
[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-232722-c0c4bf
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260627-232722-c0c4bf
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260627-232722-c0c4bf

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