package constants

import "time"

const (
	// IntegrationProviderWeCom 表示企业微信外部系统。
	IntegrationProviderWeCom = "wecom"
	// IntegrationOperationWeComAccessToken 表示获取企业微信应用 access_token。
	IntegrationOperationWeComAccessToken = "get_access_token"
	// IntegrationOperationWeComVisibleMembers 表示获取应用可见成员。
	IntegrationOperationWeComVisibleMembers = "list_visible_members"
	// IntegrationOperationWeComTemplateDetail 表示获取企微审批模板详情。
	IntegrationOperationWeComTemplateDetail = "get_template_detail"
	// IntegrationOperationWeComAttachmentUpload 表示上传审批附件临时素材。
	IntegrationOperationWeComAttachmentUpload = "upload_approval_attachment"
	// IntegrationOperationWeComApprovalSubmit 表示提交企业微信审批申请。
	IntegrationOperationWeComApprovalSubmit = "submit_approval"
	// IntegrationOperationWeComApprovalCallback 表示接收企业微信审批状态回调。
	IntegrationOperationWeComApprovalCallback = "approval_callback"
	// IntegrationOperationWeComApprovalDetail 表示获取企业微信审批详情。
	IntegrationOperationWeComApprovalDetail = "get_approval_detail"
	// IntegrationOperationWeComApprovalInfo 表示按提交时间窗批量获取企业微信审批单号。
	IntegrationOperationWeComApprovalInfo = "get_approval_info"
	// WeComApplicationResourceType 表示企业微信应用配置资源。
	WeComApplicationResourceType = "wecom_application"
	// WeComApprovalSceneResourceType 表示企业微信审批场景配置资源。
	WeComApprovalSceneResourceType = "wecom_approval_scene"
	// WeComApprovalInstanceResourceType 表示企业微信审批申请资源。
	WeComApprovalInstanceResourceType = "wecom_approval"
	// WeComTokenRefreshAdvance 表示 access_token 提前刷新的安全窗口。
	WeComTokenRefreshAdvance = 5 * time.Minute
	// WeComTokenLockTTL 表示单应用并发回源短锁有效期。
	WeComTokenLockTTL = 10 * time.Second
	// WeComTokenWaitTimeout 表示等待其他实例完成 token 回源的最长时间。
	WeComTokenWaitTimeout = 2 * time.Second
	// WeComTokenWaitPollInterval 表示等待其他实例回填 token 时的轮询间隔。
	WeComTokenWaitPollInterval = 100 * time.Millisecond
	// WeComMaxResponseBodyBytes 表示企业微信响应正文允许读取的最大字节数。
	WeComMaxResponseBodyBytes int64 = 1 << 20
	// WeComDefaultHTTPTimeout 表示企业微信外呼默认超时时间。
	WeComDefaultHTTPTimeout = 10 * time.Second
	// WeComDirectoryMaxResponseBodyBytes 表示通讯录响应正文允许读取的最大字节数。
	WeComDirectoryMaxResponseBodyBytes int64 = 10 << 20
	// WeComRootDepartmentID 表示企业微信根部门 ID。
	WeComRootDepartmentID int64 = 1
	// WeComMemberSyncBatchSize 表示可见成员快照批量写入大小。
	WeComMemberSyncBatchSize = 500
	// WeComApprovalMaxAttachmentCount 表示单张企微审批单最多允许的附件数量。
	WeComApprovalMaxAttachmentCount = 6
	// WeComApprovalMaxAttachmentBytes 表示企微普通文件临时素材最大字节数。
	WeComApprovalMaxAttachmentBytes int64 = 20 << 20
	// WeComApprovalInfoMaxPageSize 表示批量获取审批单号接口单页上限。
	WeComApprovalInfoMaxPageSize = 100
	// WeComApprovalInfoMaxWindow 表示批量获取审批单号接口允许的最大时间跨度。
	WeComApprovalInfoMaxWindow = 31 * 24 * time.Hour
	// WeComApprovalRecoveryWindow 表示结果未知时围绕实际提交时刻查询的保守时间窗半径。
	WeComApprovalRecoveryWindow = 5 * time.Minute
	// WeComApprovalSendingLease 表示提交中记录在进入未知恢复前允许占用的最长时间。
	WeComApprovalSendingLease = 5 * time.Minute
	// WeComApprovalPollingInterval 表示未终态审批详情的最短轮询间隔。
	WeComApprovalPollingInterval = 2 * time.Minute
	// WeComApprovalRecoveryBatchSize 表示单次恢复扫描的本地记录上限。
	WeComApprovalRecoveryBatchSize = 100
	// WeComApprovalUnknownRecoveryBatchSize 表示单轮结果未知外部查询的记录上限。
	WeComApprovalUnknownRecoveryBatchSize = 10
)

const (
	// WeComCreatorSourceBound 表示使用系统账号绑定的企微成员发起。
	WeComCreatorSourceBound = "bound"
	// WeComCreatorSourceDefault 表示使用应用配置的默认成员发起。
	WeComCreatorSourceDefault = "default"
)

const (
	// WeComSubmissionStatusReady 表示企微审批等待提交。
	WeComSubmissionStatusReady = 0
	// WeComSubmissionStatusSending 表示提交请求已被 Worker 领取，禁止并发重发。
	WeComSubmissionStatusSending = 1
	// WeComSubmissionStatusSubmitted 表示企微已返回审批单号。
	WeComSubmissionStatusSubmitted = 2
	// WeComSubmissionStatusFailed 表示企微明确确认提交失败。
	WeComSubmissionStatusFailed = 3
	// WeComSubmissionStatusUnknown 表示请求可能已到达企微但结果未知。
	WeComSubmissionStatusUnknown = 4
)
