
=== 2026-05-07 16:19:21 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-161921-591c8e --target-language zh --step1-only ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-161921-591c8e' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-161921-591c8e.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 | 3 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e
Skip Suno: False | Step1 only: True | Version: v4
======================================================================

[16:19:23] 🏥 Health check...
[16:19:25] ✅ qishui: OK
[16:19:25] ✅ netease: OK
[16:19:25] ✅ qq: OK

[16:19:25] 🔍 [01_Old Dirt Roads_20260507] Step 0: Fetching...
[16:19:25] 🔍 [02_那女孩对我说_20260507] Step 0: Fetching...
[16:19:25] 🔍 [03_MOTHER IN YOU_20260507] Step 0: Fetching...
[16:19:26] ✅ [qishui] Direct ID fetch: '那女孩对我说' id=7180230498470332418
[16:19:26] ✅ [02_那女孩对我说_20260507] Step 0: qishui | 394c lyrics
[16:19:26] ⬇️  [02_那女孩对我说_20260507] Step 0.5: Download from qishui...
[16:19:28] ✅ [03_MOTHER IN YOU_20260507] Step 0: netease | 1306c lyrics
[16:19:28] ⬇️  [03_MOTHER IN YOU_20260507] Step 0.5: Download from netease...
[16:19:30] ⚠️  [02_那女孩对我说_20260507] Step 0.5: Only 30.0s preview (expected 247s)
[16:19:30] 🔒 [02_那女孩对我说_20260507] Step 0.5: source_id locked, skipping cross-platform fallback
[16:19:30] ❌ [02_那女孩对我说_20260507] Step 0.5: All platforms returned preview (30.0s), skipping song
[16:19:33] 🔄 [01_Old Dirt Roads_20260507] Step 0: retry 1/2 in 5s (no lyrics yet)...
[16:19:34] ✅ [03_MOTHER IN YOU_20260507] Step 0.5: 4455834 bytes | 205.9s
[16:19:34] 🔬 [03_MOTHER IN YOU_20260507] Step 0.75: Audio features...
[16:19:44] 🔄 [01_Old Dirt Roads_20260507] Step 0: retry 2/2 in 10s (no lyrics yet)...
[16:19:57] ⚠️  [01_Old Dirt Roads_20260507] Step 0: No lyrics found — proceeding without (Gemini will generate from audio)
[16:19:57] ✅ [01_Old Dirt Roads_20260507] Step 0: qq | 0c lyrics
[16:19:57] ⬇️  [01_Old Dirt Roads_20260507] Step 0.5: Download from qq...
[16:20:03] ✅ [03_MOTHER IN YOU_20260507] Step 0.75: BPM=114.49 Key=A# major (28.2s)
[16:20:03] 🧠 [03_MOTHER IN YOU_20260507] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-07T08:20:03.189Z", "trace_id": "batch-20260507-161921-591c8e", "song_key": "03_MOTHER IN YOU_20260507", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/03_MOTHER IN YOU_20260507/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')
[16:20:03] 🌐 Step 1: target_language=zh (injecting override directive)
  ⚠️ Gemini official 503 on key #1/5, will retry...
  🔄 Retry 1/4 in 3s...
[16:20:10] ✅ [01_Old Dirt Roads_20260507] Step 0.5: 5658239 bytes | 227.9s
[16:20:10] 🔬 [01_Old Dirt Roads_20260507] Step 0.75: Audio features...
  ⚠️ 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...
