39 lines
1.6 KiB
Go
39 lines
1.6 KiB
Go
package employeecollection
|
|
|
|
import (
|
|
"context"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
"github.com/break/junhong_cmp_fiber/internal/model"
|
|
)
|
|
|
|
// ApplicationAudit 描述核销申请、审批尝试记录与受影响账单的事实变化。
|
|
type ApplicationAudit struct {
|
|
// EventID 是审计事件稳定标识,同一业务事实重复重放时保持相同值。
|
|
EventID string
|
|
// ActionCode 是已注册的核销申请审计动作码。
|
|
ActionCode string
|
|
// Summary 是给人工阅读的中文摘要。
|
|
Summary string
|
|
// Application 是本次动作后的核销申请事实。
|
|
Application *model.EmployeeCollectionApplication
|
|
// Attempt 是本次动作对应的审批尝试记录。
|
|
Attempt *model.EmployeeCollectionApplicationAttempt
|
|
// Allocations 是本次动作涉及的分摊事实。
|
|
Allocations []*model.EmployeeCollectionApplicationAllocation
|
|
// Bills 是本次动作影响的员工代收款账单事实。
|
|
Bills []*model.EmployeeCollectionBill
|
|
// BeforeData 与 AfterData 是脱敏前后的字段快照,不得包含付款凭证内容。
|
|
BeforeData map[string]any
|
|
AfterData map[string]any
|
|
// CorrelationID 是申请链路标识。
|
|
CorrelationID string
|
|
}
|
|
|
|
// ApplicationAuditWriter 在员工代收款核销事务内追加统一 Audit Event。
|
|
type ApplicationAuditWriter interface {
|
|
WriteEmployeeCollectionApplication(ctx context.Context, tx *gorm.DB, change ApplicationAudit) error
|
|
WriteEmployeeCollectionRecovery(ctx context.Context, tx *gorm.DB, application *model.EmployeeCollectionApplication, attempt *model.EmployeeCollectionApplicationAttempt, instance *model.ApprovalInstance, actorID uint, beforeStatus, action, result string) error
|
|
}
|