feat(tickets): suppression d'un ticket (backend + frontend)
Ajoute la suppression complète d'un ticket (#6). Backend Rust : - port IssueStore::delete (NotFound si absent) + event IssueDeleted{freed_sprint} - FsIssueStore::delete : supprime .ideai/tickets/<N>/ et l'index sous lock - use case DeleteIssue + adaptations des tests sprint/ticket_assistant au port - commande Tauri ticket_delete + câblage events/state/lib Frontend : - gateway delete (ports, adapter ticket + mock, domain) - useTicketDetail : retrait de la liste et fermeture du détail via event issueDeleted - intégration TicketDetail + tests Tests verts : application/issue_usecases (6), infrastructure/issue_store (7), app-tauri --lib (56), frontend vitest (503), npm run build (exit 0). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -126,6 +126,19 @@ export type DomainEvent =
|
||||
}
|
||||
| { type: "issueCreated"; issueId: string; issueRef: string }
|
||||
| { type: "issueUpdated"; issueRef: string; version: number }
|
||||
| {
|
||||
/**
|
||||
* A ticket was deleted (ticket #6). Mirror of the backend
|
||||
* `DomainEventDto::IssueDeleted`. `issueRef` is the deleted `#N`;
|
||||
* `freedSprint` is the sprint id it was released from, when any. Starts with
|
||||
* `issue`, so {@link isTicketEvent} matches it and ticket lists refresh
|
||||
* automatically; an open detail on the same `issueRef` closes.
|
||||
*/
|
||||
type: "issueDeleted";
|
||||
projectId: string;
|
||||
issueRef: string;
|
||||
freedSprint: string | null;
|
||||
}
|
||||
| {
|
||||
type: "issueStatusChanged";
|
||||
issueRef: string;
|
||||
|
||||
Reference in New Issue
Block a user