package com.baiyue.common.audit; import org.springframework.boot.context.properties.ConfigurationProperties; /** * 业务审计配置模型,控制审计开关、输出方式、远程地址、服务名和快照长度限制。 */ @ConfigurationProperties("baiyue.audit") public class AuditProperties { private boolean enabled = true; private String endpoint; private int maxPayloadLength = 16000; private String serviceName = "unknown-service"; private final Outbox outbox = new Outbox(); private final Rocketmq rocketmq = new Rocketmq(); public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } public String getEndpoint() { return endpoint; } public void setEndpoint(String endpoint) { this.endpoint = endpoint; } public int getMaxPayloadLength() { return maxPayloadLength; } public void setMaxPayloadLength(int maxPayloadLength) { this.maxPayloadLength = maxPayloadLength; } public String getServiceName() { return serviceName; } public void setServiceName(String serviceName) { this.serviceName = serviceName; } public Outbox getOutbox() { return outbox; } public Rocketmq getRocketmq() { return rocketmq; } public static class Outbox { private boolean enabled; private boolean publisherEnabled; private int batchSize = 50; private int leaseSeconds = 60; private int maxAttempts = 5; private int maxCompensations = 2; private int compensationDelayMinutes = 30; private int retentionDays = 30; public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } public boolean isPublisherEnabled() { return publisherEnabled; } public void setPublisherEnabled(boolean publisherEnabled) { this.publisherEnabled = publisherEnabled; } public int getBatchSize() { return batchSize; } public void setBatchSize(int batchSize) { this.batchSize = batchSize; } public int getLeaseSeconds() { return leaseSeconds; } public void setLeaseSeconds(int leaseSeconds) { this.leaseSeconds = leaseSeconds; } public int getMaxAttempts() { return maxAttempts; } public void setMaxAttempts(int maxAttempts) { this.maxAttempts = maxAttempts; } public int getMaxCompensations() { return maxCompensations; } public void setMaxCompensations(int maxCompensations) { this.maxCompensations = maxCompensations; } public int getCompensationDelayMinutes() { return compensationDelayMinutes; } public void setCompensationDelayMinutes(int compensationDelayMinutes) { this.compensationDelayMinutes = compensationDelayMinutes; } public int getRetentionDays() { return retentionDays; } public void setRetentionDays(int retentionDays) { this.retentionDays = retentionDays; } } public static class Rocketmq { private String topic = "test-baiyue-audit-event-v1"; private int sendTimeoutMs = 3000; public String getTopic() { return topic; } public void setTopic(String topic) { this.topic = topic; } public int getSendTimeoutMs() { return sendTimeoutMs; } public void setSendTimeoutMs(int sendTimeoutMs) { this.sendTimeoutMs = sendTimeoutMs; } } }