[16:20:33] ✅ [01_Old Dirt Roads_20260507] Step 0.75: BPM=83.11 Key=C# major (22.4s)
[16:20:33] 🧠 [01_Old Dirt Roads_20260507] Step 1: Gemini (queuing)...
{"__trace__": true, "ts": "2026-05-07T08:20:33.127Z", "trace_id": "batch-20260507-161921-591c8e", "song_key": "01_Old Dirt Roads_20260507", "step": "step1", "type": "step_start", "inputs": {"audio": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/01_Old Dirt Roads_20260507/song_pgc.mp3", "has_features": true}}
[16:20:33] 🌐 Step 1: target_language=zh (injecting override directive)
  📊 Gemini official: 44s | prompt_tokens=10150 completion=1279
{"__trace__": true, "ts": "2026-05-07T08:21:16.206Z", "trace_id": "batch-20260507-161921-591c8e", "song_key": "03_MOTHER IN YOU_20260507", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 44.5, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-07T08:21:16.206Z", "trace_id": "batch-20260507-161921-591c8e", "song_key": "03_MOTHER IN YOU_20260507", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 73.017}
[16:21:16] ⚠️  [03_MOTHER IN YOU_20260507] Step 1.5: prompt 1026c > 1000c, compressing...
  📏 [03_MOTHER IN YOU_20260507] prompt 1026c → 928c (smart truncate)
[16:21:16] ✅ [03_MOTHER IN YOU_20260507] Step 1.5: prompt compressed 1026c → 928c
[16:21:16] ✅ [03_MOTHER IN YOU_20260507] Step 1: 44.5s | prompt=928c | prompt_ok=True lyrics_ok=True
  📊 Gemini official: 60s | prompt_tokens=10496 completion=1734
{"__trace__": true, "ts": "2026-05-07T08:21:33.502Z", "trace_id": "batch-20260507-161921-591c8e", "song_key": "01_Old Dirt Roads_20260507", "step": "step1", "type": "api_call", "provider": "gemini", "model": "gemini-2.5-pro", "duration_sec": 60.3, "cost_usd": null, "status": "success"}
{"__trace__": true, "ts": "2026-05-07T08:21:33.502Z", "trace_id": "batch-20260507-161921-591c8e", "song_key": "01_Old Dirt Roads_20260507", "step": "step1", "type": "step_end", "status": "success", "duration_sec": 60.375}
[16:21:33] ⚠️  [01_Old Dirt Roads_20260507] Step 1.5: prompt 1206c > 1000c, compressing...
  📏 [01_Old Dirt Roads_20260507] prompt 1206c → 894c (smart truncate)
[16:21:33] ✅ [01_Old Dirt Roads_20260507] Step 1.5: prompt compressed 1206c → 894c
[16:21:33] ✅ [01_Old Dirt Roads_20260507] Step 1: 60.3s | prompt=894c | prompt_ok=True lyrics_ok=True

======================================================================
SUMMARY | 128s (2.1min)
======================================================================
✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 1
[MasterDB] ✅ 批次 batch-20260507-161921-591c8e → +0 新增, ~0 更新 | 总计 655 首
[exit 0]

=== 2026-05-07 16:21:34 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/orchestrate_phase2.py /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e --profile __runtime_batch-20260507-161921-591c8e --resume-mode each --skip-feishu --target-language zh ===
[phase2] batch=batch-20260507-161921-591c8e pending=2 groups=1
[phase2] group 1/1 -> 01_Old Dirt Roads_20260507, 03_MOTHER IN YOU_20260507
[profile] ✅ Loaded profile '__runtime_batch-20260507-161921-591c8e' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-161921-591c8e.yaml
[phase2] 🌐 01_Old Dirt Roads_20260507: target_language=zh
[profile] ✅ Loaded profile '__runtime_batch-20260507-161921-591c8e' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-161921-591c8e.yaml
[phase2] 🌐 03_MOTHER IN YOU_20260507: target_language=zh

=== 2026-05-07 16:22:43 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/_input.json -o /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e -cg 2 -cs 2 --skip-feishu --profile __runtime_batch-20260507-161921-591c8e --resume /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e --target-language zh ===
[profile] ✅ Loaded profile '__runtime_batch-20260507-161921-591c8e' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-161921-591c8e.yaml
[step05] cache hit: f100dc9c970b → song_pgc.mp3
[phase2] resume -> /usr/bin/python3 /srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/_manifest.json --resume /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e --profile __runtime_batch-20260507-161921-591c8e --skip-feishu
[16:21:34] 🌐 [01_Old Dirt Roads_20260507] Step 2: target_language=zh → lang_mode=ZH
[16:21:34] 🤖 [01_Old Dirt Roads_20260507] Step 2 API: 36975 chars ≈ 9243 tokens → claude-sonnet-4-6
[16:21:34] 🌐 [03_MOTHER IN YOU_20260507] Step 2: target_language=zh → lang_mode=ZH
[16:21:34] 🤖 [03_MOTHER IN YOU_20260507] Step 2 API: 35398 chars ≈ 8849 tokens → claude-sonnet-4-6
[16:22:06] ✅ [03_MOTHER IN YOU_20260507] Step 2 API: 《侧耳听》 | 32.2s | in=19285 out=2175 | ~$0.090
[16:22:19] ⚠️  [01_Old Dirt Roads_20260507] Step 2 API: originality 73% < 85% | 13 copied phrases
          ❗ ", Bass , Acoustic Guitar , Banjo .)" ~ ", Bass , Acoustic Guitar , Banjo .)" (100%)
          ❗ "啦 da da da na na na na" ~ "La da da da na na na na" (93%)
          ❗ "啦 da da da na na na na" ~ "La da da da na na na na" (93%)
          ❗ "啦 da da da na na na na" ~ "La da da da na na na na" (93%)
          ❗ "啦 da da da na na na na" ~ "La da da da na na na na" (93%)
[16:22:19] 🔄 [01_Old Dirt Roads_20260507] Step 2 API: originality retry 1/3...
[16:23:02] ✅ [01_Old Dirt Roads_20260507] Step 2 API retry 1: originality 93% ✓
[16:23:02] ✅ [01_Old Dirt Roads_20260507] Step 2 API: 《麦垛沉默》 | 87.4s | in=43171 out=5432 | ~$0.211
{"timestamp": "2026-05-07T16:21:34.508871+08:00", "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e", "profile": "__runtime_batch-20260507-161921-591c8e", "concurrency": 3, "resume_mode": "each", "pending_song_count": 2, "groups": [{"group_index": 1, "songs": ["/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/01_Old Dirt Roads_20260507", "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/03_MOTHER IN YOU_20260507"], "success_count": 2, "failed_count": 0, "results": [{"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/01_Old Dirt Roads_20260507", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/01_Old Dirt Roads_20260507/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-20260507-161921-591c8e/01_Old Dirt Roads_20260507", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/01_Old Dirt Roads_20260507/step2_json_b.json", "agent_summary": "API direct: 麦垛沉默", "returncode": 0, "stderr": "", "attempt": 1}]}, {"status": "success", "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/03_MOTHER IN YOU_20260507", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/03_MOTHER IN YOU_20260507/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-20260507-161921-591c8e/03_MOTHER IN YOU_20260507", "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/03_MOTHER IN YOU_20260507/step2_json_b.json", "agent_summary": "API direct: 侧耳听", "returncode": 0, "stderr": "", "attempt": 1}]}]}], "resume": {"status": "error", "returncode": 1, "stdout_tail": "\n======================================================================\nmusic-pipeline3000 v2 | 3 songs\n======================================================================\nGemini concurrency: 2 | Suno concurrency: 3\nOutput: /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e\nSkip Suno: False | Step1 only: False | Version: v4\n======================================================================\n\n[16:23:03] 🏥 Health check...\n[16:23:05] ✅ qishui: OK\n[16:23:05] ✅ netease: OK\n[16:23:05] ✅ qq: OK\n\n[16:23:05] 🔬 [02_那女孩对我说_20260507] Step 0.75: Audio features...\n  📝 [01_Old Dirt Roads_20260507] lyrics stripped: 3834c → 3827c\n[16:23:05] 🎵 [01_Old Dirt Roads_20260507] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[16:23:05] 🎨 [01_Old Dirt Roads_20260507] Step 4: SeeDream cover (parallel)...\n  📝 [03_MOTHER IN YOU_20260507] lyrics stripped: 3021c → 3014c\n[16:23:05] 🎵 [03_MOTHER IN YOU_20260507] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[16:23:05] 🎨 [03_MOTHER IN YOU_20260507] Step 4: SeeDream cover (parallel)...\n[16:23:14] ✅ [02_那女孩对我说_20260507] Step 0.75: BPM=78.11 Key=D major (9.2s)\n", "stderr_tail": "[profile] ✅ Loaded profile '__runtime_batch-20260507-161921-591c8e' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/__runtime_batch-20260507-161921-591c8e.yaml\n[   INFO   ] MusicExtractorSVM: no classifier models were configured by default\n[   INFO   ] On connection Flux::flux → IIR::signal:\n[   INFO   ] BUFFER SIZE MISMATCH: max=0 - asked for read size 4096\n[   INFO   ] resizing buffer to 36040/4505\n/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\n  return linkage(y, method='ward', metric='euclidean')\nTraceback (most recent call last):\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 958, in <module>\n    main()\n    ~~~~^^\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 945, in main\n    asyncio.run(run_pipeline(\n    ~~~~~~~~~~~^^^^^^^^^^^^^^\n        songs, output_dir,\n        ^^^^^^^^^^^^^^^^^^\n    ...<6 lines>...\n        target_language=args.target_language,\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    ))\n    ^^\n  File \"/usr/lib/python3.13/asyncio/runners.py\", line 195, in run\n    return runner.run(main)\n           ~~~~~~~~~~^^^^^^\n  File \"/usr/lib/python3.13/asyncio/runners.py\", line 118, in run\n    return self._loop.run_until_complete(task)\n           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^\n  File \"/usr/lib/python3.13/asyncio/base_events.py\", line 725, in run_until_complete\n    return future.result()\n           ~~~~~~~~~~~~~^^\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 827, in run_pipeline\n    results = await asyncio.gather(*tasks)\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/srv/repos/3000music-platform-next/services/music-pipeline/scripts/pipeline.py\", line 365, in run_song\n    lyrics = (song_dir / \"lyrics.txt\").read_text()\n  File \"/usr/lib/python3.13/pathlib/_local.py\", line 548, in read_text\n    return PathBase.read_text(self, encoding, errors, newline)\n           ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib/python3.13/pathlib/_abc.py\", line 632, in read_text\n    with self.open(mode='r', encoding=encoding, errors=errors, newline=newline) as f:\n         ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib/python3.13/pathlib/_local.py\", line 539, in open\n    return io.open(self, mode, buffering, encoding, errors, newline)\n           ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nFileNotFoundError: [Errno 2] No such file or directory: '/srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e/02_那女孩对我说_20260507/lyrics.txt'\n", "summary": {"timestamp": "2026-05-07T16:21:33.509809+08:00", "wall_clock": 128.3, "total": 3, "success": 2, "awaiting_step2": 0, "failed": 1}}, "status": "success"}
[exit 0]

=== 2026-05-07 16:23:15 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e ===
[Feishu] ✅ Exported 2 songs to: https://ccnu62373cgc.feishu.cn/sheets/BWKMsHxnKho9NutuhLAc8yDjnfg
[Feishu] 📐 Expanded master sheet from 596 to 698 rows
[Feishu] ✅ Appended 2 new songs to master sheet (rows 597-598)
[MasterDB] ✅ 批次 batch-20260507-161921-591c8e → +2 新增, ~0 更新 | 总计 598 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/BWKMsHxnKho9
[16:23:24] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [麦垛沉默] topic head sent (message_id=om_x100b50f0f1008088b2e77c5dba29a28)
[Feishu IM] ⚠️  [麦垛沉默] 麦垛沉默_V1_raw.mp3 not found, skipping
[Feishu IM] ⚠️  [麦垛沉默] 麦垛沉默_V1_mixed.mp3 not found, skipping
[Feishu IM] ⚠️  [麦垛沉默] 麦垛沉默_V2_raw.mp3 not found, skipping
[Feishu IM] ⚠️  [麦垛沉默] 麦垛沉默_V2_mixed.mp3 not found, skipping
[Feishu IM] ✅ [侧耳听] topic head sent (message_id=om_x100b50f0f11718b4b39886e375a3594)
[Feishu IM] ⚠️  [侧耳听] 侧耳听_V1_raw.mp3 not found, skipping
[Feishu IM] ⚠️  [侧耳听] 侧耳听_V1_mixed.mp3 not found, skipping
[Feishu IM] ⚠️  [侧耳听] 侧耳听_V2_raw.mp3 not found, skipping
[Feishu IM] ⚠️  [侧耳听] 侧耳听_V2_mixed.mp3 not found, skipping
[Feishu] ✅ Already on file server: /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260507-161921-591c8e
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e

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

======================================================================
music-pipeline3000 v2 | 3 songs
======================================================================
Gemini concurrency: 2 | Suno concurrency: 2
Output: /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e
Skip Suno: False | Step1 only: False | Version: v4
======================================================================

[16:22:44] 🏥 Health check...
[16:22:48] ✅ qishui: OK
[16:22:48] ✅ netease: OK
[16:22:48] ✅ qq: OK

[16:22:48] 🌐 [01_Old Dirt Roads_20260507] Step 2: target_language=zh → lang_mode=ZH
[16:22:48] 🤖 [01_Old Dirt Roads_20260507] Step 2 API: 36975 chars ≈ 9243 tokens → claude-sonnet-4-6
[16:22:48] ⬇️  [02_那女孩对我说_20260507] Step 0.5: Download from qishui...
[16:22:48] ⚠️  [02_那女孩对我说_20260507] Step 0.5: Only 30.0s preview (expected 247s)
[16:22:48] 🔒 [02_那女孩对我说_20260507] Step 0.5: source_id locked, skipping cross-platform fallback
[16:22:48] ❌ [02_那女孩对我说_20260507] Step 0.5: All platforms returned preview (30.0s), skipping song
  📝 [03_MOTHER IN YOU_20260507] lyrics stripped: 3021c → 3014c
[16:22:48] 🎵 [03_MOTHER IN YOU_20260507] Step 3: Suno generation (weirdness=50, style_influence=50)...
[16:22:48] 🎨 [03_MOTHER IN YOU_20260507] Step 4: SeeDream cover (parallel)...
[16:23:34] ✅ [01_Old Dirt Roads_20260507] Step 2 API: 《拔节声》 | 45.8s | in=19720 out=2812 | ~$0.101
[16:23:34] ✅ [01_Old Dirt Roads_20260507] Step 2.5: originality 88% ✓
[16:23:34] ✅ [01_Old Dirt Roads_20260507] Step 2: 《拔节声》
[16:23:34] 📁 [01_Old Dirt Roads_20260507] Renamed → 01_Old Dirt Roads_拔节声_20260507
  📝 [01_Old Dirt Roads_拔节声_20260507] lyrics stripped: 3787c → 3780c
[16:23:34] 🎵 [01_Old Dirt Roads_拔节声_20260507] Step 3: Suno generation (weirdness=50, style_influence=50)...
[16:23:34] 🎨 [01_Old Dirt Roads_拔节声_20260507] Step 4: SeeDream cover (parallel)...
  ✅ submitted: ['8b4b5480', '9df97e29']
  🎵 8b4b5480... → submitted
  🎵 9df97e29... → submitted
  ✅ submitted: ['078b3ca3', '154ef36a']
  🎵 078b3ca3... → submitted
  🎵 154ef36a... → submitted
  🎵 8b4b5480... → queued
  🎵 9df97e29... → queued
  🎵 078b3ca3... → queued
  🎵 154ef36a... → queued
  🎵 9df97e29... → streaming
  🎵 078b3ca3... → streaming
  🎵 154ef36a... → streaming
  🎵 8b4b5480... → streaming
  🎵 9df97e29... → complete
  🎵 8b4b5480... → complete
[16:26:59]    🎧 [03_MOTHER IN YOU_20260507] Song 1: https://cdn1.suno.ai/8b4b5480-ba6e-4cde-8019-10845efbfd9c.mp3
[16:26:59]    🎧 [03_MOTHER IN YOU_20260507] Song 2: https://cdn1.suno.ai/9df97e29-a66a-4a19-9c39-9c7de2046a6d.mp3
[16:26:59] 🎛️ [03_MOTHER IN YOU_20260507] Step 3.5: 混音...
[16:27:19]    🎚️ [03_MOTHER IN YOU_20260507] Song 1: pop | 低56/中40/高4%
[16:27:34]    🎚️ [03_MOTHER IN YOU_20260507] Song 2: pop | 低52/中44/高4%
[16:27:34] ✅ [03_MOTHER IN YOU_20260507] Step 3.5: 35.4s | 2 songs mixed
[16:27:34] ⚠️  [03_MOTHER IN YOU_20260507] Step 4: http_403 (non-fatal)
  🎵 154ef36a... → complete
  🎵 078b3ca3... → complete
[16:27:40]    🎧 [01_Old Dirt Roads_拔节声_20260507] Song 1: https://cdn1.suno.ai/078b3ca3-6c75-496e-8544-c1f1db288955.mp3
[16:27:40]    🎧 [01_Old Dirt Roads_拔节声_20260507] Song 2: https://cdn1.suno.ai/154ef36a-61dd-44c0-aeea-bdc798d85d95.mp3
[16:27:40] 🎛️ [01_Old Dirt Roads_拔节声_20260507] Step 3.5: 混音...
[16:28:02]    🎚️ [01_Old Dirt Roads_拔节声_20260507] Song 1: edm | 低37/中55/高8%
[16:28:27]    🎚️ [01_Old Dirt Roads_拔节声_20260507] Song 2: rock | 低37/中57/高6%
[16:28:27] ✅ [01_Old Dirt Roads_拔节声_20260507] Step 3.5: 47.4s | 2 songs mixed
[16:28:27] ⚠️  [01_Old Dirt Roads_拔节声_20260507] Step 4: http_403 (non-fatal)

======================================================================
SUMMARY | 340s (5.7min)
======================================================================
✅ Done: 2 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 1
[MasterDB] ✅ 批次 batch-20260507-161921-591c8e → +2 新增, ~0 更新 | 总计 658 首
[exit 0]

=== 2026-05-07 16:28:28 exec: /usr/bin/python3 /srv/current/3000music-platform-next/services/music-pipeline/scripts/steps/step5_feishu.py /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e ===
[Feishu] ✅ Exported 2 songs to: https://ccnu62373cgc.feishu.cn/sheets/XE3nsU2gehyGn6tBEwqcltjFnbe
[Feishu] ✅ Updated incomplete row 598: uttid=9862e883 (MOTHER IN YOU)
[Feishu] 📐 Expanded master sheet from 599 to 700 rows
[Feishu] ✅ Appended 1 new songs to master sheet (rows 600-600)
[MasterDB] ✅ 批次 batch-20260507-161921-591c8e → +1 新增, ~1 更新 | 总计 600 首
[Feishu IM] ✅ Text sent: 📊 本批次结果表格：https://ccnu62373cgc.feishu.cn/sheets/XE3nsU2gehyG
[16:28:39] 📨 Step 5: Sending files to Feishu IM...
[Feishu IM] ✅ [拔节声] topic head sent (message_id=om_x100b50f09db75ca0b16964b8b873f1f)
[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_x100b50f09a4a78b0b484a0c53db0eae)
[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-20260507-161921-591c8e
[Feishu] ✅ Archived to GDrive: /mnt/gdrive/music-pipeline/batch-20260507-161921-591c8e
[Feishu] 📦 Local files kept at: /srv/music-files-platform-next/pipeline/batch-20260507-161921-591c8e

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