feat: generalize ticket role assignments

This commit is contained in:
2026-08-22 22:48:56 +09:00
parent 4017992c7d
commit 8030045602
9 changed files with 2250 additions and 489 deletions
+20
View File
@@ -679,7 +679,9 @@ fn validate_generic_state_change(
to: TicketWorkflowState,
) -> Result<()> {
if current == TicketWorkflowState::Planning && to == TicketWorkflowState::Ready
|| current == TicketWorkflowState::Planning && to == TicketWorkflowState::InProgress
|| current == TicketWorkflowState::Ready && to == TicketWorkflowState::Queued
|| current == TicketWorkflowState::Ready && to == TicketWorkflowState::InProgress
{
return Err(TicketError::InvalidWorkflowTransition {
from: current.as_str().to_owned(),
@@ -6998,6 +7000,24 @@ mod tests {
assert!(projection.visible_overlay.is_some());
}
#[test]
fn generic_state_change_rejects_manual_start_bypass() {
assert!(
validate_generic_state_change(
TicketWorkflowState::Ready,
TicketWorkflowState::InProgress
)
.is_err()
);
assert!(
validate_generic_state_change(
TicketWorkflowState::Planning,
TicketWorkflowState::InProgress
)
.is_err()
);
}
#[test]
fn workflow_state_rejects_legacy_intake_alias() {
assert_eq!(