--- name: pipeline-task description: "Pipeline task interaction module — task submission, monitoring, human task approval, and artifact viewing." --- # pipeline_task Pure interaction-layer module with no data tables. All operations delegate to `pipeline_service` and `pipeline_sdlc` via ServerEnv. ## Architecture ``` pipeline_task/ ├── pipeline_task/ │ ├── __init__.py │ └── init.py # load_pipeline_task() — registers UI-facing functions ├── wwwroot/ │ ├── index.ui # Task center dashboard │ ├── task_submit.ui # Natural language task submission form │ ├── task_detail.ui # Task detail with step tree + artifacts │ ├── task_tree_popup.ui # Popup step tree view │ ├── step_panel.ui # Single step input/output viewer │ └── api/ │ ├── task_submit.dspy # Submit task (NLP → intent → dispatch) │ ├── task_list.dspy # Task list with filters │ ├── task_detail.dspy # Task + steps detail │ ├── task_node.dspy # Single step I/O │ ├── task_tree.dspy # Step DAG as tree │ ├── task_control.dspy # Pause/resume/cancel │ ├── task_restart.dspy # Restart task │ ├── human_list.dspy # Human task list │ ├── human_complete.dspy # Complete human task │ ├── approval_approve.dspy / reject.dspy │ └── my_bugs.dspy # User's bug list ├── i18n/ # zh/en/jp/ko translations └── scripts/load_path.py # RBAC registration ``` ## Key DSPY Endpoints ### Task Lifecycle - `task_submit.dspy` — NLP input → intent classification → pipeline dispatch - `task_list.dspy` — Paginated task list with status filters - `task_detail.dspy` — Full task info + step tree ### Step Interaction - `task_node.dspy` — Read/write step input/output artifacts - `task_tree.dspy` — DAG steps as nested tree for frontend Tree widget ### Human Tasks - `human_list.dspy` — Pending human tasks - `human_complete.dspy` — Submit human task result - `approval_approve.dspy` / `approval_reject.dspy` ## Pitfalls - **No data tables**: All data ops delegate to pipeline_service. Never write SQL here. - **Tree widget format**: `task_tree.dspy` must return `[{"id","label","children":[...]}]` format for bricks Tree. - **i18n**: After editing msg.txt, run `merge_i18n.py` in umbrella's build.sh. - **Auto-refresh**: Task list uses browser-side polling. No server push.