
=== 2026-05-12 15:19:58 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff -cg 2 -cs 2 --skip-feishu --profile base --step1-only ===
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml
[step075] cache hit: song_pgc.mp3 → 0eca9d56a094

======================================================================
music-pipeline3000 v2 | 9 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[15:19:59] 🏥 Health check...
[15:20:01] ✅ qishui: OK
[15:20:01] ✅ netease: OK
[15:20:01] ✅ qq: OK

[15:20:01] 🔍 [01_海屿你_20260512] Step 0: Fetching...
[15:20:01] 🔍 [02_颜色_20260512] Step 0: Fetching...
[15:20:01] 🔍 [03_恋人_20260512] Step 0: Fetching...
[15:20:01] 🔍 [04_一半一半_20260512] Step 0: Fetching...
[15:20:01] 🔍 [05_还是会想你_20260512] Step 0: Fetching...
[15:20:01] 🔍 [06_雨过后的风景_20260512] Step 0: Fetching...
[15:20:01] 🔍 [07_答案_20260512] Step 0: Fetching...
[15:20:01] 🔍 [08_唯一_20260512] Step 0: Fetching...
[15:20:01] 🔍 [09_如果呢_20260512] Step 0: Fetching...
[15:20:04] ✅ [02_颜色_20260512] Step 0: netease | 649c lyrics
[15:20:04] ⬇️  [02_颜色_20260512] Step 0.5: Download from netease...
[15:20:04] ✅ [03_恋人_20260512] Step 0: netease | 607c lyrics
[15:20:04] ⬇️  [03_恋人_20260512] Step 0.5: Download from netease...
[15:20:04] ✅ [01_海屿你_20260512] Step 0: netease | 682c lyrics
[15:20:04] ⬇️  [01_海屿你_20260512] Step 0.5: Download from netease...
[15:20:07] ✅ [04_一半一半_20260512] Step 0: netease | 1104c lyrics
[15:20:07] ⬇️  [04_一半一半_20260512] Step 0.5: Download from netease...
[15:20:07] ✅ [06_雨过后的风景_20260512] Step 0: netease | 609c lyrics
[15:20:07] ⬇️  [06_雨过后的风景_20260512] Step 0.5: Download from netease...
[15:20:07] ✅ [05_还是会想你_20260512] Step 0: netease | 920c lyrics
[15:20:07] ⬇️  [05_还是会想你_20260512] Step 0.5: Download from netease...
[15:20:10] ✅ [07_答案_20260512] Step 0: netease | 441c lyrics
[15:20:10] ⬇️  [07_答案_20260512] Step 0.5: Download from netease...
[15:20:10] ✅ [02_颜色_20260512] Step 0.5: 4300315 bytes | 211.1s
[15:20:10] 🔬 [02_颜色_20260512] Step 0.75: Audio features...
[15:20:10] ✅ [02_颜色_20260512] Step 0.75: BPM=155.17 Key=C major (45.3s)
[15:20:10] 🧠 [02_颜色_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T07:20:10.278Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "02_颜色_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/02_颜色_20260512/song_pgc.mp3", "has_features": true}}
[step075] cache hit: song_pgc.mp3 → e213902a041d
[15:20:10] ✅ [08_唯一_20260512] Step 0: netease | 419c lyrics
[15:20:10] ⬇️  [08_唯一_20260512] Step 0.5: Download from netease...
[15:20:10] ✅ [09_如果呢_20260512] Step 0: netease | 626c lyrics
[15:20:10] ⬇️  [09_如果呢_20260512] Step 0.5: Download from netease...
[15:20:12] ✅ [01_海屿你_20260512] Step 0.5: 6404858 bytes | 296.0s
[15:20:12] 🔬 [01_海屿你_20260512] Step 0.75: Audio features...
[15:20:12] ✅ [03_恋人_20260512] Step 0.5: 5867228 bytes | 276.0s
[15:20:12] 🔬 [03_恋人_20260512] Step 0.75: Audio features...
[15:20:12] ✅ [03_恋人_20260512] Step 0.75: BPM=139.81 Key=D# major (56.0s)
[15:20:12] 🧠 [03_恋人_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T07:20:12.438Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "03_恋人_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/03_恋人_20260512/song_pgc.mp3", "has_features": true}}
[step075] cache hit: song_pgc.mp3 → c4285661bfa9
[15:20:12] ✅ [05_还是会想你_20260512] Step 0.5: 4201155 bytes | 190.1s
[15:20:12] 🔬 [05_还是会想你_20260512] Step 0.75: Audio features...
[15:20:12] ✅ [05_还是会想你_20260512] Step 0.75: BPM=82.97 Key=G# major (24.4s)
[15:20:12] 🧠 [05_还是会想你_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T07:20:12.519Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "05_还是会想你_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/05_还是会想你_20260512/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
[   INFO   ] FrameCutter: dropping incomplete frame
[15:20:13] ✅ [04_一半一半_20260512] Step 0.5: 5219999 bytes | 235.3s
[15:20:13] 🔬 [04_一半一半_20260512] Step 0.75: Audio features...
[15:20:13] ✅ [06_雨过后的风景_20260512] Step 0.5: 4645125 bytes | 243.2s
[15:20:13] 🔬 [06_雨过后的风景_20260512] Step 0.75: Audio features...
[15:20:14] ✅ [07_答案_20260512] Step 0.5: 3777255 bytes | 180.7s
[15:20:14] 🔬 [07_答案_20260512] Step 0.75: Audio features...
[15:20:24] ✅ [09_如果呢_20260512] Step 0.5: 4899093 bytes | 257.6s
[15:20:24] 🔬 [09_如果呢_20260512] Step 0.75: Audio features...
[15:20:24] ✅ [08_唯一_20260512] Step 0.5: 5525483 bytes | 253.8s
[15:20:24] 🔬 [08_唯一_20260512] Step 0.75: Audio features...
  📊 Gemini official: 40s | prompt_tokens=10250 completion=1245
{"__trace__": true, "ts": "2026-05-12T07:20:50.302Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "02_颜色_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 40.0, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T07:20:50.303Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "02_颜色_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 40.025}
/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:20:50] ✅ [02_颜色_20260512] Step 1: 40.0s | prompt=851c | prompt_ok=True lyrics_ok=True
[15:20:51] ✅ [01_海屿你_20260512] Step 0.75: BPM=150.06 Key=G# major (39.7s)
[15:20:51] 🧠 [01_海屿你_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T07:20:51.816Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "01_海屿你_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/01_海屿你_20260512/song_pgc.mp3", "has_features": true}}
  📊 Gemini official: 40s | prompt_tokens=9805 completion=1384
{"__trace__": true, "ts": "2026-05-12T07:21:31.718Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "05_还是会想你_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 39.9, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T07:21:31.718Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "05_还是会想你_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 79.199}
[   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
[15:21:31] ✅ [05_还是会想你_20260512] Step 1: 39.9s | prompt=876c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 49s | prompt_tokens=12341 completion=1284
{"__trace__": true, "ts": "2026-05-12T07:21:39.309Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "03_恋人_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 49.0, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T07:21:39.309Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "03_恋人_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 86.871}
[   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')
[15:21:39] ✅ [03_恋人_20260512] Step 1: 49.0s | prompt=965c | prompt_ok=True lyrics_ok=True
[15:22:06] ✅ [04_一半一半_20260512] Step 0.75: BPM=139.85 Key=D major (34.6s)
[15:22:06] 🧠 [04_一半一半_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T07:22:06.345Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "04_一半一半_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/04_一半一半_20260512/song_pgc.mp3", "has_features": true}}
[15:22:06] ✅ [06_雨过后的风景_20260512] Step 0.75: BPM=138.13 Key=F# major (27.1s)
[15:22:06] 🧠 [06_雨过后的风景_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T07:22:06.470Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "06_雨过后的风景_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/06_雨过后的风景_20260512/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
[   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')
[15:22:34] ✅ [07_答案_20260512] Step 0.75: BPM=137.07 Key=G# minor (27.7s)
[15:22:34] 🧠 [07_答案_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T07:22:34.165Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "07_答案_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/07_答案_20260512/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')
[15:22:48] ✅ [09_如果呢_20260512] Step 0.75: BPM=123.63 Key=B major (42.5s)
[15:22:48] 🧠 [09_如果呢_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T07:22:48.967Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "09_如果呢_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/09_如果呢_20260512/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')
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
[15:23:19] ✅ [08_唯一_20260512] Step 0.75: BPM=143.71 Key=C# major (45.0s)
[15:23:19] 🧠 [08_唯一_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T07:23:19.246Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "08_唯一_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/08_唯一_20260512/song_pgc.mp3", "has_features": true}}
  📊 Gemini official: 44s | prompt_tokens=13059 completion=1305
{"__trace__": true, "ts": "2026-05-12T07:23:40.041Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "01_海屿你_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 43.7, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T07:23:40.041Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "01_海屿你_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 168.225}
[15:23:40] ✅ [01_海屿你_20260512] Step 1: 43.7s | prompt=893c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 41s | prompt_tokens=11316 completion=1307
{"__trace__": true, "ts": "2026-05-12T07:24:00.248Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "04_一半一半_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 41.0, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T07:24:00.248Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "04_一半一半_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 113.903}
[15:24:00] ✅ [04_一半一半_20260512] Step 1: 41.0s | prompt=825c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 46s | prompt_tokens=11261 completion=1252
{"__trace__": true, "ts": "2026-05-12T07:24:25.976Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "06_雨过后的风景_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 45.9, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T07:24:25.976Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "06_雨过后的风景_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 139.506}
[15:24:25] ✅ [06_雨过后的风景_20260512] Step 1: 45.9s | prompt=897c | prompt_ok=True lyrics_ok=True
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  📊 Gemini official: 36s | prompt_tokens=9156 completion=1130
{"__trace__": true, "ts": "2026-05-12T07:24:36.344Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "07_答案_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 36.1, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T07:24:36.344Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "07_答案_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 122.179}
[15:24:36] ✅ [07_答案_20260512] Step 1: 36.1s | prompt=892c | prompt_ok=True lyrics_ok=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 #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 #3/5, will retry...
  🔄 Retry 3/4 in 3s...
  ⚠️ Gemini official 503 on key #5/5, will retry...
{"__trace__": true, "ts": "2026-05-12T07:25:07.969Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "09_如果呢_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 9.6, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-12T07:25:07.969Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "09_如果呢_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 139.002}
[15:25:07] ❌ [09_如果呢_20260512] Step 1: http_503 (9.6s)
  ⚠️ 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-12T07:25:13.146Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "08_唯一_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 2.2, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-12T07:25:13.146Z", "trace_id": "batch-20260512-151958-ff8cff", "song_key": "08_唯一_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 113.9}
[15:25:13] ❌ [08_唯一_20260512] Step 1: http_503 (2.2s)

======================================================================
SUMMARY | 312s (5.2min)
======================================================================
✅ Done: 7 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 2
[MasterDB] ✅ 批次 batch-20260512-151958-ff8cff → +0 新增, ~0 更新 | 总计 664 首
[exit 0]

=== 2026-05-12 15:25:14 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff --profile base --resume-mode each --skip-feishu ===
[phase2] batch=batch-20260512-151958-ff8cff pending=7 groups=3
[phase2] group 1/3 -> 01_海屿你_20260512, 02_颜色_20260512, 03_恋人_20260512
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml
[phase2] 🌐 01_海屿你_20260512: target_language=auto
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml
[phase2] 🌐 02_颜色_20260512: target_language=auto
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml
[phase2] 🌐 03_恋人_20260512: 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-20260512-151958-ff8cff/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff --profile base --skip-feishu
[phase2] group 2/3 -> 05_还是会想你_20260512
[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml
[phase2] 🌐 05_还是会想你_20260512: 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-20260512-151958-ff8cff/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff --profile base --skip-feishu
[phase2] group 3/3 -> all songs already handled, skipping
[15:25:14] 🌐 [01_海屿你_20260512] Step 2: target_language=auto → lang_mode=AUTO
[15:25:14] 🤖 [01_海屿你_20260512] Step 2 API: 34136 chars ≈ 8534 tokens → claude-sonnet-4-6
[15:25:14] 🌐 [02_颜色_20260512] Step 2: target_language=auto → lang_mode=AUTO
[15:25:14] 🤖 [02_颜色_20260512] Step 2 API: 33548 chars ≈ 8387 tokens → claude-sonnet-4-6
[15:25:14] 🌐 [03_恋人_20260512] Step 2: target_language=auto → lang_mode=AUTO
[15:25:14] 🤖 [03_恋人_20260512] Step 2 API: 34419 chars ≈ 8604 tokens → claude-sonnet-4-6
[15:25:49] ⚠️  [01_海屿你_20260512] Step 2 API: originality 79% < 85% | 0 copied phrases
[15:25:49] 🔄 [01_海屿你_20260512] Step 2 API: originality retry 1/3...
[15:25:51] ⚠️  [03_恋人_20260512] Step 2 API: originality 83% < 85% | 0 copied phrases
[15:25:51] 🔄 [03_恋人_20260512] Step 2 API: originality retry 1/3...
[15:26:01] ⚠️  [02_颜色_20260512] Step 2 API: originality 72% < 85% | 2 copied phrases
          ❗ "还在学习" ~ "还在学习" (100%)
          ❗ "还在练习" ~ "还在学习" (75%)
[15:26:01] 🔄 [02_颜色_20260512] Step 2 API: originality retry 1/3...
[15:26:23] ⚠️  [03_恋人_20260512] Step 2 API retry 1: originality 83%
[15:26:23] 🔄 [03_恋人_20260512] Step 2 API: originality retry 2/3...
[15:26:36] ⚠️  [01_海屿你_20260512] Step 2 API retry 1: originality 78%
[15:26:36] 🔄 [01_海屿你_20260512] Step 2 API: originality retry 2/3...
[15:26:45] ⚠️  [02_颜色_20260512] Step 2 API retry 1: originality 78%
[15:26:45] 🔄 [02_颜色_20260512] Step 2 API: originality retry 2/3...
[15:27:19] ⚠️  [03_恋人_20260512] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)
[15:27:19] ⚠️  [03_恋人_20260512] Step 2 API: best originality 83% after 3 retries
[15:27:27] ⚠️  [02_颜色_20260512] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)
[15:27:27] ⚠️  [02_颜色_20260512] Step 2 API: best originality 78% after 3 retries
[15:27:29] ⚠️  Step 2 title library fetch failed: 
[15:27:29] ✅ [03_恋人_20260512] Step 2 API: 《侧卧》 | 68.7s | in=41322 out=4610 | ~$0.193
[15:27:37] ⚠️  Step 2 title library fetch failed: 
[15:27:37] ✅ [02_颜色_20260512] Step 2 API: 《换气》 | 91.0s | in=41330 out=4333 | ~$0.189
[15:27:38] ⚠️  [01_海屿你_20260512] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)
[15:27:38] ⚠️  [01_海屿你_20260512] Step 2 API: best originality 79% after 3 retries
[15:27:44] ✅ [01_海屿你_20260512] Step 2 API: 《骨折处》 | 82.1s | in=41178 out=4507 | ~$0.191
[15:40:31] 🌐 [05_还是会想你_20260512] Step 2: target_language=auto → lang_mode=AUTO
[15:40:31] 🤖 [05_还是会想你_20260512] Step 2 API: 34164 chars ≈ 8541 tokens → claude-sonnet-4-6
[15:41:28] ⚠️  [05_还是会想你_20260512] Step 2 API: originality 78% < 85% | 0 copied phrases
[15:41:28] 🔄 [05_还是会想你_20260512] Step 2 API: originality retry 1/3...
[15:42:09] ⚠️  [05_还是会想你_20260512] Step 2 API retry 1: originality 77%
[15:42:09] 🔄 [05_还是会想你_20260512] Step 2 API: originality retry 2/3...
[15:43:17] ⚠️  [05_还是会想你_20260512] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)
[15:43:17] ⚠️  [05_还是会想你_20260512] Step 2 API: best originality 78% after 3 retries
[15:43:17] ✅ [05_还是会想你_20260512] Step 2 API: 《肋骨以南》 | 97.4s | in=41937 out=5098 | ~$0.202
{"timestamp": "2026-05-12T15:25:14.217136+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff", "profile": "base", "concurrency": 3, "resume_mode": "each", "pending_song_count": 7, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/01_海屿你_20260512", "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/02_颜色_20260512", "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/03_恋人_20260512"], "success_count": 3, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/01_海屿你_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/01_海屿你_20260512/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-20260512-151958-ff8cff/01_海屿你_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/01_海屿你_20260512/step2_json_b.json", "agent_summary": "API direct: 骨折处", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/02_颜色_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/02_颜色_20260512/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-20260512-151958-ff8cff/02_颜色_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/02_颜色_20260512/step2_json_b.json", "agent_summary": "API direct: 换气", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/03_恋人_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/03_恋人_20260512/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-20260512-151958-ff8cff/03_恋人_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/03_恋人_20260512/step2_json_b.json", "agent_summary": "API direct: 侧卧", "returncode": 0, "stderr": "", "attempt": 1}]}]}, {"group_index": 2, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/05_还是会想你_20260512"], "success_count": 1, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/05_还是会想你_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/05_还是会想你_20260512/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-20260512-151958-ff8cff/05_还是会想你_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff/05_还是会想你_20260512/step2_json_b.json", "agent_summary": "API direct: 肋骨以南", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "resume": {"status": "success", "returncode": 0, "stdout_tail": "\n======================================================================\nmusic-pipeline3000 v2 | 9 songs\n======================================================================\nGemini concurrency: 2 | Suno concurrency: 3\nOutput: /srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[15:43:19] 🏥 Health check...\n[15:43:21] ✅ qishui: OK\n[15:43:21] ✅ netease: OK\n[15:43:21] ✅ qq: OK\n\n[15:43:21] ⏭️  [01_海屿你_20260512] Already complete, skipping\n[15:43:21] ⏭️  [02_颜色_20260512] Already complete, skipping\n[15:43:21] ⏭️  [03_恋人_20260512] Already complete, skipping\n[15:43:21] ⏭️  [04_一半一半_钝感_20260512] Already complete, skipping\n[15:43:21] ⏭️  [06_雨过后的风景_骨折处_20260512] Already complete, skipping\n[15:43:21] ⏭️  [07_答案_回声不散_20260512] Already complete, skipping\n[15:43:21] ⏭️  [08_唯一_空巢期_20260512] Already complete, skipping\n[15:43:21] ⏭️  [09_如果呢_侧躺着醒_20260512] Already complete, skipping\n  📝 [05_还是会想你_20260512] lyrics stripped: 2889c → 2883c\n[15:43:21] 🎵 [05_还是会想你_20260512] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[15:43:21] 🎨 [05_还是会想你_20260512] Step 4: SeeDream cover (parallel)...\n  ✅ submitted: ['1fc0aa24', '01405182']\n  🎵 1fc0aa24... → submitted\n  🎵 01405182... → submitted\n  🎵 1fc0aa24... → queued\n  🎵 01405182... → queued\n  🎵 1fc0aa24... → streaming\n  🎵 01405182... → streaming\n  🎵 1fc0aa24... → complete\n  🎵 01405182... → complete\n[15:46:56]    🎧 [05_还是会想你_20260512] Song 1: https://cdn1.suno.ai/1fc0aa24-4f01-4964-9dbd-9d45d1ece69c.mp3\n[15:46:56]    🎧 [05_还是会想你_20260512] Song 2: https://cdn1.suno.ai/01405182-d83e-45a9-a2e9-2b7b0e2700ec.mp3\n[15:46:56] 🎛️ [05_还是会想你_20260512] Step 3.5: 混音...\n[15:47:16]    🎚️ [05_还是会想你_20260512] Song 1: edm | 低66/中31/高3%\n[15:47:32]    🎚️ [05_还是会想你_20260512] Song 2: jazz | 低62/中35/高3%\n[15:47:32] ✅ [05_还是会想你_20260512] Step 3.5: 36.4s | 2 songs mixed\n[15:47:32] ⚠️  [05_还是会想你_20260512] Step 4: http_403 (non-fatal)\n\n======================================================================\nSUMMARY | 252s (4.2min)\n======================================================================\n✅ Done: 9 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260512-151958-ff8cff → +1 新增, ~8 更新 | 总计 676 首\n", "stderr_tail": "[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml\n", "summary": {"timestamp": "2026-05-12T15:47:32.659398+08:00", "wall_clock": 251.6, "total": 9, "success": 9, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-05-12 15:47:33 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff ===
[Feishu] ✅ Exported 9 songs to: https://ccnu62373cgc.feishu.cn/sheets/RUpbsvDzFhyLUetxdomcAz3vnud
[Feishu] 📐 Expanded master sheet from 607 to 716 rows
[Feishu] ✅ Appended 9 new songs to master sheet (rows 608-616)
[MasterDB] ✅ 批次 batch-20260512-151958-ff8cff → +9 新增, ~0 更新 | 总计 616 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/RUpbsvDzFhyL
[15:47:42] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [骨折处] topic head sent (message_id=om_x100b6f19ff3d78f4b13737f58454aec)
[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_x100b6f19fc1574b0b376f00f92a6ead)
[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_x100b6f19fd2b94a0b4c92d1495e231c)
[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_x100b6f19fbf584a8b2b74fdfec19d53)
[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_x100b6f19f8f54888b3ea8650b538d3d)
[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_x100b6f19f95020a8b4a1b0754e647d4)
[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_x100b6f19f646f8acb2f9d0559ec1100)
[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_x100b6f19f74188b8b1942fbd5f79a5b)
[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_x100b6f19f55844c8b2fdc76a120c8bc)
[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-20260512-151958-ff8cff
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260512-151958-ff8cff
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260512-151958-ff8cff

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