
=== 2026-05-12 16:51:11 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260512-165111-c99f89 --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260512-165111-c99f89' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260512-165111-c99f89.yaml
[step075] cache hit: song_pgc.mp3 → 094d99a18c84

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

[16:51:13] 🏥 Health check...
[16:51:14] ✅ qishui: OK
[16:51:14] ✅ netease: OK
[16:51:14] ✅ qq: OK

[16:51:14] 🔍 [01_恋人_20260512] Step 0: Fetching...
[16:51:14] 🔍 [02_唯一_20260512] Step 0: Fetching...
[16:51:17] ✅ [01_恋人_20260512] Step 0: netease | 607c lyrics
[16:51:17] ⬇️  [01_恋人_20260512] Step 0.5: Download from netease...
[16:51:18] ✅ [02_唯一_20260512] Step 0: netease | 419c lyrics
[16:51:18] ⬇️  [02_唯一_20260512] Step 0.5: Download from netease...
[16:51:28] ✅ [02_唯一_20260512] Step 0.5: 5525483 bytes | 253.8s
[16:51:28] 🔬 [02_唯一_20260512] Step 0.75: Audio features...
[16:51:28] ✅ [02_唯一_20260512] Step 0.75: BPM=143.71 Key=C# major (45.0s)
[16:51:28] 🧠 [02_唯一_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T08:51:28.876Z", "trace_id": "batch-20260512-165111-c99f89", "song_key": "02_唯一_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89/02_唯一_20260512/song_pgc.mp3", "has_features": true}}
[step075] cache hit: song_pgc.mp3 → e213902a041d
[16:51:29] ✅ [01_恋人_20260512] Step 0.5: 5867228 bytes | 276.0s
[16:51:29] 🔬 [01_恋人_20260512] Step 0.75: Audio features...
[16:51:29] ✅ [01_恋人_20260512] Step 0.75: BPM=139.81 Key=D# major (56.0s)
[16:51:29] 🧠 [01_恋人_20260512] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-12T08:51:29.121Z", "trace_id": "batch-20260512-165111-c99f89", "song_key": "01_恋人_20260512", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89/01_恋人_20260512/song_pgc.mp3", "has_features": true}}
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
  📊 Gemini official: 56s | prompt_tokens=12535 completion=1507
{"__trace__": true, "ts": "2026-05-12T08:52:24.803Z", "trace_id": "batch-20260512-165111-c99f89", "song_key": "01_恋人_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 55.6, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T08:52:24.803Z", "trace_id": "batch-20260512-165111-c99f89", "song_key": "01_恋人_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 55.682}
[16:52:24] ✅ [01_恋人_20260512] Step 1: 55.6s | prompt=871c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 71s | prompt_tokens=11692 completion=1528
{"__trace__": true, "ts": "2026-05-12T08:52:49.604Z", "trace_id": "batch-20260512-165111-c99f89", "song_key": "02_唯一_20260512", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 71.3, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-12T08:52:49.604Z", "trace_id": "batch-20260512-165111-c99f89", "song_key": "02_唯一_20260512", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 80.728}
[16:52:49] ✅ [02_唯一_20260512] Step 1: 71.3s | prompt=846c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 95s (1.6min)
======================================================================
✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260512-165111-c99f89 → +0 新增, ~0 更新 | 总计 682 首
[exit 0]

=== 2026-05-12 16:52:50 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89 --profile __runtime_batch-20260512-165111-c99f89 --resume-mode each --skip-feishu ===
[phase2] batch=batch-20260512-165111-c99f89 pending=2 groups=1
[phase2] group 1/1 -> 01_恋人_20260512, 02_唯一_20260512
[profile] ✅ Loaded profile '__runtime_batch-20260512-165111-c99f89' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260512-165111-c99f89.yaml
[phase2] 🌐 01_恋人_20260512: target_language=auto
[profile] ✅ Loaded profile '__runtime_batch-20260512-165111-c99f89' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260512-165111-c99f89.yaml
[phase2] 🌐 02_唯一_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-165111-c99f89/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89 --profile __runtime_batch-20260512-165111-c99f89 --skip-feishu
[16:52:50] 🌐 [01_恋人_20260512] Step 2: target_language=auto → lang_mode=AUTO
[16:52:50] 🤖 [01_恋人_20260512] Step 2 API: 35143 chars ≈ 8785 tokens → claude-sonnet-4-6
[16:52:50] 🌐 [02_唯一_20260512] Step 2: target_language=auto → lang_mode=AUTO
[16:52:50] 🤖 [02_唯一_20260512] Step 2 API: 35326 chars ≈ 8831 tokens → claude-sonnet-4-6
[16:53:45] ⚠️  [01_恋人_20260512] Step 2 API: originality 82% < 85% | 0 copied phrases
[16:53:45] 🔄 [01_恋人_20260512] Step 2 API: originality retry 1/3...
[16:53:58] ⚠️  [02_唯一_20260512] Step 2 API attempt 1: JSON parse error: Expecting value: line 1 column 1 (char 0)
[16:54:39] ⚠️  [02_唯一_20260512] Step 2 API: originality 79% < 85% | 0 copied phrases
[16:54:39] 🔄 [02_唯一_20260512] Step 2 API: originality retry 1/3...
[16:54:39] ⚠️  [01_恋人_20260512] Step 2 API retry 1: originality 82%
[16:54:39] 🔄 [01_恋人_20260512] Step 2 API: originality retry 2/3...
[16:55:19] ⚠️  [02_唯一_20260512] Step 2 API retry 1: originality 82%
[16:55:19] 🔄 [02_唯一_20260512] Step 2 API: originality retry 2/3...
[16:55:51] ⚠️  [01_恋人_20260512] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)
[16:55:51] ⚠️  [01_恋人_20260512] Step 2 API: best originality 82% after 3 retries
[16:55:54] ✅ [01_恋人_20260512] Step 2 API: 《侧身睡》 | 109.4s | in=42301 out=5306 | ~$0.206
[16:56:16] ⚠️  [02_唯一_20260512] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)
[16:56:16] ⚠️  [02_唯一_20260512] Step 2 API: best originality 82% after 3 retries
[16:56:16] ✅ [02_唯一_20260512] Step 2 API: 《骨缝里》 | 81.4s | in=41964 out=5006 | ~$0.201
{"timestamp": "2026-05-12T16:52:50.233695+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89", "profile": "__runtime_batch-20260512-165111-c99f89", "concurrency": 3, "resume_mode": "each", "pending_song_count": 2, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89/01_恋人_20260512", "/srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89/02_唯一_20260512"], "success_count": 2, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89/01_恋人_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89/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-165111-c99f89/01_恋人_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89/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-165111-c99f89/02_唯一_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89/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-165111-c99f89/02_唯一_20260512", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89/02_唯一_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 | 2 songs\n======================================================================\nGemini concurrency: 2 | Suno concurrency: 3\nOutput: /srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[16:56:18] 🏥 Health check...\n[16:56:20] ✅ qishui: OK\n[16:56:20] ✅ netease: OK\n[16:56:20] ✅ qq: OK\n\n  📝 [01_恋人_20260512] lyrics stripped: 3922c → 3916c\n[16:56:20] 🎵 [01_恋人_20260512] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[16:56:20] 🎨 [01_恋人_20260512] Step 4: SeeDream cover (parallel)...\n  📝 [02_唯一_20260512] lyrics stripped: 4170c → 4164c\n[16:56:20] 🎵 [02_唯一_20260512] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[16:56:20] 🎨 [02_唯一_20260512] Step 4: SeeDream cover (parallel)...\n  ✅ submitted: ['44e81064', '1e122a13']\n  🎵 44e81064... → submitted\n  🎵 1e122a13... → submitted\n  🎵 44e81064... → queued\n  🎵 1e122a13... → queued\n  🎵 44e81064... → streaming\n  ✅ submitted: ['cbb038dd', 'd46ec6b2']\n  🎵 cbb038dd... → submitted\n  🎵 d46ec6b2... → submitted\n  🎵 cbb038dd... → queued\n  🎵 d46ec6b2... → queued\n  🎵 1e122a13... → streaming\n  🎵 cbb038dd... → streaming\n  🎵 d46ec6b2... → streaming\n  🎵 44e81064... → complete\n  🎵 cbb038dd... → complete\n  🎵 d46ec6b2... → complete\n[17:01:16]    🎧 [01_恋人_20260512] Song 1: https://cdn1.suno.ai/cbb038dd-7865-4386-a3a4-e6bee72e9ad4.mp3\n[17:01:16]    🎧 [01_恋人_20260512] Song 2: https://cdn1.suno.ai/d46ec6b2-dc01-4142-8b2f-06cd88fd1c3f.mp3\n[17:01:16] 🎛️ [01_恋人_20260512] Step 3.5: 混音...\n[17:01:37]    🎚️ [01_恋人_20260512] Song 1: pop | 低68/中29/高4%\n  🎵 1e122a13... → complete\n[17:01:38]    🎧 [02_唯一_20260512] Song 1: https://cdn1.suno.ai/44e81064-921c-4050-b250-3a085b9b2153.mp3\n[17:01:38]    🎧 [02_唯一_20260512] Song 2: https://cdn1.suno.ai/1e122a13-071a-45c2-9aa2-2f1f3e63ed4d.mp3\n[17:01:38] 🎛️ [02_唯一_20260512] Step 3.5: 混音...\n[17:01:54]    🎚️ [02_唯一_20260512] Song 1: pop | 低38/中54/高8%\n[17:02:11]    🎚️ [01_恋人_20260512] Song 2: pop | 低65/中31/高4%\n[17:02:11] ✅ [01_恋人_20260512] Step 3.5: 55.1s | 2 songs mixed\n[17:02:11] ⚠️  [01_恋人_20260512] Step 4: http_403 (non-fatal)\n[17:02:28]    🎚️ [02_唯一_20260512] Song 2: hip_hop | 低46/中49/高6%\n[17:02:28] ✅ [02_唯一_20260512] Step 3.5: 50.5s | 2 songs mixed\n[17:02:28] ⚠️  [02_唯一_20260512] Step 4: http_403 (non-fatal)\n\n======================================================================\nSUMMARY | 369s (6.1min)\n======================================================================\n✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260512-165111-c99f89 → +2 新增, ~0 更新 | 总计 685 首\n", "stderr_tail": "[profile] ✅ Loaded profile '__runtime_batch-20260512-165111-c99f89' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260512-165111-c99f89.yaml\n", "summary": {"timestamp": "2026-05-12T17:02:28.600555+08:00", "wall_clock": 368.6, "total": 2, "success": 2, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-05-12 17:02: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-20260512-165111-c99f89 ===
[Feishu] ✅ Exported 2 songs to: https://ccnu62373cgc.feishu.cn/sheets/TkwNs0NGzhFeL1twd88c7yFjnsh
[Feishu] 📐 Expanded master sheet from 623 to 725 rows
[Feishu] ✅ Appended 2 new songs to master sheet (rows 624-625)
[MasterDB] ✅ 批次 batch-20260512-165111-c99f89 → +2 新增, ~0 更新 | 总计 625 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/TkwNs0NGzhFe
[17:02:38] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [侧身睡] topic head sent (message_id=om_x100b6f1a843a788cb2827919eb95acf)
[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_x100b6f1a829328a8b4ae8ea39ea452c)
[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-165111-c99f89
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260512-165111-c99f89
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260512-165111-c99f89

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