
=== 2026-05-07 15:13:27 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-151257-453927 --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-151257-453927' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-151257-453927.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
/usr/local/lib/python3.13/dist-packages/scipy/cluster/hierarchy.py:810: ClusterWarning: The symmetric non-negative hollow observation matrix looks suspiciously like an uncondensed distance matrix
  return linkage(y, method='ward', metric='euclidean')

======================================================================
music-pipeline3000 v2 | 2 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[15:13:29] 🏥 Health check...
[15:13:31] ✅ qishui: OK
[15:13:31] ✅ netease: OK
[15:13:31] ✅ qq: OK

[15:13:31] 🔍 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 0: Fetching...
[15:13:31] 🔍 [02_在加纳共和国离婚_20260507] Step 0: Fetching...
[15:13:33] ✅ [02_在加纳共和国离婚_20260507] Step 0: netease | 863c lyrics
[15:13:33] ⬇️  [02_在加纳共和国离婚_20260507] Step 0.5: Download from netease...
[15:13:34] 🔄 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 0: retry 1/2 in 5s (no lyrics yet)...
[15:13:40] ✅ [02_在加纳共和国离婚_20260507] Step 0.5: 4786285 bytes | 229.0s
[15:13:40] 🔬 [02_在加纳共和国离婚_20260507] Step 0.75: Audio features...
[15:13:40] 🔄 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 0: retry 2/2 in 10s (no lyrics yet)...
[15:13:51] ⚠️  [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 0: No lyrics found — proceeding without (Gemini will generate from audio)
[15:13:51] ✅ [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 0: qishui | 0c lyrics
[15:13:51] ⬇️  [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 0.5: Download from qishui...
[15:13:58] ✅ [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 0.5: 2964854 bytes | 132.9s
[15:13:58] 🔬 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 0.75: Audio features...
[15:14:12] ✅ [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 0.75: BPM=128.07 Key=E major (13.8s)
[15:14:12] 🧠 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-07T07:14:12.498Z", "trace_id": "batch-20260507-151257-453927", "song_key": "01_DJ车载嗨曲（BONGX星星 Remix）_20260507", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/01_DJ车载嗨曲（BONGX星星 Remix）_20260507/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')
[15:14:16] ✅ [02_在加纳共和国离婚_20260507] Step 0.75: BPM=129.71 Key=A# major (35.5s)
[15:14:16] 🧠 [02_在加纳共和国离婚_20260507] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-07T07:14:16.328Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/02_在加纳共和国离婚_20260507/song_pgc.mp3", "has_features": true}}
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-07T07:14:54.342Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 2.5, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-07T07:14:54.342Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 38.015}
[15:14:54] ❌ [02_在加纳共和国离婚_20260507] Step 1: http_503 (2.5s)
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-07T07:14:59.903Z", "trace_id": "batch-20260507-151257-453927", "song_key": "01_DJ车载嗨曲（BONGX星星 Remix）_20260507", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 6.7, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-07T07:14:59.903Z", "trace_id": "batch-20260507-151257-453927", "song_key": "01_DJ车载嗨曲（BONGX星星 Remix）_20260507", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 47.405}
[15:14:59] ❌ [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 1: http_503 (6.7s)

======================================================================
SUMMARY | 89s (1.5min)
======================================================================
✅ Done: 0 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 2
[exit 0]

=== 2026-05-07 15:15:00 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 --profile __runtime_batch-20260507-151257-453927 --resume-mode each --skip-feishu ===
{"timestamp": "2026-05-07T15:15:00.631288+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927", "profile": "__runtime_batch-20260507-151257-453927", "concurrency": 3, "resume_mode": "each", "pending_song_count": 0, "groups": [], "status": "noop", "resume": null}
[exit 0]

=== 2026-05-07 15:15:00 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 ===
[Feishu] No successful songs to export.
[exit 0]

=== 2026-05-07 15:19:50 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-151257-453927 --resume /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-151257-453927' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-151257-453927.yaml

=== 2026-05-07 15:19:52 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-151257-453927 --resume /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-151257-453927' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-151257-453927.yaml

======================================================================
music-pipeline3000 v2 | 2 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:19:52] 🏥 Health check...
[15:19:53] ✅ qishui: OK
[15:19:53] ✅ netease: OK
[15:19:53] ✅ qq: OK

[15:19:53] 🧠 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-07T07:19:53.897Z", "trace_id": "batch-20260507-151257-453927", "song_key": "01_DJ车载嗨曲（BONGX星星 Remix）_20260507", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/01_DJ车载嗨曲（BONGX星星 Remix）_20260507/song_pgc.mp3", "has_features": true}}
[15:19:53] 🧠 [02_在加纳共和国离婚_20260507] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-07T07:19:53.945Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/02_在加纳共和国离婚_20260507/song_pgc.mp3", "has_features": true}}

======================================================================
music-pipeline3000 v2 | 2 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:19:53] 🏥 Health check...
[15:19:55] ✅ qishui: OK
[15:19:55] ✅ netease: OK
[15:19:55] ✅ qq: OK

