feat(project): trigger async LLM name generation on project creation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ubuntu 2026-05-15 22:12:43 +00:00
parent f301eff373
commit ca38800a53
1 changed files with 24 additions and 0 deletions

View File

@ -16,6 +16,7 @@ from ..config import Config
from ..services.ontology_generator import OntologyGenerator from ..services.ontology_generator import OntologyGenerator
from ..services.graph_builder import GraphBuilderService from ..services.graph_builder import GraphBuilderService
from ..services.text_processor import TextProcessor from ..services.text_processor import TextProcessor
from ..services.project_name_generator import generate_project_name
from ..utils.file_parser import FileParser from ..utils.file_parser import FileParser
from ..utils.logger import get_logger from ..utils.logger import get_logger
from ..utils.locale import t, get_locale, set_locale 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) ProjectManager.save_extracted_text(project_id, all_text, storage)
logger.info(f"Text extraction complete, total {len(all_text)} characters") 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...") logger.info("Calling LLM to generate ontology definition...")
generator = OntologyGenerator() generator = OntologyGenerator()
ontology = generator.generate( ontology = generator.generate(
@ -231,6 +243,7 @@ def generate_ontology():
}) })
except Exception as e: except Exception as e:
logger.exception("Error in generate_ontology")
if project_id: if project_id:
try: try:
ProjectManager.delete_project(project_id, storage=get_storage()) ProjectManager.delete_project(project_id, storage=get_storage())
@ -311,6 +324,17 @@ def import_ontology():
ProjectManager.save_extracted_text(project_id, all_text, storage) 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", []) entity_types = ontology.get("entity_types", [])
edge_types = ontology.get("edge_types", []) edge_types = ontology.get("edge_types", [])
analysis_summary = ontology.get("analysis_summary", "") analysis_summary = ontology.get("analysis_summary", "")