feat: multiple updates - alerts, auth, sectors, rotation service, financials ingestion, task specs, and agent framework
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# Task: Pipeline orchestrator API endpoints
|
||||
|
||||
## Goal
|
||||
Create the API endpoints for triggering and monitoring pipeline runs. This is Phase 2 — the API layer on top of the task definitions from the previous task.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Create `src/backend/services/pipeline_orchestrator.py`
|
||||
|
||||
Implement `PipelineOrchestrator` class:
|
||||
|
||||
1. `run_pipeline(task_name: str, user_id: str) -> str` — start a pipeline run, return run_id
|
||||
2. `get_run_status(run_id: str) -> dict` — return run status (pending/running/completed/failed)
|
||||
3. `cancel_run(run_id: str)` — cancel a running pipeline
|
||||
4. Internal: execute tasks respecting dependency order
|
||||
5. Store run state in memory (dict) — no DB needed yet
|
||||
|
||||
### Create `src/backend/routers/pipeline.py`
|
||||
|
||||
Add endpoints:
|
||||
|
||||
1. `POST /api/v1/pipeline/run` — trigger a pipeline run
|
||||
- Body: `{"task": "news_ingestion"}` or `"full"` for all tasks
|
||||
- Returns: `{"run_id": "...", "status": "pending"}`
|
||||
|
||||
2. `GET /api/v1/pipeline/run/{run_id}` — get run status
|
||||
- Returns: `{"run_id": "...", "status": "...", "tasks": [...]}`
|
||||
|
||||
3. `POST /api/v1/pipeline/run/{run_id}/cancel` — cancel a run
|
||||
- Returns: `{"message": "cancelled"}`
|
||||
|
||||
4. `GET /api/v1/pipeline/tasks` — list available tasks
|
||||
- Returns: list of registered tasks with descriptions
|
||||
|
||||
### Response models in `schemas/pipeline.py`
|
||||
|
||||
Create:
|
||||
- `PipelineRunRequest` — task name to run
|
||||
- `PipelineRunResponse` — run_id and status
|
||||
- `PipelineRunStatus` — detailed run status with task results
|
||||
- `PipelineTaskInfo` — task metadata
|
||||
|
||||
## Acceptance Criteria
|
||||
1. All 4 endpoints work correctly
|
||||
2. Dependency order is respected when running full pipeline
|
||||
3. Run status updates in real-time
|
||||
4. Files stay under 200 lines each
|
||||
|
||||
## Files to Create/Modify
|
||||
- `src/backend/services/pipeline_orchestrator.py`
|
||||
- `src/backend/services/pipeline_tasks.py` (from previous task)
|
||||
- `src/backend/routers/pipeline.py`
|
||||
- `src/backend/schemas/pipeline.py`
|
||||
|
||||
## Files to Read First
|
||||
- `src/backend/services/pipeline_tasks.py` — task definitions
|
||||
- `src/backend/routers/alerts.py` — follow routing pattern
|
||||
- `src/backend/schemas/alert.py` — follow schema pattern
|
||||
Reference in New Issue
Block a user