From ca38800a5311acc7642716e320bbb0ae48186dd1 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Fri, 15 May 2026 22:12:43 +0000 Subject: [PATCH] feat(project): trigger async LLM name generation on project creation Co-Authored-By: Claude Sonnet 4.6 --- backend/app/api/graph.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/backend/app/api/graph.py b/backend/app/api/graph.py index df69f37f..eb5313ce 100644 --- a/backend/app/api/graph.py +++ b/backend/app/api/graph.py @@ -16,6 +16,7 @@ from ..config import Config from ..services.ontology_generator import OntologyGenerator from ..services.graph_builder import GraphBuilderService from ..services.text_processor import TextProcessor +from ..services.project_name_generator import generate_project_name from ..utils.file_parser import FileParser from ..utils.logger import get_logger from ..utils.locale import t, get_locale, set_locale @@ -196,6 +197,17 @@ def generate_ontology(): ProjectManager.save_extracted_text(project_id, all_text, storage) logger.info(f"Text extraction complete, total {len(all_text)} characters") + # Generate project name in background (non-blocking) + def _name_task(): + try: + name = generate_project_name(all_text) + ProjectManager.save_project({"id": project_id, "name": name}) + logger.info(f"Project name generated: {name!r}") + except Exception as exc: + logger.warning(f"Background name generation failed: {exc}") + + threading.Thread(target=_name_task, daemon=True).start() + logger.info("Calling LLM to generate ontology definition...") generator = OntologyGenerator() ontology = generator.generate( @@ -231,6 +243,7 @@ def generate_ontology(): }) except Exception as e: + logger.exception("Error in generate_ontology") if project_id: try: ProjectManager.delete_project(project_id, storage=get_storage()) @@ -311,6 +324,17 @@ def import_ontology(): ProjectManager.save_extracted_text(project_id, all_text, storage) + # Generate project name in background (non-blocking) + def _name_task(): + try: + name = generate_project_name(all_text) + ProjectManager.save_project({"id": project_id, "name": name}) + logger.info(f"Project name generated: {name!r}") + except Exception as exc: + logger.warning(f"Background name generation failed: {exc}") + + threading.Thread(target=_name_task, daemon=True).start() + entity_types = ontology.get("entity_types", []) edge_types = ontology.get("edge_types", []) analysis_summary = ontology.get("analysis_summary", "")