# 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)
