
=== 2026-05-14 16:16:36 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260514-161636-5676b8 --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260514-161636-5676b8' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260514-161636-5676b8.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-20260514-161636-5676b8
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[16:16:38] 🏥 Health check...
[16:16:41] ✅ qishui: OK
[16:16:41] ✅ netease: OK
[16:16:41] ✅ qq: OK

[16:16:41] 🔍 [01_Contact_20260514] Step 0: Fetching...
[16:16:41] 🔍 [02_Back On You_20260514] Step 0: Fetching...
[16:16:41] 🔍 [03_U Got Me_20260514] Step 0: Fetching...
[16:16:41] 🔍 [04_Give Me Your Love_20260514] Step 0: Fetching...
[16:16:44] ✅ [02_Back On You_20260514] Step 0: netease | 292c lyrics
[16:16:44] ⬇️  [02_Back On You_20260514] Step 0.5: Download from netease...
[16:16:44] ✅ [03_U Got Me_20260514] Step 0: netease | 163c lyrics
[16:16:44] ⬇️  [03_U Got Me_20260514] Step 0.5: Download from netease...
[16:16:44] ✅ [01_Contact_20260514] Step 0: netease | 1530c lyrics
[16:16:44] ⬇️  [01_Contact_20260514] Step 0.5: Download from netease...
[16:16:46] ✅ [04_Give Me Your Love_20260514] Step 0: netease | 1188c lyrics
[16:16:46] ⬇️  [04_Give Me Your Love_20260514] Step 0.5: Download from netease...
[16:16:50] ✅ [02_Back On You_20260514] Step 0.5: 4754782 bytes | 223.2s
[16:16:50] 🔬 [02_Back On You_20260514] Step 0.75: Audio features...
[16:16:50] ✅ [03_U Got Me_20260514] Step 0.5: 3445565 bytes | 166.9s
[16:16:50] 🔬 [03_U Got Me_20260514] Step 0.75: Audio features...
[16:16:50] ✅ [01_Contact_20260514] Step 0.5: 4809667 bytes | 240.8s
[16:16:50] 🔬 [01_Contact_20260514] Step 0.75: Audio features...
[16:16:51] ✅ [04_Give Me Your Love_20260514] Step 0.5: 4058954 bytes | 197.9s
[16:16:51] 🔬 [04_Give Me Your Love_20260514] Step 0.75: Audio features...
[16:17:22] ✅ [03_U Got Me_20260514] Step 0.75: BPM=128.04 Key=A# major (32.2s)
[16:17:22] 🧠 [03_U Got Me_20260514] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-14T08:17:22.552Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "03_U Got Me_20260514", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/03_U Got Me_20260514/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')
[   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
[16:17:31] ✅ [02_Back On You_20260514] Step 0.75: BPM=128.5 Key=F minor (41.0s)
[16:17:31] 🧠 [02_Back On You_20260514] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-14T08:17:31.207Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "02_Back On You_20260514", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/02_Back On You_20260514/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')
[16:17:54] ✅ [04_Give Me Your Love_20260514] Step 0.75: BPM=104.96 Key=E minor (23.7s)
[16:17:54] 🧠 [04_Give Me Your Love_20260514] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-14T08:17:54.987Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "04_Give Me Your Love_20260514", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/04_Give Me Your Love_20260514/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')
[16:17:56] ✅ [01_Contact_20260514] Step 0.75: BPM=128.09 Key=A major (34.1s)
[16:17:56] 🧠 [01_Contact_20260514] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-14T08:17:56.718Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "01_Contact_20260514", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/01_Contact_20260514/song_pgc.mp3", "has_features": true}}
  📊 Gemini official: 43s | prompt_tokens=8504 completion=1231
{"__trace__": true, "ts": "2026-05-14T08:18:38.140Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "03_U Got Me_20260514", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 43.1, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-14T08:18:38.140Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "03_U Got Me_20260514", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 75.588}
[16:18:38] ⚠️  [03_U Got Me_20260514] Step 1.5: prompt 1124c > 1000c, compressing...
  📏 [03_U Got Me_20260514] prompt 1124c → 783c (smart truncate)
[16:18:38] ✅ [03_U Got Me_20260514] Step 1.5: prompt compressed 1124c → 783c
[16:18:38] ✅ [03_U Got Me_20260514] Step 1: 43.1s | prompt=783c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 46s | prompt_tokens=10336 completion=1160
{"__trace__": true, "ts": "2026-05-14T08:18:43.088Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "02_Back On You_20260514", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 46.3, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-14T08:18:43.088Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "02_Back On You_20260514", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 71.88}
[16:18:43] ⚠️  [02_Back On You_20260514] Step 1.5: prompt 1177c > 1000c, compressing...
  📏 [02_Back On You_20260514] prompt 1177c → 862c (smart truncate)
[16:18:43] ✅ [02_Back On You_20260514] Step 1.5: prompt compressed 1177c → 862c
[16:18:43] ✅ [02_Back On You_20260514] Step 1: 46.3s | prompt=862c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 44s | prompt_tokens=9793 completion=1418
{"__trace__": true, "ts": "2026-05-14T08:19:22.549Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "04_Give Me Your Love_20260514", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 44.4, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-14T08:19:22.550Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "04_Give Me Your Love_20260514", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 87.563}
[16:19:22] ⚠️  [04_Give Me Your Love_20260514] Step 1.5: prompt 1141c > 1000c, compressing...
  📏 [04_Give Me Your Love_20260514] prompt 1141c → 958c (smart truncate)
[16:19:22] ✅ [04_Give Me Your Love_20260514] Step 1.5: prompt compressed 1141c → 958c
[16:19:22] ✅ [04_Give Me Your Love_20260514] Step 1: 44.4s | prompt=958c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 43s | prompt_tokens=11301 completion=1708
{"__trace__": true, "ts": "2026-05-14T08:19:25.925Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "01_Contact_20260514", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 42.8, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-14T08:19:25.925Z", "trace_id": "batch-20260514-161636-5676b8", "song_key": "01_Contact_20260514", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 89.207}
[16:19:25] ⚠️  [01_Contact_20260514] Step 1.5: prompt 1235c > 1000c, compressing...
  📏 [01_Contact_20260514] prompt 1235c → 931c (smart truncate)
[16:19:25] ✅ [01_Contact_20260514] Step 1.5: prompt compressed 1235c → 931c
[16:19:25] ✅ [01_Contact_20260514] Step 1: 42.8s | prompt=931c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 164s (2.7min)
======================================================================
✅ Done: 4 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260514-161636-5676b8 → +0 新增, ~0 更新 | 总计 767 首
[exit 0]

=== 2026-05-14 16:19:26 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8 --profile __runtime_batch-20260514-161636-5676b8 --resume-mode end --skip-feishu ===
[phase2] batch=batch-20260514-161636-5676b8 pending=4 groups=2
[phase2] group 1/2 -> 01_Contact_20260514, 02_Back On You_20260514, 03_U Got Me_20260514
[profile] ✅ Loaded profile '__runtime_batch-20260514-161636-5676b8' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260514-161636-5676b8.yaml
[phase2] 🌐 01_Contact_20260514: target_language=auto
[profile] ✅ Loaded profile '__runtime_batch-20260514-161636-5676b8' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260514-161636-5676b8.yaml
[phase2] 🌐 02_Back On You_20260514: target_language=auto
[profile] ✅ Loaded profile '__runtime_batch-20260514-161636-5676b8' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260514-161636-5676b8.yaml
[phase2] 🎹 03_U Got Me_20260514: instrumental → step2 meta (title+cover, no lyrics)
[phase2] group 2/2 -> 04_Give Me Your Love_20260514
[profile] ✅ Loaded profile '__runtime_batch-20260514-161636-5676b8' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260514-161636-5676b8.yaml
[phase2] 🌐 04_Give Me Your Love_20260514: 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-20260514-161636-5676b8/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8 --profile __runtime_batch-20260514-161636-5676b8 --skip-feishu
[16:19:27] 🌐 [01_Contact_20260514] Step 2: target_language=auto → lang_mode=EN | single-turn
[16:19:27] 🤖 [01_Contact_20260514] Step 2 Turn 2: 36950 chars ≈ 9237 tokens → claude-sonnet-4-6
[16:19:27] 🌐 [02_Back On You_20260514] Step 2: target_language=auto → lang_mode=EN | single-turn
[16:19:27] 🤖 [02_Back On You_20260514] Step 2 Turn 2: 35047 chars ≈ 8761 tokens → claude-sonnet-4-6
[16:19:31] ✅ [03_U Got Me_20260514] Step 2 🎹 instrumental: 《Neon Dissolve》 | 4.7s | in=616 out=132
[16:20:09] ⚠️  [02_Back On You_20260514] Step 2 API: originality 66% < 85% | 0 copied phrases
[16:20:09] 🔄 [02_Back On You_20260514] Step 2 API: originality retry 1/3...
[16:20:24] ⚠️  [01_Contact_20260514] Step 2 API: originality 53% < 85% | 3 copied phrases
          ❗ "foundation. Low-mids slightly scooped for clarity. Vocals present and centered. Silky, airy high-end . Lush hall reverb and stereo delays on synths and BGVs. Smooth, transparent bus compression.)" ~ "foundation. Low-mids slightly scooped for clarity. Vocals present and centered. Silky, airy high-end . Lush hall reverb and stereo delays on synths and BGVs. Smooth, transparent bus compression.)" (100%)
          ❗ "uses a dotted eighth + sixteenth rhythm on beat 1; BGV response  is a sustained chord; motif repeats twice, anchored around the 5th.)" ~ "uses a dotted eighth + sixteenth rhythm on beat 1; BGV response  is a sustained chord; motif repeats twice, anchored around the 5th.)" (100%)
          ❗ "uses a dotted eighth + sixteenth rhythm on beat 1; BGV response  is a sustained chord; motif repeats twice, anchored around the 5th.)" ~ "uses a dotted eighth + sixteenth rhythm on beat 1; BGV response  is a sustained chord; motif repeats twice, anchored around the 5th.)" (100%)
[16:20:24] 🔄 [01_Contact_20260514] Step 2 API: originality retry 1/3...
[16:21:03] ⚠️  [02_Back On You_20260514] Step 2 API originality retry 1 failed: Expecting value: line 1 column 1 (char 0)
[16:21:03] ⚠️  [02_Back On You_20260514] Step 2 API: best originality 66% after 3 retries
[16:21:03] ✅ [02_Back On You_20260514] Step 2 API: 《Pull The Tide》 engine=? | 42.3s | in=19608 out=1973 | ~$0.088
[16:21:23] ⚠️  [01_Contact_20260514] Step 2 API originality retry 1 failed: Expecting value: line 1 column 1 (char 0)
[16:21:23] ⚠️  [01_Contact_20260514] Step 2 API: best originality 53% after 3 retries
[16:21:23] ✅ [01_Contact_20260514] Step 2 API: 《Gravity Owes Me》 engine=? | 56.9s | in=20197 out=2514 | ~$0.098
[16:21:23] 🌐 [04_Give Me Your Love_20260514] Step 2: target_language=auto → lang_mode=EN | single-turn
[16:21:23] 🤖 [04_Give Me Your Love_20260514] Step 2 Turn 2: 36294 chars ≈ 9073 tokens → claude-sonnet-4-6
[16:22:01] ⚠️  [04_Give Me Your Love_20260514] Step 2 API: originality 48% < 85% | 8 copied phrases
          ❗ "; wide stereo field via pads and fx; heavy sidechain compression on pads from kick; vocals sit cleanly in the center.)" ~ "; wide stereo field via pads and fx; heavy sidechain compression on pads from kick; vocals sit cleanly in the center.)" (100%)
          ❗ ", motif repeats twice then descends.)" ~ ", motif repeats twice then descends.)" (100%)
          ❗ "over the Em chord, creating brief, yearning tension before instrumental resolution.)" ~ "over the Em chord, creating brief, yearning tension before instrumental resolution.)" (100%)
          ❗ "; plucked synth lead takes center stage; pads are heavily sidechained.)" ~ "; plucked synth lead takes center stage; pads are heavily sidechained.)" (100%)
          ❗ ", motif repeats twice then descends.)" ~ ", motif repeats twice then descends.)" (100%)
[16:22:01] 🔄 [04_Give Me Your Love_20260514] Step 2 API: originality retry 1/3...
[16:22:43] ⚠️  [04_Give Me Your Love_20260514] Step 2 API originality retry 1 failed: Expecting value: line 1 column 1 (char 0)
[16:22:43] ⚠️  [04_Give Me Your Love_20260514] Step 2 API: best originality 48% after 3 retries
[16:22:43] ✅ [04_Give Me Your Love_20260514] Step 2 API: 《Saltwater Gravity》 engine=? | 37.1s | in=19946 out=2349 | ~$0.095
{"timestamp": "2026-05-14T16:19:27.084686+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8", "profile": "__runtime_batch-20260514-161636-5676b8", "concurrency": 3, "resume_mode": "end", "pending_song_count": 4, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/01_Contact_20260514", "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/02_Back On You_20260514", "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/03_U Got Me_20260514"], "success_count": 3, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/01_Contact_20260514", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/01_Contact_20260514/step2_json_b.json", "agent_summary": "API direct: Gravity Owes Me", "returncode": 0, "stderr": "", "attempt": 1, "attempts": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/01_Contact_20260514", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/01_Contact_20260514/step2_json_b.json", "agent_summary": "API direct: Gravity Owes Me", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/02_Back On You_20260514", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/02_Back On You_20260514/step2_json_b.json", "agent_summary": "API direct: Pull The Tide", "returncode": 0, "stderr": "", "attempt": 1, "attempts": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/02_Back On You_20260514", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/02_Back On You_20260514/step2_json_b.json", "agent_summary": "API direct: Pull The Tide", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/03_U Got Me_20260514", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/03_U Got Me_20260514/step2_json_b.json", "agent_summary": "instrumental meta: Neon Dissolve", "returncode": 0, "stderr": "", "attempt": 1, "attempts": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/03_U Got Me_20260514", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/03_U Got Me_20260514/step2_json_b.json", "agent_summary": "instrumental meta: Neon Dissolve", "returncode": 0, "stderr": "", "attempt": 1}]}]}, {"group_index": 2, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/04_Give Me Your Love_20260514"], "success_count": 1, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/04_Give Me Your Love_20260514", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/04_Give Me Your Love_20260514/step2_json_b.json", "agent_summary": "API direct: Saltwater Gravity", "returncode": 0, "stderr": "", "attempt": 1, "attempts": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/04_Give Me Your Love_20260514", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8/04_Give Me Your Love_20260514/step2_json_b.json", "agent_summary": "API direct: Saltwater Gravity", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "resume": {"status": "success", "returncode": 0, "stdout_tail": "有效歌词，自动切换纯音乐模式\n[16:22:47] ♪ [03_U Got Me_20260514] Step 3: 纯音乐 pure-prompt 模式\n[16:22:47] 🎵 [03_U Got Me_20260514] Step 3: Suno generation (weirdness=50, style_influence=50 · 纯音乐)...\n[16:22:47] 🎨 [03_U Got Me_20260514] Step 4: SeeDream cover (parallel)...\n  📝 [04_Give Me Your Love_20260514] lyrics stripped: 4393c → 4387c\n[16:22:47] 🎵 [04_Give Me Your Love_20260514] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[16:22:47] 🎨 [04_Give Me Your Love_20260514] Step 4: SeeDream cover (parallel)...\n  ✅ submitted: ['45ddfb78', '3e0d7a1f']\n  🎵 45ddfb78... → submitted\n  🎵 3e0d7a1f... → submitted\n  ✅ submitted: ['4aa52fe5', 'c1f0152a']\n  🎵 4aa52fe5... → submitted\n  🎵 c1f0152a... → submitted\n  🎵 45ddfb78... → queued\n  🎵 3e0d7a1f... → queued\n  🎵 4aa52fe5... → queued\n  🎵 c1f0152a... → queued\n  🎵 45ddfb78... → streaming\n  🎵 3e0d7a1f... → streaming\n  ✅ submitted: ['441d62f8', '99e25cb0']\n  🎵 441d62f8... → submitted\n  🎵 99e25cb0... → submitted\n  🎵 4aa52fe5... → streaming\n  🎵 c1f0152a... → streaming\n  🎵 441d62f8... → queued\n  🎵 99e25cb0... → queued\n  🎵 99e25cb0... → streaming\n  🎵 441d62f8... → streaming\n  🎵 3e0d7a1f... → complete\n  🎵 99e25cb0... → complete\n  🎵 45ddfb78... → complete\n[16:26:45]    🎧 [02_Back On You_20260514] Song 1: https://cdn1.suno.ai/45ddfb78-1fea-473a-9c06-3c4f0b8d6f14.mp3\n[16:26:45]    🎧 [02_Back On You_20260514] Song 2: https://cdn1.suno.ai/3e0d7a1f-c70b-40e1-998b-5e494b3a5a81.mp3\n[16:26:45] 🎛️ [02_Back On You_20260514] Step 3.5: 混音...\n  ✅ submitted: ['0f37a79f', '91af3c7b']\n[16:27:06]    🎚️ [02_Back On You_20260514] Song 1: edm | 低45/中50/高5%\n  🎵 0f37a79f... → submitted\n  🎵 91af3c7b... → submitted\n  🎵 4aa52fe5... → complete\n  🎵 c1f0152a... → complete\n[16:27:07]    🎧 [01_Contact_20260514] Song 1: https://cdn1.suno.ai/4aa52fe5-5f4d-4b77-94d2-570c657c2e09.mp3\n[16:27:07]    🎧 [01_Contact_20260514] Song 2: https://cdn1.suno.ai/c1f0152a-2594-4ba3-991c-4015f30f2d7a.mp3\n[16:27:07] 🎛️ [01_Contact_20260514] Step 3.5: 混音...\n[16:27:25]    🎚️ [02_Back On You_20260514] Song 2: edm | 低71/中24/高6%\n[16:27:25] ✅ [02_Back On You_20260514] Step 3.5: 39.8s | 2 songs mixed\n[16:27:25] ⚠️  [02_Back On You_20260514] Step 4: http_403 (non-fatal)\n[16:27:40]    🎚️ [01_Contact_20260514] Song 1: edm | 低68/中28/高3%\n  🎵 0f37a79f... → streaming\n  🎵 91af3c7b... → streaming\n[16:27:57]    🎚️ [01_Contact_20260514] Song 2: rock | 低68/中29/高3%\n[16:27:57] ✅ [01_Contact_20260514] Step 3.5: 50.6s | 2 songs mixed\n[16:27:57] ⚠️  [01_Contact_20260514] Step 4: http_403 (non-fatal)\n  🎵 441d62f8... → complete\n[16:27:58]    🎧 [03_U Got Me_20260514] Song 1: https://cdn1.suno.ai/441d62f8-61e1-409d-a3ae-443a70523712.mp3\n[16:27:58]    🎧 [03_U Got Me_20260514] Song 2: https://cdn1.suno.ai/99e25cb0-06f0-4be2-ad94-601c3456fe0c.mp3\n[16:27:58] 🎛️ [03_U Got Me_20260514] Step 3.5: 混音...\n[16:28:15]    🎚️ [03_U Got Me_20260514] Song 1: edm | 低82/中14/高4%\n[16:28:34]    🎚️ [03_U Got Me_20260514] Song 2: edm | 低76/中18/高6%\n[16:28:34] ✅ [03_U Got Me_20260514] Step 3.5: 36.2s | 2 songs mixed\n[16:28:34] ⚠️  [03_U Got Me_20260514] Step 4: http_403 (non-fatal)\n  🎵 0f37a79f... → complete\n  🎵 91af3c7b... → complete\n[16:29:17]    🎧 [04_Give Me Your Love_20260514] Song 1: https://cdn1.suno.ai/0f37a79f-9f17-4f8b-9672-8c70bf91c11f.mp3\n[16:29:17]    🎧 [04_Give Me Your Love_20260514] Song 2: https://cdn1.suno.ai/91af3c7b-c6ea-469f-9255-1444b4a7ca2f.mp3\n[16:29:17] 🎛️ [04_Give Me Your Love_20260514] Step 3.5: 混音...\n[16:29:33]    🎚️ [04_Give Me Your Love_20260514] Song 1: pop | 低73/中24/高3%\n[16:29:50]    🎚️ [04_Give Me Your Love_20260514] Song 2: pop | 低76/中20/高4%\n[16:29:50] ✅ [04_Give Me Your Love_20260514] Step 3.5: 32.6s | 2 songs mixed\n[16:29:50] ⚠️  [04_Give Me Your Love_20260514] Step 4: http_403 (non-fatal)\n\n======================================================================\nSUMMARY | 423s (7.1min)\n======================================================================\n✅ Done: 4 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260514-161636-5676b8 → +4 新增, ~0 更新 | 总计 771 首\n", "stderr_tail": "[profile] ✅ Loaded profile '__runtime_batch-20260514-161636-5676b8' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260514-161636-5676b8.yaml\n", "summary": {"timestamp": "2026-05-14T16:29:50.067049+08:00", "wall_clock": 423.1, "total": 4, "success": 4, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-05-14 16:29:51 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8 ===
[Feishu] ✅ Exported 4 songs to: https://ccnu62373cgc.feishu.cn/sheets/JCkNsMDtNhGgwjtv63Vc92aonqf
[Feishu] 📐 Expanded master sheet from 704 to 808 rows
[Feishu] ✅ Appended 4 new songs to master sheet (rows 705-708)
[MasterDB] ✅ 批次 batch-20260514-161636-5676b8 → +4 新增, ~0 更新 | 总计 708 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/JCkNsMDtNhGg
[16:29:59] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [Gravity Owes Me] topic head sent (message_id=om_x100b6f6cce4e1ca4b3bf98b598b23e9)
[Feishu IM] ✅ [Gravity Owes Me] Gravity Owes Me_V1_raw.mp3 replied
[Feishu IM] ✅ [Gravity Owes Me] Gravity Owes Me_V1_mixed.mp3 replied
[Feishu IM] ✅ [Gravity Owes Me] Gravity Owes Me_V2_raw.mp3 replied
[Feishu IM] ✅ [Gravity Owes Me] Gravity Owes Me_V2_mixed.mp3 replied
[Feishu IM] ✅ [Pull The Tide] topic head sent (message_id=om_x100b6f6ccf5668f8b4c5c2946dfd7bb)
[Feishu IM] ✅ [Pull The Tide] Pull The Tide_V1_raw.mp3 replied
[Feishu IM] ✅ [Pull The Tide] Pull The Tide_V1_mixed.mp3 replied
[Feishu IM] ✅ [Pull The Tide] Pull The Tide_V2_raw.mp3 replied
[Feishu IM] ✅ [Pull The Tide] Pull The Tide_V2_mixed.mp3 replied
[Feishu IM] ✅ [Neon Dissolve] topic head sent (message_id=om_x100b6f6ccc0fe8bcb32c9f25f7cf89e)
[Feishu IM] ✅ [Neon Dissolve] Neon Dissolve_V1_raw.mp3 replied
[Feishu IM] ✅ [Neon Dissolve] Neon Dissolve_V1_mixed.mp3 replied
[Feishu IM] ✅ [Neon Dissolve] Neon Dissolve_V2_raw.mp3 replied
[Feishu IM] ✅ [Neon Dissolve] Neon Dissolve_V2_mixed.mp3 replied
[Feishu IM] ✅ [Saltwater Gravity] topic head sent (message_id=om_x100b6f6ccd783890b4a0449e875993b)
[Feishu IM] ✅ [Saltwater Gravity] Saltwater Gravity_V1_raw.mp3 replied
[Feishu IM] ✅ [Saltwater Gravity] Saltwater Gravity_V1_mixed.mp3 replied
[Feishu IM] ✅ [Saltwater Gravity] Saltwater Gravity_V2_raw.mp3 replied
[Feishu IM] ✅ [Saltwater Gravity] Saltwater Gravity_V2_mixed.mp3 replied
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260514-161636-5676b8
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260514-161636-5676b8

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