项目结构:
# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:10 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : request_type.py from enum import Enum class JewelryRequestType(Enum): """ """ PROCUREMENT = "procurement" PRODUCTION = "production" QUALITY_CHECK = "quality_check" SALES = "sales" AFTER_SALES = "after_sales" INVENTORY = "inventory" # 多语言显示名称 def get_display_name(self, lang): mapping = { "zh": { "procurement": "原料采购", "production": "首饰加工", "quality_check": "品质检验", "sales": "销售订单", "after_sales": "售后维保", "inventory": "库存管理" }, "en": { "procurement": "Procurement", "production": "Production", "quality_check": "Quality Check", "sales": "Sales", "after_sales": "After Sales", "inventory": "Inventory" } } return mapping[lang][self.value] # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:37 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : language.py from enum import Enum class Language(Enum): """ """ ZH = "zh" # 中文 EN = "en" # 英文 # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:38 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : zh.py ZH_MESSAGES = { "title": "===== 企业级珠宝业务系统 - 生成器模式并发处理 =====", "procurement": "已处理:{material} 询价,报价:{price}/克", "production": "已接收:{product},工期:{days} 天", "quality_check": "{product}:钻石等级 {grade},合格✅", "sales": "{product} 已下单,会员:{member}", "after_sales": "{service} 已受理,取件时间:3天后", "inventory": "{warehouse} 库存:{stock} 件", "unsupported": "不支持的请求类型", "error": "处理失败:{err}", # 动态数据翻译 "999黄金": "999黄金", "18K金钻石戒指": "18K金钻石戒指", "50分钻戒": "50分钻戒", "古法黄金手镯": "古法黄金手镯", "钻戒改圈口": "钻戒改圈口", "上海总仓": "上海总仓", } # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:38 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : en.py EN_MESSAGES = { "title": "===== Enterprise Jewelry System - Generator Pattern Concurrent Processing =====", "procurement": "Processed: {material} inquiry, price: {price}/g", "production": "Accepted: {product}, lead time: {days} days", "quality_check": "{product}: Diamond grade {grade}, Passed✅", "sales": "{product} ordered, member: {member}", "after_sales": "{service} accepted, ready in 3 days", "inventory": "{warehouse} stock: {stock} pcs", "unsupported": "Unsupported request type", "error": "Processing failed: {err}", # 动态数据翻译 "999黄金": "999 Gold", "18K金钻石戒指": "18K Gold Diamond Ring", "50分钻戒": "0.5ct Diamond Ring", "古法黄金手镯": "Ancient Gold Bracelet", "钻戒改圈口": "Ring Resizing", "上海总仓": "Shanghai Main Warehouse", } # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 pip install pydantic # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:11 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : dto.py from pydantic import BaseModel from GeneratorsPattern.common.request_type import JewelryRequestType from GeneratorsPattern.common.language import Language class JewelryRequest(BaseModel): """统一请求模型(严格校验请求结构)""" request_type: JewelryRequestType # 枚举强校验 data: dict # 业务参数 lang: Language = Language.ZH # 自动带语言 class JewelryResponse(BaseModel): """统一响应模型""" request_type: str handler_name: str = "" # 修复:给默认值,非必须 result: str success: bool = True# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:12 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : registry.py from typing import Callable, Dict from GeneratorsPattern.common.request_type import JewelryRequestType # 全局处理器注册表(唯一来源) HANDLER_REGISTRY: Dict[JewelryRequestType, Callable] = {} def register_handler(request_type: JewelryRequestType): """ 装饰器:注册业务处理器 【扩展方式】:新增业务只需 @register_handler 标注 """ def decorator(handler_func: Callable) -> Callable: HANDLER_REGISTRY[request_type] = handler_func return handler_func return decorator # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:13 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : procurement.py from GeneratorsPattern.service.registry import register_handler from GeneratorsPattern.common.request_type import JewelryRequestType from GeneratorsPattern.i18n import get_message from GeneratorsPattern.common.language import Language @register_handler(JewelryRequestType.PROCUREMENT) def procurement_handler(data: dict, lang:Language) -> str: """ 原料采购处理器(只做采购业务) :param data: :return: """ #return f"已处理:{data['material']} 询价,报价:{data['price']}/克" return get_message(lang, "procurement", **data) # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:14 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : production.py from GeneratorsPattern.service.registry import register_handler from GeneratorsPattern.common.request_type import JewelryRequestType from GeneratorsPattern.i18n import get_message from GeneratorsPattern.common.language import Language @register_handler(JewelryRequestType.PRODUCTION) def production_handler(data: dict, lang:Language) -> str: """ 首饰加工处理器 :param data: :return: """ #return f"已接收:{data['product']},工期:{data['days']} 天" return get_message(lang, "production", **data) # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:15 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : quality.py from GeneratorsPattern.service.registry import register_handler from GeneratorsPattern.common.request_type import JewelryRequestType from GeneratorsPattern.i18n import get_message from GeneratorsPattern.common.language import Language @register_handler(JewelryRequestType.QUALITY_CHECK) def quality_check_handler(data: dict, lang:Language) -> str: """ 品质检验处理器 """ #return f"{data['product']}:钻石等级 {data['grade']},合格✅" return get_message(lang, "quality_check", **data) # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:16 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : sales.py from GeneratorsPattern.service.registry import register_handler from GeneratorsPattern.common.request_type import JewelryRequestType from GeneratorsPattern.i18n import get_message from GeneratorsPattern.common.language import Language @register_handler(JewelryRequestType.SALES) def sales_handler(data: dict, lang:Language) -> str: """ 销售订单处理器 :param data: :return: """ #return f"{data['product']} 已下单,会员:{data['member']}" return get_message(lang, "sales", **data) # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:17 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : after_sales.py from GeneratorsPattern.service.registry import register_handler from GeneratorsPattern.common.request_type import JewelryRequestType from GeneratorsPattern.i18n import get_message from GeneratorsPattern.common.language import Language @register_handler(JewelryRequestType.AFTER_SALES) def after_sales_handler(data: dict, lang:Language) -> str: """ 售后维保处理器 :param data: :return: """ #return f"{data['service']} 已受理,取件时间:3天后" return get_message(lang, "after_sales", **data) # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:18 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : inventory.py from GeneratorsPattern.service.registry import register_handler from GeneratorsPattern.common.request_type import JewelryRequestType from GeneratorsPattern.i18n import get_message from GeneratorsPattern.common.language import Language @register_handler(JewelryRequestType.INVENTORY) def inventory_handler(data: dict, lang:Language) -> str: """ 库存管理处理器 :param data: :return: """ #return f"{data['warehouse']} 库存:{data['stock']} 件" return get_message(lang, "inventory", **data) # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:19 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : generator.py from typing import Generator,List from GeneratorsPattern.model.dto import JewelryRequest, JewelryResponse from GeneratorsPattern.service.registry import HANDLER_REGISTRY from GeneratorsPattern.i18n import get_message class JewelryRequestGenerator: @staticmethod def dispatch(reqs: List[JewelryRequest]) -> Generator[JewelryResponse, None, None]: for req in reqs: handler = HANDLER_REGISTRY.get(req.request_type) if not handler: yield JewelryResponse( request_type=req.request_type.value, handler_name="unknown", result=get_message(req.lang, "unsupported"), success=False ) continue try: result = handler(req.data, req.lang) success = True except Exception as e: result = get_message(req.lang, "error", err=str(e)) success = False # 修复:补上 handler_name yield JewelryResponse( request_type=req.request_type.value, handler_name=handler.__name__, result=result, success=success ) # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:20 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : request_router.py from typing import List from GeneratorsPattern.model.dto import JewelryRequest from GeneratorsPattern.service.generator import JewelryRequestGenerator class JewelryRequestAPI: """ 系统入口:接收并发请求,提交给生成器分发 """ @staticmethod def process_requests(requests: List[JewelryRequest]): """ :param requests: :return: """ return JewelryRequestGenerator.dispatch(requests) @staticmethod def process(reqs: List[JewelryRequest]): """ :param reqs: :return: """ return JewelryRequestGenerator.dispatch(reqs)调用:
# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Generators Pattern 生成器模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/11 21:22 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : GeneratorsBll.py import GeneratorsPattern.service.handlers from GeneratorsPattern.api.request_router import JewelryRequestAPI from GeneratorsPattern.model.dto import JewelryRequest from GeneratorsPattern.common.request_type import JewelryRequestType from GeneratorsPattern.i18n import get_message from GeneratorsPattern.common.language import Language class GeneratorsBll(object): """ """ def demo(self): """ :return: """ # ====================== 在这里切换语言 ====================== LANG = Language.ZH # 纯中文 # LANG = Language.EN # 纯英文 print(get_message(LANG, "title")) reqs = [ JewelryRequest(request_type=JewelryRequestType.PROCUREMENT, data={"material": "999黄金", "price": 628}, lang=LANG), JewelryRequest(request_type=JewelryRequestType.PRODUCTION, data={"product": "18K金钻石戒指", "days": 7}, lang=LANG), JewelryRequest(request_type=JewelryRequestType.QUALITY_CHECK, data={"product": "50分钻戒", "grade": "VS1/D"}, lang=LANG), JewelryRequest(request_type=JewelryRequestType.SALES, data={"product": "古法黄金手镯", "member": "VIP888"}, lang=LANG), JewelryRequest(request_type=JewelryRequestType.AFTER_SALES, data={"service": "钻戒改圈口"}, lang=LANG), JewelryRequest(request_type=JewelryRequestType.INVENTORY, data={"warehouse": "上海总仓", "stock": 126}, lang=LANG), ] for resp in JewelryRequestAPI.process(reqs): mark = "✅" if resp.success else "❌" # 关键:自动显示中文/英文名称 req_type = JewelryRequestType(resp.request_type).get_display_name(lang=LANG.value) print(f"{mark} [{req_type:<12s}] {resp.result}")输出: