Files
task-stream/libs/api/tracker/domain
Josep Piguillem 3a46a236e4 feat: quick polls in comments that end in a decision
«📊 Añadir una encuesta» adds 2 to 6 options to a new comment. Members,
viewers too, vote by clicking an option (one vote each, which they can
change or take back) and see each option's votes as a bar. Whoever
started it, or an admin, closes it with «Cerrar y decidir»: the most
voted wins (none on a tie) and a «Decidido: …» reply marked as a
decision shows above the ticket. Events of the comment (voted, closed).

API: addComment(…, poll), votePoll, closePoll, Comment.poll;
POST /api/comments/{id}/poll/vote and …/poll/close. MCP: add_comment
poll, vote_poll, close_poll.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 20:48:12 +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-domain

El modelo del producto: proyectos, tickets, comentarios y releases.

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

Contenido

  • Agregados event-sourced: Project, Issue, Comment, Release. Validan en sus métodos y cambian de estado en on<Evento>.
  • events/: un fichero por evento (IssueCreatedEvent, IssueStatusChangedEvent…), todos con @AutowiredEvent.
  • Proyectos públicos (Project.isPublic) y borrado: Project.delete (propietario, confirmando la clave), Issue.delete, Release.delete (los usa la cascada); SYSTEM_ACTOR_ID para cambios que no hace una persona.
  • factories/: ProjectFactory, IssueFactory, CommentFactory, ReleaseFactory (@Injectable()).
  • project/project-settings.ts: configuración por proyecto (estados con categoría, transiciones, tipos, áreas), sus valores por defecto, ProjectWorkflow (lo que consultan tickets y queries) y validateProjectSettings (archivar, nunca borrar).
  • read-models/: forma de las vistas de lectura (ProjectReadModel, IssueReadModel…), incluida la línea temporal de los tickets y las estadísticas (analytics.read-model.ts).

Reglas y workflow: API.

Comandos

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

Reglas de dependencia entre capas: Arquitectura.