[15:19:55] 🧠 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-07T07:19:55.529Z", "trace_id": "batch-20260507-151257-453927", "song_key": "01_DJ车载嗨曲（BONGX星星 Remix）_20260507", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/01_DJ车载嗨曲（BONGX星星 Remix）_20260507/song_pgc.mp3", "has_features": true}}
[15:19:55] 🧠 [02_在加纳共和国离婚_20260507] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-07T07:19:55.578Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/02_在加纳共和国离婚_20260507/song_pgc.mp3", "has_features": true}}
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  📊 Gemini official: 31s | prompt_tokens=7353 completion=928
{"__trace__": true, "ts": "2026-05-07T07:20:26.215Z", "trace_id": "batch-20260507-151257-453927", "song_key": "01_DJ车载嗨曲（BONGX星星 Remix）_20260507", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 30.7, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-07T07:20:26.215Z", "trace_id": "batch-20260507-151257-453927", "song_key": "01_DJ车载嗨曲（BONGX星星 Remix）_20260507", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 30.687}
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-07T07:20:36.499Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 7.5, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-07T07:20:36.499Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 42.554}
[15:20:36] ❌ [02_在加纳共和国离婚_20260507] Step 1: http_503 (7.5s)
  📊 Gemini official: 35s | prompt_tokens=7353 completion=796
{"__trace__": true, "ts": "2026-05-07T07:20:42.206Z", "trace_id": "batch-20260507-151257-453927", "song_key": "01_DJ车载嗨曲（BONGX星星 Remix）_20260507", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 35.3, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-07T07:20:42.206Z", "trace_id": "batch-20260507-151257-453927", "song_key": "01_DJ车载嗨曲（BONGX星星 Remix）_20260507", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 48.309}
[15:20:26] ✅ [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 1: 30.7s | prompt=881c | prompt_ok=True lyrics_ok=True
[15:20:26] 🌐 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 2: target_language=auto → lang_mode=AUTO
[15:20:26] 🤖 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 2 API: 12857 chars ≈ 3214 tokens → claude-sonnet-4-6
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-07T07:20:48.225Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 7.3, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-07T07:20:48.225Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 52.647}
[15:20:42] ⚠️  [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 1.5: prompt 1145c > 1000c, compressing...
  📏 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] prompt 1145c → 768c (smart truncate)
[15:20:42] ✅ [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 1.5: prompt compressed 1145c → 768c
[15:20:42] ✅ [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 1: 35.3s | prompt=768c | prompt_ok=True lyrics_ok=True
[15:20:42] 🌐 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 2: target_language=auto → lang_mode=AUTO
[15:20:42] 🤖 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 2 API: 12243 chars ≈ 3060 tokens → claude-sonnet-4-6
[15:21:24] ⚠️  Step 2 title library fetch failed: 
[15:21:24] ⚠️  [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 2 API attempt 1 (42.3s): [Errno 2] No such file or directory: '/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/01_DJ车载嗨曲（BONGX星星 Remix）_20260507/step2_json_b.json'
[15:22:01] ⚠️  [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 2 API attempt 2 (31.6s): [Errno 2] No such file or directory: '/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/01_DJ车载嗨曲（BONGX星星 Remix）_20260507/step2_json_b.json'
Traceback (most recent call last):
  File "/srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py", line 958, in <module>
    main()
    ~~~~^^
  File "/srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py", line 945, in main
    asyncio.run(run_pipeline(
    ~~~~~~~~~~~^^^^^^^^^^^^^^
        songs, output_dir,
        ^^^^^^^^^^^^^^^^^^
    ...<6 lines>...
        target_language=args.target_language,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ))
    ^^
  File "/usr/lib/python3.13/asyncio/runners.py", line 195, in run
    return runner.run(main)
           ~~~~~~~~~~^^^^^^
  File "/usr/lib/python3.13/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "/srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py", line 827, in run_pipeline
    results = await asyncio.gather(*tasks)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py", line 467, in run_song
    state.mark_error("step2", s2.get("error", "API call failed"))
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/utils.py", line 199, in mark_error
    self.save()
    ~~~~~~~~~^^
  File "/srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/utils.py", line 184, in save
    self.state_file.write_text(json.dumps(self.state, ensure_ascii=False, indent=2))
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/pathlib/_local.py", line 557, in write_text
    return PathBase.write_text(self, data, encoding, errors, newline)
           ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/pathlib/_abc.py", line 651, in write_text
    with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f:
         ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/pathlib/_local.py", line 539, in open
    return io.open(self, mode, buffering, encoding, errors, newline)
           ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/01_DJ车载嗨曲（BONGX星星 Remix）_20260507/_state.json'
[exit 1]
[15:20:48] ❌ [02_在加纳共和国离婚_20260507] Step 1: http_503 (7.3s)
[15:21:03] ✅ [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 2 API: 《就是今晚 不要停》 | 37.7s | in=9486 out=1926 | ~$0.057
[15:21:03] ✅ [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 2.5: originality 100% ✓
[15:21:03] ✅ [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Step 2: 《就是今晚 不要停》
[15:21:03] 📁 [01_DJ车载嗨曲（BONGX星星 Remix）_20260507] Renamed → 01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507
  📝 [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] lyrics stripped: 2677c → 2670c
[15:21:03] 🎵 [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] Step 3: Suno generation (weirdness=50, style_influence=50)...
[15:21:03] 🎨 [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] Step 4: SeeDream cover (parallel)...
  ✅ submitted: ['3820e1f1', '410bc282']
  🎵 3820e1f1... → submitted
  🎵 410bc282... → submitted
  🎵 3820e1f1... → queued
  🎵 410bc282... → queued
  🎵 3820e1f1... → streaming
  🎵 410bc282... → streaming
  🎵 410bc282... → complete
  🎵 3820e1f1... → complete
[15:23:52]    🎧 [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] Song 1: https://cdn1.suno.ai/3820e1f1-75c2-47c4-b6cb-830335f990f3.mp3
[15:23:52]    🎧 [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] Song 2: https://cdn1.suno.ai/410bc282-0554-49f9-8f8d-1212277edc94.mp3
[15:23:52] 🎛️ [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] Step 3.5: 混音...
[15:24:11]    🎚️ [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] Song 1: edm | 低72/中21/高6%
[15:24:24]    🎚️ [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] Song 2: edm | 低64/中30/高6%
[15:24:24] ✅ [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] Step 3.5: 32.7s | 2 songs mixed
[15:24:24] ⚠️  [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] Step 4: http_403 (non-fatal)

======================================================================
SUMMARY | 269s (4.5min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 1
[MasterDB] ✅ 批次 batch-20260507-151257-453927 → +1 新增, ~0 更新 | 总计 642 首
[exit 0]

=== 2026-05-07 15:24:25 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/O7aPseFrIh7QVNtD7MxcS3Yvnfc
[Feishu] 📐 Expanded master sheet from 582 to 683 rows
[Feishu] ✅ Appended 1 new songs to master sheet (rows 583-583)
[MasterDB] ✅ 批次 batch-20260507-151257-453927 → +1 新增, ~0 更新 | 总计 583 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/O7aPseFrIh7Q
[15:24:34] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [就是今晚 不要停] topic head sent (message_id=om_x100b50f7ade70ce8b24bd761f5bb483)
[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-20260507-151257-453927
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260507-151257-453927
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927

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

=== 2026-05-07 15:37:15 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-151257-453927 --resume /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-151257-453927' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-151257-453927.yaml

======================================================================
music-pipeline3000 v2 | 2 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:37:17] 🏥 Health check...
[15:37:18] ✅ qishui: OK
[15:37:18] ✅ netease: OK
[15:37:18] ✅ qq: OK

[15:37:18] ⏭️  [01_DJ车载嗨曲（BONGX星星 Remix）_就是今晚_不要停_20260507] Already complete, skipping
[15:37:18] 🧠 [02_在加纳共和国离婚_20260507] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-07T07:37:18.391Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260507-151257-453927/02_在加纳共和国离婚_20260507/song_pgc.mp3", "has_features": true}}
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  ⚠️ Gemini official 503 on key #2/5, will retry...
  🔄 Retry 2/4 in 3s...
  ⚠️ Gemini official 503 on key #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #4/5, will retry...
  🔄 Retry 4/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-07T07:37:46.508Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 3.5, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-07T07:37:46.508Z", "trace_id": "batch-20260507-151257-453927", "song_key": "02_在加纳共和国离婚_20260507", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 28.117}
[15:37:46] ❌ [02_在加纳共和国离婚_20260507] Step 1: http_503 (3.5s)

======================================================================
SUMMARY | 28s (0.5min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 1
[MasterDB] ✅ 批次 batch-20260507-151257-453927 → +0 新增, ~1 更新 | 总计 642 首
[exit 0]

=== 2026-05-07 15:37:46 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927 ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/QeAQsPwUlhNmcYtAsdrctG9gnCb
[Feishu] ⏭️  Skip duplicate (complete): DJ车载嗨曲（BONGX星星 Remix） (https://fileserver.yuchenhu.com/pipeline/batch-20260507-151257-453927/01_DJ%E8%BD%A6%E8%BD%BD%E5%97%A8%E6%9B%B2%EF%BC%88BONGX%E6%98%9F%E6%98%9F%20Remix%EF%BC%89_%E5%B0%B1%E6%98%AF%E4%BB%8A%E6%99%9A_%E4%B8%8D%E8%A6%81%E5%81%9C_20260507/song_pgc.mp3)
[MasterDB] ✅ 批次 batch-20260507-151257-453927 → +0 新增, ~0 更新 | 总计 583 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/QeAQsPwUlhNm
[15:37:54] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [就是今晚 不要停] topic head sent (message_id=om_x100b50f05be3bc94b4c1c758f0cf112)
[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-20260507-151257-453927
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260507-151257-453927
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260507-151257-453927

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