sage/scripts/ktv_uapi_migration_p2_uapi.sql

129 lines
7.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================
-- KTV服务 uapi 补全 Part 2
-- data模板使用 _file命名audio_file/image_file/video_file
-- response透传GPU返回的usage
-- ============================================================
-- 1. ASR语音识别 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"audio_file":"{{audio_file}}"{% if language %},"language":"{{language}}"{% endif %}}',
response='{"status":"{{status}}","text":"{{text}}","segments":{{json.dumps(segments,ensure_ascii=False)}},"usage":{{json.dumps(usage,ensure_ascii=False)}}}',
ioid='ktv_asr_transcribe_io'
WHERE id='uapi_ktv_asr_transcribe';
-- 2. Demucs音频分离 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"audio_file":"{{audio_file}}"}',
response='{"status":"{{status}}","vocals_url":"{{vocals_url}}","accompaniment_url":"{{accompaniment_url}}","usage":{{json.dumps(usage,ensure_ascii=False)}}}',
ioid='ktv_demucs_separate_io'
WHERE id='uapi_ktv_demucs_separate';
-- 3. 人脸检测 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"image_file":"{{image_file}}"}',
response='{"status":"{{status}}","faces":{{json.dumps(faces,ensure_ascii=False)}},"usage":{{json.dumps(usage,ensure_ascii=False)}}}',
ioid='ktv_face_detect_io'
WHERE id='uapi_ktv_face_detect';
-- 4. 人脸识别 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"image_file":"{{image_file}}"{% if face_id %},"face_id":"{{face_id}}"{% endif %}}',
response='{"status":"{{status}}","matches":{{json.dumps(matches,ensure_ascii=False)}},"usage":{{json.dumps(usage,ensure_ascii=False)}}}',
ioid='ktv_face_recognize_io'
WHERE id='uapi_ktv_face_recognize';
-- 5. 人脸比对 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"image_file1":"{{image_file1}}","image_file2":"{{image_file2}}"}',
response='{"status":"{{status}}","similarity":{{similarity}},"usage":{{json.dumps(usage,ensure_ascii=False)}}}',
ioid='ktv_face_compare_io'
WHERE id='uapi_ktv_face_compare';
-- 6. 字幕渲染 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"lyrics_json":{{lyrics_json}}{% if width %},"width":{{width}}{% endif %}{% if height %},"height":{{height}}{% endif %}}',
response='{"status":"{{status}}","ass_url":"{{ass_url}}","usage":{{json.dumps(usage,ensure_ascii=False)}}}',
ioid='ktv_subtitle_render_io'
WHERE id='uapi_ktv_subtitle_render';
-- 7. 视频合并 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{%set c=joiner(",")%}{{%if video_file%}{{c()}}"video_file":"{{video_file}}"{%endif%}{%if audio_file%}{{c()}}"audio_file":"{{audio_file}}"{%endif%}{%if subtitle_file%}{{c()}}"subtitle_file":"{{subtitle_file}}"{%endif%}{%if output_format%}{{c()}}"output_format":"{{output_format}}"{%endif%}}',
response='{"status":"{{status}}","output_url":"{{output_url}}","duration":{{duration}},"usage":{{json.dumps(usage,ensure_ascii=False)}}}',
ioid='ktv_merge_video_io'
WHERE id='uapi_ktv_merge_video';
-- 8. 歌曲评分 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"audio_file":"{{audio_file}}"{% if scene %},"scene":"{{scene}}"{% endif %}}',
response='{"status":"{{status}}","score":{{score}},"details":{{json.dumps(details,ensure_ascii=False)}},"usage":{{json.dumps(usage,ensure_ascii=False)}}}',
ioid='ktv_songrate_evaluate_io'
WHERE id='uapi_ktv_songrate_evaluate';
-- 9. 音乐合成 (async提交)
UPDATE uapi SET stream='async',headers='{"Content-Type":"application/json"}',
data='{"lyrics":"{{lyrics}}"{% if style %},"style":"{{style}}"{% endif %}{% if audio_file %},"audio_file":"{{audio_file}}"{% endif %}}',
response='{"taskid":"{{task_id}}","taskstatus":"PENDING"}',
ioid='ktv_synth_generate_io'
WHERE id='uapi_ktv_synth_generate';
-- 10. 合成状态查询 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"task_id":"{{task_id}}"}',
response='{%if status=="SUCCEEDED"%}{"taskstatus":"SUCCEEDED","output_url":"{{output_url}}","usage":{{json.dumps(usage,ensure_ascii=False)}}}{%elif status=="FAILED"%}{"taskstatus":"FAILED","error":"{{error}}"}{%else%}{"taskstatus":"PENDING"}{%endif%}',
ioid='ktv_synth_status_io'
WHERE id='uapi_ktv_synth_status';
-- 11. 超分辨率 (async提交)
UPDATE uapi SET stream='async',headers='{"Content-Type":"application/json"}',
data='{"image_file":"{{image_file}}"{% if scale %},"scale":{{scale}}{% endif %}}',
response='{"taskid":"{{task_id}}","taskstatus":"PENDING"}',
ioid='ktv_realesrgan_upscale_io'
WHERE id='uapi_ktv_realesrgan_upscale';
-- 12. 超分状态查询 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"task_id":"{{task_id}}"}',
response='{%if status=="SUCCEEDED"%}{"taskstatus":"SUCCEEDED","output_url":"{{output_url}}","usage":{{json.dumps(usage,ensure_ascii=False)}}}{%elif status=="FAILED"%}{"taskstatus":"FAILED","error":"{{error}}"}{%else%}{"taskstatus":"PENDING"}{%endif%}',
ioid='ktv_realesrgan_status_io'
WHERE id='uapi_ktv_realesrgan_status';
-- 13. RVC声音转换 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"audio_file":"{{audio_file}}","voice_model":"{{voice_model}}"}',
response='{"status":"{{status}}","output_url":"{{output_url}}","usage":{{json.dumps(usage,ensure_ascii=False)}}}',
ioid='ktv_rvc_convert_io'
WHERE id='uapi_ktv_rvc_convert';
-- 14. 视频评估 (sync)
UPDATE uapi SET stream='sync',headers='{"Content-Type":"application/json"}',
data='{"video_file":"{{video_file}}"}',
response='{"status":"{{status}}","score":{{score}},"details":{{json.dumps(details,ensure_ascii=False)}},"usage":{{json.dumps(usage,ensure_ascii=False)}}}',
ioid='ktv_video_eval_evaluate_io'
WHERE id='uapi_ktv_video_eval_evaluate';
-- async query_apiname
UPDATE llm_api_map SET query_apiname='synth-status',query_period=5
WHERE llmid='llm_ktv_synth_generate' AND llmcatelogid='ktv_pipeline';
UPDATE llm_api_map SET query_apiname='realesrgan-status',query_period=3
WHERE llmid='llm_ktv_realesrgan_upscale' AND llmcatelogid='ktv_pipeline';
-- ============================================================
-- P2 补充: 设置 ppidv1/models 查询要求 ppid IS NOT NULL
-- ============================================================
UPDATE llm_api_map SET ppid = 'pp_ktv' WHERE llmid LIKE 'llm_ktv%' AND ppid IS NULL;
-- ============================================================
-- P2 补充: upappkey (API调用鉴权必需)
-- ============================================================
INSERT INTO upappkey (id, upappid, ownerid, apikey, orgid)
SELECT 'ktv_gateway_key', 'ktv-gateway', 'UiEi7hKqAmU1-jqQEVhZe', '', '0'
WHERE NOT EXISTS (SELECT 1 FROM upappkey WHERE upappid = 'ktv-gateway');
-- ============================================================
-- P2 补充: response模板容错 — {% if error %} 处理GPU错误响应
-- 所有同步服务的response模板使用{% if error %}块GPU返回
-- {"error":"..."}时直接透传避免Jinja2 UndefinedError
-- tokentest已手动更新此处为生产部署用SQL
-- ============================================================