from fastapi import APIRouter, Request from service_config import ServiceConfig from log import log import json router = APIRouter() service_config = ServiceConfig() service_config.load() @router.get("/list_projects") def list_projects(): projects = list(service_config.projects.keys()) log("📋 Listing projects.") return {"projects": projects} @router.post("/add_project") async def add_project(request: Request): data = await request.json() project_name = data.get("project_name") if not project_name: return {"error": "Project name required."} if project_name in service_config.projects: return {"error": "Project already exists."} service_config.projects[project_name] = { "project_name": project_name, "project_version": 1, "llm": {}, "intents": [] } with open(service_config.config_path, "w", encoding="utf-8") as f: json.dump({ "config": { "work_mode": service_config.work_mode, "cloud_token": service_config.cloud_token, "system_prompt": service_config.system_prompt, "llm_inference_service_url": service_config.llm_inference_service_url }, "projects": service_config.projects, "apis": service_config.apis }, f, indent=2) log(f"🆕 Added project: {project_name}") return {"message": f"Project {project_name} added."} @router.post("/delete_project") async def delete_project(request: Request): data = await request.json() project_name = data.get("project_name") if project_name not in service_config.projects: return {"error": "Project not found."} del service_config.projects[project_name] with open(service_config.config_path, "w", encoding="utf-8") as f: json.dump({ "config": { "work_mode": service_config.work_mode, "cloud_token": service_config.cloud_token, "system_prompt": service_config.system_prompt, "llm_inference_service_url": service_config.llm_inference_service_url }, "projects": service_config.projects, "apis": service_config.apis }, f, indent=2) log(f"🗑️ Deleted project: {project_name}") return {"message": f"Project {project_name} deleted."}