feat: implement sensitive operation audit retention (TASK-WP6-04)
Dada P0-A isolated Windows CI / validate-and-package (push) Failing after 59s

This commit is contained in:
suyx
2026-08-04 11:51:09 +08:00
parent c589b8bb4e
commit 1c46311e05
21 changed files with 1670 additions and 11 deletions
+353
View File
@@ -260,6 +260,22 @@
],
"type": "object"
},
"AdminAuditQuery": {
"additionalProperties": false,
"properties": {
"cursor": {
"maxLength": 512,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"limit": {
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"AdminAuthenticatedUser": {
"additionalProperties": false,
"properties": {
@@ -717,6 +733,143 @@
],
"type": "object"
},
"AdminOperationAuditItem": {
"additionalProperties": false,
"properties": {
"actor_ref": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9:._-]{0,159}$",
"type": "string"
},
"actor_type": {
"anyOf": [
{
"enum": [
"system"
],
"type": "string"
},
{
"enum": [
"super_admin"
],
"type": "string"
}
]
},
"after_summary": {
"anyOf": [
{
"maxLength": 2048,
"type": "string"
},
{
"type": "null"
}
]
},
"before_summary": {
"anyOf": [
{
"maxLength": 2048,
"type": "string"
},
{
"type": "null"
}
]
},
"expires_at": {
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{3})?Z$",
"type": "string"
},
"log_id": {
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"type": "string"
},
"occurred_at": {
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{3})?Z$",
"type": "string"
},
"operation_type": {
"maxLength": 160,
"pattern": "^[A-Za-z0-9][A-Za-z0-9:._-]{0,159}$",
"type": "string"
},
"result": {
"anyOf": [
{
"enum": [
"succeeded"
],
"type": "string"
},
{
"enum": [
"failed"
],
"type": "string"
}
]
},
"target_ref": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9:._-]{0,159}$",
"type": "string"
},
"target_type": {
"maxLength": 160,
"pattern": "^[A-Za-z0-9][A-Za-z0-9:._-]{0,159}$",
"type": "string"
}
},
"required": [
"actor_ref",
"actor_type",
"after_summary",
"before_summary",
"expires_at",
"log_id",
"occurred_at",
"operation_type",
"result",
"target_ref",
"target_type"
],
"type": "object"
},
"AdminOperationAuditResponse": {
"additionalProperties": false,
"properties": {
"generated_at": {
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{3})?Z$",
"type": "string"
},
"items": {
"items": {
"$ref": "#/components/schemas/AdminOperationAuditItem"
},
"maxItems": 100,
"type": "array"
},
"next_cursor": {
"anyOf": [
{
"maxLength": 512,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"generated_at",
"items",
"next_cursor"
],
"type": "object"
},
"AdminOverviewResponse": {
"additionalProperties": false,
"properties": {
@@ -4471,6 +4624,90 @@
],
"type": "object"
},
"PrivateContentAccessAuditItem": {
"additionalProperties": false,
"properties": {
"actor_ref": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9:._-]{0,159}$",
"type": "string"
},
"content_type": {
"anyOf": [
{
"enum": [
"image"
],
"type": "string"
},
{
"enum": [
"prompt"
],
"type": "string"
}
]
},
"expires_at": {
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{3})?Z$",
"type": "string"
},
"log_id": {
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"type": "string"
},
"occurred_at": {
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{3})?Z$",
"type": "string"
},
"target_ref": {
"pattern": "^[A-Za-z0-9][A-Za-z0-9:._-]{0,159}$",
"type": "string"
}
},
"required": [
"actor_ref",
"content_type",
"expires_at",
"log_id",
"occurred_at",
"target_ref"
],
"type": "object"
},
"PrivateContentAccessAuditResponse": {
"additionalProperties": false,
"properties": {
"generated_at": {
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{3})?Z$",
"type": "string"
},
"items": {
"items": {
"$ref": "#/components/schemas/PrivateContentAccessAuditItem"
},
"maxItems": 100,
"type": "array"
},
"next_cursor": {
"anyOf": [
{
"maxLength": 512,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"generated_at",
"items",
"next_cursor"
],
"type": "object"
},
"PrivateContentGenerationParams": {
"additionalProperties": false,
"properties": {
@@ -6214,6 +6451,122 @@
]
}
},
"/api/v1/admin/audit/operations": {
"get": {
"operationId": "getAdminOperationAudit",
"parameters": [
{
"in": "query",
"name": "cursor",
"required": false,
"schema": {
"maxLength": 512,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"maximum": 100,
"minimum": 1,
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AdminOperationAuditResponse"
}
}
},
"description": "Default Response"
},
"400": {
"description": "Default Response"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorEnvelope"
}
}
},
"description": "Default Response"
},
"503": {
"description": "Default Response"
}
},
"tags": [
"Admin Operations"
]
}
},
"/api/v1/admin/audit/private-content": {
"get": {
"operationId": "getPrivateContentAccessAudit",
"parameters": [
{
"in": "query",
"name": "cursor",
"required": false,
"schema": {
"maxLength": 512,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"required": false,
"schema": {
"maximum": 100,
"minimum": 1,
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateContentAccessAuditResponse"
}
}
},
"description": "Default Response"
},
"400": {
"description": "Default Response"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorEnvelope"
}
}
},
"description": "Default Response"
},
"503": {
"description": "Default Response"
}
},
"tags": [
"Admin Operations"
]
}
},
"/api/v1/admin/diagnostics": {
"get": {
"operationId": "getAdminDiagnostics",