feat(cv): qualify templates and reliable local import processing

This commit is contained in:
cesnimda
2026-10-28 14:36:12 +01:00
parent 73ea888375
commit 3f4db8ca81
69 changed files with 2597 additions and 180 deletions
+8 -1
View File
@@ -107,7 +107,8 @@ public sealed class UserOperationStore(JobTrackerContext db, TimeProvider timePr
public async Task<UserOperationLease?> ClaimNextAsync(
TimeSpan leaseDuration,
CancellationToken cancellationToken,
IReadOnlyCollection<string>? allowedTaskTypes = null)
IReadOnlyCollection<string>? allowedTaskTypes = null,
bool documentImportsOnly = false)
{
if (db.CurrentUserId is not null) throw new InvalidOperationException("Worker claims require a neutral background scope.");
ValidateLeaseDuration(leaseDuration);
@@ -123,6 +124,12 @@ public sealed class UserOperationStore(JobTrackerContext db, TimeProvider timePr
(operation.DeadlineAtUtc == null || operation.DeadlineAtUtc > now));
if (allowedTaskTypes is { Count: > 0 })
candidates = candidates.Where(operation => allowedTaskTypes.Contains(operation.TaskType));
if (documentImportsOnly)
candidates = candidates.Where(operation => operation.TaskType == CvProcessingQueue.TaskType &&
operation.SubjectType == CvProcessingQueue.SubjectType &&
db.CvExtractionRuns.IgnoreQueryFilters().Any(run => run.OwnerUserId == operation.OwnerUserId &&
run.Id.ToString() == operation.SubjectId && run.ParserVersion == Controllers.ProfileCvController.DocumentParserVersion &&
run.Trigger == "document_import"));
var candidateIds = await candidates
.OrderByDescending(operation => operation.Priority)
.ThenBy(operation => operation.CreatedAtUtc)