fix(music-lab): compile job status='done'도 ready로 인식 (production convention)

This commit is contained in:
2026-05-10 15:28:08 +09:00
parent 262366bc1e
commit dc3f9cb6a9
4 changed files with 42 additions and 2 deletions

View File

@@ -59,3 +59,19 @@ def test_resolve_input_neither():
pipeline = {"id": 4, "track_id": None, "compile_job_id": None}
with pytest.raises(ValueError):
_resolve_input(pipeline)
def test_resolve_input_compile_job_done_status():
"""compile job status='done'도 accept (production convention)."""
pipeline = {"id": 5, "track_id": None, "compile_job_id": 7}
job = {
"id": 7, "status": "done", "title": "Done Mix",
"audio_path": "/app/data/compiles/7.mp3",
"track_ids": [1], "crossfade_sec": 0,
}
track = {"id": 1, "title": "T1", "duration_sec": 100}
with patch("app.pipeline.orchestrator.db.get_compile_job", return_value=job), \
patch("app.pipeline.orchestrator.db.get_track_by_id", return_value=track):
result = _resolve_input(pipeline)
assert result["audio_path"] == "/app/data/compiles/7.mp3"
assert result["title"] == "Done Mix"

View File

@@ -174,3 +174,27 @@ def test_create_pipeline_with_visual_options(client):
assert body["visual_style"] == "single"
assert body["background_mode"] == "video_loop"
assert body["background_keyword"] == "rain"
def test_create_pipeline_with_done_compile_job(client):
"""compile job status='done' (production convention) — accept as ready."""
import sqlite3
conn = sqlite3.connect(db.DB_PATH)
cur = conn.cursor()
try:
cur.execute("""
INSERT INTO compile_jobs (title, track_ids, crossfade_sec,
output_path, status, created_at)
VALUES ('Done Mix', '[1,2]', 3, '/app/data/compiles/X.mp3',
'done', datetime())
""")
except sqlite3.OperationalError:
pytest.skip("compile_jobs schema mismatch")
conn.commit()
cid = cur.lastrowid
conn.close()
r = client.post("/api/music/pipeline", json={"compile_job_id": cid})
assert r.status_code == 201, r.text
body = r.json()
assert body["compile_job_id"] == cid