fix: template manager

This commit is contained in:
root
2025-07-10 21:21:41 +08:00
parent aae64d4d04
commit 6b18e51f26
3 changed files with 235 additions and 7 deletions

View File

@@ -119,19 +119,21 @@ class TemplateManager:
if progress_callback:
progress_callback(f"Found {total_templates} potential templates")
for i, template_dir in enumerate(subdirs):
template_path = os.path.join(source_folder, template_dir)
if progress_callback:
progress_callback(f"Processing template {i+1}/{total_templates}: {template_dir}")
try:
template_info = self._import_single_template(template_path, template_dir)
if template_info:
result['imported_count'] += 1
result['imported_templates'].append(template_info)
logger.info(f"Successfully imported template: {template_dir}")
if progress_callback:
progress_callback(f"✅ Successfully imported: {template_dir}")
else:
result['failed_count'] += 1
result['failed_templates'].append({
@@ -139,7 +141,9 @@ class TemplateManager:
'error': 'No draft_content.json found or invalid template'
})
logger.warning(f"Failed to import template: {template_dir}")
if progress_callback:
progress_callback(f"❌ Failed to import: {template_dir} (No draft_content.json found)")
except Exception as e:
result['failed_count'] += 1
result['failed_templates'].append({
@@ -147,15 +151,17 @@ class TemplateManager:
'error': str(e)
})
logger.error(f"Error importing template {template_dir}: {e}")
if progress_callback:
progress_callback(f"❌ Error importing: {template_dir} ({str(e)})")
# Save metadata
self._save_metadata()
result['msg'] = f"Import completed. Success: {result['imported_count']}, Failed: {result['failed_count']}"
logger.info(result['msg'])
if progress_callback:
progress_callback(result['msg'])
progress_callback(f"🎉 Import completed! Success: {result['imported_count']}, Failed: {result['failed_count']}")
except Exception as e:
result['status'] = False
@@ -381,6 +387,37 @@ def main():
return
def progress_callback(message):
# Parse progress information from message
if "Processing template" in message:
# Extract template info from message like "Processing template 1/3: Template_Name"
parts = message.split(":")
if len(parts) >= 2:
template_name = parts[1].strip()
# Extract progress numbers
if "/" in parts[0]:
progress_part = parts[0].split("Processing template")[1].strip()
if "/" in progress_part:
current, total = progress_part.split("/")
try:
current_num = int(current.strip())
total_num = int(total.strip())
progress_percent = (current_num / total_num) * 100
progress.report(
step="import",
progress=progress_percent,
message=message,
details={
"current_template": template_name,
"total_templates": total_num,
"processed_templates": current_num
}
)
return
except ValueError:
pass
# Default progress step
progress.step("import", message)
result = manager.batch_import_templates(args.source_folder, progress_callback)