diff --git a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/audit/AuditController.java b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/audit/AuditController.java index 469180f..0dcfdc9 100644 --- a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/audit/AuditController.java +++ b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/audit/AuditController.java @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/api/v1/audit-events") @@ -77,6 +78,14 @@ public class AuditController { .body(resource); } + @GetMapping("/retention-config") + public ResponseEntity> getRetentionConfig() { + return ResponseEntity.ok(Map.of( + "retentionDays", 365, + "autoCleanup", false + )); + } + private static String escapeCsv(String value) { if (value == null) return ""; if (value.contains(",") || value.contains("\"") || value.contains("\n")) { diff --git a/web/delivery-platform-ui/src/api/platform.js b/web/delivery-platform-ui/src/api/platform.js index 0c9d811..acbdaf6 100644 --- a/web/delivery-platform-ui/src/api/platform.js +++ b/web/delivery-platform-ui/src/api/platform.js @@ -135,6 +135,10 @@ export function searchAuditEvents(params) { * M10-F03 审计导出 CSV:`GET /api/v1/audit-events/export`。 * @param {{ entityType?: string, entityId?: string | number, from?: string, to?: string }} params */ +export function getAuditRetentionConfig() { + return axios.get('/api/v1/audit-events/retention-config'); +} + export function exportAuditEvents(params) { return axios.get("/api/v1/audit-events/export", { params, responseType: 'blob' }); } diff --git a/web/delivery-platform-ui/src/router/index.js b/web/delivery-platform-ui/src/router/index.js index ed5deff..ce8b354 100644 --- a/web/delivery-platform-ui/src/router/index.js +++ b/web/delivery-platform-ui/src/router/index.js @@ -206,6 +206,12 @@ const routes = [ component: () => import("../views/AuditSearchView.vue"), meta: { roles: ["SYS_ADMIN"], title: "审计日志" }, }, + { + path: "audit/retention", + name: "audit-retention", + component: () => import("../views/AuditRetentionView.vue"), + meta: { roles: ["SYS_ADMIN"], title: "审计留存" }, + }, { path: "admin/params", name: "system-params", diff --git a/web/delivery-platform-ui/src/views/AuditRetentionView.vue b/web/delivery-platform-ui/src/views/AuditRetentionView.vue new file mode 100644 index 0000000..ca41da9 --- /dev/null +++ b/web/delivery-platform-ui/src/views/AuditRetentionView.vue @@ -0,0 +1,51 @@ + + + + +