feat(jobs)!: SnapOtter 2.0 phase 2 job spine: async queues, worker pools, object storage, admin dashboard (#217)

This commit is contained in:
SnapOtter
2026-06-13 10:17:13 +08:00
parent 1c724d5d21
commit c451b939c7
130 changed files with 10438 additions and 3592 deletions
+39
View File
@@ -270,6 +270,7 @@ export const ar: TranslationKeys = {
name: "منشئ Pipeline",
description: "ربط عدة أدوات في سير عمل واحد",
},
processing: { canceled: "Processing canceled" },
},
toolSettings: {
compress: {
@@ -1446,6 +1447,7 @@ export const ar: TranslationKeys = {
teams: "الفرق",
roles: "الأدوار",
auditLog: "سجل التدقيق",
usage: "Usage",
apiKeys: "مفاتيح API",
aiFeatures: "ميزات AI",
tools: "الأدوات",
@@ -1506,6 +1508,10 @@ export const ar: TranslationKeys = {
maxSplitGrid: "شبكة التقسيم القصوى",
maxPdfPages: "صفحات PDF القصوى",
sessionDuration: "مدة الجلسة",
supportBundleButton: "Download Support Bundle",
supportBundleDescription:
"Download a diagnostic zip with redacted config, logs, and job data for troubleshooting.",
supportBundleFailed: "Failed to download support bundle.",
},
security: {
heading: "الأمان",
@@ -1656,6 +1662,33 @@ export const ar: TranslationKeys = {
hoursAgo: "منذ {hrs} ساعة",
daysAgo: "منذ {days} يوم",
},
usage: {
heading: "Usage",
description: "Local usage statistics from jobs and file storage.",
periodLabel: "Period",
days7: "7 days",
days30: "30 days",
days90: "90 days",
jobsPerDayHeading: "Jobs per day",
topToolsHeading: "Top tools",
perUserHeading: "Per-user volume",
durationsHeading: "Duration percentiles",
noData: "No data for this period.",
dayColumn: "Day",
totalColumn: "Total",
completedColumn: "Completed",
failedColumn: "Failed",
toolColumn: "Tool",
runsColumn: "Runs",
userColumn: "User",
bytesInColumn: "Bytes in",
poolColumn: "Pool",
p50Column: "p50",
p95Column: "p95",
storageHeading: "Library storage",
storageFiles: "{count} files",
unknownUser: "(unknown)",
},
apiKeys: {
heading: "مفاتيح API",
description: "إدارة مفاتيح API للوصول البرمجي إلى SnapOtter.",
@@ -1717,6 +1750,12 @@ export const ar: TranslationKeys = {
repair: "Repair",
uninstall: "Uninstall",
installing: "Installing...",
importBundle: "Import Bundle",
importDescription: "Upload a .tar.gz bundle archive exported from another installation.",
importButton: "Import from file",
importing: "Importing...",
importSuccess: "Bundle imported successfully.",
importError: "Bundle import failed: {error}",
},
about: {
heading: "حول",