"""
Stateflow 信号定义

stateflow 模块通过信号通知外部模块状态变化，
外部模块可以监听这些信号来执行业务逻辑（通知、簿记等）。

sender 说明：
    sender 是 content_object 的类（如 PrintingJob、PlateOrder），
    监听者可以在 connect 时指定 sender 来过滤只接收特定类型的信号。

使用方式：
    # 在业务模块的 apps.py 中监听
    from django.apps import AppConfig

    class MyAppConfig(AppConfig):
        def ready(self):
            from stateflow.signals import process_completed
            from .models import PrintingJob
            from . import handlers
            
            # 只监听 PrintingJob 相关的流程完成信号
            process_completed.connect(handlers.on_process_completed, sender=PrintingJob)
            
            # 或监听所有类型（不指定 sender）
            # process_completed.connect(handlers.on_any_process_completed)
"""

from django.dispatch import Signal

# 流程完成信号
# 参数：
#   sender: content_object 的类（如 PrintingJob），用于过滤
#   process_id: 流程 ID
#   business_object_id: BusinessObject ID
#   business_object: BusinessObject 实例
#   content_object: 关联的业务对象实例（如 PrintingJob）
#   completed_by: 完成操作的用户（本次推进的操作人）
#   last_completed_state_id: 最后完成的节点 ID
#   last_completed_by: 最后步骤操作人（User 实例）
process_completed = Signal()

# 状态推进信号（每次推进都会触发）
# 参数：
#   sender: content_object 的类（如 PrintingJob），用于过滤
#   process_id: 流程 ID
#   business_object_id: BusinessObject ID
#   business_object: BusinessObject 实例
#   content_object: 关联的业务对象实例
#   state: 刚完成的 State 实例
#   state_log: StateFlowRecord 实例
#   completed_by: 完成操作的用户
#   is_process_completed: 流程是否已全部完成
#   last_completed_state_id: 最后完成的节点 ID
#   last_completed_by: 最后步骤操作人（User 实例）
state_advanced = Signal()
