"""GET /api/config.dspy — 获取/设置场景权重配置""" import json from songrate.scenes import get_scene_config, set_scene_config, SCENES scene = params_kw.get('scene', '') # POST: 设置权重 if params_kw.get('weights'): weights = params_kw['weights'] if isinstance(weights, str): weights = json.loads(weights) if not scene: return json.dumps({"error": "缺少 scene 参数"}, ensure_ascii=False) if set_scene_config(scene, weights): return json.dumps({"success": True, "scene": scene, "weights": weights}, ensure_ascii=False) else: return json.dumps({"error": "设置失败,请检查场景名和权重总和是否为 1.0"}, ensure_ascii=False) # GET: 获取配置 if not scene: # 返回所有场景的配置 result = {} for key in SCENES: config = get_scene_config(key) result[key] = { "name": config["name"], "weights": config["weights"] } return json.dumps(result, ensure_ascii=False) config = get_scene_config(scene) if not config: return json.dumps({"error": f"未知场景: {scene}"}, ensure_ascii=False) return json.dumps({ "scene": scene, "name": config["name"], "weights": config["weights"] }, ensure_ascii=False)