mirror of
https://github.com/immich-app/immich.git
synced 2025-06-01 04:36:19 -04:00
chore(web): update job dashboard (#5745)
* rename clip encoding to smart search * update job subtitles * update api * update smart search job title and subtitle * fix `getJobName` * change smart search icon * formatting * wording * update reference to clip * formatting * update reference to Encode CLIP
This commit is contained in:
parent
a2deba4734
commit
cb1201e690
26
cli/src/api/open-api/api.ts
generated
26
cli/src/api/open-api/api.ts
generated
@ -355,12 +355,6 @@ export interface AllJobStatusResponseDto {
|
|||||||
* @memberof AllJobStatusResponseDto
|
* @memberof AllJobStatusResponseDto
|
||||||
*/
|
*/
|
||||||
'backgroundTask': JobStatusDto;
|
'backgroundTask': JobStatusDto;
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @type {JobStatusDto}
|
|
||||||
* @memberof AllJobStatusResponseDto
|
|
||||||
*/
|
|
||||||
'clipEncoding': JobStatusDto;
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobStatusDto}
|
* @type {JobStatusDto}
|
||||||
@ -403,6 +397,12 @@ export interface AllJobStatusResponseDto {
|
|||||||
* @memberof AllJobStatusResponseDto
|
* @memberof AllJobStatusResponseDto
|
||||||
*/
|
*/
|
||||||
'sidecar': JobStatusDto;
|
'sidecar': JobStatusDto;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {JobStatusDto}
|
||||||
|
* @memberof AllJobStatusResponseDto
|
||||||
|
*/
|
||||||
|
'smartSearch': JobStatusDto;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobStatusDto}
|
* @type {JobStatusDto}
|
||||||
@ -2017,7 +2017,7 @@ export const JobName = {
|
|||||||
VideoConversion: 'videoConversion',
|
VideoConversion: 'videoConversion',
|
||||||
ObjectTagging: 'objectTagging',
|
ObjectTagging: 'objectTagging',
|
||||||
RecognizeFaces: 'recognizeFaces',
|
RecognizeFaces: 'recognizeFaces',
|
||||||
ClipEncoding: 'clipEncoding',
|
SmartSearch: 'smartSearch',
|
||||||
BackgroundTask: 'backgroundTask',
|
BackgroundTask: 'backgroundTask',
|
||||||
StorageTemplateMigration: 'storageTemplateMigration',
|
StorageTemplateMigration: 'storageTemplateMigration',
|
||||||
Migration: 'migration',
|
Migration: 'migration',
|
||||||
@ -3785,12 +3785,6 @@ export interface SystemConfigJobDto {
|
|||||||
* @memberof SystemConfigJobDto
|
* @memberof SystemConfigJobDto
|
||||||
*/
|
*/
|
||||||
'backgroundTask': JobSettingsDto;
|
'backgroundTask': JobSettingsDto;
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @type {JobSettingsDto}
|
|
||||||
* @memberof SystemConfigJobDto
|
|
||||||
*/
|
|
||||||
'clipEncoding': JobSettingsDto;
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobSettingsDto}
|
* @type {JobSettingsDto}
|
||||||
@ -3833,6 +3827,12 @@ export interface SystemConfigJobDto {
|
|||||||
* @memberof SystemConfigJobDto
|
* @memberof SystemConfigJobDto
|
||||||
*/
|
*/
|
||||||
'sidecar': JobSettingsDto;
|
'sidecar': JobSettingsDto;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {JobSettingsDto}
|
||||||
|
* @memberof SystemConfigJobDto
|
||||||
|
*/
|
||||||
|
'smartSearch': JobSettingsDto;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobSettingsDto}
|
* @type {JobSettingsDto}
|
||||||
|
@ -26,7 +26,7 @@ Immich optionally uses machine learning for several features. However, it can be
|
|||||||
|
|
||||||
### How can I lower Immich's CPU usage?
|
### How can I lower Immich's CPU usage?
|
||||||
|
|
||||||
The initial backup is the most intensive due to the number of jobs running. The most CPU-intensive ones are transcoding and machine learning jobs (Tag Images, Encode CLIP, Recognize Faces), and to a lesser extent thumbnail generation. Here are some ways to lower their CPU usage:
|
The initial backup is the most intensive due to the number of jobs running. The most CPU-intensive ones are transcoding and machine learning jobs (Tag Images, Smart Search, Recognize Faces), and to a lesser extent thumbnail generation. Here are some ways to lower their CPU usage:
|
||||||
|
|
||||||
- Lower the job concurrency for these jobs to 1.
|
- Lower the job concurrency for these jobs to 1.
|
||||||
- Under Settings > Transcoding Settings > Threads, set the number of threads to a low number like 1 or 2.
|
- Under Settings > Transcoding Settings > Threads, set the number of threads to a low number like 1 or 2.
|
||||||
|
2
mobile/openapi/doc/AllJobStatusResponseDto.md
generated
2
mobile/openapi/doc/AllJobStatusResponseDto.md
generated
@ -9,7 +9,6 @@ import 'package:openapi/api.dart';
|
|||||||
Name | Type | Description | Notes
|
Name | Type | Description | Notes
|
||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**backgroundTask** | [**JobStatusDto**](JobStatusDto.md) | |
|
**backgroundTask** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
**clipEncoding** | [**JobStatusDto**](JobStatusDto.md) | |
|
|
||||||
**library_** | [**JobStatusDto**](JobStatusDto.md) | |
|
**library_** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
**metadataExtraction** | [**JobStatusDto**](JobStatusDto.md) | |
|
**metadataExtraction** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
**migration** | [**JobStatusDto**](JobStatusDto.md) | |
|
**migration** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
@ -17,6 +16,7 @@ Name | Type | Description | Notes
|
|||||||
**recognizeFaces** | [**JobStatusDto**](JobStatusDto.md) | |
|
**recognizeFaces** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
**search** | [**JobStatusDto**](JobStatusDto.md) | |
|
**search** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
**sidecar** | [**JobStatusDto**](JobStatusDto.md) | |
|
**sidecar** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
|
**smartSearch** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
**storageTemplateMigration** | [**JobStatusDto**](JobStatusDto.md) | |
|
**storageTemplateMigration** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
**thumbnailGeneration** | [**JobStatusDto**](JobStatusDto.md) | |
|
**thumbnailGeneration** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
**videoConversion** | [**JobStatusDto**](JobStatusDto.md) | |
|
**videoConversion** | [**JobStatusDto**](JobStatusDto.md) | |
|
||||||
|
2
mobile/openapi/doc/SystemConfigJobDto.md
generated
2
mobile/openapi/doc/SystemConfigJobDto.md
generated
@ -9,7 +9,6 @@ import 'package:openapi/api.dart';
|
|||||||
Name | Type | Description | Notes
|
Name | Type | Description | Notes
|
||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**backgroundTask** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
**backgroundTask** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
**clipEncoding** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
|
||||||
**library_** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
**library_** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
**metadataExtraction** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
**metadataExtraction** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
**migration** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
**migration** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
@ -17,6 +16,7 @@ Name | Type | Description | Notes
|
|||||||
**recognizeFaces** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
**recognizeFaces** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
**search** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
**search** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
**sidecar** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
**sidecar** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
|
**smartSearch** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
**storageTemplateMigration** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
**storageTemplateMigration** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
**thumbnailGeneration** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
**thumbnailGeneration** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
**videoConversion** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
**videoConversion** | [**JobSettingsDto**](JobSettingsDto.md) | |
|
||||||
|
@ -14,7 +14,6 @@ class AllJobStatusResponseDto {
|
|||||||
/// Returns a new [AllJobStatusResponseDto] instance.
|
/// Returns a new [AllJobStatusResponseDto] instance.
|
||||||
AllJobStatusResponseDto({
|
AllJobStatusResponseDto({
|
||||||
required this.backgroundTask,
|
required this.backgroundTask,
|
||||||
required this.clipEncoding,
|
|
||||||
required this.library_,
|
required this.library_,
|
||||||
required this.metadataExtraction,
|
required this.metadataExtraction,
|
||||||
required this.migration,
|
required this.migration,
|
||||||
@ -22,6 +21,7 @@ class AllJobStatusResponseDto {
|
|||||||
required this.recognizeFaces,
|
required this.recognizeFaces,
|
||||||
required this.search,
|
required this.search,
|
||||||
required this.sidecar,
|
required this.sidecar,
|
||||||
|
required this.smartSearch,
|
||||||
required this.storageTemplateMigration,
|
required this.storageTemplateMigration,
|
||||||
required this.thumbnailGeneration,
|
required this.thumbnailGeneration,
|
||||||
required this.videoConversion,
|
required this.videoConversion,
|
||||||
@ -29,8 +29,6 @@ class AllJobStatusResponseDto {
|
|||||||
|
|
||||||
JobStatusDto backgroundTask;
|
JobStatusDto backgroundTask;
|
||||||
|
|
||||||
JobStatusDto clipEncoding;
|
|
||||||
|
|
||||||
JobStatusDto library_;
|
JobStatusDto library_;
|
||||||
|
|
||||||
JobStatusDto metadataExtraction;
|
JobStatusDto metadataExtraction;
|
||||||
@ -45,6 +43,8 @@ class AllJobStatusResponseDto {
|
|||||||
|
|
||||||
JobStatusDto sidecar;
|
JobStatusDto sidecar;
|
||||||
|
|
||||||
|
JobStatusDto smartSearch;
|
||||||
|
|
||||||
JobStatusDto storageTemplateMigration;
|
JobStatusDto storageTemplateMigration;
|
||||||
|
|
||||||
JobStatusDto thumbnailGeneration;
|
JobStatusDto thumbnailGeneration;
|
||||||
@ -54,7 +54,6 @@ class AllJobStatusResponseDto {
|
|||||||
@override
|
@override
|
||||||
bool operator ==(Object other) => identical(this, other) || other is AllJobStatusResponseDto &&
|
bool operator ==(Object other) => identical(this, other) || other is AllJobStatusResponseDto &&
|
||||||
other.backgroundTask == backgroundTask &&
|
other.backgroundTask == backgroundTask &&
|
||||||
other.clipEncoding == clipEncoding &&
|
|
||||||
other.library_ == library_ &&
|
other.library_ == library_ &&
|
||||||
other.metadataExtraction == metadataExtraction &&
|
other.metadataExtraction == metadataExtraction &&
|
||||||
other.migration == migration &&
|
other.migration == migration &&
|
||||||
@ -62,6 +61,7 @@ class AllJobStatusResponseDto {
|
|||||||
other.recognizeFaces == recognizeFaces &&
|
other.recognizeFaces == recognizeFaces &&
|
||||||
other.search == search &&
|
other.search == search &&
|
||||||
other.sidecar == sidecar &&
|
other.sidecar == sidecar &&
|
||||||
|
other.smartSearch == smartSearch &&
|
||||||
other.storageTemplateMigration == storageTemplateMigration &&
|
other.storageTemplateMigration == storageTemplateMigration &&
|
||||||
other.thumbnailGeneration == thumbnailGeneration &&
|
other.thumbnailGeneration == thumbnailGeneration &&
|
||||||
other.videoConversion == videoConversion;
|
other.videoConversion == videoConversion;
|
||||||
@ -70,7 +70,6 @@ class AllJobStatusResponseDto {
|
|||||||
int get hashCode =>
|
int get hashCode =>
|
||||||
// ignore: unnecessary_parenthesis
|
// ignore: unnecessary_parenthesis
|
||||||
(backgroundTask.hashCode) +
|
(backgroundTask.hashCode) +
|
||||||
(clipEncoding.hashCode) +
|
|
||||||
(library_.hashCode) +
|
(library_.hashCode) +
|
||||||
(metadataExtraction.hashCode) +
|
(metadataExtraction.hashCode) +
|
||||||
(migration.hashCode) +
|
(migration.hashCode) +
|
||||||
@ -78,17 +77,17 @@ class AllJobStatusResponseDto {
|
|||||||
(recognizeFaces.hashCode) +
|
(recognizeFaces.hashCode) +
|
||||||
(search.hashCode) +
|
(search.hashCode) +
|
||||||
(sidecar.hashCode) +
|
(sidecar.hashCode) +
|
||||||
|
(smartSearch.hashCode) +
|
||||||
(storageTemplateMigration.hashCode) +
|
(storageTemplateMigration.hashCode) +
|
||||||
(thumbnailGeneration.hashCode) +
|
(thumbnailGeneration.hashCode) +
|
||||||
(videoConversion.hashCode);
|
(videoConversion.hashCode);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => 'AllJobStatusResponseDto[backgroundTask=$backgroundTask, clipEncoding=$clipEncoding, library_=$library_, metadataExtraction=$metadataExtraction, migration=$migration, objectTagging=$objectTagging, recognizeFaces=$recognizeFaces, search=$search, sidecar=$sidecar, storageTemplateMigration=$storageTemplateMigration, thumbnailGeneration=$thumbnailGeneration, videoConversion=$videoConversion]';
|
String toString() => 'AllJobStatusResponseDto[backgroundTask=$backgroundTask, library_=$library_, metadataExtraction=$metadataExtraction, migration=$migration, objectTagging=$objectTagging, recognizeFaces=$recognizeFaces, search=$search, sidecar=$sidecar, smartSearch=$smartSearch, storageTemplateMigration=$storageTemplateMigration, thumbnailGeneration=$thumbnailGeneration, videoConversion=$videoConversion]';
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
final json = <String, dynamic>{};
|
final json = <String, dynamic>{};
|
||||||
json[r'backgroundTask'] = this.backgroundTask;
|
json[r'backgroundTask'] = this.backgroundTask;
|
||||||
json[r'clipEncoding'] = this.clipEncoding;
|
|
||||||
json[r'library'] = this.library_;
|
json[r'library'] = this.library_;
|
||||||
json[r'metadataExtraction'] = this.metadataExtraction;
|
json[r'metadataExtraction'] = this.metadataExtraction;
|
||||||
json[r'migration'] = this.migration;
|
json[r'migration'] = this.migration;
|
||||||
@ -96,6 +95,7 @@ class AllJobStatusResponseDto {
|
|||||||
json[r'recognizeFaces'] = this.recognizeFaces;
|
json[r'recognizeFaces'] = this.recognizeFaces;
|
||||||
json[r'search'] = this.search;
|
json[r'search'] = this.search;
|
||||||
json[r'sidecar'] = this.sidecar;
|
json[r'sidecar'] = this.sidecar;
|
||||||
|
json[r'smartSearch'] = this.smartSearch;
|
||||||
json[r'storageTemplateMigration'] = this.storageTemplateMigration;
|
json[r'storageTemplateMigration'] = this.storageTemplateMigration;
|
||||||
json[r'thumbnailGeneration'] = this.thumbnailGeneration;
|
json[r'thumbnailGeneration'] = this.thumbnailGeneration;
|
||||||
json[r'videoConversion'] = this.videoConversion;
|
json[r'videoConversion'] = this.videoConversion;
|
||||||
@ -111,7 +111,6 @@ class AllJobStatusResponseDto {
|
|||||||
|
|
||||||
return AllJobStatusResponseDto(
|
return AllJobStatusResponseDto(
|
||||||
backgroundTask: JobStatusDto.fromJson(json[r'backgroundTask'])!,
|
backgroundTask: JobStatusDto.fromJson(json[r'backgroundTask'])!,
|
||||||
clipEncoding: JobStatusDto.fromJson(json[r'clipEncoding'])!,
|
|
||||||
library_: JobStatusDto.fromJson(json[r'library'])!,
|
library_: JobStatusDto.fromJson(json[r'library'])!,
|
||||||
metadataExtraction: JobStatusDto.fromJson(json[r'metadataExtraction'])!,
|
metadataExtraction: JobStatusDto.fromJson(json[r'metadataExtraction'])!,
|
||||||
migration: JobStatusDto.fromJson(json[r'migration'])!,
|
migration: JobStatusDto.fromJson(json[r'migration'])!,
|
||||||
@ -119,6 +118,7 @@ class AllJobStatusResponseDto {
|
|||||||
recognizeFaces: JobStatusDto.fromJson(json[r'recognizeFaces'])!,
|
recognizeFaces: JobStatusDto.fromJson(json[r'recognizeFaces'])!,
|
||||||
search: JobStatusDto.fromJson(json[r'search'])!,
|
search: JobStatusDto.fromJson(json[r'search'])!,
|
||||||
sidecar: JobStatusDto.fromJson(json[r'sidecar'])!,
|
sidecar: JobStatusDto.fromJson(json[r'sidecar'])!,
|
||||||
|
smartSearch: JobStatusDto.fromJson(json[r'smartSearch'])!,
|
||||||
storageTemplateMigration: JobStatusDto.fromJson(json[r'storageTemplateMigration'])!,
|
storageTemplateMigration: JobStatusDto.fromJson(json[r'storageTemplateMigration'])!,
|
||||||
thumbnailGeneration: JobStatusDto.fromJson(json[r'thumbnailGeneration'])!,
|
thumbnailGeneration: JobStatusDto.fromJson(json[r'thumbnailGeneration'])!,
|
||||||
videoConversion: JobStatusDto.fromJson(json[r'videoConversion'])!,
|
videoConversion: JobStatusDto.fromJson(json[r'videoConversion'])!,
|
||||||
@ -170,7 +170,6 @@ class AllJobStatusResponseDto {
|
|||||||
/// The list of required keys that must be present in a JSON.
|
/// The list of required keys that must be present in a JSON.
|
||||||
static const requiredKeys = <String>{
|
static const requiredKeys = <String>{
|
||||||
'backgroundTask',
|
'backgroundTask',
|
||||||
'clipEncoding',
|
|
||||||
'library',
|
'library',
|
||||||
'metadataExtraction',
|
'metadataExtraction',
|
||||||
'migration',
|
'migration',
|
||||||
@ -178,6 +177,7 @@ class AllJobStatusResponseDto {
|
|||||||
'recognizeFaces',
|
'recognizeFaces',
|
||||||
'search',
|
'search',
|
||||||
'sidecar',
|
'sidecar',
|
||||||
|
'smartSearch',
|
||||||
'storageTemplateMigration',
|
'storageTemplateMigration',
|
||||||
'thumbnailGeneration',
|
'thumbnailGeneration',
|
||||||
'videoConversion',
|
'videoConversion',
|
||||||
|
6
mobile/openapi/lib/model/job_name.dart
generated
6
mobile/openapi/lib/model/job_name.dart
generated
@ -28,7 +28,7 @@ class JobName {
|
|||||||
static const videoConversion = JobName._(r'videoConversion');
|
static const videoConversion = JobName._(r'videoConversion');
|
||||||
static const objectTagging = JobName._(r'objectTagging');
|
static const objectTagging = JobName._(r'objectTagging');
|
||||||
static const recognizeFaces = JobName._(r'recognizeFaces');
|
static const recognizeFaces = JobName._(r'recognizeFaces');
|
||||||
static const clipEncoding = JobName._(r'clipEncoding');
|
static const smartSearch = JobName._(r'smartSearch');
|
||||||
static const backgroundTask = JobName._(r'backgroundTask');
|
static const backgroundTask = JobName._(r'backgroundTask');
|
||||||
static const storageTemplateMigration = JobName._(r'storageTemplateMigration');
|
static const storageTemplateMigration = JobName._(r'storageTemplateMigration');
|
||||||
static const migration = JobName._(r'migration');
|
static const migration = JobName._(r'migration');
|
||||||
@ -43,7 +43,7 @@ class JobName {
|
|||||||
videoConversion,
|
videoConversion,
|
||||||
objectTagging,
|
objectTagging,
|
||||||
recognizeFaces,
|
recognizeFaces,
|
||||||
clipEncoding,
|
smartSearch,
|
||||||
backgroundTask,
|
backgroundTask,
|
||||||
storageTemplateMigration,
|
storageTemplateMigration,
|
||||||
migration,
|
migration,
|
||||||
@ -93,7 +93,7 @@ class JobNameTypeTransformer {
|
|||||||
case r'videoConversion': return JobName.videoConversion;
|
case r'videoConversion': return JobName.videoConversion;
|
||||||
case r'objectTagging': return JobName.objectTagging;
|
case r'objectTagging': return JobName.objectTagging;
|
||||||
case r'recognizeFaces': return JobName.recognizeFaces;
|
case r'recognizeFaces': return JobName.recognizeFaces;
|
||||||
case r'clipEncoding': return JobName.clipEncoding;
|
case r'smartSearch': return JobName.smartSearch;
|
||||||
case r'backgroundTask': return JobName.backgroundTask;
|
case r'backgroundTask': return JobName.backgroundTask;
|
||||||
case r'storageTemplateMigration': return JobName.storageTemplateMigration;
|
case r'storageTemplateMigration': return JobName.storageTemplateMigration;
|
||||||
case r'migration': return JobName.migration;
|
case r'migration': return JobName.migration;
|
||||||
|
18
mobile/openapi/lib/model/system_config_job_dto.dart
generated
18
mobile/openapi/lib/model/system_config_job_dto.dart
generated
@ -14,7 +14,6 @@ class SystemConfigJobDto {
|
|||||||
/// Returns a new [SystemConfigJobDto] instance.
|
/// Returns a new [SystemConfigJobDto] instance.
|
||||||
SystemConfigJobDto({
|
SystemConfigJobDto({
|
||||||
required this.backgroundTask,
|
required this.backgroundTask,
|
||||||
required this.clipEncoding,
|
|
||||||
required this.library_,
|
required this.library_,
|
||||||
required this.metadataExtraction,
|
required this.metadataExtraction,
|
||||||
required this.migration,
|
required this.migration,
|
||||||
@ -22,6 +21,7 @@ class SystemConfigJobDto {
|
|||||||
required this.recognizeFaces,
|
required this.recognizeFaces,
|
||||||
required this.search,
|
required this.search,
|
||||||
required this.sidecar,
|
required this.sidecar,
|
||||||
|
required this.smartSearch,
|
||||||
required this.storageTemplateMigration,
|
required this.storageTemplateMigration,
|
||||||
required this.thumbnailGeneration,
|
required this.thumbnailGeneration,
|
||||||
required this.videoConversion,
|
required this.videoConversion,
|
||||||
@ -29,8 +29,6 @@ class SystemConfigJobDto {
|
|||||||
|
|
||||||
JobSettingsDto backgroundTask;
|
JobSettingsDto backgroundTask;
|
||||||
|
|
||||||
JobSettingsDto clipEncoding;
|
|
||||||
|
|
||||||
JobSettingsDto library_;
|
JobSettingsDto library_;
|
||||||
|
|
||||||
JobSettingsDto metadataExtraction;
|
JobSettingsDto metadataExtraction;
|
||||||
@ -45,6 +43,8 @@ class SystemConfigJobDto {
|
|||||||
|
|
||||||
JobSettingsDto sidecar;
|
JobSettingsDto sidecar;
|
||||||
|
|
||||||
|
JobSettingsDto smartSearch;
|
||||||
|
|
||||||
JobSettingsDto storageTemplateMigration;
|
JobSettingsDto storageTemplateMigration;
|
||||||
|
|
||||||
JobSettingsDto thumbnailGeneration;
|
JobSettingsDto thumbnailGeneration;
|
||||||
@ -54,7 +54,6 @@ class SystemConfigJobDto {
|
|||||||
@override
|
@override
|
||||||
bool operator ==(Object other) => identical(this, other) || other is SystemConfigJobDto &&
|
bool operator ==(Object other) => identical(this, other) || other is SystemConfigJobDto &&
|
||||||
other.backgroundTask == backgroundTask &&
|
other.backgroundTask == backgroundTask &&
|
||||||
other.clipEncoding == clipEncoding &&
|
|
||||||
other.library_ == library_ &&
|
other.library_ == library_ &&
|
||||||
other.metadataExtraction == metadataExtraction &&
|
other.metadataExtraction == metadataExtraction &&
|
||||||
other.migration == migration &&
|
other.migration == migration &&
|
||||||
@ -62,6 +61,7 @@ class SystemConfigJobDto {
|
|||||||
other.recognizeFaces == recognizeFaces &&
|
other.recognizeFaces == recognizeFaces &&
|
||||||
other.search == search &&
|
other.search == search &&
|
||||||
other.sidecar == sidecar &&
|
other.sidecar == sidecar &&
|
||||||
|
other.smartSearch == smartSearch &&
|
||||||
other.storageTemplateMigration == storageTemplateMigration &&
|
other.storageTemplateMigration == storageTemplateMigration &&
|
||||||
other.thumbnailGeneration == thumbnailGeneration &&
|
other.thumbnailGeneration == thumbnailGeneration &&
|
||||||
other.videoConversion == videoConversion;
|
other.videoConversion == videoConversion;
|
||||||
@ -70,7 +70,6 @@ class SystemConfigJobDto {
|
|||||||
int get hashCode =>
|
int get hashCode =>
|
||||||
// ignore: unnecessary_parenthesis
|
// ignore: unnecessary_parenthesis
|
||||||
(backgroundTask.hashCode) +
|
(backgroundTask.hashCode) +
|
||||||
(clipEncoding.hashCode) +
|
|
||||||
(library_.hashCode) +
|
(library_.hashCode) +
|
||||||
(metadataExtraction.hashCode) +
|
(metadataExtraction.hashCode) +
|
||||||
(migration.hashCode) +
|
(migration.hashCode) +
|
||||||
@ -78,17 +77,17 @@ class SystemConfigJobDto {
|
|||||||
(recognizeFaces.hashCode) +
|
(recognizeFaces.hashCode) +
|
||||||
(search.hashCode) +
|
(search.hashCode) +
|
||||||
(sidecar.hashCode) +
|
(sidecar.hashCode) +
|
||||||
|
(smartSearch.hashCode) +
|
||||||
(storageTemplateMigration.hashCode) +
|
(storageTemplateMigration.hashCode) +
|
||||||
(thumbnailGeneration.hashCode) +
|
(thumbnailGeneration.hashCode) +
|
||||||
(videoConversion.hashCode);
|
(videoConversion.hashCode);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => 'SystemConfigJobDto[backgroundTask=$backgroundTask, clipEncoding=$clipEncoding, library_=$library_, metadataExtraction=$metadataExtraction, migration=$migration, objectTagging=$objectTagging, recognizeFaces=$recognizeFaces, search=$search, sidecar=$sidecar, storageTemplateMigration=$storageTemplateMigration, thumbnailGeneration=$thumbnailGeneration, videoConversion=$videoConversion]';
|
String toString() => 'SystemConfigJobDto[backgroundTask=$backgroundTask, library_=$library_, metadataExtraction=$metadataExtraction, migration=$migration, objectTagging=$objectTagging, recognizeFaces=$recognizeFaces, search=$search, sidecar=$sidecar, smartSearch=$smartSearch, storageTemplateMigration=$storageTemplateMigration, thumbnailGeneration=$thumbnailGeneration, videoConversion=$videoConversion]';
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
final json = <String, dynamic>{};
|
final json = <String, dynamic>{};
|
||||||
json[r'backgroundTask'] = this.backgroundTask;
|
json[r'backgroundTask'] = this.backgroundTask;
|
||||||
json[r'clipEncoding'] = this.clipEncoding;
|
|
||||||
json[r'library'] = this.library_;
|
json[r'library'] = this.library_;
|
||||||
json[r'metadataExtraction'] = this.metadataExtraction;
|
json[r'metadataExtraction'] = this.metadataExtraction;
|
||||||
json[r'migration'] = this.migration;
|
json[r'migration'] = this.migration;
|
||||||
@ -96,6 +95,7 @@ class SystemConfigJobDto {
|
|||||||
json[r'recognizeFaces'] = this.recognizeFaces;
|
json[r'recognizeFaces'] = this.recognizeFaces;
|
||||||
json[r'search'] = this.search;
|
json[r'search'] = this.search;
|
||||||
json[r'sidecar'] = this.sidecar;
|
json[r'sidecar'] = this.sidecar;
|
||||||
|
json[r'smartSearch'] = this.smartSearch;
|
||||||
json[r'storageTemplateMigration'] = this.storageTemplateMigration;
|
json[r'storageTemplateMigration'] = this.storageTemplateMigration;
|
||||||
json[r'thumbnailGeneration'] = this.thumbnailGeneration;
|
json[r'thumbnailGeneration'] = this.thumbnailGeneration;
|
||||||
json[r'videoConversion'] = this.videoConversion;
|
json[r'videoConversion'] = this.videoConversion;
|
||||||
@ -111,7 +111,6 @@ class SystemConfigJobDto {
|
|||||||
|
|
||||||
return SystemConfigJobDto(
|
return SystemConfigJobDto(
|
||||||
backgroundTask: JobSettingsDto.fromJson(json[r'backgroundTask'])!,
|
backgroundTask: JobSettingsDto.fromJson(json[r'backgroundTask'])!,
|
||||||
clipEncoding: JobSettingsDto.fromJson(json[r'clipEncoding'])!,
|
|
||||||
library_: JobSettingsDto.fromJson(json[r'library'])!,
|
library_: JobSettingsDto.fromJson(json[r'library'])!,
|
||||||
metadataExtraction: JobSettingsDto.fromJson(json[r'metadataExtraction'])!,
|
metadataExtraction: JobSettingsDto.fromJson(json[r'metadataExtraction'])!,
|
||||||
migration: JobSettingsDto.fromJson(json[r'migration'])!,
|
migration: JobSettingsDto.fromJson(json[r'migration'])!,
|
||||||
@ -119,6 +118,7 @@ class SystemConfigJobDto {
|
|||||||
recognizeFaces: JobSettingsDto.fromJson(json[r'recognizeFaces'])!,
|
recognizeFaces: JobSettingsDto.fromJson(json[r'recognizeFaces'])!,
|
||||||
search: JobSettingsDto.fromJson(json[r'search'])!,
|
search: JobSettingsDto.fromJson(json[r'search'])!,
|
||||||
sidecar: JobSettingsDto.fromJson(json[r'sidecar'])!,
|
sidecar: JobSettingsDto.fromJson(json[r'sidecar'])!,
|
||||||
|
smartSearch: JobSettingsDto.fromJson(json[r'smartSearch'])!,
|
||||||
storageTemplateMigration: JobSettingsDto.fromJson(json[r'storageTemplateMigration'])!,
|
storageTemplateMigration: JobSettingsDto.fromJson(json[r'storageTemplateMigration'])!,
|
||||||
thumbnailGeneration: JobSettingsDto.fromJson(json[r'thumbnailGeneration'])!,
|
thumbnailGeneration: JobSettingsDto.fromJson(json[r'thumbnailGeneration'])!,
|
||||||
videoConversion: JobSettingsDto.fromJson(json[r'videoConversion'])!,
|
videoConversion: JobSettingsDto.fromJson(json[r'videoConversion'])!,
|
||||||
@ -170,7 +170,6 @@ class SystemConfigJobDto {
|
|||||||
/// The list of required keys that must be present in a JSON.
|
/// The list of required keys that must be present in a JSON.
|
||||||
static const requiredKeys = <String>{
|
static const requiredKeys = <String>{
|
||||||
'backgroundTask',
|
'backgroundTask',
|
||||||
'clipEncoding',
|
|
||||||
'library',
|
'library',
|
||||||
'metadataExtraction',
|
'metadataExtraction',
|
||||||
'migration',
|
'migration',
|
||||||
@ -178,6 +177,7 @@ class SystemConfigJobDto {
|
|||||||
'recognizeFaces',
|
'recognizeFaces',
|
||||||
'search',
|
'search',
|
||||||
'sidecar',
|
'sidecar',
|
||||||
|
'smartSearch',
|
||||||
'storageTemplateMigration',
|
'storageTemplateMigration',
|
||||||
'thumbnailGeneration',
|
'thumbnailGeneration',
|
||||||
'videoConversion',
|
'videoConversion',
|
||||||
|
@ -21,11 +21,6 @@ void main() {
|
|||||||
// TODO
|
// TODO
|
||||||
});
|
});
|
||||||
|
|
||||||
// JobStatusDto clipEncoding
|
|
||||||
test('to test the property `clipEncoding`', () async {
|
|
||||||
// TODO
|
|
||||||
});
|
|
||||||
|
|
||||||
// JobStatusDto library_
|
// JobStatusDto library_
|
||||||
test('to test the property `library_`', () async {
|
test('to test the property `library_`', () async {
|
||||||
// TODO
|
// TODO
|
||||||
@ -61,6 +56,11 @@ void main() {
|
|||||||
// TODO
|
// TODO
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// JobStatusDto smartSearch
|
||||||
|
test('to test the property `smartSearch`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
// JobStatusDto storageTemplateMigration
|
// JobStatusDto storageTemplateMigration
|
||||||
test('to test the property `storageTemplateMigration`', () async {
|
test('to test the property `storageTemplateMigration`', () async {
|
||||||
// TODO
|
// TODO
|
||||||
|
10
mobile/openapi/test/system_config_job_dto_test.dart
generated
10
mobile/openapi/test/system_config_job_dto_test.dart
generated
@ -21,11 +21,6 @@ void main() {
|
|||||||
// TODO
|
// TODO
|
||||||
});
|
});
|
||||||
|
|
||||||
// JobSettingsDto clipEncoding
|
|
||||||
test('to test the property `clipEncoding`', () async {
|
|
||||||
// TODO
|
|
||||||
});
|
|
||||||
|
|
||||||
// JobSettingsDto library_
|
// JobSettingsDto library_
|
||||||
test('to test the property `library_`', () async {
|
test('to test the property `library_`', () async {
|
||||||
// TODO
|
// TODO
|
||||||
@ -61,6 +56,11 @@ void main() {
|
|||||||
// TODO
|
// TODO
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// JobSettingsDto smartSearch
|
||||||
|
test('to test the property `smartSearch`', () async {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
|
||||||
// JobSettingsDto storageTemplateMigration
|
// JobSettingsDto storageTemplateMigration
|
||||||
test('to test the property `storageTemplateMigration`', () async {
|
test('to test the property `storageTemplateMigration`', () async {
|
||||||
// TODO
|
// TODO
|
||||||
|
@ -6470,9 +6470,6 @@
|
|||||||
"backgroundTask": {
|
"backgroundTask": {
|
||||||
"$ref": "#/components/schemas/JobStatusDto"
|
"$ref": "#/components/schemas/JobStatusDto"
|
||||||
},
|
},
|
||||||
"clipEncoding": {
|
|
||||||
"$ref": "#/components/schemas/JobStatusDto"
|
|
||||||
},
|
|
||||||
"library": {
|
"library": {
|
||||||
"$ref": "#/components/schemas/JobStatusDto"
|
"$ref": "#/components/schemas/JobStatusDto"
|
||||||
},
|
},
|
||||||
@ -6494,6 +6491,9 @@
|
|||||||
"sidecar": {
|
"sidecar": {
|
||||||
"$ref": "#/components/schemas/JobStatusDto"
|
"$ref": "#/components/schemas/JobStatusDto"
|
||||||
},
|
},
|
||||||
|
"smartSearch": {
|
||||||
|
"$ref": "#/components/schemas/JobStatusDto"
|
||||||
|
},
|
||||||
"storageTemplateMigration": {
|
"storageTemplateMigration": {
|
||||||
"$ref": "#/components/schemas/JobStatusDto"
|
"$ref": "#/components/schemas/JobStatusDto"
|
||||||
},
|
},
|
||||||
@ -6509,7 +6509,7 @@
|
|||||||
"metadataExtraction",
|
"metadataExtraction",
|
||||||
"videoConversion",
|
"videoConversion",
|
||||||
"objectTagging",
|
"objectTagging",
|
||||||
"clipEncoding",
|
"smartSearch",
|
||||||
"storageTemplateMigration",
|
"storageTemplateMigration",
|
||||||
"migration",
|
"migration",
|
||||||
"backgroundTask",
|
"backgroundTask",
|
||||||
@ -7821,7 +7821,7 @@
|
|||||||
"videoConversion",
|
"videoConversion",
|
||||||
"objectTagging",
|
"objectTagging",
|
||||||
"recognizeFaces",
|
"recognizeFaces",
|
||||||
"clipEncoding",
|
"smartSearch",
|
||||||
"backgroundTask",
|
"backgroundTask",
|
||||||
"storageTemplateMigration",
|
"storageTemplateMigration",
|
||||||
"migration",
|
"migration",
|
||||||
@ -9182,9 +9182,6 @@
|
|||||||
"backgroundTask": {
|
"backgroundTask": {
|
||||||
"$ref": "#/components/schemas/JobSettingsDto"
|
"$ref": "#/components/schemas/JobSettingsDto"
|
||||||
},
|
},
|
||||||
"clipEncoding": {
|
|
||||||
"$ref": "#/components/schemas/JobSettingsDto"
|
|
||||||
},
|
|
||||||
"library": {
|
"library": {
|
||||||
"$ref": "#/components/schemas/JobSettingsDto"
|
"$ref": "#/components/schemas/JobSettingsDto"
|
||||||
},
|
},
|
||||||
@ -9206,6 +9203,9 @@
|
|||||||
"sidecar": {
|
"sidecar": {
|
||||||
"$ref": "#/components/schemas/JobSettingsDto"
|
"$ref": "#/components/schemas/JobSettingsDto"
|
||||||
},
|
},
|
||||||
|
"smartSearch": {
|
||||||
|
"$ref": "#/components/schemas/JobSettingsDto"
|
||||||
|
},
|
||||||
"storageTemplateMigration": {
|
"storageTemplateMigration": {
|
||||||
"$ref": "#/components/schemas/JobSettingsDto"
|
"$ref": "#/components/schemas/JobSettingsDto"
|
||||||
},
|
},
|
||||||
@ -9221,7 +9221,7 @@
|
|||||||
"metadataExtraction",
|
"metadataExtraction",
|
||||||
"videoConversion",
|
"videoConversion",
|
||||||
"objectTagging",
|
"objectTagging",
|
||||||
"clipEncoding",
|
"smartSearch",
|
||||||
"storageTemplateMigration",
|
"storageTemplateMigration",
|
||||||
"migration",
|
"migration",
|
||||||
"backgroundTask",
|
"backgroundTask",
|
||||||
|
@ -4,7 +4,7 @@ export enum QueueName {
|
|||||||
VIDEO_CONVERSION = 'videoConversion',
|
VIDEO_CONVERSION = 'videoConversion',
|
||||||
OBJECT_TAGGING = 'objectTagging',
|
OBJECT_TAGGING = 'objectTagging',
|
||||||
RECOGNIZE_FACES = 'recognizeFaces',
|
RECOGNIZE_FACES = 'recognizeFaces',
|
||||||
CLIP_ENCODING = 'clipEncoding',
|
SMART_SEARCH = 'smartSearch',
|
||||||
BACKGROUND_TASK = 'backgroundTask',
|
BACKGROUND_TASK = 'backgroundTask',
|
||||||
STORAGE_TEMPLATE_MIGRATION = 'storageTemplateMigration',
|
STORAGE_TEMPLATE_MIGRATION = 'storageTemplateMigration',
|
||||||
MIGRATION = 'migration',
|
MIGRATION = 'migration',
|
||||||
@ -135,8 +135,8 @@ export const JOBS_TO_QUEUE: Record<JobName, QueueName> = {
|
|||||||
[JobName.RECOGNIZE_FACES]: QueueName.RECOGNIZE_FACES,
|
[JobName.RECOGNIZE_FACES]: QueueName.RECOGNIZE_FACES,
|
||||||
|
|
||||||
// clip
|
// clip
|
||||||
[JobName.QUEUE_ENCODE_CLIP]: QueueName.CLIP_ENCODING,
|
[JobName.QUEUE_ENCODE_CLIP]: QueueName.SMART_SEARCH,
|
||||||
[JobName.ENCODE_CLIP]: QueueName.CLIP_ENCODING,
|
[JobName.ENCODE_CLIP]: QueueName.SMART_SEARCH,
|
||||||
|
|
||||||
// XMP sidecars
|
// XMP sidecars
|
||||||
[JobName.QUEUE_SIDECAR]: QueueName.SIDECAR,
|
[JobName.QUEUE_SIDECAR]: QueueName.SIDECAR,
|
||||||
|
@ -63,7 +63,7 @@ export class AllJobStatusResponseDto implements Record<QueueName, JobStatusDto>
|
|||||||
[QueueName.OBJECT_TAGGING]!: JobStatusDto;
|
[QueueName.OBJECT_TAGGING]!: JobStatusDto;
|
||||||
|
|
||||||
@ApiProperty({ type: JobStatusDto })
|
@ApiProperty({ type: JobStatusDto })
|
||||||
[QueueName.CLIP_ENCODING]!: JobStatusDto;
|
[QueueName.SMART_SEARCH]!: JobStatusDto;
|
||||||
|
|
||||||
@ApiProperty({ type: JobStatusDto })
|
@ApiProperty({ type: JobStatusDto })
|
||||||
[QueueName.STORAGE_TEMPLATE_MIGRATION]!: JobStatusDto;
|
[QueueName.STORAGE_TEMPLATE_MIGRATION]!: JobStatusDto;
|
||||||
|
@ -97,7 +97,7 @@ describe(JobService.name, () => {
|
|||||||
|
|
||||||
await expect(sut.getAllJobsStatus()).resolves.toEqual({
|
await expect(sut.getAllJobsStatus()).resolves.toEqual({
|
||||||
[QueueName.BACKGROUND_TASK]: expectedJobStatus,
|
[QueueName.BACKGROUND_TASK]: expectedJobStatus,
|
||||||
[QueueName.CLIP_ENCODING]: expectedJobStatus,
|
[QueueName.SMART_SEARCH]: expectedJobStatus,
|
||||||
[QueueName.METADATA_EXTRACTION]: expectedJobStatus,
|
[QueueName.METADATA_EXTRACTION]: expectedJobStatus,
|
||||||
[QueueName.OBJECT_TAGGING]: expectedJobStatus,
|
[QueueName.OBJECT_TAGGING]: expectedJobStatus,
|
||||||
[QueueName.SEARCH]: expectedJobStatus,
|
[QueueName.SEARCH]: expectedJobStatus,
|
||||||
@ -171,7 +171,7 @@ describe(JobService.name, () => {
|
|||||||
it('should handle a start clip encoding command', async () => {
|
it('should handle a start clip encoding command', async () => {
|
||||||
jobMock.getQueueStatus.mockResolvedValue({ isActive: false, isPaused: false });
|
jobMock.getQueueStatus.mockResolvedValue({ isActive: false, isPaused: false });
|
||||||
|
|
||||||
await sut.handleCommand(QueueName.CLIP_ENCODING, { command: JobCommand.START, force: false });
|
await sut.handleCommand(QueueName.SMART_SEARCH, { command: JobCommand.START, force: false });
|
||||||
|
|
||||||
expect(jobMock.queue).toHaveBeenCalledWith({ name: JobName.QUEUE_ENCODE_CLIP, data: { force: false } });
|
expect(jobMock.queue).toHaveBeenCalledWith({ name: JobName.QUEUE_ENCODE_CLIP, data: { force: false } });
|
||||||
});
|
});
|
||||||
@ -232,7 +232,7 @@ describe(JobService.name, () => {
|
|||||||
SystemConfigCore.create(newSystemConfigRepositoryMock(false)).config$.next({
|
SystemConfigCore.create(newSystemConfigRepositoryMock(false)).config$.next({
|
||||||
job: {
|
job: {
|
||||||
[QueueName.BACKGROUND_TASK]: { concurrency: 10 },
|
[QueueName.BACKGROUND_TASK]: { concurrency: 10 },
|
||||||
[QueueName.CLIP_ENCODING]: { concurrency: 10 },
|
[QueueName.SMART_SEARCH]: { concurrency: 10 },
|
||||||
[QueueName.METADATA_EXTRACTION]: { concurrency: 10 },
|
[QueueName.METADATA_EXTRACTION]: { concurrency: 10 },
|
||||||
[QueueName.OBJECT_TAGGING]: { concurrency: 10 },
|
[QueueName.OBJECT_TAGGING]: { concurrency: 10 },
|
||||||
[QueueName.RECOGNIZE_FACES]: { concurrency: 10 },
|
[QueueName.RECOGNIZE_FACES]: { concurrency: 10 },
|
||||||
@ -247,7 +247,7 @@ describe(JobService.name, () => {
|
|||||||
} as SystemConfig);
|
} as SystemConfig);
|
||||||
|
|
||||||
expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.BACKGROUND_TASK, 10);
|
expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.BACKGROUND_TASK, 10);
|
||||||
expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.CLIP_ENCODING, 10);
|
expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.SMART_SEARCH, 10);
|
||||||
expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.METADATA_EXTRACTION, 10);
|
expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.METADATA_EXTRACTION, 10);
|
||||||
expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.OBJECT_TAGGING, 10);
|
expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.OBJECT_TAGGING, 10);
|
||||||
expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.RECOGNIZE_FACES, 10);
|
expect(jobMock.setConcurrency).toHaveBeenCalledWith(QueueName.RECOGNIZE_FACES, 10);
|
||||||
@ -367,7 +367,7 @@ describe(JobService.name, () => {
|
|||||||
|
|
||||||
const featureTests: Array<{ queue: QueueName; feature: FeatureFlag; configKey: SystemConfigKey }> = [
|
const featureTests: Array<{ queue: QueueName; feature: FeatureFlag; configKey: SystemConfigKey }> = [
|
||||||
{
|
{
|
||||||
queue: QueueName.CLIP_ENCODING,
|
queue: QueueName.SMART_SEARCH,
|
||||||
feature: FeatureFlag.CLIP_ENCODE,
|
feature: FeatureFlag.CLIP_ENCODE,
|
||||||
configKey: SystemConfigKey.MACHINE_LEARNING_CLIP_ENABLED,
|
configKey: SystemConfigKey.MACHINE_LEARNING_CLIP_ENABLED,
|
||||||
},
|
},
|
||||||
|
@ -98,7 +98,7 @@ export class JobService {
|
|||||||
await this.configCore.requireFeature(FeatureFlag.TAG_IMAGE);
|
await this.configCore.requireFeature(FeatureFlag.TAG_IMAGE);
|
||||||
return this.jobRepository.queue({ name: JobName.QUEUE_OBJECT_TAGGING, data: { force } });
|
return this.jobRepository.queue({ name: JobName.QUEUE_OBJECT_TAGGING, data: { force } });
|
||||||
|
|
||||||
case QueueName.CLIP_ENCODING:
|
case QueueName.SMART_SEARCH:
|
||||||
await this.configCore.requireFeature(FeatureFlag.CLIP_ENCODE);
|
await this.configCore.requireFeature(FeatureFlag.CLIP_ENCODE);
|
||||||
return this.jobRepository.queue({ name: JobName.QUEUE_ENCODE_CLIP, data: { force } });
|
return this.jobRepository.queue({ name: JobName.QUEUE_ENCODE_CLIP, data: { force } });
|
||||||
|
|
||||||
|
@ -29,13 +29,13 @@ export class SmartInfoService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async init() {
|
async init() {
|
||||||
await this.jobRepository.pause(QueueName.CLIP_ENCODING);
|
await this.jobRepository.pause(QueueName.SMART_SEARCH);
|
||||||
|
|
||||||
let { isActive } = await this.jobRepository.getQueueStatus(QueueName.CLIP_ENCODING);
|
let { isActive } = await this.jobRepository.getQueueStatus(QueueName.SMART_SEARCH);
|
||||||
while (isActive) {
|
while (isActive) {
|
||||||
this.logger.verbose('Waiting for CLIP encoding queue to stop...');
|
this.logger.verbose('Waiting for CLIP encoding queue to stop...');
|
||||||
await setTimeout(1000).then(async () => {
|
await setTimeout(1000).then(async () => {
|
||||||
({ isActive } = await this.jobRepository.getQueueStatus(QueueName.CLIP_ENCODING));
|
({ isActive } = await this.jobRepository.getQueueStatus(QueueName.SMART_SEARCH));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ export class SmartInfoService {
|
|||||||
|
|
||||||
await this.repository.init(machineLearning.clip.modelName);
|
await this.repository.init(machineLearning.clip.modelName);
|
||||||
|
|
||||||
await this.jobRepository.resume(QueueName.CLIP_ENCODING);
|
await this.jobRepository.resume(QueueName.SMART_SEARCH);
|
||||||
}
|
}
|
||||||
|
|
||||||
async handleQueueObjectTagging({ force }: IBaseJob) {
|
async handleQueueObjectTagging({ force }: IBaseJob) {
|
||||||
|
@ -39,7 +39,7 @@ export class SystemConfigJobDto implements Record<QueueName, JobSettingsDto> {
|
|||||||
@ValidateNested()
|
@ValidateNested()
|
||||||
@IsObject()
|
@IsObject()
|
||||||
@Type(() => JobSettingsDto)
|
@Type(() => JobSettingsDto)
|
||||||
[QueueName.CLIP_ENCODING]!: JobSettingsDto;
|
[QueueName.SMART_SEARCH]!: JobSettingsDto;
|
||||||
|
|
||||||
@ApiProperty({ type: JobSettingsDto })
|
@ApiProperty({ type: JobSettingsDto })
|
||||||
@ValidateNested()
|
@ValidateNested()
|
||||||
|
@ -47,7 +47,7 @@ export const defaults = Object.freeze<SystemConfig>({
|
|||||||
},
|
},
|
||||||
job: {
|
job: {
|
||||||
[QueueName.BACKGROUND_TASK]: { concurrency: 5 },
|
[QueueName.BACKGROUND_TASK]: { concurrency: 5 },
|
||||||
[QueueName.CLIP_ENCODING]: { concurrency: 2 },
|
[QueueName.SMART_SEARCH]: { concurrency: 2 },
|
||||||
[QueueName.METADATA_EXTRACTION]: { concurrency: 5 },
|
[QueueName.METADATA_EXTRACTION]: { concurrency: 5 },
|
||||||
[QueueName.OBJECT_TAGGING]: { concurrency: 2 },
|
[QueueName.OBJECT_TAGGING]: { concurrency: 2 },
|
||||||
[QueueName.RECOGNIZE_FACES]: { concurrency: 2 },
|
[QueueName.RECOGNIZE_FACES]: { concurrency: 2 },
|
||||||
|
@ -27,7 +27,7 @@ const updates: SystemConfigEntity[] = [
|
|||||||
const updatedConfig = Object.freeze<SystemConfig>({
|
const updatedConfig = Object.freeze<SystemConfig>({
|
||||||
job: {
|
job: {
|
||||||
[QueueName.BACKGROUND_TASK]: { concurrency: 5 },
|
[QueueName.BACKGROUND_TASK]: { concurrency: 5 },
|
||||||
[QueueName.CLIP_ENCODING]: { concurrency: 2 },
|
[QueueName.SMART_SEARCH]: { concurrency: 2 },
|
||||||
[QueueName.METADATA_EXTRACTION]: { concurrency: 5 },
|
[QueueName.METADATA_EXTRACTION]: { concurrency: 5 },
|
||||||
[QueueName.OBJECT_TAGGING]: { concurrency: 2 },
|
[QueueName.OBJECT_TAGGING]: { concurrency: 2 },
|
||||||
[QueueName.RECOGNIZE_FACES]: { concurrency: 2 },
|
[QueueName.RECOGNIZE_FACES]: { concurrency: 2 },
|
||||||
|
@ -136,7 +136,7 @@ class ImmichApi {
|
|||||||
[JobName.MetadataExtraction]: 'Extract Metadata',
|
[JobName.MetadataExtraction]: 'Extract Metadata',
|
||||||
[JobName.Sidecar]: 'Sidecar Metadata',
|
[JobName.Sidecar]: 'Sidecar Metadata',
|
||||||
[JobName.ObjectTagging]: 'Tag Objects',
|
[JobName.ObjectTagging]: 'Tag Objects',
|
||||||
[JobName.ClipEncoding]: 'Encode Clip',
|
[JobName.SmartSearch]: 'Smart Search',
|
||||||
[JobName.RecognizeFaces]: 'Recognize Faces',
|
[JobName.RecognizeFaces]: 'Recognize Faces',
|
||||||
[JobName.VideoConversion]: 'Transcode Videos',
|
[JobName.VideoConversion]: 'Transcode Videos',
|
||||||
[JobName.StorageTemplateMigration]: 'Storage Template Migration',
|
[JobName.StorageTemplateMigration]: 'Storage Template Migration',
|
||||||
|
26
web/src/api/open-api/api.ts
generated
26
web/src/api/open-api/api.ts
generated
@ -355,12 +355,6 @@ export interface AllJobStatusResponseDto {
|
|||||||
* @memberof AllJobStatusResponseDto
|
* @memberof AllJobStatusResponseDto
|
||||||
*/
|
*/
|
||||||
'backgroundTask': JobStatusDto;
|
'backgroundTask': JobStatusDto;
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @type {JobStatusDto}
|
|
||||||
* @memberof AllJobStatusResponseDto
|
|
||||||
*/
|
|
||||||
'clipEncoding': JobStatusDto;
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobStatusDto}
|
* @type {JobStatusDto}
|
||||||
@ -403,6 +397,12 @@ export interface AllJobStatusResponseDto {
|
|||||||
* @memberof AllJobStatusResponseDto
|
* @memberof AllJobStatusResponseDto
|
||||||
*/
|
*/
|
||||||
'sidecar': JobStatusDto;
|
'sidecar': JobStatusDto;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {JobStatusDto}
|
||||||
|
* @memberof AllJobStatusResponseDto
|
||||||
|
*/
|
||||||
|
'smartSearch': JobStatusDto;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobStatusDto}
|
* @type {JobStatusDto}
|
||||||
@ -2017,7 +2017,7 @@ export const JobName = {
|
|||||||
VideoConversion: 'videoConversion',
|
VideoConversion: 'videoConversion',
|
||||||
ObjectTagging: 'objectTagging',
|
ObjectTagging: 'objectTagging',
|
||||||
RecognizeFaces: 'recognizeFaces',
|
RecognizeFaces: 'recognizeFaces',
|
||||||
ClipEncoding: 'clipEncoding',
|
SmartSearch: 'smartSearch',
|
||||||
BackgroundTask: 'backgroundTask',
|
BackgroundTask: 'backgroundTask',
|
||||||
StorageTemplateMigration: 'storageTemplateMigration',
|
StorageTemplateMigration: 'storageTemplateMigration',
|
||||||
Migration: 'migration',
|
Migration: 'migration',
|
||||||
@ -3785,12 +3785,6 @@ export interface SystemConfigJobDto {
|
|||||||
* @memberof SystemConfigJobDto
|
* @memberof SystemConfigJobDto
|
||||||
*/
|
*/
|
||||||
'backgroundTask': JobSettingsDto;
|
'backgroundTask': JobSettingsDto;
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @type {JobSettingsDto}
|
|
||||||
* @memberof SystemConfigJobDto
|
|
||||||
*/
|
|
||||||
'clipEncoding': JobSettingsDto;
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobSettingsDto}
|
* @type {JobSettingsDto}
|
||||||
@ -3833,6 +3827,12 @@ export interface SystemConfigJobDto {
|
|||||||
* @memberof SystemConfigJobDto
|
* @memberof SystemConfigJobDto
|
||||||
*/
|
*/
|
||||||
'sidecar': JobSettingsDto;
|
'sidecar': JobSettingsDto;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {JobSettingsDto}
|
||||||
|
* @memberof SystemConfigJobDto
|
||||||
|
*/
|
||||||
|
'smartSearch': JobSettingsDto;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {JobSettingsDto}
|
* @type {JobSettingsDto}
|
||||||
|
@ -12,10 +12,10 @@
|
|||||||
mdiFileJpgBox,
|
mdiFileJpgBox,
|
||||||
mdiFileXmlBox,
|
mdiFileXmlBox,
|
||||||
mdiFolderMove,
|
mdiFolderMove,
|
||||||
|
mdiImageSearch,
|
||||||
mdiLibraryShelves,
|
mdiLibraryShelves,
|
||||||
mdiTable,
|
mdiTable,
|
||||||
mdiTagMultiple,
|
mdiTagMultiple,
|
||||||
mdiVectorCircle,
|
|
||||||
mdiVideo,
|
mdiVideo,
|
||||||
} from '@mdi/js';
|
} from '@mdi/js';
|
||||||
import ConfirmDialogue from '../../shared-components/confirm-dialogue.svelte';
|
import ConfirmDialogue from '../../shared-components/confirm-dialogue.svelte';
|
||||||
@ -56,12 +56,12 @@
|
|||||||
[JobName.ThumbnailGeneration]: {
|
[JobName.ThumbnailGeneration]: {
|
||||||
icon: mdiFileJpgBox,
|
icon: mdiFileJpgBox,
|
||||||
title: api.getJobName(JobName.ThumbnailGeneration),
|
title: api.getJobName(JobName.ThumbnailGeneration),
|
||||||
subtitle: 'Regenerate JPEG and WebP thumbnails',
|
subtitle: 'Generate large, small and blurred thumbnails for each asset, as well as thumbnails for each person',
|
||||||
},
|
},
|
||||||
[JobName.MetadataExtraction]: {
|
[JobName.MetadataExtraction]: {
|
||||||
icon: mdiTable,
|
icon: mdiTable,
|
||||||
title: api.getJobName(JobName.MetadataExtraction),
|
title: api.getJobName(JobName.MetadataExtraction),
|
||||||
subtitle: 'Extract metadata information i.e. GPS, resolution...etc',
|
subtitle: 'Extract metadata information from each asset, such as GPS and resolution',
|
||||||
},
|
},
|
||||||
[JobName.Library]: {
|
[JobName.Library]: {
|
||||||
icon: mdiLibraryShelves,
|
icon: mdiLibraryShelves,
|
||||||
@ -81,26 +81,27 @@
|
|||||||
[JobName.ObjectTagging]: {
|
[JobName.ObjectTagging]: {
|
||||||
icon: mdiTagMultiple,
|
icon: mdiTagMultiple,
|
||||||
title: api.getJobName(JobName.ObjectTagging),
|
title: api.getJobName(JobName.ObjectTagging),
|
||||||
subtitle: 'Run machine learning to tag objects\nNote that some assets may not have any objects detected',
|
subtitle:
|
||||||
|
'Run machine learning on assets to tag objects\nNote that some assets may not have any objects detected',
|
||||||
disabled: !$featureFlags.tagImage,
|
disabled: !$featureFlags.tagImage,
|
||||||
},
|
},
|
||||||
[JobName.ClipEncoding]: {
|
[JobName.SmartSearch]: {
|
||||||
icon: mdiVectorCircle,
|
icon: mdiImageSearch,
|
||||||
title: api.getJobName(JobName.ClipEncoding),
|
title: api.getJobName(JobName.SmartSearch),
|
||||||
subtitle: 'Run machine learning to generate clip embeddings',
|
subtitle: 'Run machine learning on assets to support smart search',
|
||||||
disabled: !$featureFlags.clipEncode,
|
disabled: !$featureFlags.clipEncode,
|
||||||
},
|
},
|
||||||
[JobName.RecognizeFaces]: {
|
[JobName.RecognizeFaces]: {
|
||||||
icon: mdiFaceRecognition,
|
icon: mdiFaceRecognition,
|
||||||
title: api.getJobName(JobName.RecognizeFaces),
|
title: api.getJobName(JobName.RecognizeFaces),
|
||||||
subtitle: 'Run machine learning to recognize faces',
|
subtitle: 'Run machine learning on assets to recognize faces',
|
||||||
handleCommand: handleFaceCommand,
|
handleCommand: handleFaceCommand,
|
||||||
disabled: !$featureFlags.facialRecognition,
|
disabled: !$featureFlags.facialRecognition,
|
||||||
},
|
},
|
||||||
[JobName.VideoConversion]: {
|
[JobName.VideoConversion]: {
|
||||||
icon: mdiVideo,
|
icon: mdiVideo,
|
||||||
title: api.getJobName(JobName.VideoConversion),
|
title: api.getJobName(JobName.VideoConversion),
|
||||||
subtitle: 'Transcode videos not in the desired format',
|
subtitle: 'Transcode videos for wider compatibility with browsers and devices',
|
||||||
},
|
},
|
||||||
[JobName.StorageTemplateMigration]: {
|
[JobName.StorageTemplateMigration]: {
|
||||||
icon: mdiFolderMove,
|
icon: mdiFolderMove,
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
JobName.Library,
|
JobName.Library,
|
||||||
JobName.Sidecar,
|
JobName.Sidecar,
|
||||||
JobName.ObjectTagging,
|
JobName.ObjectTagging,
|
||||||
JobName.ClipEncoding,
|
JobName.SmartSearch,
|
||||||
JobName.RecognizeFaces,
|
JobName.RecognizeFaces,
|
||||||
JobName.VideoConversion,
|
JobName.VideoConversion,
|
||||||
JobName.StorageTemplateMigration,
|
JobName.StorageTemplateMigration,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user