"""pipeline_task 交互模块 — 产线任务的用户交互层。 纯薄交互层,无数据表。通过 ServerEnv 调用 pipeline-service 的函数。 任何宿主加载 pipeline_service 后,再加载 pipeline_task 即可使用。 """ import json from ahserver.serverenv import ServerEnv MODULE_NAME = "pipeline_task" MODULE_VERSION = "1.1.0" def load_pipeline_task(): """注册交互模块到 ServerEnv。""" env = ServerEnv() env.pipeline_task_info = lambda: { "module": MODULE_NAME, "version": MODULE_VERSION, "depends_on": "pipeline_service", } # Jinja2 helper: preload task data for detail page rendering async def get_task_data(request): """Load task detail data for Jinja2 template rendering.""" env_ns = request._run_ns task_id = env_ns.params_kw.get('task_id', '') if not task_id: return {'success': False, 'message': '缺少task_id'} try: tenant_id = (await env_ns.get_userorgid()) or '0' result_raw = await env.pipeline_detail(tenant_id, task_id) data = json.loads(result_raw) return data except Exception as e: return {'success': False, 'message': str(e)} env.get_task_data = get_task_data # Jinja2 helper: preload step node artifact data async def get_step_node_data(request): """Load artifact data for step_panel Jinja2 template.""" env_ns = request._run_ns task_id = env_ns.params_kw.get('task_id', '') step_name = env_ns.params_kw.get('step_name', '') if not task_id or not step_name: return {'success': False, 'message': '缺少参数'} try: tenant_id = (await env_ns.get_userorgid()) or '0' result_raw = await env.pipeline_node(tenant_id, task_id, step_name) data = json.loads(result_raw) return data except Exception as e: return {'success': False, 'message': str(e)} env.get_step_node_data = get_step_node_data return True