# F-096 — Implementer evidence ## Changes - Added AI settings to admin Ajustes: provider, OpenAI-compatible base URL, model, API key, and separate SEO title/description prompts with `{{name}}`, `{{description}}`, and `{{brand}}` variables. - API keys are never returned by GET settings; only `aiApiKeyConfigured` is exposed. - Added authenticated `POST /products/:id/generate-seo`, which calls the configured chat-completions endpoint only for empty SEO fields and persists generated values. - ProductEditor calls generation after save when either SEO field is empty; manually entered values are preserved. ## Validation - Root `npm run typecheck` → exit 0 - Admin `npx tsc --noEmit` → exit 0 - Admin ESLint on touched files → 0 errors (warnings only)