{
  "timestamp": "2026-04-19T00:32:28.788651+08:00",
  "batch_dir": "/srv/music-files-platform-next/pipeline/batch-20260419-003002-641c81",
  "profile": "base",
  "concurrency": 3,
  "resume_mode": "each",
  "pending_song_count": 1,
  "groups": [
    {
      "group_index": 1,
      "songs": [
        "/srv/music-files-platform-next/pipeline/batch-20260419-003002-641c81/01_Good Day_20260419"
      ],
      "success_count": 1,
      "failed_count": 0,
      "results": [
        {
          "status": "success",
          "song_dir": "/srv/music-files-platform-next/pipeline/batch-20260419-003002-641c81/01_Good Day_20260419",
          "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260419-003002-641c81/01_Good Day_20260419/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-20260419-003002-641c81/01_Good Day_20260419",
              "step2_file": "/srv/music-files-platform-next/pipeline/batch-20260419-003002-641c81/01_Good Day_20260419/step2_json_b.json",
              "agent_summary": "API direct: 松了手",
              "returncode": 0,
              "stderr": "",
              "attempt": 1
            }
          ]
        }
      ]
    }
  ],
  "resume": {
    "status": "success",
    "returncode": 0,
    "stdout_tail": "Rain Drop_20260419] Step 0: Fetching...\n  📝 [01_Good Day_20260419] lyrics stripped: 2432c → 2426c\n[00:33:12] 🎵 [01_Good Day_20260419] Step 3: Suno generation (weirdness=50, style_influence=50)...\n[00:33:12] 🎨 [01_Good Day_20260419] Step 4: SeeDream cover (parallel)...\n[00:33:12] ⚠️  [qq] Exact source_id '004OMYZj2d9hI8' not found for '미아'\n[00:33:12] 🔄 [03_미아_20260419] Step 0: retry 1/2 in 5s...\n[00:33:12] ⚠️  [qq] Exact source_id '004Ws1p807qxRl' not found for 'Last Fantasy'\n[00:33:12] 🔄 [04_Last Fantasy_20260419] Step 0: retry 1/2 in 5s...\n[00:33:12] ⚠️  [qq] Exact source_id '0040JlR23ds3mZ' not found for 'Rain Drop'\n[00:33:12] 🔄 [05_Rain Drop_20260419] Step 0: retry 1/2 in 5s...\n  ✅ submitted: ['ba21eba9', '8d70a32c']\n  🎵 ba21eba9... → submitted\n  🎵 8d70a32c... → submitted\n[00:33:17] ⚠️  [qq] Exact source_id '004OMYZj2d9hI8' not found for '미아'\n[00:33:17] 🔄 [03_미아_20260419] Step 0: retry 2/2 in 10s...\n[00:33:17] ⚠️  [qq] Exact source_id '004Ws1p807qxRl' not found for 'Last Fantasy'\n[00:33:17] 🔄 [04_Last Fantasy_20260419] Step 0: retry 2/2 in 10s...\n[00:33:17] ⚠️  [qq] Exact source_id '0040JlR23ds3mZ' not found for 'Rain Drop'\n[00:33:17] 🔄 [05_Rain Drop_20260419] Step 0: retry 2/2 in 10s...\n  🎵 ba21eba9... → queued\n  🎵 8d70a32c... → queued\n[00:33:27] ⚠️  [qq] Exact source_id '004OMYZj2d9hI8' not found for '미아'\n[00:33:27] ❌ [03_미아_20260419] Step 0: No audio URL\n[00:33:27] ⚠️  [qq] Exact source_id '004Ws1p807qxRl' not found for 'Last Fantasy'\n[00:33:27] ❌ [04_Last Fantasy_20260419] Step 0: No audio URL\n[00:33:27] ⚠️  [qq] Exact source_id '0040JlR23ds3mZ' not found for 'Rain Drop'\n[00:33:27] ❌ [05_Rain Drop_20260419] Step 0: No audio URL\n  🎵 ba21eba9... → streaming\n  🎵 8d70a32c... → streaming\n  📊 Gemini official: 37s | prompt_tokens=10419 completion=1541\n[00:33:49] ⚠️  [02_잔소리_20260419] Step 1.5: prompt 1013c > 1000c, compressing...\n  📏 [02_잔소리_20260419] prompt 1013c → 986c (rules)\n[00:33:49] ✅ [02_잔소리_20260419] Step 1.5: prompt compressed 1013c → 986c\n[00:33:49] ✅ [02_잔소리_20260419] Step 1: 36.6s | prompt=986c | prompt_ok=True lyrics_ok=True\n[00:33:49] 🌐 [02_잔소리_20260419] Step 2: target_language=auto → lang_mode=AUTO\n[00:33:49] 🤖 [02_잔소리_20260419] Step 2 API: 27618 chars ≈ 6904 tokens → claude-sonnet-4-6\n[00:34:42] ⚠️  [02_잔소리_20260419] Step 2 API: originality 68% < 85% | 0 copied phrases\n[00:34:42] 🔄 [02_잔소리_20260419] Step 2 API: originality retry 1/3...\n[00:35:24] ⚠️  [02_잔소리_20260419] Step 2 API retry 1: originality 66%\n[00:35:24] 🔄 [02_잔소리_20260419] Step 2 API: originality retry 2/3...\n  🎵 ba21eba9... → complete\n  🎵 8d70a32c... → complete\n[00:35:27]    🎧 [01_Good Day_20260419] Song 1: https://cdn1.suno.ai/ba21eba9-fd68-4291-a531-39bd5de180a0.mp3\n[00:35:27]    🎧 [01_Good Day_20260419] Song 2: https://cdn1.suno.ai/8d70a32c-a438-4ca5-ac77-09e9cc5c3a61.mp3\n[00:35:27] 🎛️ [01_Good Day_20260419] Step 3.5: 混音...\n[00:35:52]    🎚️ [01_Good Day_20260419] Song 1: pop | 低26/中66/高8%\n[00:36:12]    🎚️ [01_Good Day_20260419] Song 2: hip_hop | 低33/中61/高6%\n[00:36:12] ✅ [01_Good Day_20260419] Step 3.5: 44.8s | 2 songs mixed\n[00:36:13] ⚠️  [02_잔소리_20260419] Step 2 API originality retry 2 failed: Expecting value: line 1 column 1 (char 0)\n[00:36:13] ⚠️  [02_잔소리_20260419] Step 2 API: best originality 68% after 3 retries\n[00:36:13] ⚠️  Step 2 title library fetch failed: Server disconnected\n[00:36:13] ✅ [02_잔소리_20260419] Step 2 API: 《소파 끝》 | 95.0s | in=33331 out=5406 | ~$0.181\n[00:36:13] ⚠️  [02_잔소리_20260419] Step 2.5: originality 68% < 75% | 0 copied phrases\n[00:36:13] ⏳ [02_잔소리_20260419] Step 2: 原创度不足，等待人审豁免或重试\n[00:36:16] ✅ [01_Good Day_20260419] Step 4: 12.3s | /srv/music-files-platform-next/pipeline/batch-20260419-003002-641c81/01_Good Day_20260419/cover_seedream.jpg\n\n======================================================================\nSUMMARY | 184s (3.1min)\n======================================================================\n✅ Done: 1 | ⏳ Awaiting Step 2: 0 | ❌ Failed: 3\n[MasterDB] ✅ 批次 batch-20260419-003002-641c81 → +1 新增, ~0 更新 | 总计 532 首\n",
    "stderr_tail": "[profile] ✅ Loaded profile 'base' from /srv/repos/3000music-platform-next/services/music-pipeline/scripts/profiles/base.yaml\n",
    "summary": {
      "timestamp": "2026-04-19T00:36:16.064567+08:00",
      "wall_clock": 183.7,
      "total": 5,
      "success": 1,
      "awaiting_step2": 0,
      "failed": 3
    }
  },
  "status": "success"
}