---
name: task
lang: py
domain: core
version: "1.0.0"
algebraic: product
definition: |
  @dataclass
  class Task:
      task_id: str
      task_type: str
      status: TaskStatus
      created_at: datetime
      updated_at: datetime
      progress: int = 0
      message: str = ""
      result: dict | None = None
      error: str | None = None
      metadata: dict = field(default_factory=dict)
      progress_detail: dict = field(default_factory=dict)
description: "Tarea de larga duracion con seguimiento de progreso. Product type que modela el ciclo de vida completo: creacion, progreso incremental, completado exitoso o fallo. Incluye to_dict() para serializacion JSON con timestamps ISO 8601."
tags: [task, async, background, progress, tracking, polling]
uses_types: [task_status_py_core]
file_path: "python/types/core/task.py"
---

## Notas

El campo `progress` es un entero 0-100. El campo `progress_detail` permite informar detalles granulares (etapa actual, items procesados) sin romper la interfaz del tipo.

El metodo `to_dict()` serializa `status` como string via `.value` y los timestamps como strings ISO 8601, haciendo el resultado directamente serializable con `json.dumps()`.

El campo `result` almacena el output de la tarea al completar. El campo `error` almacena la descripcion del fallo. Solo uno de los dos deberia estar poblado en un estado terminal.
