
=== 2026-05-06 15:01:10 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260506-150110-1945e7/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260506-150110-1945e7 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260506-150110-1945e7 --resume /srv/music-files-platform-next/pipeline/batch-20260506-150110-1945e7 ===
[profile] ✅ Loaded profile '__runtime_batch-20260506-150110-1945e7' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260506-150110-1945e7.yaml
[step075] cache hit: song_pgc.mp3 → 82cd6cf562e8

======================================================================
music-pipeline3000 v2 | 1 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260506-150110-1945e7
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:01:11] 🏥 Health check...
[15:01:13] ✅ qishui: OK
[15:01:13] ✅ netease: OK
[15:01:13] ✅ qq: OK

[15:01:13] 🔬 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 0.75: Audio features...
[15:01:13] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 0.75: BPM=128.0 Key=F# minor (28.3s)
[15:01:13] 🧠 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-06T07:01:13.414Z", "trace_id": "batch-20260506-150110-1945e7", "song_key": "01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260506-150110-1945e7/01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506/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-06T07:01:40.803Z", "trace_id": "batch-20260506-150110-1945e7", "song_key": "01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 4.2, "cost_usd": null, "status": "http_503"}
{"__trace__": true, "ts": "2026-05-06T07:01:40.803Z", "trace_id": "batch-20260506-150110-1945e7", "song_key": "01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 27.389}
[15:01:40] ❌ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 1: http_503 (4.2s)

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

=== 2026-05-06 15:01:41 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260506-150110-1945e7 ===
[Feishu] No successful songs to export.
[exit 0]

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

======================================================================
music-pipeline3000 v2 | 1 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260506-150110-1945e7
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[15:03:04] 🏥 Health check...
[15:03:06] ✅ qishui: OK
[15:03:06] ✅ netease: OK
[15:03:06] ✅ qq: OK

[15:03:06] 🧠 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-06T07:03:06.993Z", "trace_id": "batch-20260506-150110-1945e7", "song_key": "01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260506-150110-1945e7/01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506/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: 42s | prompt_tokens=9360 completion=1353
{"__trace__": true, "ts": "2026-05-06T07:04:05.116Z", "trace_id": "batch-20260506-150110-1945e7", "song_key": "01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 42.4, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-06T07:04:05.117Z", "trace_id": "batch-20260506-150110-1945e7", "song_key": "01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 58.124}
[15:04:05] ⚠️  [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 1.5: prompt 1096c > 1000c, compressing...
  📏 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] prompt 1096c → 986c (smart truncate)
[15:04:05] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 1.5: prompt compressed 1096c → 986c
[15:04:05] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 1: 42.4s | prompt=986c | prompt_ok=True lyrics_ok=True
[15:04:05] 🌐 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2: target_language=auto → lang_mode=AUTO
[15:04:05] 🤖 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2 API: 13733 chars ≈ 3433 tokens → claude-sonnet-4-6
[15:04:51] ⚠️  [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2 API: originality 84% < 85% | 0 copied phrases
[15:04:51] 🔄 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2 API: originality retry 1/3...
[15:05:37] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2 API retry 1: originality 85% ✓
[15:05:37] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2 API: 《偏偏是你 偏偏不能是你》 | 92.8s | in=22673 out=4368 | ~$0.134
[15:05:37] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2.5: originality 85% ✓
[15:05:37] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2: 《偏偏是你 偏偏不能是你》
[15:05:37] 📁 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Renamed → 01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506
  📝 [01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506] lyrics stripped: 3168c → 3160c
[15:05:37] 🎵 [01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506] Step 3: Suno generation (weirdness=50, style_influence=50)...
[15:05:37] 🎨 [01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506] Step 4: SeeDream cover (parallel)...
  ✅ submitted: ['7e4c33a0', '39d1e75a']
  🎵 7e4c33a0... → submitted
  🎵 39d1e75a... → submitted
  🎵 7e4c33a0... → queued
  🎵 39d1e75a... → queued
  🎵 7e4c33a0... → streaming
  🎵 39d1e75a... → streaming
  🎵 39d1e75a... → complete
  🎵 7e4c33a0... → complete
[15:11:26]    🎧 [01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506] Song 1: https://cdn1.suno.ai/7e4c33a0-f91a-4521-99f7-282a160cddee.mp3
[15:11:26]    🎧 [01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506] Song 2: https://cdn1.suno.ai/39d1e75a-b3c4-47be-aeb6-10f6f84efa29.mp3
[15:11:26] 🎛️ [01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506] Step 3.5: 混音...
[15:12:00]    🎚️ [01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506] Song 1: edm | 低4/中89/高7%
[15:12:19]    🎚️ [01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506] Song 2: edm | 低40/中55/高5%
[15:12:19] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506] Step 3.5: 52.9s | 2 songs mixed
[15:12:19] ⚠️  [01_青衣 (DJ我为你唱一曲如游丝的气息)_偏偏是你_偏偏不能是你_20260506] Step 4: http_403 (non-fatal)

======================================================================
SUMMARY | 552s (9.2min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260506-150110-1945e7 → +1 新增, ~0 更新 | 总计 624 首
[exit 0]

=== 2026-05-06 15:12:20 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260506-150110-1945e7 ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/JOVtsRYzmhK5txtXJ8lcx7XHnIf
[Feishu] 📐 Expanded master sheet from 564 to 665 rows
[Feishu] ✅ Appended 1 new songs to master sheet (rows 565-565)
[MasterDB] ✅ 批次 batch-20260506-150110-1945e7 → +1 新增, ~0 更新 | 总计 565 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/JOVtsRYzmhK5
[15:12:28] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [偏偏是你 偏偏不能是你] topic head sent (message_id=om_x100b509ad31c5494b25b81a24b23ba3)
[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-20260506-150110-1945e7
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260506-150110-1945e7
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260506-150110-1945e7

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