feat(F-099): completed feature

This commit is contained in:
chattie
2026-08-21 07:29:07 +02:00
parent 3f1d08382f
commit 5177a851aa
41 changed files with 922 additions and 131 deletions

View File

@@ -27,6 +27,13 @@ const updateSettingsSchema = z.object({
aiApiKey: z.string().max(500).optional(),
aiSeoTitlePrompt: z.string().max(2000).optional(),
aiSeoDescriptionPrompt: z.string().max(4000).optional(),
aiProductDescriptionPrompt: z.string().max(4000).optional(),
smtpHost: z.string().max(255).optional(),
smtpPort: z.coerce.number().int().min(1).max(65535).optional(),
smtpSecure: z.boolean().optional(),
smtpUser: z.string().max(255).optional(),
smtpPass: z.string().max(500).optional(),
smtpFrom: z.string().email().optional().or(z.literal('')),
});
const SETTING_KEYS: Record<string, string> = {
@@ -44,6 +51,13 @@ const SETTING_KEYS: Record<string, string> = {
aiApiKey: 'ai_api_key',
aiSeoTitlePrompt: 'ai_seo_title_prompt',
aiSeoDescriptionPrompt: 'ai_seo_description_prompt',
aiProductDescriptionPrompt: 'ai_product_description_prompt',
smtpHost: 'smtp_host',
smtpPort: 'smtp_port',
smtpSecure: 'smtp_secure',
smtpUser: 'smtp_user',
smtpPass: 'smtp_pass',
smtpFrom: 'smtp_from',
};
export async function registerStoreSettingsRoutes(
@@ -82,6 +96,14 @@ export async function registerStoreSettingsRoutes(
aiApiKeyConfigured: Boolean(map['ai_api_key']),
aiSeoTitlePrompt: map['ai_seo_title_prompt'] ?? 'Genera un título SEO breve y atractivo para este producto: {{name}}. Devuelve solo el título.',
aiSeoDescriptionPrompt: map['ai_seo_description_prompt'] ?? 'Genera una meta descripción SEO en español, clara y persuasiva, para este producto: {{name}}. Devuelve solo la descripción.',
aiProductDescriptionPrompt: map['ai_product_description_prompt'] ?? 'Escribe una descripción comercial clara y útil en español para este producto: {{name}}. Incluye sus beneficios y características usando solo la información disponible. Devuelve solo la descripción.',
smtpHost: map['smtp_host'] ?? process.env.SMTP_HOST ?? '',
smtpPort: map['smtp_port'] ?? process.env.SMTP_PORT ?? '465',
smtpSecure: (map['smtp_secure'] ?? process.env.SMTP_SECURE ?? 'true') !== 'false',
smtpUser: map['smtp_user'] ?? process.env.SMTP_USER ?? '',
smtpPass: '',
smtpPassConfigured: Boolean(map['smtp_pass'] || process.env.SMTP_PASS),
smtpFrom: map['smtp_from'] ?? process.env.SMTP_FROM ?? '',
});
});
@@ -150,7 +172,15 @@ export async function registerStoreSettingsRoutes(
aiApiKey: '',
aiApiKeyConfigured: Boolean(map['ai_api_key']),
aiSeoTitlePrompt: map['ai_seo_title_prompt'] ?? 'Genera un título SEO breve y atractivo para este producto: {{name}}. Devuelve solo el título.',
aiSeoDescriptionPrompt: map['ai_seo_description_prompt'] ?? 'Genera una meta descripción SEO en español, clara y persuasiva, para este producto: {{name}}. Devuelve solo la descripción.',
aiSeoDescriptionPrompt: map['ai_seo_description_prompt'] ?? 'Genera una meta descripción SEO en español, clara y persuasiva, para este producto: {{name}}. Incluye sus beneficios y características usando solo la información disponible. Devuelve solo la descripción.',
aiProductDescriptionPrompt: map['ai_product_description_prompt'] ?? 'Escribe una descripción comercial clara y útil en español para este producto: {{name}}. Incluye sus beneficios y características usando solo la información disponible. Devuelve solo la descripción.',
smtpHost: map['smtp_host'] ?? process.env.SMTP_HOST ?? '',
smtpPort: map['smtp_port'] ?? process.env.SMTP_PORT ?? '465',
smtpSecure: (map['smtp_secure'] ?? process.env.SMTP_SECURE ?? 'true') !== 'false',
smtpUser: map['smtp_user'] ?? process.env.SMTP_USER ?? '',
smtpPass: '',
smtpPassConfigured: Boolean(map['smtp_pass'] || process.env.SMTP_PASS),
smtpFrom: map['smtp_from'] ?? process.env.SMTP_FROM ?? '',
});
});
}