Fix AI text generation configuration reporting

This commit is contained in:
Sam Becker 2025-02-05 23:30:34 -06:00
parent 3a9e0569c0
commit b14b8ca2f4
3 changed files with 25 additions and 21 deletions

View File

@ -1,68 +1,69 @@
/* eslint-disable quotes */ /* eslint-disable quotes */
import { import {
parseAiAutoGeneratedFieldsText, AI_AUTO_GENERATED_FIELDS_DEFAULT,
parseAiAutoGeneratedFieldsString,
parseTitleAndCaption, parseTitleAndCaption,
} from "@/photo/ai"; } from "@/photo/ai";
describe('AI parses', () => { describe('AI parses', () => {
describe('auto-generated fields', () => { describe('auto-generated fields', () => {
it('with spaces', () => { it('with spaces', () => {
expect(parseAiAutoGeneratedFieldsText()) expect(parseAiAutoGeneratedFieldsString())
.toStrictEqual(AI_AUTO_GENERATED_FIELDS_DEFAULT);
expect(parseAiAutoGeneratedFieldsString('all'))
.toStrictEqual(['title', 'caption', 'tags', 'semantic']); .toStrictEqual(['title', 'caption', 'tags', 'semantic']);
expect(parseAiAutoGeneratedFieldsText('all')) expect(parseAiAutoGeneratedFieldsString('title'))
.toStrictEqual(['title', 'caption', 'tags', 'semantic']);
expect(parseAiAutoGeneratedFieldsText('title'))
.toStrictEqual(['title']); .toStrictEqual(['title']);
expect(parseAiAutoGeneratedFieldsText('title, caption')) expect(parseAiAutoGeneratedFieldsString('title, caption'))
.toStrictEqual(['title', 'caption']); .toStrictEqual(['title', 'caption']);
expect(parseAiAutoGeneratedFieldsText('title, caption, invalid')) expect(parseAiAutoGeneratedFieldsString('title, caption, invalid'))
.toStrictEqual(['title', 'caption']); .toStrictEqual(['title', 'caption']);
expect(parseAiAutoGeneratedFieldsText('title, caption, invalid, tags')) expect(parseAiAutoGeneratedFieldsString('title, caption, invalid, tags'))
.toStrictEqual(['title', 'caption', 'tags']); .toStrictEqual(['title', 'caption', 'tags']);
expect(parseAiAutoGeneratedFieldsText('none')) expect(parseAiAutoGeneratedFieldsString('none'))
.toStrictEqual([]); .toStrictEqual([]);
}); });
it('without spaces', () => { it('without spaces', () => {
expect(parseAiAutoGeneratedFieldsText('title,caption')) expect(parseAiAutoGeneratedFieldsString('title,caption'))
.toStrictEqual(['title', 'caption']); .toStrictEqual(['title', 'caption']);
expect(parseAiAutoGeneratedFieldsText('title,caption,invalid')) expect(parseAiAutoGeneratedFieldsString('title,caption,invalid'))
.toStrictEqual(['title', 'caption']); .toStrictEqual(['title', 'caption']);
expect(parseAiAutoGeneratedFieldsText('title,caption,invalid,tags')) expect(parseAiAutoGeneratedFieldsString('title,caption,invalid,tags'))
.toStrictEqual(['title', 'caption', 'tags']); .toStrictEqual(['title', 'caption', 'tags']);
}); });
}); });
it('received titles and captions', () => { it('received titles and captions', () => {
// Complex case // Complex case
expect(parseTitleAndCaption( expect(parseTitleAndCaption(
`'Title: "Ephemeral Beauty" Caption: "Roses bask in fleeting sunlight."'` `'Title: "Ephemeral Beauty" Caption: "Roses bask in fleeting sunlight."'`,
)).toStrictEqual({ )).toStrictEqual({
title: 'Ephemeral Beauty', title: 'Ephemeral Beauty',
caption: 'Roses bask in fleeting sunlight', caption: 'Roses bask in fleeting sunlight',
}); });
// Without surrounding single quotes // Without surrounding single quotes
expect(parseTitleAndCaption( expect(parseTitleAndCaption(
`Title: "Ephemeral Beauty" Caption: "Roses bask in fleeting sunlight."` `Title: "Ephemeral Beauty" Caption: "Roses bask in fleeting sunlight."`,
)).toStrictEqual({ )).toStrictEqual({
title: 'Ephemeral Beauty', title: 'Ephemeral Beauty',
caption: 'Roses bask in fleeting sunlight', caption: 'Roses bask in fleeting sunlight',
}); });
// Without trailing period // Without trailing period
expect(parseTitleAndCaption( expect(parseTitleAndCaption(
`Title: "Ephemeral Beauty" Caption: "Roses bask in fleeting sunlight"` `Title: "Ephemeral Beauty" Caption: "Roses bask in fleeting sunlight"`,
)).toStrictEqual({ )).toStrictEqual({
title: 'Ephemeral Beauty', title: 'Ephemeral Beauty',
caption: 'Roses bask in fleeting sunlight', caption: 'Roses bask in fleeting sunlight',
}); });
// Without and quotes // Without and quotes
expect(parseTitleAndCaption( expect(parseTitleAndCaption(
`Title: Ephemeral Beauty Caption: Roses bask in fleeting sunlight` `Title: Ephemeral Beauty Caption: Roses bask in fleeting sunlight`,
)).toStrictEqual({ )).toStrictEqual({
title: 'Ephemeral Beauty', title: 'Ephemeral Beauty',
caption: 'Roses bask in fleeting sunlight', caption: 'Roses bask in fleeting sunlight',
}); });
// With single space // With single space
expect(parseTitleAndCaption( expect(parseTitleAndCaption(
`Title: Ephemeral Beauty Caption: Roses bask in fleeting sunlight` `Title: Ephemeral Beauty Caption: Roses bask in fleeting sunlight`,
)).toStrictEqual({ )).toStrictEqual({
title: 'Ephemeral Beauty', title: 'Ephemeral Beauty',
caption: 'Roses bask in fleeting sunlight', caption: 'Roses bask in fleeting sunlight',

View File

@ -21,7 +21,7 @@ export const AI_AUTO_GENERATED_FIELDS_DEFAULT: AiAutoGeneratedField[] = [
'semantic', 'semantic',
]; ];
export const parseAiAutoGeneratedFieldsText = ( export const parseAiAutoGeneratedFieldsString = (
text = AI_AUTO_GENERATED_FIELDS_DEFAULT.join(','), text = AI_AUTO_GENERATED_FIELDS_DEFAULT.join(','),
): AiAutoGeneratedField[] => { ): AiAutoGeneratedField[] => {
const textFormatted = text.trim().toLocaleLowerCase(); const textFormatted = text.trim().toLocaleLowerCase();

View File

@ -1,4 +1,7 @@
import { parseAiAutoGeneratedFieldsText } from '@/photo/ai'; import {
AI_AUTO_GENERATED_FIELDS_DEFAULT,
parseAiAutoGeneratedFieldsString,
} from '@/photo/ai';
import type { StorageType } from '@/services/storage'; import type { StorageType } from '@/services/storage';
import { makeUrlAbsolute, shortenUrl } from '@/utility/url'; import { makeUrlAbsolute, shortenUrl } from '@/utility/url';
@ -142,7 +145,7 @@ export const CURRENT_STORAGE: StorageType =
export const AI_TEXT_GENERATION_ENABLED = export const AI_TEXT_GENERATION_ENABLED =
Boolean(process.env.OPENAI_SECRET_KEY); Boolean(process.env.OPENAI_SECRET_KEY);
export const AI_TEXT_AUTO_GENERATED_FIELDS = parseAiAutoGeneratedFieldsText( export const AI_TEXT_AUTO_GENERATED_FIELDS = parseAiAutoGeneratedFieldsString(
process.env.AI_TEXT_AUTO_GENERATED_FIELDS); process.env.AI_TEXT_AUTO_GENERATED_FIELDS);
// PERFORMANCE // PERFORMANCE
@ -265,7 +268,7 @@ export const CONFIG_CHECKLIST_STATUS = {
? AI_TEXT_AUTO_GENERATED_FIELDS.length === 0 ? AI_TEXT_AUTO_GENERATED_FIELDS.length === 0
? ['none'] ? ['none']
: AI_TEXT_AUTO_GENERATED_FIELDS : AI_TEXT_AUTO_GENERATED_FIELDS
: ['all'], : AI_AUTO_GENERATED_FIELDS_DEFAULT,
hasAiTextAutoGeneratedFields: hasAiTextAutoGeneratedFields:
Boolean(process.env.AI_TEXT_AUTO_GENERATED_FIELDS), Boolean(process.env.AI_TEXT_AUTO_GENERATED_FIELDS),
// Performance // Performance