@startuml state-enrollment
!theme plain
skinparam stateBackgroundColor #F8F9FA
skinparam stateBorderColor #495057

title Estado de Inscripción del Estudiante

[*] --> SinMaterias : Registro inicial

state "Sin Materias" as SinMaterias {
    state "0 créditos" as cred0
}

state "Inscripción Parcial" as Parcial {
    state "3 créditos\n(1 materia)" as cred3
    state "6 créditos\n(2 materias)" as cred6
}

state "Inscripción Completa" as Completa {
    state "9 créditos\n(3 materias)" as cred9
}

SinMaterias --> Parcial : inscribir(materia)
Parcial --> Parcial : inscribir(materia)\n[créditos < 9]
Parcial --> Completa : inscribir(materia)\n[créditos = 6]
Completa --> Parcial : cancelar(inscripción)
Parcial --> SinMaterias : cancelar(inscripción)\n[única materia]

note right of Completa
  No puede inscribir
  más materias
end note

note left of Parcial
  <b>Validaciones en cada inscripción:</b>
  - Límite de créditos
  - No repetir profesor
  - Materia no duplicada
end note

state validacion <<choice>>

SinMaterias --> validacion : intenta inscribir
Parcial --> validacion : intenta inscribir

validacion --> Parcial : [válido]
validacion --> [*] : [inválido]\nmuestra error

@enduml
