Remove pre-1.0 bridge governance scaffolding

This commit is contained in:
npc0-hue
2026-08-21 09:46:25 +08:00
parent da6c8d607e
commit b5a366e30d
42 changed files with 520 additions and 1066 deletions
+199 -173
View File
@@ -74,7 +74,6 @@
"remote.run.process.start",
"remote.run.process.stop",
"remote.run.logs.transfer",
"remote.run.protected.sql",
"remote.run.rcon.command",
"remote.run.program.command",
"client-manager.deploy",
@@ -99,7 +98,6 @@
"remote.run.process.start",
"remote.run.process.stop",
"remote.run.logs.transfer",
"remote.run.protected.sql",
"remote.run.rcon.command",
"remote.run.program.command"
],
@@ -127,7 +125,6 @@
"type": "companion.diagnostics",
"title": "Collect companion diagnostics",
"permission": "server.game-client.read",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/diagnostics.payload.schema.json",
"resultSchemaRef": "schemas/bridge/diagnostics.result.schema.json",
"timeoutSeconds": 30,
@@ -137,7 +134,6 @@
"type": "player.lookup",
"title": "Look up SCUM player",
"permission": "server.game-client.read",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/player-lookup.payload.schema.json",
"resultSchemaRef": "schemas/bridge/player-lookup.result.schema.json",
"timeoutSeconds": 30,
@@ -147,7 +143,6 @@
"type": "reward.deliver",
"title": "Deliver SCUM reward",
"permission": "server.game-client.command",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/reward-deliver.payload.schema.json",
"resultSchemaRef": "schemas/bridge/reward-deliver.result.schema.json",
"timeoutSeconds": 60,
@@ -157,7 +152,6 @@
"type": "player.notify",
"title": "Notify SCUM player about approved gift",
"permission": "server.game-client.command",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/player-notify.payload.schema.json",
"resultSchemaRef": "schemas/bridge/player-notify.result.schema.json",
"timeoutSeconds": 60,
@@ -167,7 +161,6 @@
"type": "vehicle.spawn",
"title": "Spawn catalogued SCUM vehicle",
"permission": "server.game-client.command",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/vehicle-spawn.payload.schema.json",
"resultSchemaRef": "schemas/bridge/vehicle-spawn.result.schema.json",
"timeoutSeconds": 60,
@@ -177,7 +170,6 @@
"type": "event.start",
"title": "Start SCUM event",
"permission": "server.game-client.command",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/event-start.payload.schema.json",
"resultSchemaRef": "schemas/bridge/event-start.result.schema.json",
"timeoutSeconds": 60,
@@ -187,7 +179,6 @@
"type": "restart.prepare",
"title": "Prepare SCUM restart",
"permission": "server.game-client.maintenance",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/restart-prepare.payload.schema.json",
"resultSchemaRef": "schemas/bridge/restart-prepare.result.schema.json",
"timeoutSeconds": 120,
@@ -197,7 +188,6 @@
"type": "maintenance.prepare",
"title": "Prepare SCUM maintenance",
"permission": "server.game-client.maintenance",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/maintenance-prepare.payload.schema.json",
"resultSchemaRef": "schemas/bridge/maintenance-prepare.result.schema.json",
"timeoutSeconds": 120,
@@ -207,7 +197,6 @@
"type": "game-state.patch",
"title": "Patch SCUM player state",
"permission": "server.game-client.maintenance",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/game-state-patch.payload.schema.json",
"resultSchemaRef": "schemas/bridge/game-state-patch.result.schema.json",
"timeoutSeconds": 120,
@@ -286,9 +275,26 @@
"pollIntervalSeconds": 3,
"rowTarget": {
"collection": "scum_users",
"upsertKeys": ["steamId"],
"upsertKeys": [
"steamId"
],
"writeMode": "merge",
"columnMappings": { "userProfileId": "userProfileId", "steamId": "steamId", "gamePlayerId": "gamePlayerId", "displayName": "displayName", "squadId": "squadId", "squadName": "squadName", "famePoints": "famePoints", "normalBalance": "normalBalance", "goldBalance": "goldBalance", "x": "x", "y": "y", "z": "z", "lastLoginTime": "lastLoginTime", "lastSaveTime": "lastSaveTime" }
"columnMappings": {
"userProfileId": "userProfileId",
"steamId": "steamId",
"gamePlayerId": "gamePlayerId",
"displayName": "displayName",
"squadId": "squadId",
"squadName": "squadName",
"famePoints": "famePoints",
"normalBalance": "normalBalance",
"goldBalance": "goldBalance",
"x": "x",
"y": "y",
"z": "z",
"lastLoginTime": "lastLoginTime",
"lastSaveTime": "lastSaveTime"
}
},
"maxRows": 500,
"timeoutSeconds": 15
@@ -306,9 +312,22 @@
"pollIntervalSeconds": 1800,
"rowTarget": {
"collection": "scum_squads",
"upsertKeys": ["squadId"],
"upsertKeys": [
"squadId"
],
"writeMode": "replace",
"columnMappings": { "squadId": "squadId", "name": "name", "leaderProfileId": "leaderProfileId", "leaderPlayerId": "leaderPlayerId", "memberCount": "memberCount", "score": "score", "memberLimit": "memberLimit", "message": "message", "info": "info", "lastMemberLoginTime": "lastMemberLoginTime" }
"columnMappings": {
"squadId": "squadId",
"name": "name",
"leaderProfileId": "leaderProfileId",
"leaderPlayerId": "leaderPlayerId",
"memberCount": "memberCount",
"score": "score",
"memberLimit": "memberLimit",
"message": "message",
"info": "info",
"lastMemberLoginTime": "lastMemberLoginTime"
}
},
"maxRows": 500,
"timeoutSeconds": 15
@@ -326,9 +345,20 @@
"pollIntervalSeconds": 1800,
"rowTarget": {
"collection": "scum_squad_members",
"upsertKeys": ["squadId", "steamId"],
"upsertKeys": [
"squadId",
"steamId"
],
"writeMode": "replace",
"columnMappings": { "squadId": "squadId", "userProfileId": "userProfileId", "gamePlayerId": "gamePlayerId", "steamId": "steamId", "displayName": "displayName", "rank": "rank", "isLeader": "isLeader" }
"columnMappings": {
"squadId": "squadId",
"userProfileId": "userProfileId",
"gamePlayerId": "gamePlayerId",
"steamId": "steamId",
"displayName": "displayName",
"rank": "rank",
"isLeader": "isLeader"
}
},
"maxRows": 500,
"timeoutSeconds": 15
@@ -346,9 +376,21 @@
"pollIntervalSeconds": 3,
"rowTarget": {
"collection": "scum_vehicles",
"upsertKeys": ["vehicleId"],
"upsertKeys": [
"vehicleId"
],
"writeMode": "replace",
"columnMappings": { "vehicleId": "vehicleId", "entityId": "entityId", "className": "className", "label": "label", "x": "x", "y": "y", "z": "z", "lastAccessTime": "lastAccessTime", "isFunctional": "isFunctional" }
"columnMappings": {
"vehicleId": "vehicleId",
"entityId": "entityId",
"className": "className",
"label": "label",
"x": "x",
"y": "y",
"z": "z",
"lastAccessTime": "lastAccessTime",
"isFunctional": "isFunctional"
}
},
"maxRows": 500,
"timeoutSeconds": 15
@@ -366,9 +408,25 @@
"pollIntervalSeconds": 1800,
"rowTarget": {
"collection": "scum_flags",
"upsertKeys": ["flagId"],
"upsertKeys": [
"flagId"
],
"writeMode": "replace",
"columnMappings": { "flagId": "flagId", "entityId": "entityId", "baseId": "baseId", "ownerProfileId": "ownerProfileId", "ownerPlayerId": "ownerPlayerId", "ownerSquadId": "ownerSquadId", "ownerSquadName": "ownerSquadName", "overtakerProfileId": "overtakerProfileId", "overtakeEndTime": "overtakeEndTime", "ownershipConfidence": "ownershipConfidence", "x": "x", "y": "y", "z": "z" }
"columnMappings": {
"flagId": "flagId",
"entityId": "entityId",
"baseId": "baseId",
"ownerProfileId": "ownerProfileId",
"ownerPlayerId": "ownerPlayerId",
"ownerSquadId": "ownerSquadId",
"ownerSquadName": "ownerSquadName",
"overtakerProfileId": "overtakerProfileId",
"overtakeEndTime": "overtakeEndTime",
"ownershipConfidence": "ownershipConfidence",
"x": "x",
"y": "y",
"z": "z"
}
},
"maxRows": 500,
"timeoutSeconds": 15
@@ -386,9 +444,24 @@
"pollIntervalSeconds": 3,
"rowTarget": {
"collection": "scum_map_points",
"upsertKeys": ["subjectType", "subjectId"],
"upsertKeys": [
"subjectType",
"subjectId"
],
"writeMode": "replace",
"columnMappings": { "subjectType": "subjectType", "subjectId": "subjectId", "userProfileId": "userProfileId", "gamePlayerId": "gamePlayerId", "vehicleId": "vehicleId", "entityId": "entityId", "baseId": "baseId", "x": "x", "y": "y", "z": "z", "observedAt": "observedAt" }
"columnMappings": {
"subjectType": "subjectType",
"subjectId": "subjectId",
"userProfileId": "userProfileId",
"gamePlayerId": "gamePlayerId",
"vehicleId": "vehicleId",
"entityId": "entityId",
"baseId": "baseId",
"x": "x",
"y": "y",
"z": "z",
"observedAt": "observedAt"
}
},
"maxRows": 500,
"timeoutSeconds": 15
@@ -406,9 +479,22 @@
"pollIntervalSeconds": 1800,
"rowTarget": {
"collection": "scum_tasks",
"upsertKeys": ["taskRecordId"],
"upsertKeys": [
"taskRecordId"
],
"writeMode": "replace",
"columnMappings": { "taskRecordId": "taskRecordId", "taskKind": "taskKind", "userProfileId": "userProfileId", "mapId": "mapId", "trackingDataSetId": "trackingDataSetId", "dataAssetPath": "dataAssetPath", "sequenceIndex": "sequenceIndex", "isTracked": "isTracked", "state": "state", "completionDeadline": "completionDeadline" }
"columnMappings": {
"taskRecordId": "taskRecordId",
"taskKind": "taskKind",
"userProfileId": "userProfileId",
"mapId": "mapId",
"trackingDataSetId": "trackingDataSetId",
"dataAssetPath": "dataAssetPath",
"sequenceIndex": "sequenceIndex",
"isTracked": "isTracked",
"state": "state",
"completionDeadline": "completionDeadline"
}
},
"maxRows": 500,
"timeoutSeconds": 15
@@ -426,9 +512,25 @@
"pollIntervalSeconds": 1800,
"rowTarget": {
"collection": "scum_native_event_rounds",
"upsertKeys": ["eventRecordId"],
"upsertKeys": [
"eventRecordId"
],
"writeMode": "replace",
"columnMappings": { "eventRecordId": "eventRecordId", "eventId": "eventId", "roundId": "roundId", "userProfileId": "userProfileId", "startTime": "startTime", "endTime": "endTime", "state": "state", "score": "score", "enemyKills": "enemyKills", "teamKills": "teamKills", "deaths": "deaths", "assists": "assists", "headshots": "headshots" }
"columnMappings": {
"eventRecordId": "eventRecordId",
"eventId": "eventId",
"roundId": "roundId",
"userProfileId": "userProfileId",
"startTime": "startTime",
"endTime": "endTime",
"state": "state",
"score": "score",
"enemyKills": "enemyKills",
"teamKills": "teamKills",
"deaths": "deaths",
"assists": "assists",
"headshots": "headshots"
}
},
"maxRows": 500,
"timeoutSeconds": 15
@@ -446,9 +548,17 @@
"pollIntervalSeconds": 1800,
"rowTarget": {
"collection": "scum_timed_gift_events",
"upsertKeys": ["timedGiftId"],
"upsertKeys": [
"timedGiftId"
],
"writeMode": "replace",
"columnMappings": { "timedGiftId": "timedGiftId", "userProfileId": "userProfileId", "mapId": "mapId", "spawnTime": "spawnTime", "spawnAt": "spawnAt" }
"columnMappings": {
"timedGiftId": "timedGiftId",
"userProfileId": "userProfileId",
"mapId": "mapId",
"spawnTime": "spawnTime",
"spawnAt": "spawnAt"
}
},
"maxRows": 500,
"timeoutSeconds": 15
@@ -457,18 +567,35 @@
"logProjections": [
{
"key": "scum.battleye.login",
"streamKeys": ["scum.console.stdout"],
"streamKeys": [
"scum.console.stdout"
],
"steps": [
{ "pattern": "Player \"(?P<displayName>[^\"]+)\" reported as player (?P<slot>\\d+)" },
{ "pattern": "Player (?P<slot>\\d+) SteamID \\(assumed\\): (?P<steamId>\\d+)" }
{
"pattern": "Player \"(?P<displayName>[^\"]+)\" reported as player (?P<slot>\\d+)"
},
{
"pattern": "Player (?P<slot>\\d+) SteamID \\(assumed\\): (?P<steamId>\\d+)"
}
],
"correlationFields": [
"slot"
],
"correlationFields": ["slot"],
"maxInterveningLines": 8,
"target": {
"collection": "scum_users",
"upsertKeys": ["steamId"],
"captureMappings": { "steamId": "steamId", "displayName": "displayName", "slot": "slot" },
"fixedValues": { "online": "true", "source": "process.stdout" },
"upsertKeys": [
"steamId"
],
"captureMappings": {
"steamId": "steamId",
"displayName": "displayName",
"slot": "slot"
},
"fixedValues": {
"online": "true",
"source": "process.stdout"
},
"observedAtField": "lastLoginObservedAt"
},
"presence": {
@@ -476,9 +603,18 @@
"activeWindowSeconds": 600,
"activityTarget": {
"collection": "scum_activity_events",
"upsertKeys": ["steamId", "observedAt"],
"captureMappings": { "steamId": "steamId", "displayName": "displayName" },
"fixedValues": { "eventType": "login", "source": "process.stdout" },
"upsertKeys": [
"steamId",
"observedAt"
],
"captureMappings": {
"steamId": "steamId",
"displayName": "displayName"
},
"fixedValues": {
"eventType": "login",
"source": "process.stdout"
},
"observedAtField": "observedAt"
}
}
@@ -488,109 +624,16 @@
{
"key": "scum-db-v57",
"databaseUserVersion": 57,
"logParserRefs": ["data-packs/scum-db-v57/log-parsers.json"],
"configMapRefs": ["data-packs/scum-db-v57/config-maps.json"],
"dataRefs": ["data-packs/scum-db-v57/gift-items.json", "data-packs/scum-db-v57/map-geometry.json"]
}
],
"operationTemplates": [
{
"key": "player.fame.set",
"title": "Set SCUM player fame through RCON",
"permission": "server.game-client.command",
"approvalLevel": "none",
"kind": "rcon",
"transportKey": "scum-management",
"targetKey": "scum-management",
"payloadSchemaRef": "schemas/bridge/player-fame-set.payload.schema.json",
"resultSchemaRef": "schemas/bridge/player-rcon-set.result.schema.json",
"timeoutSeconds": 60,
"maxPayloadBytes": 2048
},
{
"key": "player.currency.normal.set",
"title": "Set SCUM normal currency through RCON",
"permission": "server.game-client.command",
"approvalLevel": "none",
"kind": "rcon",
"transportKey": "scum-management",
"targetKey": "scum-management",
"payloadSchemaRef": "schemas/bridge/player-currency-set.payload.schema.json",
"resultSchemaRef": "schemas/bridge/player-rcon-set.result.schema.json",
"timeoutSeconds": 60,
"maxPayloadBytes": 2048
},
{
"key": "player.currency.gold.set",
"title": "Set SCUM gold currency through RCON",
"permission": "server.game-client.command",
"approvalLevel": "none",
"kind": "rcon",
"transportKey": "scum-management",
"targetKey": "scum-management",
"payloadSchemaRef": "schemas/bridge/player-currency-set.payload.schema.json",
"resultSchemaRef": "schemas/bridge/player-rcon-set.result.schema.json",
"timeoutSeconds": 60,
"maxPayloadBytes": 2048
},
{
"key": "player.notify",
"title": "Notify SCUM player through RCON chat",
"permission": "server.game-client.command",
"approvalLevel": "none",
"kind": "rcon",
"transportKey": "scum-management",
"targetKey": "scum-management",
"payloadSchemaRef": "schemas/bridge/player-notify.payload.schema.json",
"resultSchemaRef": "schemas/bridge/player-notify.result.schema.json",
"timeoutSeconds": 60,
"maxPayloadBytes": 2048
},
{
"key": "reward.deliver",
"title": "Deliver SCUM reward through typed command workflow",
"permission": "server.game-client.command",
"approvalLevel": "none",
"kind": "rcon",
"transportKey": "scum-management",
"targetKey": "scum-management",
"payloadSchemaRef": "schemas/bridge/reward-deliver.payload.schema.json",
"resultSchemaRef": "schemas/bridge/reward-deliver.result.schema.json",
"timeoutSeconds": 60,
"maxPayloadBytes": 4096
},
{
"key": "player.attribute.855.set",
"title": "Set SCUM DB-only player attribute 855",
"permission": "server.game-client.maintenance",
"approvalLevel": "platform-admin",
"kind": "sqlite-mutation",
"transportKey": "scum-database",
"targetKey": "scum-database",
"payloadSchemaRef": "schemas/bridge/player-attribute-855-set.payload.schema.json",
"resultSchemaRef": "schemas/bridge/player-attribute-855-set.result.schema.json",
"confirmationSchemaRef": "schemas/bridge/player-attribute-855-set.confirmation.schema.json",
"timeoutSeconds": 120,
"maxPayloadBytes": 4096,
"maxRowsAffected": 1,
"mutation": {
"fieldKey": "855",
"tableKey": "prisoner",
"identityKey": "user_profile_id",
"valueKey": "value",
"confirmationQueryKey": "scum.player.profile",
"allowedValueType": "integer",
"minValue": 0,
"maxValue": 100000
},
"safety": {
"requiresApproval": true,
"requiresOfflinePlayer": true,
"requiresMaintenanceWindow": true,
"requiresBeforeValue": true,
"requiresConfirmation": true,
"backupRequired": true
}
"logParserRefs": [
"data-packs/scum-db-v57/log-parsers.json"
],
"configMapRefs": [
"data-packs/scum-db-v57/config-maps.json"
],
"dataRefs": [
"data-packs/scum-db-v57/gift-items.json",
"data-packs/scum-db-v57/map-geometry.json"
]
}
],
"commandRetentionSeconds": 604800,
@@ -652,13 +695,6 @@
"scum.player.profile",
"scum.positions"
],
"operationKeys": [
"player.fame.set",
"player.currency.normal.set",
"player.currency.gold.set",
"player.notify",
"player.attribute.855.set"
],
"featureKeys": [
"player.intelligence",
"state.patch"
@@ -707,10 +743,6 @@
"commandTypes": [
"reward.deliver"
],
"operationKeys": [
"reward.deliver",
"player.notify"
],
"featureKeys": [
"reward.delivery"
]
@@ -873,12 +905,7 @@
"retire",
"dependency-check"
],
"dependencyPolicy": "required",
"approvalRequired": [
"disable",
"rollback",
"retire"
]
"dependencyPolicy": "required"
},
"pages": [
{
@@ -944,8 +971,8 @@
"trajectory.collect"
]
},
{
"key": "gifts",
{
"key": "gifts",
"title": "礼包管理",
"path": "/gifts",
"bundleKey": "scum-server-plugin",
@@ -957,16 +984,16 @@
"server.game-client.read",
"server.game-client.command"
],
"bridgeActions": [
"server.instances.read",
"remote.access.request"
],
"bridgeActions": [
"server.instances.read",
"remote.access.request"
],
"featureKeys": [
"reward.delivery"
]
},
{
"key": "workflows",
{
"key": "workflows",
"title": "活动管理",
"path": "/activity",
"bundleKey": "scum-server-plugin",
@@ -978,10 +1005,10 @@
"server.game-client.read",
"server.game-client.command"
],
"bridgeActions": [
"server.instances.read",
"remote.access.request"
],
"bridgeActions": [
"server.instances.read",
"remote.access.request"
],
"featureKeys": [
"player.intelligence"
]
@@ -1359,8 +1386,7 @@
"kind": "sqlite",
"targetKey": "scum-database",
"capabilities": [
"remote.run.db.sqlite.query",
"remote.run.protected.sql"
"remote.run.db.sqlite.query"
]
},
{