Rebuild SCUM plugin-owned data flow

This commit is contained in:
npc0-hue
2026-08-18 07:01:17 +08:00
parent 302f1f64b7
commit 98bf944f4c
39 changed files with 1832 additions and 223 deletions
@@ -259,6 +259,11 @@
"items": { "$ref": "#/$defs/gameClientBridgeQueryTemplate" },
"maxItems": 128
},
"logProjections": {
"type": "array",
"items": { "$ref": "#/$defs/gameClientBridgeLogProjection" },
"maxItems": 128
},
"dataPacks": {
"type": "array",
"items": { "$ref": "#/$defs/gameClientBridgeDataPack" },
@@ -356,17 +361,76 @@
"sqlRef": { "$ref": "#/$defs/relativeSqlRef" },
"rowTarget": { "$ref": "#/$defs/pluginDataRowTarget" },
"maxRows": { "type": "integer", "minimum": 1, "maximum": 500 },
"timeoutSeconds": { "type": "integer", "minimum": 1, "maximum": 60 }
"timeoutSeconds": { "type": "integer", "minimum": 1, "maximum": 60 },
"pollIntervalSeconds": { "type": "integer", "minimum": 0, "maximum": 86400 }
}
},
"pluginDataRowTarget": {
"type": "object",
"required": ["collection", "upsertKeys", "columnMappings"],
"required": ["collection", "upsertKeys", "columnMappings", "writeMode"],
"additionalProperties": false,
"properties": {
"collection": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,119}$" },
"upsertKeys": { "type": "array", "items": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, "uniqueItems": true, "minItems": 1, "maxItems": 8 },
"columnMappings": { "type": "object", "minProperties": 1, "maxProperties": 64, "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, "additionalProperties": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" } }
"columnMappings": { "type": "object", "minProperties": 1, "maxProperties": 64, "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, "additionalProperties": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" } },
"writeMode": { "enum": ["merge", "replace"] }
}
},
"gameClientBridgeLogProjection": {
"type": "object",
"required": ["key", "streamKeys", "steps", "correlationFields", "maxInterveningLines", "target"],
"additionalProperties": false,
"properties": {
"key": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,159}$" },
"streamKeys": { "type": "array", "items": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,159}$" }, "uniqueItems": true, "minItems": 1, "maxItems": 64 },
"steps": { "type": "array", "items": { "$ref": "#/$defs/gameClientBridgeLogProjectionStep" }, "minItems": 1, "maxItems": 64 },
"correlationFields": { "type": "array", "items": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]{0,79}$" }, "uniqueItems": true, "minItems": 1, "maxItems": 64 },
"maxInterveningLines": { "type": "integer", "minimum": 0, "maximum": 100000 },
"target": { "$ref": "#/$defs/gameClientBridgeLogProjectionTarget" },
"presence": { "$ref": "#/$defs/gameClientBridgeLogProjectionPresence" }
}
},
"gameClientBridgeLogProjectionStep": {
"type": "object",
"required": ["pattern"],
"additionalProperties": false,
"properties": {
"pattern": { "type": "string", "minLength": 1, "maxLength": 16384 }
}
},
"gameClientBridgeLogProjectionTarget": {
"type": "object",
"required": ["collection", "upsertKeys", "captureMappings"],
"additionalProperties": false,
"properties": {
"collection": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,119}$" },
"upsertKeys": { "type": "array", "items": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, "uniqueItems": true, "minItems": 1, "maxItems": 8 },
"captureMappings": { "type": "object", "minProperties": 1, "maxProperties": 64, "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, "additionalProperties": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]{0,79}$" } },
"fixedValues": { "type": "object", "maxProperties": 64, "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, "additionalProperties": { "type": "string", "maxLength": 4096 } },
"observedAtField": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }
}
},
"gameClientBridgeLogProjectionPresence": {
"type": "object",
"required": ["timestampField", "activeWindowSeconds", "announcement"],
"additionalProperties": false,
"properties": {
"timestampField": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" },
"activeWindowSeconds": { "type": "integer", "minimum": 1, "maximum": 31536000 },
"activityTarget": { "$ref": "#/$defs/gameClientBridgeLogProjectionTarget" },
"announcement": { "$ref": "#/$defs/gameClientBridgeLogProjectionAnnouncement" }
}
},
"gameClientBridgeLogProjectionAnnouncement": {
"type": "object",
"required": ["profileKey", "commandType", "textField", "newTextTemplate", "returningTextTemplate"],
"additionalProperties": false,
"properties": {
"profileKey": { "$ref": "#/$defs/logicalKey" },
"commandType": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,159}$" },
"textField": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" },
"newTextTemplate": { "type": "string", "minLength": 1, "maxLength": 4096 },
"returningTextTemplate": { "type": "string", "minLength": 1, "maxLength": 4096 }
}
},
"gameClientBridgeDataPack": {