
=== 2026-05-13 18:04:15 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260513-180415-3aeb03 --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260513-180415-3aeb03' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260513-180415-3aeb03.yaml
[step075] cache hit: song_pgc.mp3 → 04dbb56d2feb

======================================================================
music-pipeline3000 v2 | 2 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[18:04:17] 🏥 Health check...
[18:04:19] ✅ qishui: OK
[18:04:19] ✅ netease: OK
[18:04:19] ✅ qq: OK

[18:04:19] 🔍 [01_Joy In The Morning (Original Mix)_20260513] Step 0: Fetching...
[18:04:19] 🔍 [02_Many Places_20260513] Step 0: Fetching...
[18:04:22] 🔄 [01_Joy In The Morning (Original Mix)_20260513] Step 0: retry 1/2 in 5s (no lyrics yet)...
[18:04:22] ✅ [02_Many Places_20260513] Step 0: netease | 7c lyrics
[18:04:22] ⬇️  [02_Many Places_20260513] Step 0.5: Download from netease...
[18:04:29] 🔄 [01_Joy In The Morning (Original Mix)_20260513] Step 0: retry 2/2 in 10s (no lyrics yet)...
[18:04:33] ✅ [02_Many Places_20260513] Step 0.5: 6743489 bytes | 348.8s
[18:04:33] 🔬 [02_Many Places_20260513] Step 0.75: Audio features...
[18:04:33] ✅ [02_Many Places_20260513] Step 0.75: BPM=151.04 Key=D major (57.2s)
[18:04:33] 🧠 [02_Many Places_20260513] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-13T10:04:33.515Z", "trace_id": "batch-20260513-180415-3aeb03", "song_key": "02_Many Places_20260513", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/02_Many Places_20260513/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — empty lyrics fallback
[step075] cache hit: song_pgc.mp3 → 6a71ddc35658
[18:04:42] ⚠️  [01_Joy In The Morning (Original Mix)_20260513] Step 0: No lyrics found — proceeding without (Gemini will generate from audio)
[18:04:42] ✅ [01_Joy In The Morning (Original Mix)_20260513] Step 0: netease | 0c lyrics
[18:04:42] ⬇️  [01_Joy In The Morning (Original Mix)_20260513] Step 0.5: Download from netease...
[18:04:50] ✅ [01_Joy In The Morning (Original Mix)_20260513] Step 0.5: 7145426 bytes | 368.1s
[18:04:50] 🔬 [01_Joy In The Morning (Original Mix)_20260513] Step 0.75: Audio features...
[18:04:50] ✅ [01_Joy In The Morning (Original Mix)_20260513] Step 0.75: BPM=120.0 Key=D minor (39.6s)
[18:04:50] 🧠 [01_Joy In The Morning (Original Mix)_20260513] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-13T10:04:50.724Z", "trace_id": "batch-20260513-180415-3aeb03", "song_key": "01_Joy In The Morning (Original Mix)_20260513", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/01_Joy In The Morning (Original Mix)_20260513/song_pgc.mp3", "has_features": true}}
[step1] 🎹 Instrumental mode — empty lyrics fallback
  📊 Gemini official: 47s | prompt_tokens=12783 completion=1323
{"__trace__": true, "ts": "2026-05-13T10:05:20.427Z", "trace_id": "batch-20260513-180415-3aeb03", "song_key": "02_Many Places_20260513", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 46.8, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-13T10:05:20.428Z", "trace_id": "batch-20260513-180415-3aeb03", "song_key": "02_Many Places_20260513", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 46.913}
[18:05:20] ⚠️  [02_Many Places_20260513] Step 1.5: prompt 1692c > 1000c, compressing...
  📏 [02_Many Places_20260513] prompt 1692c → 992c (smart truncate)
[18:05:20] ✅ [02_Many Places_20260513] Step 1.5: prompt compressed 1692c → 992c
[18:05:20] ✅ [02_Many Places_20260513] Step 1: 46.8s | prompt=992c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 50s | prompt_tokens=13399 completion=1028
{"__trace__": true, "ts": "2026-05-13T10:05:40.883Z", "trace_id": "batch-20260513-180415-3aeb03", "song_key": "01_Joy In The Morning (Original Mix)_20260513", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 50.1, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-13T10:05:40.883Z", "trace_id": "batch-20260513-180415-3aeb03", "song_key": "01_Joy In The Morning (Original Mix)_20260513", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 50.159}
[18:05:40] ⚠️  [01_Joy In The Morning (Original Mix)_20260513] Step 1.5: prompt 1346c > 1000c, compressing...
  📏 [01_Joy In The Morning (Original Mix)_20260513] prompt 1346c → 992c (smart truncate)
[18:05:40] ✅ [01_Joy In The Morning (Original Mix)_20260513] Step 1.5: prompt compressed 1346c → 992c
[18:05:40] ✅ [01_Joy In The Morning (Original Mix)_20260513] Step 1: 50.1s | prompt=992c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 82s (1.4min)
======================================================================
✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260513-180415-3aeb03 → +0 新增, ~0 更新 | 总计 752 首
[exit 0]

=== 2026-05-13 18:05:41 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03 --profile __runtime_batch-20260513-180415-3aeb03 --resume-mode each --skip-feishu ===
[phase2] batch=batch-20260513-180415-3aeb03 pending=2 groups=1
[phase2] group 1/1 -> 01_Joy In The Morning (Original Mix)_20260513, 02_Many Places_20260513
[profile] ✅ Loaded profile '__runtime_batch-20260513-180415-3aeb03' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260513-180415-3aeb03.yaml
[phase2] 🌐 01_Joy In The Morning (Original Mix)_20260513: target_language=auto
[profile] ✅ Loaded profile '__runtime_batch-20260513-180415-3aeb03' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260513-180415-3aeb03.yaml
[phase2] 🌐 02_Many Places_20260513: 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-20260513-180415-3aeb03/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03 --profile __runtime_batch-20260513-180415-3aeb03 --skip-feishu
[18:05:41] 🌐 [01_Joy In The Morning (Original Mix)_20260513] Step 2: target_language=auto → lang_mode=EN | single-turn
[18:05:41] 🤖 [01_Joy In The Morning (Original Mix)_20260513] Step 2 Turn 2: 34614 chars ≈ 8653 tokens → claude-sonnet-4-6
[18:05:41] 🌐 [02_Many Places_20260513] Step 2: target_language=auto → lang_mode=AUTO | single-turn
[18:05:41] 🤖 [02_Many Places_20260513] Step 2 Turn 2: 34534 chars ≈ 8633 tokens → claude-sonnet-4-6
[18:06:13] ⚠️  [01_Joy In The Morning (Original Mix)_20260513] Step 2 API: originality 63% < 85% | 5 copied phrases
          ❗ ", Bass , Rhodes )" ~ ", Bass , Rhodes )" (100%)
          ❗ ", Rhodes , Vocal sample )" ~ ", Rhodes , Vocal sample )" (100%)
          ❗ ", Bass , Rhodes )" ~ ", Bass , Rhodes )" (100%)
          ❗ ", Bass , Rhodes , Synth Pad , Vocal sample )" ~ ", Bass , Rhodes , Synth Pad , Vocal sample )" (100%)
          ❗ ", Rhodes , Synth Pad )" ~ ", Rhodes , Synth Pad )" (100%)
[18:06:13] 🔄 [01_Joy In The Morning (Original Mix)_20260513] Step 2 API: originality retry 1/3...
[18:06:18] ✅ [02_Many Places_20260513] Step 2 API: 《侧身睡》 engine=? | 36.3s | in=19677 out=2496 | ~$0.096
[18:06:41] ⚠️  [01_Joy In The Morning (Original Mix)_20260513] Step 2 API originality retry 1 failed: Expecting value: line 1 column 1 (char 0)
[18:06:41] ⚠️  [01_Joy In The Morning (Original Mix)_20260513] Step 2 API: best originality 63% after 3 retries
[18:06:41] ✅ [01_Joy In The Morning (Original Mix)_20260513] Step 2 API: 《Tide You Keep》 engine=? | 31.3s | in=19498 out=2090 | ~$0.090
{"timestamp": "2026-05-13T18:05:41.579959+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03", "profile": "__runtime_batch-20260513-180415-3aeb03", "concurrency": 3, "resume_mode": "each", "pending_song_count": 2, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/01_Joy In The Morning (Original Mix)_20260513", "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/02_Many Places_20260513"], "success_count": 2, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/01_Joy In The Morning (Original Mix)_20260513", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/01_Joy In The Morning (Original Mix)_20260513/step2_json_b.json", "agent_summary": "API direct: Tide You Keep", "returncode": 0, "stderr": "", "attempt": 1, "attempts": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/01_Joy In The Morning (Original Mix)_20260513", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/01_Joy In The Morning (Original Mix)_20260513/step2_json_b.json", "agent_summary": "API direct: Tide You Keep", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/02_Many Places_20260513", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/02_Many Places_20260513/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-20260513-180415-3aeb03/02_Many Places_20260513", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03/02_Many Places_20260513/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-20260513-180415-3aeb03\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[18:06:42] 🏥 Health check...\n[18:06:44] ✅ qishui: OK\n[18:06:44] ✅ netease: OK\n[18:06:44] ✅ qq: OK\n\n  📝 [01_Joy In The Morning (Original Mix)_20260513] lyrics stripped: 3497c → 3491c\n[18:06:44] ♪ [01_Joy In The Morning (Original Mix)_20260513] Step 3: 原曲无有效歌词，自动切换纯音乐模式\n[18:06:44] ♪ [01_Joy In The Morning (Original Mix)_20260513] Step 3: 纯音乐 pure-prompt 模式\n[18:06:44] 🎵 [01_Joy In The Morning (Original Mix)_20260513] Step 3: Suno generation (weirdness=50, style_influence=50 · 纯音乐)...\n[18:06:44] 🎨 [01_Joy In The Morning (Original Mix)_20260513] Step 4: SeeDream cover (parallel)...\n  📝 [02_Many Places_20260513] lyrics stripped: 2948c → 2934c\n[18:06:44] ♪ [02_Many Places_20260513] Step 3: 原曲无有效歌词，自动切换纯音乐模式\n[18:06:44] ♪ [02_Many Places_20260513] Step 3: 纯音乐 pure-prompt 模式\n[18:06:44] 🎵 [02_Many Places_20260513] Step 3: Suno generation (weirdness=50, style_influence=50 · 纯音乐)...\n[18:06:44] 🎨 [02_Many Places_20260513] Step 4: SeeDream cover (parallel)...\n  ✅ submitted: ['fda95eb6', '84646f66']\n  🎵 fda95eb6... → submitted\n  🎵 84646f66... → submitted\n  ✅ submitted: ['c0063e7c', 'b89c6746']\n  🎵 c0063e7c... → submitted\n  🎵 b89c6746... → submitted\n  🎵 fda95eb6... → queued\n  🎵 84646f66... → queued\n  🎵 c0063e7c... → queued\n  🎵 b89c6746... → queued\n  🎵 fda95eb6... → streaming\n  🎵 84646f66... → streaming\n  🎵 b89c6746... → streaming\n  🎵 c0063e7c... → streaming\n  🎵 c0063e7c... → complete\n  🎵 84646f66... → complete\n  🎵 fda95eb6... → complete\n[18:09:23]    🎧 [01_Joy In The Morning (Original Mix)_20260513] Song 1: https://cdn1.suno.ai/fda95eb6-74ca-4a95-ad05-51580fa5af8b.mp3\n[18:09:23]    🎧 [01_Joy In The Morning (Original Mix)_20260513] Song 2: https://cdn1.suno.ai/84646f66-ab6f-4e48-8d95-473fa6a88f0c.mp3\n[18:09:23] 🎛️ [01_Joy In The Morning (Original Mix)_20260513] Step 3.5: 混音...\n[18:09:42]    🎚️ [01_Joy In The Morning (Original Mix)_20260513] Song 1: edm | 低88/中11/高1%\n[18:10:00]    🎚️ [01_Joy In The Morning (Original Mix)_20260513] Song 2: edm | 低89/中9/高2%\n[18:10:00] ✅ [01_Joy In The Morning (Original Mix)_20260513] Step 3.5: 37.1s | 2 songs mixed\n[18:10:00] ⚠️  [01_Joy In The Morning (Original Mix)_20260513] Step 4: http_403 (non-fatal)\n  🎵 b89c6746... → complete\n[18:10:00]    🎧 [02_Many Places_20260513] Song 1: https://cdn1.suno.ai/c0063e7c-5e56-4ace-a0fb-5b2a7e4e21d3.mp3\n[18:10:00]    🎧 [02_Many Places_20260513] Song 2: https://cdn1.suno.ai/b89c6746-2d20-44cc-99d6-fe8f6a3e27e9.mp3\n[18:10:00] 🎛️ [02_Many Places_20260513] Step 3.5: 混音...\n[18:10:14]    🎚️ [02_Many Places_20260513] Song 1: edm | 低78/中22/高0%\n[18:10:29]    🎚️ [02_Many Places_20260513] Song 2: edm | 低80/中20/高0%\n[18:10:29] ✅ [02_Many Places_20260513] Step 3.5: 29.5s | 2 songs mixed\n[18:10:29] ⚠️  [02_Many Places_20260513] Step 4: http_403 (non-fatal)\n\n======================================================================\nSUMMARY | 226s (3.8min)\n======================================================================\n✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260513-180415-3aeb03 → +2 新增, ~0 更新 | 总计 756 首\n", "stderr_tail": "[profile] ✅ Loaded profile '__runtime_batch-20260513-180415-3aeb03' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260513-180415-3aeb03.yaml\n", "summary": {"timestamp": "2026-05-13T18:10:29.985907+08:00", "wall_clock": 225.7, "total": 2, "success": 2, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-05-13 18:10:30 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03 ===
[Feishu] ✅ Exported 2 songs to: https://ccnu62373cgc.feishu.cn/sheets/PulPsPiyZhh9zttrSIzcK9axn3g
[Feishu] 📐 Expanded master sheet from 691 to 793 rows
[Feishu] ✅ Appended 2 new songs to master sheet (rows 692-693)
[MasterDB] ✅ 批次 batch-20260513-180415-3aeb03 → +2 新增, ~0 更新 | 总计 693 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/PulPsPiyZhh9
[18:10:40] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [Tide You Keep] topic head sent (message_id=om_x100b6f70acc1a48cb4a5fb076eb8c01)
[Feishu IM] ✅ [Tide You Keep] Tide You Keep_V1_raw.mp3 replied
[Feishu IM] ✅ [Tide You Keep] Tide You Keep_V1_mixed.mp3 replied
[Feishu IM] ✅ [Tide You Keep] Tide You Keep_V2_raw.mp3 replied
[Feishu IM] ✅ [Tide You Keep] Tide You Keep_V2_mixed.mp3 replied
[Feishu IM] ✅ [侧身睡] topic head sent (message_id=om_x100b6f70ad4fd8bcb133e9516a0e4ac)
[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-20260513-180415-3aeb03
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260513-180415-3aeb03
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260513-180415-3aeb03

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