From 323e7cf5721fc2006ff9fdaeb79b0fd527bd47c3 Mon Sep 17 00:00:00 2001 From: yuqei Date: Sun, 31 May 2026 12:59:12 +0800 Subject: [PATCH] fix: handle missing template files gracefully at startup --- backend/app/services/template_service.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/backend/app/services/template_service.py b/backend/app/services/template_service.py index eab9dc75..286ddca4 100644 --- a/backend/app/services/template_service.py +++ b/backend/app/services/template_service.py @@ -41,10 +41,16 @@ def _load_phase13_template_asset( template_category: str, industry_category: str, description: str, -) -> dict[str, Any]: +) -> dict[str, Any] | None: asset_dir = TEMPLATE_LIBRARY_ROOT / folder_name - markdown = (asset_dir / f"{template_code}.md").read_text(encoding="utf-8-sig") - variables_data = json.loads((asset_dir / f"{template_code}-variables.json").read_text(encoding="utf-8-sig")) + md_file = asset_dir / f"{template_code}.md" + if not md_file.is_file(): + return None + json_file = asset_dir / f"{template_code}-variables.json" + if not json_file.is_file(): + return None + markdown = md_file.read_text(encoding="utf-8-sig") + variables_data = json.loads(json_file.read_text(encoding="utf-8-sig")) required_variables = variables_data.get("required_variables", []) optional_variables = variables_data.get("optional_variables", []) variables = [ @@ -688,6 +694,9 @@ DEFAULT_TEMPLATES: list[dict[str, Any]] = [ ), ] +# Filter out templates whose source files are missing (e.g. in Docker builds without project-docs) +DEFAULT_TEMPLATES: list[dict[str, Any]] = [t for t in DEFAULT_TEMPLATES if t is not None] + class TemplateService: def __init__(self, db: Session):