Files
task-stream/libs/api/tracker/application
Josep Piguillem 45a3dc1e16 feat: a roadmap of epics over time
Tickets get a start date next to their due date, both editable on the
ticket page. The Hoja de ruta tab lays the epics out over the months as
bars filled with their progress, with sprints and releases as landmarks
and a line for today.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:14:32 +02:00
..
2026-10-08 15:14:32 +02:00
2026-10-03 13:40:26 +02:00
2026-10-03 13:40:26 +02:00
2026-10-03 13:40:26 +02:00
2026-10-03 13:40:26 +02:00
2026-10-03 13:40:26 +02:00

api-tracker-application

Casos de uso del tracker (CQRS).

  • Import: @task-stream/api/tracker/application
  • Capa: application · Tags: scope:api-tracker, type:application

Contenido

  • Services: ProjectsService, IssuesService, CommentsService, ReleasesService, ChangesService (subscriptions), WorkflowsService (workflow de cada proyecto para presentar tickets, con una caché de 2 s).
  • commands/: un fichero por command y otro por handler; cargan con WriteAccess (rehydrator) y guardan con commitAndWait().
  • queries/: un fichero por query y otro por handler; leen de los puertos Find*Repository y comprueban el acceso (ReadAccess: miembros, o cualquiera si el proyecto es público; viewerId null = anónimo); SearchMyIssuesQuery y GetUpcomingReleasesQuery cruzan todos los proyectos del usuario («Mi trabajo»).
  • event-handlers/: proyecciones (@EventsHandler) hacia el read model (incluida la línea temporal de cada ticket), notificaciones en tiempo real y feed de actividad.
  • sagas/: ProjectDeletionSaga (cascada al borrar un proyecto y sus tickets), ReleaseArchivedSaga (los tickets sin terminar salen de una release archivada) y UserDeactivatedSaga (desasigna los tickets abiertos de un usuario que Pireon desactiva). Las ejecuta el EventsBridge; sus comandos son internos e idempotentes. Tests en sagas.spec.ts.
  • analytics/: estadísticas y burnup calculados con funciones puras sobre la línea temporal (con tests).
  • ports/: lookups de escritura, Find*, UpsertMaterialized*, ReleaseIssuesRepository, ChangeFeed, UserDirectory.
  • TrackerApplicationModule.withInfrastructure(...).

Cómo añadir un caso de uso: Desarrollo.

Comandos

npx nx lint api-tracker-application
npx nx test api-tracker-application    # Jest

Reglas de dependencia entre capas: Arquitectura.