template_registry.py 1.4 KB

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