Application Status — Domain Model
Entities
ApplicationStatus(indocument/domain/) — template-scoped custom status; fields:applicationTemplateId,statusId(slug),internalName,externalName,color,isInitial,isFinal,manuallySettableApplication.currentApplicationStatusId— UUID FK; read-only join viacurrentApplicationStatus; set the ID to change status; never set viaApplicationInputApplicationStatusHistory— audit log; one row per status change on an applicationApplicationStatusTransition— transition definition on a template (from-status → to-status); indocument/domain/StatusTransitionType— enum indocument/domain/; values:USER,SYSTEM,BOTH
GraphQL field names
- Queries:
applicationStatuses(templateId),applicationStatusTransitions(templateId),applicationStatusHistory(applicationId) - Mutations:
createApplicationStatus,updateApplicationStatus,deleteApplicationStatus,createApplicationStatusTransition,updateApplicationStatusTransition,deleteApplicationStatusTransition Applicationtype field:currentApplicationStatusWorkflowSteptype field:applicationStatus
Constraints
ApplicationStatusInputlives indocuments-input.graphqls—application-input.graphqlsmust NOT define itApplicationInputhas no status field — status is set by the workflow engine onlyisDraft:!application.currentApplicationStatus(no status assigned yet)
Frontend hooks (use-template-statuses.ts)
useApplicationStatuses, useCreateApplicationStatus, useUpdateApplicationStatus, useDeleteApplicationStatus, useApplicationStatusTransitions, useCreateApplicationStatusTransition, useUpdateApplicationStatusTransition, useDeleteApplicationStatusTransition
Query keys: queryKeys.applicationStatuses(templateId), queryKeys.applicationStatusTransitions(templateId)