template_registry.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from typing import Dict, Type
  2. from core.document_processor.templates.base_template import DocumentTemplate
  3. from core.document_processor.templates.invoice_template import InvoiceTemplate
  4. from core.document_processor.templates.saletask_template import SaleTaskTemplate
  5. from core.document_processor.templates.cusamt_template import CusAmtTemplate
  6. class TemplateRegistry:
  7. """模板注册管理器"""
  8. _templates: Dict[str, Type[DocumentTemplate]] = {}
  9. @classmethod
  10. def register(cls, template_class: Type[DocumentTemplate]):
  11. """注册模板"""
  12. instance = template_class()
  13. cls._templates[instance.template_name] = template_class
  14. return template_class
  15. @classmethod
  16. def get_template(cls, template_name: str) -> DocumentTemplate:
  17. """获取模板实例"""
  18. if template_name not in cls._templates:
  19. raise ValueError(f"模板不存在: {template_name}")
  20. return cls._templates[template_name]()
  21. @classmethod
  22. def list_templates(cls) -> Dict[str, str]:
  23. """列出所有可用模板"""
  24. return {name: cls._templates[name]().description for name in cls._templates}
  25. # 注册内置模板
  26. TemplateRegistry.register(InvoiceTemplate)
  27. TemplateRegistry.register(SaleTaskTemplate)
  28. TemplateRegistry.register(CusAmtTemplate)