feat(ugc): staff reprocessing of a property goes to the front of the queue

/reprocessproperty and the dashboard's Reprocess all models mark the
property's models as priority (ugc.priority, migrations mysql 94 and sqlite
77). The UGC server takes priority models first, polls them even when its
queue is full, and puts them at its front, as it does cars and rockets. The
flag clears once a model is made.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-28 12:26:56 -05:00
parent 8d57cc82cf
commit 9e4f2818c3
12 changed files with 49 additions and 18 deletions

View File

@@ -78,10 +78,12 @@ public:
LWOOBJID id{};
std::string lxfml;
uint32_t attempts{};
bool priority{}; // staff asked for it to be made again: before any other model
};
// Up to `limit` pending models whose quiet period is over (process_after), the least tried and then the newest first
virtual std::vector<PendingModel> GetUgcModelsToProcess(const uint32_t limit) = 0;
// Up to `limit` pending models whose quiet period is over (process_after): the priority ones first, then the least
// tried and then the newest. `priorityOnly`: only the priority ones.
virtual std::vector<PendingModel> GetUgcModelsToProcess(const uint32_t limit, const bool priorityOnly = false) = 0;
// Ends the quiet period of a waiting model (a client asked for it), or of all a character's waiting models (they
// left the property)
@@ -110,7 +112,8 @@ public:
// with `failedOnly`). Returns how many rows changed.
virtual uint64_t ResetUgcModelProcessing(const std::optional<LWOOBJID> id, const bool failedOnly) = 0;
// Sets every model placed on a property back to pending with no attempts. Returns how many rows changed.
// Sets every model placed on a property back to pending with no attempts, as priority (staff asked for it). Returns
// how many rows changed.
virtual uint64_t ResetPropertyUgcModelProcessing(const LWOOBJID propertyId) = 0;
// A page of models (all, or those in `state`), the newest first; `search` (when not empty) matches the model's id