Smail/backend/config/audit_export.go
smail f60d3b0880
Some checks are pending
Security Checks / security (push) Waiting to run
整理前后端与测试构建目录并完善配置和安全引导
统一 frontend、backend、test、test-log 和 out 目录,更新构建、部署及测试入口;纳入配置管理兼容与首次安全引导修复;排除本机配置、密钥和测试产物。
2026-09-05 19:19:52 +08:00

40 lines
1.0 KiB
Go

package config
import (
"encoding/csv"
"fmt"
"strings"
"time"
)
func exportAuditCSV(events []ConfigAuditEvent) ([]byte, error) {
var builder strings.Builder
writer := csv.NewWriter(&builder)
if err := writer.Write([]string{"id", "operation", "section", "actor_id", "actor_role", "from_generation", "to_generation", "target_generation", "changed_fields", "confirmation_method", "result", "created_at"}); err != nil {
return nil, err
}
for _, event := range events {
if err := writer.Write([]string{
event.ID,
string(event.Operation),
string(event.Section),
event.ActorID,
event.ActorRole,
fmt.Sprintf("%d", event.FromGeneration),
fmt.Sprintf("%d", event.ToGeneration),
fmt.Sprintf("%d", event.TargetGeneration),
strings.Join(event.ChangedFields, ","),
event.ConfirmationMethod,
event.Result,
event.CreatedAt.UTC().Format(time.RFC3339Nano),
}); err != nil {
return nil, err
}
}
writer.Flush()
if err := writer.Error(); err != nil {
return nil, err
}
return []byte(builder.String()), nil
}