feat(sprints): modèle de sprints — domaine, use-cases, persistance et surfaces (backend)
Ticket #10 — introduction du modèle de sprints côté backend. - Domaine : nouvel agrégat Sprint (sprint.rs), IDs, événements et invariants ; rattachement des issues à un sprint (issue.rs) et ports associés. - Application : use-cases sprints (application/src/sprints) + erreurs dédiées. - Infrastructure : store de sprints (infrastructure/src/sprints.rs), adaptation du store d'issues et exposition MCP via orchestrator/mcp/tickets.rs. - app-tauri : commandes, state et events pour piloter les sprints depuis l'UI. Tests domaine/application/infra/app-tauri verts (sprint_usecases, sprint_store, issue_store, mcp_server). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -2,10 +2,13 @@
|
||||
//! presentation layer (ARCHITECTURE §3.2).
|
||||
|
||||
use crate::conversation::ConversationParty;
|
||||
use crate::ids::{AgentId, IssueId, ProfileId, ProjectId, SessionId, SkillId, TaskId, TemplateId};
|
||||
use crate::ids::{
|
||||
AgentId, IssueId, ProfileId, ProjectId, SessionId, SkillId, SprintId, TaskId, TemplateId,
|
||||
};
|
||||
use crate::issue::{IssueLinkKind, IssuePriority, IssueRef, IssueStatus, IssueVersion};
|
||||
use crate::mailbox::TicketId;
|
||||
use crate::memory::MemorySlug;
|
||||
use crate::sprint::{SprintOrder, SprintVersion};
|
||||
use crate::template::TemplateVersion;
|
||||
|
||||
/// Which entry door a processed orchestration request arrived through.
|
||||
@ -367,6 +370,47 @@ pub enum DomainEvent {
|
||||
/// New optimistic version.
|
||||
version: IssueVersion,
|
||||
},
|
||||
/// A sprint was created.
|
||||
SprintCreated {
|
||||
/// Stable sprint id.
|
||||
sprint_id: SprintId,
|
||||
/// Reorderable sprint order.
|
||||
order: SprintOrder,
|
||||
},
|
||||
/// A sprint was renamed.
|
||||
SprintRenamed {
|
||||
/// Stable sprint id.
|
||||
sprint_id: SprintId,
|
||||
/// New sprint name.
|
||||
name: String,
|
||||
/// New optimistic version.
|
||||
version: SprintVersion,
|
||||
},
|
||||
/// Sprint orders changed.
|
||||
SprintReordered {
|
||||
/// Stable sprint id.
|
||||
sprint_id: SprintId,
|
||||
/// New sprint order.
|
||||
order: SprintOrder,
|
||||
/// New optimistic version.
|
||||
version: SprintVersion,
|
||||
},
|
||||
/// A sprint was deleted.
|
||||
SprintDeleted {
|
||||
/// Stable sprint id.
|
||||
sprint_id: SprintId,
|
||||
},
|
||||
/// An issue was moved into, out of, or between sprints.
|
||||
IssueSprintChanged {
|
||||
/// Human-friendly issue reference.
|
||||
issue_ref: IssueRef,
|
||||
/// Previous sprint.
|
||||
from: Option<SprintId>,
|
||||
/// New sprint.
|
||||
to: Option<SprintId>,
|
||||
/// New optimistic version.
|
||||
version: IssueVersion,
|
||||
},
|
||||
/// A project's memory grew past the recall budget while no embedder is
|
||||
/// configured (strategy `none`): the first moment a semantic embedder would
|
||||
/// help (ARCHITECTURE §14.5.5, LOT C3). Published **at most once per session per
|
||||
|
||||
Reference in New Issue
Block a user