ymq 1d743df4e3 feat(approval): 钉钉审批接成产线审批关卡
复用引擎既有 approval_gate 机制,不重造状态机:
- 新增 dingtalk_approval.py:注册 step_type='dingtalk_approval'(interactive),
  进入步骤自动向钉钉发起审批;注册 biz_type='pipeline_approval' 回调钩子,
  审批结果回来调 approval_approve/reject 推进产线(内部已 save_artifact+resume_task)
- executor._handle_interactive_step 加外部通知钩子(按 step_type meta.notifier 分派),
  并把 tenant_id 从 _execute_step 传下来(原 step_info 里无此字段,会永远取空)
- biz_id 编码 tenant_id:task_id:step_name,回调据此定位步骤
- 软依赖 dingdingflow:未加载时步骤仍挂起等人工审批,不推钉钉、不报错
- 通知失败只记日志不改步骤状态,避免外部系统故障导致步骤 FAILED
2026-08-25 18:22:03 +08:00

69 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""pipeline_service - 通用产线执行引擎模块。v3.5.0"""
from .init import (
load_pipeline_service,
pipeline_submit,
pipeline_list,
pipeline_detail,
pipeline_node,
pipeline_modify,
pipeline_pause,
pipeline_resume,
pipeline_cancel,
pipeline_handlers,
pipeline_step_types,
pipeline_register_step_type,
pipeline_unregister_step_type,
)
from .handler import register_handler, list_handlers, register_default_handler
from .step_registry import register_step_type, get_step_type, list_step_types, load_builtin_types
from .human import human_complete, approval_approve, approval_reject, human_list
from .dingtalk_approval import (
load_dingtalk_approval,
notify_dingtalk_approval,
on_dingtalk_approval_done,
)
from .state import (
STATE_PENDING, STATE_RUNNING, STATE_COMPLETED, STATE_FAILED, STATE_SKIPPED,
STATE_WAITING, STATE_REJECTED,
TASK_SUBMITTED, TASK_RUNNING, TASK_COMPLETED, TASK_FAILED, TASK_PAUSED, TASK_CANCELLED, TASK_WAITING,
HUMAN_PENDING, HUMAN_SUBMITTED, HUMAN_APPROVED, HUMAN_REJECTED, HUMAN_EXPIRED,
)
# v2: Agent 执行引擎(对照 Hermes Agent
from .agent_loop_v2 import AgentExecutor, run_agent
# 产线能力包注册import 即注册到 pipeline_core 的 PipelineAbility 注册表)
from . import sdlc_ability # noqa: F401
# 通用 slash 命令注册import 即注册)
from . import slash_commands # noqa: F401
# 应用部署主机逻辑账号系统(零 root 逻辑隔离 + bwrap 沙箱)
from .deploy_account import (
ensure_account,
remove_account,
list_accounts,
run_in_sandbox,
write_file,
read_file,
list_dir,
account_name_for,
deploy_dir_for,
sanitize_username,
)
# 工作环境管理(沙箱本地/远程切换 + 目录迁移)
from .work_env import (
get_work_env,
set_work_env,
migrate_work_dir,
run_remote_sandbox,
run_in_work_env,
ensure_remote_bwrap,
ensure_org_key,
get_org_pubkey,
)
__version__ = "3.5.0"