«Pedir revisión» on a ticket asks a member (with an optional note): they
are notified and see it under «Te piden revisión» in my work until they
answer «Todo bien» or «Pedir cambios» (with what to change) from the
ticket's Revisiones box; whoever asked hears the answer and can withdraw
an open request. Events of the ticket (requested, answered, cancelled),
so they show in its history and the activity feed. Viewers can be asked
and answer; not oneself, nor twice the same person with one pending.
API: requestReview / answerReview / cancelReview, Issue.reviews,
myIssues(reviewing); POST /api/issues/{issue}/reviews,
POST …/reviews/{id}/answer, DELETE …/reviews/{id}. MCP: request_review,
answer_review, my_issues reviewing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 enon<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_IDpara 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) yvalidateProjectSettings(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.