package constants

// ProcessAction approval action-type constants — single source of truth for the
// approval SIDE-EFFECT taxonomy (Salesforce-standard ProcessAction.ActionType).
//
// This file is the sibling of actions.go in the same `constants` package: the
// two-file layout co-locates the related vocabularies for review while keeping
// the distinct axes in separate, self-documenting units.
//
// This is a SEPARATE axis from the automation dispatch-mechanism taxonomy in
// actions.go (the ActionType* constants such as ActionTypeSendEmail). The two
// MUST NOT be merged into one enum: an approval "Alert" side-effect is not the
// same concept as an automation "SendEmail" dispatch route, even though both
// send mail. The deliberately distinct prefixes (ProcessActionType* vs
// ActionType*) keep them from silently collapsing. See
// docs/design/action-taxonomy.md for the three-axis model
// (automation dispatch-mechanism / approval side-effect / approval lifecycle-phase).
//
// Wire values are persisted on ProcessAction.ActionType and MUST NOT change.
// FieldUpdate and Alert mirror Salesforce API v63.0; Flow is the NexusCRM
// native approval-notification bridge where lifecycle metadata selects a Flow,
// and the Flow owns any email/template/recipient policy. Salesforce's Task /
// OutboundMessage action types are not yet supported and are treated as unknown
// (best-effort skip) by the approval executor.
const (
	ProcessActionTypeFieldUpdate = "FieldUpdate"
	ProcessActionTypeAlert       = "Alert"
	ProcessActionTypeFlow        = "Flow"
)
