Constraint: 在线热修前必须保存当前迭代分支全部有效代码进展 Confidence: medium Scope-risk: broad Directive: 后续修改需保持审计事件与业务事务边界一致 Tested: git diff --cached --check Not-tested: 未运行全量测试,提交用于切换分支前保存既有工作
25 lines
1.1 KiB
Go
25 lines
1.1 KiB
Go
package audit
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/break/junhong_cmp_fiber/internal/model"
|
|
"github.com/break/junhong_cmp_fiber/pkg/constants"
|
|
)
|
|
|
|
// NotificationResource 构造不包含通知正文的安全资源快照。
|
|
func NotificationResource(notification *model.Notification, relation, role string, before, after map[string]any) ResourceInput {
|
|
id := strconv.FormatUint(uint64(notification.ID), 10)
|
|
return ResourceInput{
|
|
Type: constants.AuditResourceNotification, ID: &id, Key: notification.EventID + ":" + notification.RecipientKind + ":" + id,
|
|
DisplayName: notification.Type, Relation: relation, Role: role,
|
|
IdentitySnapshot: map[string]any{
|
|
"id": notification.ID, "event_id": notification.EventID,
|
|
"recipient_kind": notification.RecipientKind, "recipient_id": notification.RecipientID,
|
|
"category": notification.Category, "type": notification.Type, "severity": notification.Severity,
|
|
"ref_type": notification.RefType, "ref_id": notification.RefID, "ref_key": notification.RefKey,
|
|
},
|
|
BeforeData: before, AfterData: after, SubjectVisibility: constants.AuditSubjectInternalOnly,
|
|
}
|
|
}
|