
=== 2026-05-06 14:53:51 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9 -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260506-145351-0232d9 --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260506-145351-0232d9' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260506-145351-0232d9.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
/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 | 1 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[14:53:53] 🏥 Health check...
[14:53:56] ✅ qishui: OK
[14:53:56] ✅ netease: OK
[14:53:56] ✅ qq: OK

[14:53:56] 🔍 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 0: Fetching...
[14:53:59] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 0: netease | 293c
[14:53:59] ⬇️  [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 0.5: Download from netease...
[14:54:04] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 0.5: 3808432 bytes | 187.5s
[14:54:04] 🔬 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 0.75: Audio features...
[14:54:32] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 0.75: BPM=128.0 Key=F# minor (28.3s)
[14:54:32] 🧠 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-06T06:54:32.870Z", "trace_id": "batch-20260506-145351-0232d9", "song_key": "01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9/01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506/song_pgc.mp3", "has_features": true}}
  📊 Gemini official: 44s | prompt_tokens=9320 completion=993
{"__trace__": true, "ts": "2026-05-06T06:55:16.517Z", "trace_id": "batch-20260506-145351-0232d9", "song_key": "01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 43.6, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-06T06:55:16.517Z", "trace_id": "batch-20260506-145351-0232d9", "song_key": "01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 43.647}
[14:55:16] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 1: 43.6s | prompt=845c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 80s (1.3min)
======================================================================
✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0
[MasterDB] ✅ 批次 batch-20260506-145351-0232d9 → +0 新增, ~0 更新 | 总计 622 首
[exit 0]

=== 2026-05-06 14:55:17 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9 --profile __runtime_batch-20260506-145351-0232d9 --resume-mode each --skip-feishu ===
[phase2] batch=batch-20260506-145351-0232d9 pending=1 groups=1
[phase2] group 1/1 -> 01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506
[profile] ✅ Loaded profile '__runtime_batch-20260506-145351-0232d9' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260506-145351-0232d9.yaml
[phase2] 🌐 01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506: 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-20260506-145351-0232d9/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9 --profile __runtime_batch-20260506-145351-0232d9 --skip-feishu
[14:55:17] 🌐 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2: target_language=auto → lang_mode=AUTO
[14:55:17] 🤖 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2 API: 31928 chars ≈ 7982 tokens → claude-sonnet-4-6
[14:55:47] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 2 API: 《晒盐》 | 29.8s | in=17809 out=1888 | ~$0.082
{"timestamp": "2026-05-06T14:55:17.490210+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9", "profile": "__runtime_batch-20260506-145351-0232d9", "concurrency": 3, "resume_mode": "each", "pending_song_count": 1, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9/01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506"], "success_count": 1, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9/01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9/01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506/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-20260506-145351-0232d9/01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9/01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506/step2_json_b.json", "agent_summary": "API direct: 晒盐", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "resume": {"status": "success", "returncode": 0, "stdout_tail": "\n======================================================================\nmusic-pipeline3000 v2 | 1 songs\n======================================================================\nGemini concurrency: 2 | Suno concurrency: 3\nOutput: /srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[14:55:49] 🏥 Health check...\n[14:55:50] ✅ qishui: OK\n[14:55:50] ✅ netease: OK\n[14:55:50] ✅ qq: OK\n\n  📝 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] lyrics stripped: 2022c → 2017c\n[14:55:50] 🎵 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[14:55:50] 🎨 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 4: SeeDream cover (parallel)...\n  ✅ submitted: ['ae210fdd', 'f99e53a8']\n  🎵 ae210fdd... → submitted\n  🎵 f99e53a8... → submitted\n  🎵 ae210fdd... → queued\n  🎵 f99e53a8... → queued\n  🎵 f99e53a8... → streaming\n  🎵 ae210fdd... → streaming\n  🎵 f99e53a8... → complete\n  🎵 ae210fdd... → complete\n[14:59:08]    🎧 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Song 1: https://cdn1.suno.ai/ae210fdd-ee1d-4464-beea-d5af241b622a.mp3\n[14:59:08]    🎧 [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Song 2: https://cdn1.suno.ai/f99e53a8-0e9d-411d-bccf-0ce6c3c0c386.mp3\n[14:59:08] 🎛️ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 3.5: 混音...\n[14:59:27]    🎚️ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Song 1: edm | 低58/中36/高6%\n[14:59:38]    🎚️ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Song 2: edm | 低58/中34/高8%\n[14:59:38] ✅ [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 3.5: 29.6s | 2 songs mixed\n[14:59:38] ⚠️  [01_青衣 (DJ我为你唱一曲如游丝的气息)_20260506] Step 4: http_403 (non-fatal)\n\n======================================================================\nSUMMARY | 228s (3.8min)\n======================================================================\n✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 0\n[MasterDB] ✅ 批次 batch-20260506-145351-0232d9 → +1 新增, ~0 更新 | 总计 623 首\n", "stderr_tail": "[profile] ✅ Loaded profile '__runtime_batch-20260506-145351-0232d9' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260506-145351-0232d9.yaml\n", "summary": {"timestamp": "2026-05-06T14:59:38.350717+08:00", "wall_clock": 228.0, "total": 1, "success": 1, "awaiting_step2": 0, "failed": 0}}, "status": "success"}
[exit 0]

=== 2026-05-06 14:59:39 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-145351-0232d9 ===
[Feishu] ✅ Exported 1 songs to: https://ccnu62373cgc.feishu.cn/sheets/KyKlsI3huhyyeNtYnS3cgAVgnpd
[Feishu] 📐 Expanded master sheet from 563 to 664 rows
[Feishu] ✅ Appended 1 new songs to master sheet (rows 564-564)
[MasterDB] ✅ 批次 batch-20260506-145351-0232d9 → +1 新增, ~0 更新 | 总计 564 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/KyKlsI3huhyy
[14:59:48] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [晒盐] topic head sent (message_id=om_x100b509a2085b8ccb21c58ea61f396e)
[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-145351-0232d9
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260506-145351-0232d9
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260506-145351-0232d9

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