- QA1: Timeline validation (monotonic, no overlap) - QA2: Lyrics accuracy (ASS vs original) - QA3: MTV original audio verification - QA4: KTV dual-track validation (accompaniment + original) Service runs on port 9085 with longtasks queue
61 lines
2.1 KiB
Plaintext
61 lines
2.1 KiB
Plaintext
# -*- coding:utf-8 -*-
|
|
# POST /api/submit - 提交KTV交付质检任务
|
|
|
|
import json
|
|
import uuid
|
|
from ahserver.serverenv import ServerEnv
|
|
|
|
method = request.method
|
|
|
|
if method == "POST":
|
|
mtv_path = params_kw.get("mtv_path", "")
|
|
ktv_path = params_kw.get("ktv_path", "")
|
|
ass_path = params_kw.get("ass_path", "")
|
|
lyrics_path = params_kw.get("lyrics_path", "")
|
|
calibrated_path = params_kw.get("calibrated_path", "")
|
|
original_duration = params_kw.get("original_duration", 0)
|
|
|
|
if not any([mtv_path, ktv_path]):
|
|
return json.dumps({"error": "至少需要提供mtv_path或ktv_path"}, ensure_ascii=False)
|
|
|
|
task_id = params_kw.get("task_id", str(uuid.uuid4()).replace("-", "")[:12])
|
|
|
|
payload = {
|
|
"task_type": "verify",
|
|
"task_id": task_id,
|
|
"mtv_path": mtv_path,
|
|
"ktv_path": ktv_path,
|
|
"ass_path": ass_path,
|
|
"lyrics_path": lyrics_path,
|
|
"calibrated_path": calibrated_path,
|
|
"original_duration": float(original_duration) if original_duration else 0
|
|
}
|
|
|
|
env = ServerEnv()
|
|
longtasks = env.longtasks
|
|
if longtasks is None:
|
|
return json.dumps({"error": "service not ready"}, ensure_ascii=False)
|
|
|
|
result = await longtasks.submit_task(payload)
|
|
real_task_id = result.get("task_id", str(result)) if isinstance(result, dict) else str(result)
|
|
|
|
return json.dumps({
|
|
"task_id": real_task_id,
|
|
"status": "queued",
|
|
"message": "质检任务已提交",
|
|
"check_url": f"/api/task?task_id={real_task_id}"
|
|
}, ensure_ascii=False)
|
|
else:
|
|
return json.dumps({
|
|
"usage": "POST with JSON body",
|
|
"params": {
|
|
"mtv_path": "string (optional, MTV视频路径)",
|
|
"ktv_path": "string (optional, KTV视频路径)",
|
|
"ass_path": "string (optional, ASS字幕路径)",
|
|
"lyrics_path": "string (optional, 原始歌词路径)",
|
|
"calibrated_path": "string (optional, calibrated.json路径)",
|
|
"original_duration": "float (optional, 原曲时长秒)",
|
|
"task_id": "string (optional, auto-generated)"
|
|
}
|
|
}, ensure_ascii=False)
|