Volver a plantillas

Seguimiento de proyectos

engineering

Administre proyectos, tareas e hitos con seguimiento de estado.

Colecciones

Projects

High-level projects and initiatives

Campos del esquema

name:stringstatus:stringowner:stringstart_date:stringtarget_date:stringdescription:string

Tasks

Individual work items

Campos del esquema

title:stringstatus:stringpriority:stringassignee:stringdue_date:stringestimate_hours:number

Milestones

Key project milestones and deadlines

Campos del esquema

name:stringdue_date:stringstatus:stringdescription:string

Relaciones

tasks
belongs_to
projectsTask belongs to project
tasks
blocks
tasksTask blocks another task
projects
has_milestone
milestonesProject has milestone

Consultas de ejemplo

Consulte los datos de esta plantilla usando el endpoint SQL.

Task breakdown by status

Count tasks grouped by status to see workload distribution.

SELECT
  data.status.:String as status,
  count() as task_count
FROM records FINAL
WHERE workspace_id = {workspace_id:String}
  AND collection = 'tasks'
  AND deleted = false
GROUP BY status
ORDER BY task_count DESC

Workload by assignee

See how many open tasks each person has and their total estimated hours.

SELECT
  data.assignee.:String as assignee,
  count() as open_tasks,
  sum(CAST(data.estimate_hours, 'Float64')) as total_hours
FROM records FINAL
WHERE workspace_id = {workspace_id:String}
  AND collection = 'tasks'
  AND deleted = false
  AND data.status.:String IN ('todo', 'in_progress', 'review')
GROUP BY assignee
ORDER BY total_hours DESC

Overdue tasks

Find tasks past their due date that are not yet done.

SELECT
  data.title.:String as title,
  data.priority.:String as priority,
  data.assignee.:String as assignee,
  data.due_date.:String as due_date
FROM records FINAL
WHERE workspace_id = {workspace_id:String}
  AND collection = 'tasks'
  AND deleted = false
  AND data.status.:String != 'done'
  AND CAST(data.due_date.:String, 'Date') < today()
ORDER BY due_date ASC

Project status overview

List all projects with their status and timeline.

SELECT
  data.name.:String as project,
  data.status.:String as status,
  data.owner.:String as owner,
  data.start_date.:String as start_date,
  data.target_date.:String as target_date
FROM records FINAL
WHERE workspace_id = {workspace_id:String}
  AND collection = 'projects'
  AND deleted = false
ORDER BY data.target_date.:String ASC

Inicio rápido

Cree las colecciones usando el Rekor CLI:

rekor collections upsert projects --workspace my-tracker --schema @projects.json

Esquema completo (JSON)

Copie la definición completa de la plantilla:

{
  "collections": [
    {
      "id": "projects",
      "name": "Projects",
      "description": "High-level projects and initiatives",
      "icon": "folder",
      "color": "#3b82f6",
      "json_schema": {
        "type": "object",
        "required": [
          "name",
          "status"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "planning",
              "active",
              "paused",
              "completed",
              "cancelled"
            ]
          },
          "owner": {
            "type": "string"
          },
          "start_date": {
            "type": "string",
            "format": "date"
          },
          "target_date": {
            "type": "string",
            "format": "date"
          },
          "description": {
            "type": "string"
          }
        }
      }
    },
    {
      "id": "tasks",
      "name": "Tasks",
      "description": "Individual work items",
      "icon": "check-square",
      "color": "#22c55e",
      "json_schema": {
        "type": "object",
        "required": [
          "title",
          "status"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "todo",
              "in_progress",
              "review",
              "done"
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high",
              "critical"
            ]
          },
          "assignee": {
            "type": "string"
          },
          "due_date": {
            "type": "string",
            "format": "date"
          },
          "estimate_hours": {
            "type": "number"
          }
        }
      }
    },
    {
      "id": "milestones",
      "name": "Milestones",
      "description": "Key project milestones and deadlines",
      "icon": "flag",
      "color": "#f59e0b",
      "json_schema": {
        "type": "object",
        "required": [
          "name",
          "due_date"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "due_date": {
            "type": "string",
            "format": "date"
          },
          "status": {
            "type": "string",
            "enum": [
              "upcoming",
              "reached",
              "missed"
            ]
          },
          "description": {
            "type": "string"
          }
        }
      }
    }
  ],
  "relationships": [
    {
      "type": "belongs_to",
      "source": "tasks",
      "target": "projects",
      "description": "Task belongs to project"
    },
    {
      "type": "blocks",
      "source": "tasks",
      "target": "tasks",
      "description": "Task blocks another task"
    },
    {
      "type": "has_milestone",
      "source": "projects",
      "target": "milestones",
      "description": "Project has milestone"
    }
  ]
}