
=== 2026-04-25 04:57:55 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260425-045755-e59f90 --target-language zh --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260425-045755-e59f90' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260425-045755-e59f90.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')
[   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')
[   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')
[   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')
[   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 | 6 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[04:57:57] 🏥 Health check...
[04:58:02] ✅ qishui: OK
[04:58:02] ❌ netease: DOWN
[04:58:02] ✅ qq: OK

[04:58:02] 🔍 [01_Love Yourself_20260425] Step 0: Fetching...
[04:58:02] 🔍 [02_MOTHER IN YOU_20260425] Step 0: Fetching...
[04:58:02] 🔍 [03_BETTER MAN_20260425] Step 0: Fetching...
[04:58:02] 🔍 [04_YUKON_20260425] Step 0: Fetching...
[04:58:02] 🔍 [05_DAISIES_20260425] Step 0: Fetching...
[04:58:02] 🔍 [06_LOVE SONG_20260425] Step 0: Fetching...
[04:58:20] ✅ [01_Love Yourself_20260425] Step 0: qq | 2353c
[04:58:20] ⬇️  [01_Love Yourself_20260425] Step 0.5: Download from qq...
[04:58:25] ✅ [02_MOTHER IN YOU_20260425] Step 0: qq | 1507c
[04:58:25] ⬇️  [02_MOTHER IN YOU_20260425] Step 0.5: Download from qq...
[04:58:26] 🔄 [03_BETTER MAN_20260425] Step 0: retry 1/2 in 5s...
[04:58:28] ✅ [01_Love Yourself_20260425] Step 0.5: 4818880 bytes | 233.8s
[04:58:28] 🔬 [01_Love Yourself_20260425] Step 0.75: Audio features...
[04:58:39] ✅ [02_MOTHER IN YOU_20260425] Step 0.5: 4687655 bytes | 205.9s
[04:58:39] 🔬 [02_MOTHER IN YOU_20260425] Step 0.75: Audio features...
[04:58:46] ✅ [04_YUKON_20260425] Step 0: qq | 1894c
[04:58:46] ⬇️  [04_YUKON_20260425] Step 0.5: Download from qq...
[04:58:46] ✅ [05_DAISIES_20260425] Step 0: qq | 1905c
[04:58:46] ⬇️  [05_DAISIES_20260425] Step 0.5: Download from qq...
[04:58:50] ✅ [06_LOVE SONG_20260425] Step 0: qq | 1687c
[04:58:50] ⬇️  [06_LOVE SONG_20260425] Step 0.5: Download from qq...
[04:58:50] ✅ [03_BETTER MAN_20260425] Step 0: qq | 1668c
[04:58:50] ⬇️  [03_BETTER MAN_20260425] Step 0.5: Download from qq...
[04:58:51] ✅ [04_YUKON_20260425] Step 0.5: 3708849 bytes | 163.9s
[04:58:51] 🔬 [04_YUKON_20260425] Step 0.75: Audio features...
[04:58:52] ✅ [05_DAISIES_20260425] Step 0.5: 3814334 bytes | 176.5s
[04:58:52] 🔬 [05_DAISIES_20260425] Step 0.75: Audio features...
[04:58:59] ✅ [06_LOVE SONG_20260425] Step 0.5: 3743543 bytes | 172.4s
[04:58:59] 🔬 [06_LOVE SONG_20260425] Step 0.75: Audio features...
[04:59:07] ✅ [02_MOTHER IN YOU_20260425] Step 0.75: BPM=114.63 Key=A# major (27.8s)
[04:59:07] 🧠 [02_MOTHER IN YOU_20260425] Step 1: Gemini (queuing)...
[04:59:07] 🌐 Step 1: target_language=zh (injecting override directive)
[04:59:14] ✅ [01_Love Yourself_20260425] Step 0.75: BPM=99.75 Key=E major (46.0s)
[04:59:14] 🧠 [01_Love Yourself_20260425] Step 1: Gemini (queuing)...
[04:59:14] 🌐 Step 1: target_language=zh (injecting override directive)
[04:59:25] ✅ [03_BETTER MAN_20260425] Step 0.5: 3976114 bytes | 169.0s
[04:59:25] 🔬 [03_BETTER MAN_20260425] Step 0.75: Audio features...
[04:59:32] ✅ [04_YUKON_20260425] Step 0.75: BPM=95.99 Key=G major (25.0s)
[04:59:32] 🧠 [04_YUKON_20260425] Step 1: Gemini (queuing)...
[04:59:32] 🌐 Step 1: target_language=zh (injecting override directive)
[04:59:39] ✅ [05_DAISIES_20260425] Step 0.75: BPM=110.15 Key=G# major (25.3s)
[04:59:39] 🧠 [05_DAISIES_20260425] Step 1: Gemini (queuing)...
[04:59:39] 🌐 Step 1: target_language=zh (injecting override directive)
[04:59:52] ✅ [06_LOVE SONG_20260425] Step 0.75: BPM=161.77 Key=G# major (20.7s)
[04:59:52] 🧠 [06_LOVE SONG_20260425] Step 1: Gemini (queuing)...
[04:59:53] 🌐 Step 1: target_language=zh (injecting override directive)
  📊 Gemini official: 42s | prompt_tokens=10211 completion=1461
[05:00:22] ⚠️  [02_MOTHER IN YOU_20260425] Step 1.5: prompt 1088c > 1000c, compressing...
  📏 [02_MOTHER IN YOU_20260425] prompt 1088c → 804c (smart truncate)
[05:00:22] ✅ [02_MOTHER IN YOU_20260425] Step 1.5: prompt compressed 1088c → 804c
[05:00:22] ✅ [02_MOTHER IN YOU_20260425] Step 1: 42.5s | prompt=804c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 45s | prompt_tokens=11350 completion=1790
[05:00:38] ⚠️  [01_Love Yourself_20260425] Step 1.5: prompt 1049c > 1000c, compressing...
  📏 [01_Love Yourself_20260425] prompt 1049c → 943c (smart truncate)
[05:00:38] ✅ [01_Love Yourself_20260425] Step 1.5: prompt compressed 1049c → 943c
[05:00:38] ✅ [01_Love Yourself_20260425] Step 1: 45.3s | prompt=943c | prompt_ok=True lyrics_ok=True
[05:00:39] ✅ [03_BETTER MAN_20260425] Step 0.75: BPM=142.16 Key=A major (17.2s)
[05:00:39] 🧠 [03_BETTER MAN_20260425] Step 1: Gemini (queuing)...
[05:00:39] 🌐 Step 1: target_language=zh (injecting override directive)
  📊 Gemini official: 31s | prompt_tokens=9403 completion=1666
[05:01:10] ⚠️  [05_DAISIES_20260425] Step 1.5: prompt 1261c > 1000c, compressing...
  📏 [05_DAISIES_20260425] prompt 1261c → 835c (smart truncate)
[05:01:10] ✅ [05_DAISIES_20260425] Step 1.5: prompt compressed 1261c → 835c
[05:01:10] ✅ [05_DAISIES_20260425] Step 1: 31.3s | prompt=835c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 43s | prompt_tokens=9019 completion=1814
[05:01:21] ⚠️  [04_YUKON_20260425] Step 1.5: prompt 1285c > 1000c, compressing...
  📏 [04_YUKON_20260425] prompt 1285c → 993c (smart truncate)
[05:01:21] ✅ [04_YUKON_20260425] Step 1.5: prompt compressed 1285c → 993c
[05:01:21] ✅ [04_YUKON_20260425] Step 1: 43.1s | prompt=993c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 44s | prompt_tokens=9194 completion=1678
[05:01:54] ⚠️  [06_LOVE SONG_20260425] Step 1.5: prompt 1048c > 1000c, compressing...
  📏 [06_LOVE SONG_20260425] prompt 1048c → 968c (smart truncate)
[05:01:54] ✅ [06_LOVE SONG_20260425] Step 1.5: prompt compressed 1048c → 968c
[05:01:54] ✅ [06_LOVE SONG_20260425] Step 1: 43.8s | prompt=968c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 45s | prompt_tokens=9081 completion=1457
[05:02:06] ⚠️  [03_BETTER MAN_20260425] Step 1.5: prompt 1265c > 1000c, compressing...
  📏 [03_BETTER MAN_20260425] prompt 1265c → 949c (smart truncate)
[05:02:06] ✅ [03_BETTER MAN_20260425] Step 1.5: prompt compressed 1265c → 949c
[05:02:06] ✅ [03_BETTER MAN_20260425] Step 1: 45.1s | prompt=949c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 244s (4.1min)
======================================================================
✅ Done: 6 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260425-045755-e59f90 → +0 新增, ~0 更新 | 总计 583 首
[exit 0]

=== 2026-04-25 05:02:07 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90 --profile grammy --resume-mode each --skip-feishu --target-language zh ===
[phase2] batch=batch-20260425-045755-e59f90 pending=6 groups=2
[phase2] group 1/2 -> 01_Love Yourself_20260425, 02_MOTHER IN YOU_20260425, 03_BETTER MAN_20260425
[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml
[phase2] 🌐 01_Love Yourself_20260425: target_language=zh
[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml
[phase2] 🌐 02_MOTHER IN YOU_20260425: target_language=zh
[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml
[phase2] 🌐 03_BETTER MAN_20260425: 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-20260425-045755-e59f90/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90 --profile grammy --skip-feishu
[phase2] group 2/2 -> all songs already handled, skipping
[05:02:07] 🌐 [01_Love Yourself_20260425] Step 2: target_language=zh → lang_mode=ZH
[05:02:07] 🤖 [01_Love Yourself_20260425] Step 2 API: 32482 chars ≈ 8120 tokens → claude-sonnet-4-6
[05:02:07] 🌐 [02_MOTHER IN YOU_20260425] Step 2: target_language=zh → lang_mode=ZH
[05:02:07] 🤖 [02_MOTHER IN YOU_20260425] Step 2 API: 30962 chars ≈ 7740 tokens → claude-sonnet-4-6
[05:02:07] 🌐 [03_BETTER MAN_20260425] Step 2: target_language=zh → lang_mode=ZH
[05:02:07] 🤖 [03_BETTER MAN_20260425] Step 2 API: 30891 chars ≈ 7722 tokens → claude-sonnet-4-6
[05:02:50] ✅ [01_Love Yourself_20260425] Step 2 API: 《白噪音》 | 42.8s | in=16715 out=2634 | ~$0.090
[05:02:53] ✅ [02_MOTHER IN YOU_20260425] Step 2 API: 《旧毛衣》 | 45.3s | in=16404 out=2330 | ~$0.084
[05:02:56] ✅ [03_BETTER MAN_20260425] Step 2 API: 《棉絮光》 | 48.5s | in=16319 out=2289 | ~$0.083
{"timestamp": "2026-04-25T05:02:07.672932+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90", "profile": "grammy", "concurrency": 3, "resume_mode": "each", "pending_song_count": 6, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/01_Love Yourself_20260425", "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/02_MOTHER IN YOU_20260425", "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/03_BETTER MAN_20260425"], "success_count": 3, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/01_Love Yourself_20260425", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/01_Love Yourself_20260425/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-20260425-045755-e59f90/01_Love Yourself_20260425", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/01_Love Yourself_20260425/step2_json_b.json", "agent_summary": "API direct: 白噪音", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/02_MOTHER IN YOU_20260425", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/02_MOTHER IN YOU_20260425/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-20260425-045755-e59f90/02_MOTHER IN YOU_20260425", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/02_MOTHER IN YOU_20260425/step2_json_b.json", "agent_summary": "API direct: 旧毛衣", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/03_BETTER MAN_20260425", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/03_BETTER MAN_20260425/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-20260425-045755-e59f90/03_BETTER MAN_20260425", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/03_BETTER MAN_20260425/step2_json_b.json", "agent_summary": "API direct: 棉絮光", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "resume": {"status": "success", "returncode": 0, "stdout_tail": "%\n[05:08:26] ✅ [02_MOTHER IN YOU_20260425] Step 3.5: 36.9s | 2 songs mixed\n[05:08:27] ✅ [02_MOTHER IN YOU_20260425] Step 4: 14.3s | /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/02_MOTHER IN YOU_20260425/cover_seedream.jpg\n  🎵 d112ba77... → complete\n  🎵 f754a271... → complete\n  🎵 5c28e5e6... → complete\n[05:10:08]    🎧 [05_DAISIES_Spare_Room_20260425] Song 1: https://cdn1.suno.ai/5c28e5e6-d24f-4d71-a9ae-b44839d561bf.mp3\n[05:10:08]    🎧 [05_DAISIES_Spare_Room_20260425] Song 2: https://cdn1.suno.ai/f754a271-d651-40cc-89c5-fa4f2fdd57b4.mp3\n[05:10:08] 🎛️ [05_DAISIES_Spare_Room_20260425] Step 3.5: 混音...\n  ✅ submitted: ['dd793a04', '286d4d8d']\n  🎵 dd793a04... → submitted\n  🎵 286d4d8d... → submitted\n[05:10:24]    🎚️ [05_DAISIES_Spare_Room_20260425] Song 1: pop | 低75/中22/高3%\n  🎵 dd793a04... → queued\n  🎵 286d4d8d... → queued\n  🎵 d14baced... → complete\n[05:10:24]    🎧 [06_LOVE SONG_Slow_Your_Breathing_20260425] Song 1: https://cdn1.suno.ai/d112ba77-dcce-4444-9a76-3505bccfb0e2.mp3\n[05:10:24]    🎧 [06_LOVE SONG_Slow_Your_Breathing_20260425] Song 2: https://cdn1.suno.ai/d14baced-e056-4433-99b2-575afe7357e0.mp3\n[05:10:24] 🎛️ [06_LOVE SONG_Slow_Your_Breathing_20260425] Step 3.5: 混音...\n[05:10:40]    🎚️ [05_DAISIES_Spare_Room_20260425] Song 2: pop | 低76/中22/高2%\n[05:10:40] ✅ [05_DAISIES_Spare_Room_20260425] Step 3.5: 32.7s | 2 songs mixed\n  🎵 dd793a04... → streaming\n  🎵 286d4d8d... → streaming\n[05:10:54]    🎚️ [06_LOVE SONG_Slow_Your_Breathing_20260425] Song 1: edm | 低81/中18/高1%\n[05:11:10]    🎚️ [06_LOVE SONG_Slow_Your_Breathing_20260425] Song 2: edm | 低68/中32/高1%\n[05:11:10] ✅ [06_LOVE SONG_Slow_Your_Breathing_20260425] Step 3.5: 46.1s | 2 songs mixed\n[05:11:10] ✅ [05_DAISIES_Spare_Room_20260425] Step 4: 13.8s | /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/05_DAISIES_Spare_Room_20260425/cover_seedream.jpg\n[05:11:12] ✅ [06_LOVE SONG_Slow_Your_Breathing_20260425] Step 4: 13.8s | /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/06_LOVE SONG_Slow_Your_Breathing_20260425/cover_seedream.jpg\n  🎵 dd793a04... → complete\n  ✅ submitted: ['78749d66', '34a8d727']\n  🎵 78749d66... → submitted\n  🎵 34a8d727... → submitted\n  🎵 78749d66... → queued\n  🎵 34a8d727... → queued\n  🎵 34a8d727... → streaming\n  🎵 78749d66... → streaming\n  🎵 78749d66... → complete\n  🎵 286d4d8d... → complete\n[05:16:03]    🎧 [04_YUKON_Warm_Side_20260425] Song 1: https://cdn1.suno.ai/dd793a04-e78e-4ac7-b34b-469a9ae439e9.mp3\n[05:16:03]    🎧 [04_YUKON_Warm_Side_20260425] Song 2: https://cdn1.suno.ai/286d4d8d-0df7-4327-a165-af18702a8a27.mp3\n[05:16:03] 🎛️ [04_YUKON_Warm_Side_20260425] Step 3.5: 混音...\n[05:16:21]    🎚️ [04_YUKON_Warm_Side_20260425] Song 1: pop | 低76/中21/高3%\n[05:16:55]    🎚️ [04_YUKON_Warm_Side_20260425] Song 2: edm | 低78/中20/高2%\n[05:16:55] ✅ [04_YUKON_Warm_Side_20260425] Step 3.5: 51.6s | 2 songs mixed\n  🎵 34a8d727... → complete\n[05:16:55]    🎧 [03_BETTER MAN_20260425] Song 1: https://cdn1.suno.ai/78749d66-9a45-48a4-8ab8-bd1d6d859549.mp3\n[05:16:55]    🎧 [03_BETTER MAN_20260425] Song 2: https://cdn1.suno.ai/34a8d727-6f72-45d0-bb87-c26b6d6dd0aa.mp3\n[05:16:55] 🎛️ [03_BETTER MAN_20260425] Step 3.5: 混音...\n[05:17:10]    🎚️ [03_BETTER MAN_20260425] Song 1: edm | 低66/中32/高2%\n[05:17:10] ✅ [04_YUKON_Warm_Side_20260425] Step 4: 11.8s | /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/04_YUKON_Warm_Side_20260425/cover_seedream.jpg\n[05:17:26]    🎚️ [03_BETTER MAN_20260425] Song 2: edm | 低71/中27/高3%\n[05:17:26] ✅ [03_BETTER MAN_20260425] Step 3.5: 31.0s | 2 songs mixed\n[05:17:28] ✅ [03_BETTER MAN_20260425] Step 4: 14.0s | /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90/03_BETTER MAN_20260425/cover_seedream.jpg\n\n======================================================================\nSUMMARY | 867s (14.5min)\n======================================================================\n✅ Done: 6 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260425-045755-e59f90 → +6 新增, ~0 更新 | 总计 592 首\n", "stderr_tail": "[profile] ✅ Loaded profile 'grammy' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/grammy.yaml\n", "summary": {"timestamp": "2026-04-25T05:17:28.251597+08:00", "wall_clock": 867.5, "total": 6, "success": 6, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-04-25 05:17:29 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90 ===
[Feishu] ✅ Exported 6 songs to: https://ccnu62373cgc.feishu.cn/sheets/NjRWsxnBfh7X6XtaJQHcU8OTnDe
[Feishu] 📐 Expanded master sheet from 529 to 635 rows
[Feishu] ✅ Appended 6 new songs to master sheet (rows 530-535)
[MasterDB] ✅ 批次 batch-20260425-045755-e59f90 → +6 新增, ~0 更新 | 总计 535 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/NjRWsxnBfh7X
[05:17:38] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [白噪音] topic head sent (message_id=om_x100b518991e150a0b35a510834cae55)
[Feishu IM] ✅ [白噪音] cover replied
[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_x100b5189aeadd4a8b345ad9030cced3)
[Feishu IM] ✅ [旧毛衣] cover replied
[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_x100b5189af5830a0b32b5595cc1c1e4)
[Feishu IM] ✅ [棉絮光] cover replied
[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] ✅ [Warm Side] topic head sent (message_id=om_x100b5189adc494a4b4b216cc091b484)
[Feishu IM] ✅ [Warm Side] cover replied
[Feishu IM] ✅ [Warm Side] Warm Side_V1_raw.mp3 replied
[Feishu IM] ✅ [Warm Side] Warm Side_V1_mixed.mp3 replied
[Feishu IM] ✅ [Warm Side] Warm Side_V2_raw.mp3 replied
[Feishu IM] ✅ [Warm Side] Warm Side_V2_mixed.mp3 replied
[Feishu IM] ✅ [Spare Room] topic head sent (message_id=om_x100b5189aa5e10a4b2646bbecf1b578)
[Feishu IM] ✅ [Spare Room] cover replied
[Feishu IM] ✅ [Spare Room] Spare Room_V1_raw.mp3 replied
[Feishu IM] ✅ [Spare Room] Spare Room_V1_mixed.mp3 replied
[Feishu IM] ✅ [Spare Room] Spare Room_V2_raw.mp3 replied
[Feishu IM] ✅ [Spare Room] Spare Room_V2_mixed.mp3 replied
[Feishu IM] ✅ [Slow Your Breathing] topic head sent (message_id=om_x100b5189ab11d0a0b3cdcef46fe0dc5)
[Feishu IM] ✅ [Slow Your Breathing] cover replied
[Feishu IM] ✅ [Slow Your Breathing] Slow Your Breathing_V1_raw.mp3 replied
[Feishu IM] ✅ [Slow Your Breathing] Slow Your Breathing_V1_mixed.mp3 replied
[Feishu IM] ✅ [Slow Your Breathing] Slow Your Breathing_V2_raw.mp3 replied
[Feishu IM] ✅ [Slow Your Breathing] Slow Your Breathing_V2_mixed.mp3 replied
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260425-045755-e59f90
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260425-045755-e59f90

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