Only flag photos with missing text when AI is enabled

This commit is contained in:
Sam Becker 2025-04-20 00:04:08 -05:00
parent a2a0c30e87
commit 9169391514
2 changed files with 30 additions and 27 deletions

View File

@ -590,20 +590,18 @@ const outdatedWhereValues = [
MAKE_FUJIFILM,
];
const needsAiTextWhereClauses = (
AI_TEXT_GENERATION_ENABLED &&
AI_TEXT_AUTO_GENERATED_FIELDS.length
)
? AI_TEXT_AUTO_GENERATED_FIELDS
.map(field => {
switch (field) {
case 'title': return `(title <> '') IS NOT TRUE`;
case 'caption': return `(caption <> '') IS NOT TRUE`;
case 'tags': return `(tags IS NULL OR array_length(tags, 1) = 0)`;
case 'semantic': return `(semantic_description <> '') IS NOT TRUE`;
}
})
: [];
const needsAiTextWhereClauses =
AI_TEXT_GENERATION_ENABLED
? AI_TEXT_AUTO_GENERATED_FIELDS
.map(field => {
switch (field) {
case 'title': return `(title <> '') IS NOT TRUE`;
case 'caption': return `(caption <> '') IS NOT TRUE`;
case 'tags': return `(tags IS NULL OR array_length(tags, 1) = 0)`;
case 'semantic': return `(semantic_description <> '') IS NOT TRUE`;
}
})
: [];
const needsSyncWhereStatement =
`WHERE ${outdatedWhereClauses.concat(needsAiTextWhereClauses).join(' OR ')}`;

View File

@ -1,6 +1,9 @@
import { MAKE_FUJIFILM } from '@/platforms/fujifilm';
import { Photo, PhotoDb } from '.';
import { AI_TEXT_AUTO_GENERATED_FIELDS } from '@/app/config';
import {
AI_TEXT_AUTO_GENERATED_FIELDS,
AI_TEXT_GENERATION_ENABLED,
} from '@/app/config';
import { AiAutoGeneratedField } from './ai';
export interface PhotoSyncStatus {
@ -26,18 +29,20 @@ const getMissingAiTextFields = ({
tags,
semanticDescription,
}: PhotoDb | Photo): AiAutoGeneratedField[] =>
AI_TEXT_AUTO_GENERATED_FIELDS.reduce((fields, field) => {
switch (field) {
case 'title':
return !title ? [...fields, 'title'] : fields;
case 'caption':
return !caption ? [...fields, 'caption'] : fields;
case 'tags':
return (tags ?? []).length === 0 ? [...fields, 'tags'] : fields;
case 'semantic':
return !semanticDescription ? [...fields, 'semantic'] : fields;
}
}, [] as AiAutoGeneratedField[]);
AI_TEXT_GENERATION_ENABLED
? AI_TEXT_AUTO_GENERATED_FIELDS.reduce((fields, field) => {
switch (field) {
case 'title':
return !title ? [...fields, 'title'] : fields;
case 'caption':
return !caption ? [...fields, 'caption'] : fields;
case 'tags':
return (tags ?? []).length === 0 ? [...fields, 'tags'] : fields;
case 'semantic':
return !semanticDescription ? [...fields, 'semantic'] : fields;
}
}, [] as AiAutoGeneratedField[])
: [];
export const generatePhotoSyncStatus = (photo: PhotoDb): PhotoSyncStatus => ({
isOutdated: isPhotoOutdated(photo),